Contrastive Learning 对比学习 | RL 学 representation 时的对比学习

news/2024/11/28 13:14:12/文章来源:https://www.cnblogs.com/moonout/p/18569887

记录一下读的三篇相关文章。

01. Representation Learning with Contrastive Predictive Coding

  • arxiv:https://arxiv.org/abs/1807.03748 ,2018 年的文章。
  • 参考博客:知乎 | 理解 Contrastive Predictive Coding 和 NCE Loss
  • (发现 lilian weng 也写过 对比学习的博客 )

1.1 文章解读

这篇文章的主要思想是,我们维护一个 discriminator,负责判断两个东西是否是一致的(也可认为是一个判断相似性的函数);比如,我的 encoding 和我下一时刻的 encoding(这篇文章所做的),两个相同类别的样本,两个正样本,我的 encoding 和我数据增强后的 encoding 等等。

在这篇文章(CPC)里,我们定义 discriminator 是 \(f_k(x_{x+k},c_t)=\exp(z_{x+k}^TW_kc_t)\),这个函数大概计算了 z 和 c 的内积。其中,\(z_{x+k}\)\(x_{x+k}\) 真实值的 encoding,而 \(c_t\) 是序列预测模型(比如说 RNN 或 LSTM)最后一步的 hidden 值,我们一般用这个值来预测。

这篇文章的 loss function 是

\[L_N = - E\left[\log\frac{f_k(x_{x+k},c_t)}{\sum _{x_j\in X} f_k(x_j,c_t)}\right] \]

这是一种 maximize [exp / Σ exp] 的形式。(照搬原博客)怎么理解这个 loss function 呢,\(p(x_{t+k}|c_t)\) 指的是,我们选正在用的那个声音信号的 \(x_{t+k}\) ,而 \(p(x_{j})\) 指的是我们可以随便从其他的声音信号里选择一个片段。

回忆一下,我们刚才说过, \(f_k()\) 其实是在计算 \(c_t\) 的预测和 \(x_{t+k}\) (未来值)符不符合。那么对于随便从其他声音信号里选出的 \(x_j\)\(f_k(x_j,c_t)\) 应是相对较小的。

在具体实践时,大家常常在对一个 batch 进行训练时,把当前 sample 的 \((x_{t+k}^i,c_t^i)\)(这里上标表示 sample 的 id)当作 positive pair,把 batch 里其他 samples 和当前 sample 的预测值配对 \((x_{t+k}^j,c_t^i)\) 作为 negative pair (注意上标)。

1.2 个人理解

这篇文章主要在说 InfoNCE loss。InfoNCE loss 大概就是 maximize [exp / Σ exp] 的形式,公式:

\[L_\text{InfoNCE} = - E\left[\log\frac{\exp(z^T_{x+k}Wc_t)}{\sum _{x_j\in X} \exp(z^T_{j}Wc_t)}\right] \]

这貌似是比较现代的对比学习 loss function。还有一些比较古早的 loss function 形式,比如 Contrastive loss(Chopra et al. 2005),它希望最小化同类样本(\(y_i=y_j\))的 embedding 之间的距离,而最大化不同类样本的 embedding 距离:

\[L(x_i,x_j) = \mathbb 1[y_i=y_j] \big\|f(x_i)-f(x_j)\big\| + \mathbb 1[y_i\neq y_j] \max\big(0,\epsilon- \|f(x_i)-f(x_j)\| \big) \]

第一项代表,如果是同类别样本,则希望最小化它们 embedding 之间的距离;第二项代表,如果是不同类样本,则希望最大化 embedding 距离,但不要超过 ε,ε 是超参数,表示不同类之间的距离下限。

Triplet Loss 三元组损失(FaceNet ,Schroff et al. 2015) :

\[L_\text{triplet}(x,x^+,x^-) = \sum_{x\in X} \max\big( 0, \|f(x)-f(x^+)\| - \|f(x)-f(x^+)\| + \epsilon \big) \]

其中,x 是 anchor,x+ 是正样本,x- 是负样本。我们希望 x 靠近 x+、远离 x-。可以理解为,我们希望最大化 \(\|f(x)-f(x^+)\| - \|f(x)-f(x^+)\| - \epsilon\) ,即,anchor 离负样本的距离应该大于 anchor 离正样本的距离,距离差超过一个超参数 margin ε。

02. CURL: Contrastive Unsupervised Representations for Reinforcement Learning

  • arxiv:https://arxiv.org/pdf/2004.04136 ,ICML 2020。
  • GitHub:https://www.github.com/MishaLaskin/curl

curl 也应用了这种 maximize [exp / Σ exp] 的形式,它的 loss function 是:

\[L_q=\log\frac{\exp⁡(q^TWk_+)}{\exp⁡(q^TWk_+) + \sum_{i=0}^{K−1}\exp⁡(q^TWk_i)} \]

其中,q 是 query,貌似也可理解为 anchor,k 是 key,k+ 是正样本,ki 是负样本。anchor 和正样本 貌似都是图像裁剪得到的。

Refer to caption

key encoder 的参数是 query encoder 的参数的 moving average,\(\theta_k=m\theta_k+(1-m)\theta_q\)

