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

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是通过训练过程学习得到的。它们的初始值通常是随机的,然后通过反向传播和梯度下降进行更新。训练的目标是最小化图像和文本嵌入之间的对齐损失,使得相似的图像和文本在嵌入空间中更接近,不相似的图像和文本更远离。

http://www.xdnf.cn/news/1235.html

相关文章:

  • 武装Burp Suite工具:RouteVulScan插件_被动扫描发现漏洞.
  • python高级特性01
  • 代码随想录算法训练营Day34
  • (16)VTK C++开发示例 --- 转换文件格式
  • ProxySQL 性能调优工具推荐
  • day48—双指针-通过删除字母匹配到字典最长单词(LeetCode-524)
  • 【随机过程】柯尔莫哥洛夫微分方程总结
  • 算力网络的早期有关论文——自用笔记
  • 在Pytorch中使用Tensorboard可视化训练过程
  • 基于DeepSeek的网络爬虫技术创新与实践应用
  • 若依如何切换 tab 不刷新
  • Google 开发者政策中心 - 3 月版
  • 【Spring】AutoConfigureOrder与Order注解的区别与使用方式
  • Gboard安卓版手势输入与多语言支持全面评测【输入顺滑】
  • Java数组
  • C++抽象基类定义与使用
  • linux kallsys
  • 探索Cangjie Magic:仓颉编程语言原生的LLM Agent开发新范式
  • mcp 客户端sse远程调用服务端与本地大模型集成实例
  • Python简介与入门
  • 多路转接select服务器
  • 数据结构:链表
  • 近几年字节测开部分面试题整理
  • 明远智睿2351开发板四核1.4G Linux处理器:驱动创新的引擎
  • Protues8.11安装只需5步骤即可。
  • 如何创建Vue3工程
  • 状态管理最佳实践:Riverpod响应式编程
  • 理解 C++ 中的隐式构造及其危害
  • STM32 中断系统深度剖析
  • element-ui cascader 组件源码分享