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

(论文总结)语言模型中的多模态思维链推理

(论文总结)语言模型中的多模态思维链推理

  • 论文名称
  • 研究背景
  • 动机
  • 主要贡献
  • 研究细节
    • 两阶段框架
    • 实验结果
      • 促进收敛性
      • 摆脱人工标注
      • 错误分析与未来前景

论文名称

Multimodal Chain-of-Thought Reasoning in Language Models

http://arxiv.org/abs/2302.00923

研究背景

CoT一开始出现了两种发展路径:一种是和CoT原始论文一致的,使用一个或几个和任务类似的示例进行提示的少样本(Few-Shot)CoT;一种是只在调用时给予启发(“请逐步思考”)的零样本(Zero-Shot)CoT。经过测试,少样本CoT会比零样本CoT更强(为什么?),因此成为了主流的研究方向。
少样本CoT的研究方向主要和优化示例和优化推理链有关。对于优化示例而言,首先是示例的生成,一种是和CoT原始团队相同的人工标注方法,称为手动生成示例;一种是基于LLMs的零样本CoT生成示例方法,称作自动生成示例。其次是示例的优化。第一,少样本CoT性能很大程度取决于示例质量,手动生成的示例会因为标注者不同而对性能有很大影响(有待进一步考证。原始CoT论文中提到少样例CoT性能和标注者语言习惯没有太大关联,这里提到性能有影响可能是因为不同的标注者提供的示例质量不同,例如准确性、逻辑性、步骤颗粒度等等);第二,对于示例的选择会产生很大影响。如果选择和要解决的问题语义相近的示例,一旦示例中出现错误,会导致极大的性能下降;因此开发出了自动CoT),将数据集问题划分为不同的簇,每次从每个簇中选择代表性问题并用零样本CoT生成其推理链,再把这种自动生成的示例用于少样本CoT。此外还有基于RL的方法和基于复杂度的方法。
对于优化推理链而言,也有多个趋势。一个是将问题进行分解,先将大问题分解成一个个小问题,再依次解答;每个小问题用得到之前问题的结果。(如果遇到含有条件分支的问题是否会指数级膨胀?如果中间答案错误会不会导致结果崩溃?)小问题还可以选择进行提示以提高输出质量。还有人提出了思维程序(PoT),将推理过程建模为一个程序,让LLM去执行它;另外还有对推理路径进行投票的方法。可以对大模型多个输出进行采样并进行多数表决,还可以增强随机性来输出更多的推理路径。
在文章发布之前,另一个趋势是通过微调大语言模型来引发思维链推理。主要方法是用老师模型的思维链输出微调学生模型,另一种是⼀种迭代的上下文感知提示方法,以根据当前步骤的上下文动态合成提示。

动机

对于多模态的输入(图+文)而言,100B以下的纯文本大模型很难输出对于输出正确结果有价值的思维链;无论是将思维链用于推理还是解释,效果都比直接输出结果要差。对于两阶段框架的CoT用法,也就是(1)QCM->R(2)QCMR->A,第一阶段的推理依据生成的RougeL分数及准确率都很高,但第二阶段的推理依然不如直接生成答案。通过对错误答案的分析发现,绝大多数情况都是因为没有视觉特征的参与,模型出现了幻觉,从而生成了虚假的推论依据。即使将图片内容用字幕表示出来,依然只有很微弱的提升。所以,应当将视觉特征与语义特征进行正交,从而得到正确的结果。

主要贡献

提出了一种两阶段框架,通过微调语言模型实现融合视觉和语言表征,从而实现多模态思维链。

研究细节

简要介绍:通过使用ViT模型提取出图片的视觉特征,然后在将其输入解码器之前与编码后的语言表示进行融合,就可以显著提升这种两阶段框架的多模态场景下的CoT效果。

两阶段框架

两阶段分别用带不同注释数据集训练同架构模型。第一阶段将原始的语言和视觉输入提供给模型,生成理由;第二部分将原始语言输入和生成的理由连接起来,在和视觉输入一起提供给模型生成答案。
[图片]

