论文解读:《Unsupervised Multi-Modal Representation Learning for High Quality Retrieval..》

论文解读系列文章目录



一、对比学习效率详细解释一下,对公式进行推导

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;Yf)=E[logxiX~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) xiX~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=logxiX~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)) xiX~f(xi,y)=xiX~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 xiX~f(xi,y) .

(2) 分步推导

  1. 正样本对梯度
    ∇ 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)。

  2. 负样本对梯度
    ∇ 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 xiX~f(xi,y) =xiX~f(xi,y)y(xiX~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)). yxiX~f(xi,y)=τ1xiX~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 xiX~f(xi,y) =τ1xiX~exp(τ1sim(xi,y))xiX~xiexp(τ1sim(xi,y)).

  3. 结合正负样本梯度

    将正样本和负样本梯度结合:
    ∇ 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τ1xiX~exp(τ1sim(xi,y))xiX~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=xjXexp(τ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(1p1)x1+τ1xiX~pixi.

注意到 ( 1 − p 1 ) (1 - p_1) (1p1) 是正样本的权重,而 ∑ x i ∈ X ~ p i x i \sum_{x_i \in \tilde{X}} p_i x_i xiX~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 p11,正样本的梯度贡献趋于零。
  • 为提高对难负样本的学习效率,可以:
    1. 选择更难的负样本:增加负样本集合中难负样本的比例。
    2. 增大批量大小:使得 X ~ \tilde{X} X~ 包含更多的负样本。
    3. 调节温度参数 τ \tau τ :降低 τ \tau τ 提高难负样本的区分度。

通过这些调整,可以有效降低 ( 1 − p 1 ) (1 - p_1) (1p1) 的影响,从而增强模型对难样本的学习能力。

二、

三、

四、

五、

六、

七、

八、

九、

十、

十一、

十二、

十三、

根据我提供的论文,写出它的1、研究背景 2、论文贡献 3、方法框架 4、研究思路 5、实验 6、限制

无监督多模态特征对齐方法在时间序列表示学习中扮演着重要角色,尤其是在缺乏标注数据的情况下。这类方法旨在从多个模态(如传感器数据、文本描述、图像等)中提取一致且具有判别性的特征表示。以下是一些关键技术和方法: ### 1. 迭代双线性时频融合 一种有效的无监督时间序列表示学习方法是迭代双线性时频融合(Iterative Bilinear Temporal-Spectral Fusion)。该方法通过交替优化时间和频域特征,实现多模态特征的对齐和融合。具体来说,它利用双线性变换将不同模态的特征映射到一个共享的隐空间中,并通过迭代更新来增强特征的一致性和区分度 [^1]。 ```python class IterativeBilinearFusion(nn.Module): def __init__(self, input_dim, hidden_dim): super(IterativeBilinearFusion, self).__init__() self.bilinear = nn.Bilinear(input_dim, input_dim, hidden_dim) self.lstm = nn.LSTM(hidden_dim, hidden_dim) def forward(self, x1, x2): # x1 and x2 are inputs from two different modalities fused = self.bilinear(x1, x2) out, _ = self.lstm(fused) return out ``` ### 2. 对比学习 对比学习是一种广泛应用于无监督表示学习的方法,其核心思想是在特征空间中最大化正样本对的相似性,同时最小化负样本对的相似性。对于多模态时间序列任务,可以通过构造跨模态的正负样本对来进行训练。例如,在视频分析中,可以将同一时刻的音频和视觉特征作为正样本对,而不同时间点的特征作为负样本对 [^3]。 ```python def contrastive_loss(embeddings1, embeddings2, temperature=0.5): # Compute similarity matrix sim_matrix = torch.matmul(embeddings1, embeddings2.T) / temperature labels = torch.arange(embeddings1.size(0)) loss = F.cross_entropy(sim_matrix, labels) return loss ``` ### 3. 图卷积网络与自监督学习 图卷积网络(Graph Convolutional Networks, GCNs)结合自监督学习可以用于处理具有复杂结构的时间序列数据。例如,通过构建时间序列的图结构(节点表示时间步,边表示时间步之间的依赖关系),GCNs 可以捕捉局部和全局的时间依赖性。此外,多阶段自监督学习策略可以在不同层次上进行预训练,从而提高模型的泛化能力 [^4]。 ```python import torch_geometric.nn as pyg_nn class GCNSelfSupervised(pyg_nn.GCN): def __init__(self, num_features, hidden_dim, embedding_dim): super(GCNSelfSupervised, self).__init__(num_features, hidden_dim, embedding_dim) self.gcn1 = pyg_nn.GCNConv(num_features, hidden_dim) self.gcn2 = pyg_nn.GCNConv(hidden_dim, embedding_dim) def forward(self, data): x, edge_index = data.x, data.edge_index x = F.relu(self.gcn1(x, edge_index)) x = self.gcn2(x, edge_index) return x ``` ### 4. 多视图嵌入对齐 针对不完整的多视图聚类问题,统一嵌入对齐方法(Unified Embedding Alignment)可以通过推断缺失视图来实现多模态特征的对齐。该方法首先为每个视图学习一个嵌入空间,然后通过优化目标函数来对齐这些嵌入空间,即使某些视图缺失也能保持良好的性能 [^2]。 ```matlab function aligned_embeddings = align_views(embeddings) % embeddings is a cell array where each element corresponds to one view's embeddings num_views = length(embeddings); common_space = zeros(size(embeddings{1})); for i = 1:num_views % Align each view to the common space W = estimate_transformation(embeddings{i}, common_space); aligned_embeddings{i} = embeddings{i} * W; % Update the common space common_space = mean(cat(3, common_space, aligned_embeddings{i}), 3); end end ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值