图搜损失学习--Contrastive Loss(对比损失)

【深度学习】对比学习的损失函数_对比学习损失函数-CSDN博客

利用Contrastive Loss(对比损失)思想设计自己的loss function - 知乎

参考这两个学习帖子

看两个单词 alignment uniformity,这两个词最常成对出现在机器学习,尤其是对比学习和表征学习当中(representation learning)中

alignment:对齐,排列,结盟,一致

uniformity:均匀性,一致性,统一,相同

一个好的特征表示空间需要同时满足这两个属性:

alignment对齐性 :指相似的样本(正样本对) 在特征空间中的表示应该尽可能靠近

作用:保证模型能够识别出同一个事物的不同视图(例如:一个图片的裁剪版和原图,或者同一句话的不同语音片段,具有相似的特征

数学直觉:最小化正样本对特征向量之间的距离,对齐性越好,距离越接近0

uniformity 均匀性:指所有样本的特征表示在整个特征空间(通常被约束在一个单位超球面 Hypersphere上) 应该尽可能均匀地分布

作用:保留最大的信息量,防止特征坍塌(即模型吧所有输入都映射到同一个特征向量以偷懒地满足Alignment)均匀性保证了不同类别地样本在特征空间中能够被清晰地区分开

数学直觉:最大化特征向量之间的pairwise距离(通常通过高斯势能的期望来衡量)均匀性越好,特征在球面上的分布越像一个均匀的多面体顶点

在训练 AI 模型时,这两个目标通常是相互制约又相辅相成的:

• 如果只追求 Alignment,模型可能会把所有样本的特征都压缩到一个点上(特征坍塌),此时虽然正样本对齐了,但模型失去了区分不同样本的能力。

• 如果只追求 Uniformity,特征虽然分散得很好,但相似的样本可能离得很远,模型无法学到有效的语义关联。

• 优秀的表征学习(如对比损失函数 InfoNCE)本质上就是在对齐性(拉近正样本) 和均匀性(推开所有样本) 之间寻找一个完美的平衡点。

好的,上面是AI给的知识解答,接下来根据我看到的这两个帖子再去看对比损失

alignment:指的是相似的例子,也就是正例,映射到单位超球面后,应该具有比较接近的特征,球面距离应该比较近。

uniformity: 指的是系统应该倾向于应该灾特征里保留尽可能多的信息,映射到球面上就要求,单位球面上的特征一个光尽可能地均匀分布灾球面上,分布越均匀,意味着保留的特征也就越多越充分。因为,分布越均匀,意味着各自保留各自的独有的特征,这代表着信息保留的越充分

uniformity特征的极端反例,所有数据都映射到单位超球面的同一个点上,这代表着所有数据的信息都被丢掉,体现为数据分布极度不均匀得到了超球面上的同一个点,这代表着所有数据地信息都被丢掉,体现为数据分布极度不均匀得到了超球面上的同一个点,也就意味着,所有数据经过两次非线性计算之后都收敛到同一个常数上,这种异常情况我们称之为:模型坍塌

对比学习地损失函数

模型做决策时,假设输入到softmax前的结果是:sθ(w,c) 表示,实际上sθ(w,c) 是由含义的,这是一个分数公式,输出的分数用来量化w在上下文中匹配性,那么w条件概率可以表示为以下形式:

sθ(w,c)是一个打分函数,输入一句话 上下文c,模型会给词表里的每一个词w打一个分,分越高,模型觉得这个词填在这里越合适

Pθ(w,c):是概率,模型不能只是打分,而是告诉你 有百分之多少的可能性

分母,是归一化常数,将所有词的分数加起来,让每个词的分数除以这个总和,目的是使得所有词的概率加起来等于1

如果词表很大,这个分母很让人头大,推理的时候,直接就找分数最大的就行

【训练的时候如果假装没分母】

NCE Loss noise contrastive eatimation 通过最大化同一个目标函数来估计模型参数θ和归一化常数,NCE的核心思想就是 通过学习数据分布样本和噪声分布样本之间的区别,从而发现数据中的一些特性,因为这个方法需要依靠与噪声数据进行对比,所以称为 噪声对比估计

NCE 核心思想是将多分类问题转化为二分类问题。分类器能够对数据样本和噪声样本进行二分类,一个类是数据类别 data sample 另一个类是噪声类别 noisy sample,通过学习数据样本和噪声样本之间的区别,将数据样本和噪声样本做对比,从而发现数据中的一些特性

这个公式描述的是NCE 噪声对比估计 或者 negative sampling 负采样 的损失函数(或者叫目标函数)这个是为了解决 softmax分母计算太慢的问题而提出的

这个公式是将问题变成了判断题,给模型看一对词 (c,w),如果是真实的(来自数据集D)标签D=1。如果是瞎凑的,来自噪声分布q,标签D=0

是对数据集中的每一个真实样本对进行累加

这是正样本项,对于真实的上下文c和词w,模型预测它是 真配对 的概率的对数,要使得这个概率尽可能大

是负样本,是从噪声分布q里挑出来的,跟c(上下文)其实没关系

这是负样本项,意思是,对于上下文c和随机词,模型预测它是假配对的概率,我们要让这个概率尽可能大,模型要识别出这是假的

这在算平均值,意思是采样了k个负样本,每个样本权重是1/k

公式意思:1个正样本的对数概率+k个敷衍她根本的对数概率之和

我们训练模型。让它对每一个真实的词对(c,w)都打高分,认为是D=1,同时对k个随机采样的架次对 都打低分,认为D=0

但是,如果把整个数据集剩下的数据都当做负样本(噪声样本),虽然解决了类别多的问题,计算复杂度还是没有降下来,解决办法就是做负样本采样来计算loss,这就是eatimation的含义,也就是说它只是估计和近似。一般来说,负样本选取的越多,就越近进整个数据集

结论是:对于设置的噪声分布 ,我们实际上是希望它尽量接近数据分布,否则这个二分类任务就过于简单了,也就无法很好的学到数据特性。而作者通过实验和推导证明(我在第三节中也会简单的证明),当负样本和正样本数量之比 k 越大,那么我们的 NCE 对于噪声分布好坏的依赖程度也就越小。换句话说,作者建议我们在计算能力运行的条件下,尽可能的增大比值 k 。也许这也就是大家都默认将正样本数量设置为 1 的原因:正样本至少取要 1 个,所以最大化比值 k ,也就是尽可能取更多负样本的同时,将正样本数量取最小值 1。

从上下文c中提取单词作为正样本,从噪声分布中取出单词作为负样本,正负样本数量比为1:k.然后训练一个二分类器,通过一个类似于交叉熵损失函数的目标函数进行shishi

相关推荐
晓梦林1 小时前
[ACTF2020 新生赛]BackupFile学习笔记
android·笔记·学习
2601_963870172 小时前
【计算机毕业设计】基于Spring Boot的社区老年大学课程报名与学习系统的设计与实现
java·spring boot·学习
xian_wwq2 小时前
【学习笔记】解剖 Claude Code —— Anthropic 的 Harness 参考实现-09/15
人工智能·笔记·学习
其实防守也摸鱼3 小时前
Kimi K3深度测评:长文本之外的真实力
运维·开发语言·网络·人工智能·python·学习·安全
晓梦林3 小时前
Tools靶场学习笔记
笔记·学习
xian_wwq3 小时前
【学习笔记】什么是Harness Engineering- 01/15
人工智能·笔记·学习
xian_wwq4 小时前
【学习笔记】Agent 安全护栏 —— 当 Agent DROP TABLE 了你的生产数据库-07/15
笔记·学习·安全
lichuangcsdn5 小时前
【Spring AI 学习(一)】spring ai是什么
人工智能·学习·spring·spring ai
MartinYeung55 小时前
[论文学习]AgentDojo:用于评估LLM智能体提示注入攻击与防御的动态环境
网络·学习