HIM 中,curl 是一个 baseline,HIM curl 的正样本是 adding gaussian perturbation ∼ N (µ = 0.0, σ = 0.1) 得到的。

03. Representation Matters: Offline Pretraining for Sequential Decision Making

做了很多 RL 相关的 representation learning 的 review 和技术比较,比较了各种实现在 imitation learning、offline RL 和 offline 2 online RL 上的效果。

arxiv:https://arxiv.org/pdf/2102.05815



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/841592.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

datart非Docker镜像如何部署并配置截图

这里展示的是Windows系统非Docker镜像如何部署并配置截图服务 Linux系统可以参考:https://www.bilibili.com/video/BV1LW4y1m7Rs/?spm_id_from=333.999.0.0&vd_source=bfded88efa5870523e32ef275283d984 安装Chrome浏览器并查看版本 下载地址:https://www.google.cn/int…

jupyter 入门

Jupyter介绍 Jupyter可以理解为python笔记本,可以分块运行python代码并展示输出结果,支持markdown格式的文本显示。 简单来说,jupyter中有三部分内容:markdown格式的文本块; python代码块; python的输出结果块。 Jupyter文件的后缀为.ipynb。 Vscode或Pycharm中可以直接新建…

SARscape6.1新特性

SARscape6.1于2024年11月正式发布,匹配ENVI6.1版本,最低支持版本为ENVI5.6.0,主要包含以下新功能和功能改进: 突出变化:洪水监测工具 移动目标速率估算工具:估算SAR影像中移动目标速度的新工具。 自动形变建模工具:能够自主执行非线性和线性反演,以确定地震后的滑动分布…

中电金信:数据管理的“工艺”和“柔”性艺术

数字化转型将数据作为重要的资源和决策依据,通过收集、加工、分析和利用大数据,来优化业务流程和支撑业务决策。中国信通院在“2023数据资产管理大会”上分享了数据管理发展的六大趋势,其中认为“DataOps将打造数据开发治理融合的新范式”“数据编织塑造下一代数据架构”。那…

macOS电脑数据转换:Easy Data Transform直装版安装包资源

Easy Data Transform是一款专为Mac用户设计的数据转换工具,支持CSV、Excel、JSON等多种文件格式。它提供直观的拖放界面,无需编写代码即可完成数据合并、过滤、排序、拆分等操作。此外,该软件拥有丰富的转换模板和自动化功能,支持42种转换和60种文本编码,能够显著提高数据…

Shiro 漏洞复现

Shiro 漏洞复现 shiro是什么? ApacheShiro是一个灵活且全面的Java安全框架,它为现代应用程序提供了认证、授权、加密和会话管理等核心安全功能。shiro组件识别 1.在访问及登录时抓包,如果响应头 set-cookie 中显示 rememberMe=deleteMe,说明使用了 Shiro 组件。2.有时 Shir…

什么是网格变形?HyperWorks网格变形设置方法

HyperMorph 是 HyperMesh 向用户提供的强大的网格变形工具。它可以在保证基本网格形态和质量的前提下,按照用户使用需求,自如的对已有的有限元模型进行网格变形。 HyperMorph 可用于: • 改变已有的网格,生成新的设计方案。 • 将已有的网格映射至全新的几何模型。 • 用于…

Kafka集群管理:大数据运维专家来教你如何实现数据均衡与性能最大化

Kafka 概述 Kafka 起初是 由 LinkedIn 公司采用 Scala 语言开发的一个多分区、多副本且基于 ZooKeeper 协调的分布式消息系统,现已被捐献给 Apache 基金会。目前 Kafka 已经定位为一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛…

x-easypdf 初始与简单使用

一、概述 一个 java 语言简化处理 pdf 的框架 项目主页https://x-easypdf.cn项目概述x-easypdf是一个java语言简化处理pdf的框架,包含fop模块与pdfbox模块,fop模块以创建功能为主,基于xsl-fo模板生成pdf文档,以数据源的方式进行模板渲染;pdfbox模块以编辑功能为主,对标准…

x-easypdf 初始

一、概述 一个 java 语言简化处理 pdf 的框架 项目主页https://x-easypdf.cn项目概述x-easypdf是一个java语言简化处理pdf的框架,包含fop模块与pdfbox模块,fop模块以创建功能为主,基于xsl-fo模板生成pdf文档,以数据源的方式进行模板渲染;pdfbox模块以编辑功能为主,对标准…

园子与阿里云的推广合作:直播预告|FFA 2024 上海主论坛,11月29日正式上线!

为 Apache Flink 社区备受期待的年度盛会之一,本届大会将于 11 月 29 至 30 日在上海隆重举行。Flink Forward Asia(简称 FFA)是由 Apache 官方授权的社区技术大会,旨在汇聚领先的行业实践与技术动态。在众多合作伙伴和技术开发者的支持下,FFA 已成功举办六届Flink Forwar…

关于力矩、转动惯量、扭矩等机器人、电机领域相关名词的解析和扫盲

前言 这篇博客主要用于记录一些关于电机一些专有名词分析的事情,特此记录,一方面便于日后自己的温故学习,另一方面也比便于大家的学习和交流。如有不对之处,欢迎评论区指出错误,你我共同进步学习! 这里摘要自b站的这位老师的视频,原视频很长,这里做出一定程度的总结: …