当前位置: 首页 > news >正文

CLIP | 训练过程中图像特征和文本特征的在嵌入空间中的对齐(两个投影矩阵的学习)

在多模态学习(Multimodal Learning)中,投影矩阵 W i W_i Wi W t W_t Wt 是通过训练过程学习得到的。它们的作用是将图像特征 I f I_f If 和文本特征 T f T_f Tf 映射到一个共享的嵌入空间(embedding space),使得不同模态的数据可以在这个空间中进行有效的比较和对齐。

学习投影矩阵的过程

1. 初始化

在训练开始之前,投影矩阵 W i W_i Wi W t W_t Wt通常会随机初始化。这些矩阵的初始值通常是小的随机数,这样可以避免梯度消失或爆炸的问题。

2. 训练过程

投影矩阵 W i W_i Wi W t W_t Wt是通过反向传播(Backpropagation)和梯度下降(Gradient Descent)进行学习的。具体步骤如下:

  1. 前向传播(Forward Pass)

    • 使用图像编码器 image_encoder \text{image\_encoder} image_encoder 提取图像特征 I f I_f If
    • 使用文本编码器 text_encoder \text{text\_encoder} text_encoder 提取文本特征 T f T_f Tf
    • 将图像特征 I f I_f If通过投影矩阵 W i W_i Wi映射到嵌入空间,得到图像嵌入 I e I_e Ie
    • 将文本特征 T f T_f Tf通过投影矩阵 W t W_t Wt映射到嵌入空间,得到文本嵌入 T e T_e Te
    I_f = image_encoder(I)  # [n, d_i]
    T_f = text_encoder(T)  # [n, d_t]
    I_e = l2_normalize(np.dot(I_f, W_i), axis=1)  # [n, d_e]
    T_e = l2_normalize(np.dot(T_f, W_t), axis=1)  # [n, d_e]
    
  2. 计算相似度和损失函数

    • 计算图像嵌入和文本嵌入之间的相似度矩阵 logits \text{logits} logits
    • 使用交叉熵损失函数计算图像和文本的对齐损失。
    logits = np.dot(I_e, T_e.T) * np.exp(t)  # [n, n]
    labels = np.arange(n)
    loss_i = cross_entropy_loss(logits, labels, axis=0)
    loss_t = cross_entropy_loss(logits, labels, axis=1)
    loss = (loss_i + loss_t) / 2
    
  3. 反向传播(Backward Pass)

    • 计算损失函数 loss \text{loss} loss关于投影矩阵 W i W_i Wi W t W_t Wt的梯度。
    • 使用梯度下降更新投影矩阵 W i W_i Wi W t W_t Wt
    # 假设我们使用的是某种优化器,如 Adam
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    
3. 更新规则

在每次迭代中,投影矩阵 W i W_i Wi W t W_t Wt会根据计算得到的梯度进行更新。更新规则通常如下:

W i ← W i − α ⋅ ∂ loss ∂ W i W_i \leftarrow W_i - \alpha \cdot \frac{\partial \text{loss}}{\partial W_i} WiWiαWiloss

W t ← W t − α ⋅ ∂ loss ∂ W t W_t \leftarrow W_t - \alpha \cdot \frac{\partial \text{loss}}{\partial W_t} WtWtαWtloss

其中, α \alpha α 是学习率(learning rate),是一个超参数,控制每次更新的步长。

4. 训练目标

训练的目标是使得相似的图像和文本在嵌入空间中更接近,不相似的图像和文本更远离。通过最小化损失函数 loss \text{loss} loss,投影矩阵 W i W_i Wi W t W_t Wt逐渐学习到如何将图像和文本特征映射到一个合适的嵌入空间。

5. 训练结束

经过若干次迭代后,投影矩阵 W i W_i Wi W t W_t Wt会收敛到一个相对稳定的状态。此时,它们能够有效地将图像和文本特征映射到一个共享的嵌入空间,使得不同模态的数据可以在这个空间中进行有效的比较和对齐。

总结

投影矩阵 W i W_i Wi W t W_t Wt是通过训练过程学习得到的。它们的初始值通常是随机的,然后通过反向传播和梯度下降进行更新。训练的目标是最小化图像和文本嵌入之间的对齐损失,使得相似的图像和文本在嵌入空间中更接近,不相似的图像和文本更远离。

相关文章:

  • vscode本地docker gdb调试python
  • Qt-托盘的实现
  • Qt信号槽连接的三种方法对比
  • 开源QML控件:进度条滑动控件(含源码下载链接)
  • 【得物】20250419笔试算法题
  • 高级java每日一道面试题-2025年4月22日-基础篇[反射篇]-如何通过反射创建一个对象实例?
  • ProxySQL 的性能优化需结合实时监控数据与动态配置调整
  • 实验一-密码学数学基础
  • 2025年4月22日(平滑)
  • lvgl 动画设计
  • 【第九章 Python学习之函数Ⅱ】
  • 【汽车ECU电控数据管理篇】S19文件格式解析篇章
  • Java面试实战:谢飞机的求职记 - Spring Boot、Redis与微服务技术问答解析
  • RAG是什么?
  • IDEA下载kotlin-compiler-embeddable特别慢
  • 1.C++ 动态内存分配对比:malloc/free VS new/delete以及 2.nullptr VS NULL 区别
  • python环境使用conda,conda如何升级默认的python版本
  • Spring集合注入Bean
  • 从项目真实场景中理解二分算法的细节(附图解和模板)
  • C++ 快速幂算法
  • 外汇局:4月以来外汇市场交易保持平稳,跨境资金延续净流入
  • 石中英已任新成立的清华大学教育学院院长
  • 商务部:中国加快推进服务业扩大开放综合试点为世界注入更多确定性
  • 日本首相石破茂向靖国神社献祭品
  • 山西一国道发生塌陷,造成4车追尾2人死亡
  • 体坛联播|巴萨三球逆转塞尔塔,CBA季后赛山西横扫广东