论文解读系列文章目录
一、对比学习效率详细解释一下,对公式进行推导
InfoNCE损失函数推导与详细解释
1、基本公式与定义
InfoNCE的损失函数定义如下:
L
InfoNCE
(
X
;
Y
∣
f
)
=
E
[
log
f
(
x
1
,
y
)
∑
x
i
∈
X
~
f
(
x
i
,
y
)
]
,
L_{\text{InfoNCE}}(X; Y|f) = \mathbb{E}\left[\log\frac{f(x_1, y)}{\sum_{x_i \in \tilde{X}} f(x_i, y)}\right],
LInfoNCE(X;Y∣f)=E[log∑xi∈X~f(xi,y)f(x1,y)],
- 符号说明:
- X = ( x 1 , … , x K ) X = (x_1, \dots, x_K) X=(x1,…,xK) 是样本矩阵,其中 x 1 x_1 x1 是正样本。
- X ~ = { x 2 , … , x K } \tilde{X} = \{x_2, \dots, x_K\} X~={x2,…,xK} 是负样本集合。
- f ( x , y ) = exp ( τ − 1 sim ( x , y ) ) f(x, y) = \exp(\tau^{-1}\text{sim}(x, y)) f(x,y)=exp(τ−1sim(x,y)),其中 sim ( x , y ) \text{sim}(x, y) sim(x,y) 表示相似性,通常为向量 x x x 和 y y y 的点积,且 τ \tau τ 是温度参数。
此损失函数衡量正样本对的得分 f ( x 1 , y ) f(x_1, y) f(x1,y) 与负样本对的得分 ∑ x i ∈ X ~ f ( x i , y ) \sum_{x_i \in \tilde{X}} f(x_i, y) ∑xi∈X~f(xi,y) 的对比程度。通过最大化正样本得分相对于负样本得分的对数值,InfoNCE鼓励模型在表征空间中更明确地区分正样本和负样本。
2、对梯度的推导
(1) 梯度计算
对 (y) 计算梯度,记 InfoNCE 损失为:
L
InfoNCE
=
log
f
(
x
1
,
y
)
∑
x
i
∈
X
~
f
(
x
i
,
y
)
.
L_{\text{InfoNCE}} = \log \frac{f(x_1, y)}{\sum_{x_i \in \tilde{X}} f(x_i, y)}.
LInfoNCE=log∑xi∈X~f(xi,y)f(x1,y).
- 分解式子:
- f ( x 1 , y ) = exp ( τ − 1 sim ( x 1 , y ) ) f(x_1, y) = \exp(\tau^{-1} \text{sim}(x_1, y)) f(x1,y)=exp(τ−1sim(x1,y))。
- ∑ x i ∈ X ~ f ( x i , y ) = ∑ x i ∈ X ~ exp ( τ − 1 sim ( x i , y ) ) \sum_{x_i \in \tilde{X}} f(x_i, y) = \sum_{x_i \in \tilde{X}} \exp(\tau^{-1} \text{sim}(x_i, y)) ∑xi∈X~f(xi,y)=∑xi∈X~exp(τ−1sim(xi,y))。
取对 (y) 的梯度:
∇
y
L
InfoNCE
=
∇
y
log
f
(
x
1
,
y
)
−
∇
y
log
(
∑
x
i
∈
X
~
f
(
x
i
,
y
)
)
.
\nabla_y L_{\text{InfoNCE}} = \nabla_y \log f(x_1, y) - \nabla_y \log \left(\sum_{x_i \in \tilde{X}} f(x_i, y)\right).
∇yLInfoNCE=∇ylogf(x1,y)−∇ylog
xi∈X~∑f(xi,y)
.
(2) 分步推导
-
正样本对梯度:
∇ y log f ( x 1 , y ) = ∇ y ( τ − 1 sim ( x 1 , y ) ) = τ − 1 x 1 , \nabla_y \log f(x_1, y) = \nabla_y \left(\tau^{-1} \text{sim}(x_1, y)\right) = \tau^{-1} x_1, ∇ylogf(x1,y)=∇y(τ−1sim(x1,y))=τ−1x1,
因为 (\text{sim}(x, y) = x^T y)。 -
负样本对梯度:
∇ y log ( ∑ x i ∈ X ~ f ( x i , y ) ) = ∇ y ( ∑ x i ∈ X ~ f ( x i , y ) ) ∑ x i ∈ X ~ f ( x i , y ) . \nabla_y \log \left(\sum_{x_i \in \tilde{X}} f(x_i, y)\right) = \frac{\nabla_y \left(\sum_{x_i \in \tilde{X}} f(x_i, y)\right)}{\sum_{x_i \in \tilde{X}} f(x_i, y)}. ∇ylog xi∈X~∑f(xi,y) =∑xi∈X~f(xi,y)∇y(∑xi∈X~f(xi,y)).
进一步分解:
∇ y f ( x i , y ) = ∇ y exp ( τ − 1 sim ( x i , y ) ) = τ − 1 x i exp ( τ − 1 sim ( x i , y ) ) . \nabla_y f(x_i, y) = \nabla_y \exp(\tau^{-1} \text{sim}(x_i, y)) = \tau^{-1} x_i \exp(\tau^{-1} \text{sim}(x_i, y)). ∇yf(xi,y)=∇yexp(τ−1sim(xi,y))=τ−1xiexp(τ−1sim(xi,y)).
因此:
∇ y ∑ x i ∈ X ~ f ( x i , y ) = τ − 1 ∑ x i ∈ X ~ x i exp ( τ − 1 sim ( x i , y ) ) . \nabla_y \sum_{x_i \in \tilde{X}} f(x_i, y) = \tau^{-1} \sum_{x_i \in \tilde{X}} x_i \exp(\tau^{-1} \text{sim}(x_i, y)). ∇yxi∈X~∑f(xi,y)=τ−1xi∈X~∑xiexp(τ−1sim(xi,y)).
结合前面结果:
∇ y log ( ∑ x i ∈ X ~ f ( x i , y ) ) = τ − 1 ∑ x i ∈ X ~ x i exp ( τ − 1 sim ( x i , y ) ) ∑ x i ∈ X ~ exp ( τ − 1 sim ( x i , y ) ) . \nabla_y \log \left(\sum_{x_i \in \tilde{X}} f(x_i, y)\right) = \tau^{-1} \frac{\sum_{x_i \in \tilde{X}} x_i \exp(\tau^{-1} \text{sim}(x_i, y))}{\sum_{x_i \in \tilde{X}} \exp(\tau^{-1} \text{sim}(x_i, y))}. ∇ylog xi∈X~∑f(xi,y) =τ−1∑xi∈X~exp(τ−1sim(xi,y))∑xi∈X~xiexp(τ−1sim(xi,y)). -
结合正负样本梯度:
将正样本和负样本梯度结合:
∇ y L InfoNCE = τ − 1 x 1 − τ − 1 ∑ x i ∈ X ~ x i exp ( τ − 1 sim ( x i , y ) ) ∑ x i ∈ X ~ exp ( τ − 1 sim ( x i , y ) ) . \nabla_y L_{\text{InfoNCE}} = \tau^{-1} x_1 - \tau^{-1} \frac{\sum_{x_i \in \tilde{X}} x_i \exp(\tau^{-1} \text{sim}(x_i, y))}{\sum_{x_i \in \tilde{X}} \exp(\tau^{-1} \text{sim}(x_i, y))}. ∇yLInfoNCE=τ−1x1−τ−1∑xi∈X~exp(τ−1sim(xi,y))∑xi∈X~xiexp(τ−1sim(xi,y)).
3、Softmax归一化形式
定义
(
p
1
,
…
,
p
K
)
=
softmax
(
−
τ
−
1
X
T
y
)
(p_1, \dots, p_K) = \text{softmax}(-\tau^{-1} X^T y)
(p1,…,pK)=softmax(−τ−1XTy),这时候应用了矩阵,其中:
p
i
=
exp
(
τ
−
1
sim
(
x
i
,
y
)
)
∑
x
j
∈
X
exp
(
τ
−
1
sim
(
x
j
,
y
)
)
.
p_i = \frac{\exp(\tau^{-1} \text{sim}(x_i, y))}{\sum_{x_j \in X} \exp(\tau^{-1} \text{sim}(x_j, y))}.
pi=∑xj∈Xexp(τ−1sim(xj,y))exp(τ−1sim(xi,y)).
进一步化简梯度:把后面关于
x
1
x_1
x1的系数部分与前面
x
1
x_1
x1的系数部分合并。
∇
y
L
InfoNCE
=
−
τ
−
1
(
1
−
p
1
)
x
1
+
τ
−
1
∑
x
i
∈
X
~
p
i
x
i
.
\nabla_y L_{\text{InfoNCE}} = -\tau^{-1} (1 - p_1) x_1 + \tau^{-1} \sum_{x_i \in \tilde{X}} p_i x_i.
∇yLInfoNCE=−τ−1(1−p1)x1+τ−1xi∈X~∑pixi.
注意到 ( 1 − p 1 ) (1 - p_1) (1−p1) 是正样本的权重,而 ∑ x i ∈ X ~ p i x i \sum_{x_i \in \tilde{X}} p_i x_i ∑xi∈X~pixi 是负样本贡献的加权平均。
4、调整梯度效率的方法
- p 1 p_1 p1 的大小直接反映了正样本的相似性得分。如果正样本 f ( x 1 , y ) f(x_1, y) f(x1,y) 远大于负样本得分总和,则 p 1 → 1 p_1 \to 1 p1→1,正样本的梯度贡献趋于零。
- 为提高对难负样本的学习效率,可以:
- 选择更难的负样本:增加负样本集合中难负样本的比例。
- 增大批量大小:使得 X ~ \tilde{X} X~ 包含更多的负样本。
- 调节温度参数 τ \tau τ :降低 τ \tau τ 提高难负样本的区分度。
通过这些调整,可以有效降低 ( 1 − p 1 ) (1 - p_1) (1−p1) 的影响,从而增强模型对难样本的学习能力。
二、
三、
四、
五、
六、
七、
八、
九、
十、
十一、
十二、
十三、
根据我提供的论文,写出它的1、研究背景 2、论文贡献 3、方法框架 4、研究思路 5、实验 6、限制