该基于Transformer的网络有三个步骤:编码,交互和解码。
编码:设模型为F(X),同时接受语言和视觉输入,文本表示H_{language}和视觉特征H_vision获得方式如下:
H l a n g u a g e = L a n g u a g e E n c o d e r ( X l a n g u a g e ) H v i s i o n = W h ⋅ V i s i o n E x t r a c t o r ( X v i s i o n ) H_{language} = LanguageEncoder(X_{language})\\ H_{vision} = W_h · VisionExtractor(X_{vision}) Hlanguage=LanguageEncoder(Xlanguage)Hvision=WhVisionExtractor(Xvision)
其中,· 由Transformer网络实现。 H l a n g u a g e ∈ R n ∗ d H_{language}\in R^{n*d} HlanguageRnd是Transformer编码器最后一层隐藏状态,其中n是输入语言长度,d是隐藏维度;视觉方面,通过ViT等冻结视觉提取模型提取块级视觉特征,然后通过一个可学习的投影矩阵 W h W_h Wh将特征转换为和 H l a n g u a g e H_{language} Hlanguage同形状的 H v i s i o n ∈ R m ∗ d H_{vision} \in R^{m*d} HvisionRmd,其中m是块的数量。
交互:编码结束后,使用单头注意力网络(为什么?)将文本标记和图像块相关联得到 Q ( H l a n g u a g e ) K ( H v i s i o n ) V ( H v i s i o n ) Q(H_{language})K(H_{vision})V(H_{vision}) Q(Hlanguage)K(Hvision)V(Hvision)。注意力输出为
H v i s i o n a t t n = S o f t m a x ( Q K T √ d k ) V H_{vision}^{attn} = Softmax(\frac{QK^T}{√ d_k})V Hvisionattn=Softmax(dkQKT)V
然后通过门控融合机制将 H l a n g u a g e H_{language} Hlanguage H v i s i o n H_{vision} Hvision融合:
λ = S i g m o i d ( W l H l a n g u a g e + W v H v i s i o n a t t n ) H f u s e = ( 1 − λ ) ⋅ H l a n g u a g e + λ ⋅ H v i s i o n a t t n , \lambda = Sigmoid(W_l H_{language} + W_v H_{vision}^{attn})\\ H_{fuse} = (1 − λ) · H_{language} + λ · H_{vision}^{attn} , λ=Sigmoid(WlHlanguage+WvHvisionattn)Hfuse=(1λ)Hlanguage+λHvisionattn,
融合后的输出即为 H f u s e ∈ R n ∗ d H_{fuse}\in R^{n*d} HfuseRnd W l W_l Wl W v W_v Wv是可学习参数。
解码:将 H f u s e H_{fuse} Hfuse输入Transformer解码器,以此来进行预测结果。

实验结果

从上图可以看到,多模态思维链的两种十亿以下的实现均做到了最尖端;第四部分的三种几个月后同期发布的模型和改论文的实现是正交且可融合的。他们可以联合起来达到没有人工标注推理依据的场景。

促进收敛性

两阶段与单阶段相比,在较低的训练轮次就可以取到较高的正确率,但后续的训练收益也就相对较低;多模态与Base模型相比,在每一个轮次都有更高的正确率。对于单阶段而言,多模态和Base模型在后期训练的成果基本一致,均强于两阶段基线模型;而两阶段多模态模型则强于所有模型。

摆脱人工标注

当用ChatGPT和InstructBLIP代替人工标注去进行推理链的生成时,第二阶段答案正确的概率和人工标注的准确率区别不大。
不同模型实现的有效性
将底层模型替换成不同类型其他变体之后,准确率没有太大的波动;而将视觉特征也进行替换后,ViT对比其他特征的优势是最大的。

错误分析与未来前景

对于这种基于十亿级模型的两阶段结构多模态思维链而言,最大的问题是对于常识的运用,这类错误占了总错误的80%。例如在解读地图、计算图像中的物体数量等。因此,后续的研究可以:(1)融入常识知识(2)整合更具信息性的视觉特征(3)实现过滤,剔除不相干的思维链(为什么会出现这种情况?)

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

相关文章:

  • 记一次Ubuntu22安装MongoDB8并同步本地数据过程
  • 动手学深度学习13.5. 多尺度目标检测-笔记练习(PyTorch)
  • FPGA FMC 接口
  • 【仿muduo库实现并发服务器】LoopThreadPool模块
  • Linux安装JDK和Maven
  • 多探头分布式雷达测流系统解决方案概述
  • 洛谷P1379 八数码难题【A-star】
  • 目标检测在国防和政府的应用实例
  • vue-i18n+vscode+vue 多语言使用
  • 缺乏对新成员的有效融入机制,如何改进
  • 学习昇腾开发的第12天--安装第三方依赖
  • 【Linux基础知识系列】第三十八篇 - 打印系统与 PDF 工具
  • Ubuntu 20.04 下 OpenVINO 2024 安装与配置
  • 业界优秀的零信任安全管理系统产品介绍
  • 基于 51 单片机做的二十四点小游戏
  • MongoDB 常用增删改查方法及示例
  • stm32 单片机主要优点有哪些?
  • 【Docker基础】Docker数据卷:命名卷(Named Volumes)详解
  • 从 0 到 1 构建可视化限流演示:React + Framer Motion 实现 Token Bucket 动画
  • Camera相机人脸识别系列专题分析之十五:人脸特征检测FFD算法之libcvface_api.so算法API详细注释解析
  • 解决 GitHub Actions 中 S3 部署文件堆积问题的完整指南
  • 使用tensorflow的线性回归的例子(二)
  • 数字雨动画背景
  • TensorFlow源码深度阅读指南
  • 工作中常用的Git操作命令(一)
  • 深度解析服务级别协议(SLA):保障业务稳定性的关键承诺
  • RabbitMQ简单消息发送
  • Reactor Hot Versus Cold
  • 比Axure更简单?墨刀高保真原型交互“监听变量”使用教程
  • 基于中国印尼会计准则差异,中国企业在印尼推广ERP(SAP、Oracle)系统需要注意的细节