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

手搓多模态-01 对比损失的优化

对比损失

对比损失用来模型提供一个输出标签距离参照这一点其他损失函数没有差别对比损失独特之处在于不像其他损失函数模型提供正向参照即所谓教模型什么是对的同时模型学习什么错的

多模态对比损失

多模态模型训练数据集主要 [图像文本] 组成这些图像可以专门数据集获取也可以维基百科上面进行爬取文本通常爬取图像附带信息

多模态模型通常使用一个编码图像文本编码一个独特向量

图像 ----> 向量维度在config中设置)

文本 ----> 向量 维度在config中设置)

下图所示

在这里蓝色的高亮代表image需要对应text描述这里通过T向量I向量点积得到他们相似得分于是对比损失要求蓝色区域得分应该高分白色区域得分应该低分由此对比损失模型知道哪些对的模型知道哪些错的

传统做法

每一行或者每一列看成一个分布比如对于每一行给定一个image不同得分表示输出对应text概率所以希望蓝色区域概率白色区域概率蓝色标签概率1白色标签概率0由此通过KL散度或者交叉熵计算概率分布之间差异

问题所在

模型输出不确定将相似度得分转换概率分布需要满足一行所有相似度得分加起来等于1那么此时需要每一个相似度得分进行softmax归一化

softmax归一化,是一种在机器学习尤其是神经网络中广泛应用的数学方法。它将输入的向量转换为概率分布形式,使得每个元素的值都在0到1之间,且所有元素之和为1。这一特性让模型能清晰地输出各类别的预测概率,从而便于比较与决策,在分类任务里发挥着关键作用,助力模型更精准地做出判断。

softmax归一化的公式是:

其中 此处就是每一行中每一个text 与 image的相似度得分

现在有一个潜在问题

由于相似得分两个向量点积得到计算过程不确定如果相似度得分非常之高那么由于指数爆炸 非常之大计算保存数值数据位数固定所以这里计算结果产生影响

保证数值稳定

公式转换:

便可指数数值最大值1

引申问题

这样虽然数值稳定性保证但是训练速度下降因为c确定需要每一个相似度得分计算出来然后才能找到最大这就导致数据依赖问题从而无法并行计算不同相似度得分归一化之后

解决办法

传统概率分布建模转换分类建模每一个image-text的标签要么1(相似)要么0(不相似)那么由于不涉及概率分布不需要进行softmax归一化但是仍然需要相似度得分转换0-1之间标准化用于指示相似程度这里使用归一化方法sigmoid归一化

由于指数部分所以这里不存在数值稳定问题其次每个text-image归一化计算独立这样保证并行各个设备并行记录每一个样本相似度得分基于标签0或者1计算损失函数

蓝色部分标签1白色部分标签0.

这便是siglip对clip的优化

http://www.dtcms.com/a/108059.html

相关文章:

  • python网络爬虫开发实战之数据的存储
  • spring-security原理与应用系列:HttpSecurity.filters
  • 【算法中的数学】欧拉筛埃氏筛
  • 游戏引擎学习第194天
  • SpringBoot+Vue 中 WebSocket 的使用
  • LLM大模型教程——什么是AI大模型
  • 企业linux常用服务搭建
  • 数据结构每日一题day10(链表)★★★★★
  • Ansible(3)——主机清单与配置文件
  • 【高项】信息系统项目管理师(十四)配置与变更管理【3分】
  • unity点击button后不松开通过拖拽显示模型松开后模型实例化
  • 【工业场景】用YOLOv12实现饮料类别识别
  • 基于神经网络的肾脏疾病预测模型
  • 单元测试原则之——不要模拟不属于你的类型
  • 亚马逊云科技赋能英矽智能,打破新药研发“双十”定律
  • VASP计算过渡态(CI-NEB)初始结构生成脚本汇总
  • 【MySQL篇】limit深度分页性能:从原理理解小偏移量limit 1,200 vs 百万级偏移量limit 1000000,200的差异
  • DirectX安装及使用教程(附安装包)
  • MongoDB安装完整教程
  • Transformer【学习记录】
  • react使用eventBus在不同模块间进行通信
  • Synology NAS 部署WPS-Office
  • zk基础—3.集群与核心参数二
  • 2025年优化算法:真菌生长优化算法(Fungal Growth Optimizer,FGO)
  • 【NetCore】ControllerBase:ASP.NET Core 中的基石类
  • 长短期记忆神经网络(LSTM)基础学习与实例:预测序列的未来
  • 外卖平台问题
  • 未来幻想世界
  • JAVA学习小计之IO流01-字节流篇
  • Axure 使用笔记