玉林网站优化,网站建设公司那个好,做分析图用的地图网站,无极在线招聘招工最新招聘神经网络的公式推导 简介摘要引言多模态思维链推理的挑战多模态CoT框架多模态CoT模型架构细节编码模块融合模块解码模块 实验结果运行代码补充细节安装包下载Flan-T5数据集准备rougenltkall-MiniLM-L6-v2运行 简介 本文主要对2023一篇论文《Multimodal Chain-of-Thought Reason… 神经网络的公式推导 简介摘要引言多模态思维链推理的挑战多模态CoT框架多模态CoT模型架构细节编码模块融合模块解码模块 实验结果运行代码补充细节安装包下载Flan-T5数据集准备rougenltkall-MiniLM-L6-v2运行 简介 本文主要对2023一篇论文《Multimodal Chain-of-Thought Reasoning in Language Models》主要内容进行介绍。
参考文献本文所涉及的所有资源的获取方式https://www.aspiringcode.com/content?id17097068673785uidd71ed07048414e97a398197d8a22e512
摘要 大型语言模型LLM在解决复杂推理问题时通过引入思想链CoT提示来生成中间推理步骤展现出了卓越的能力。但目前的CoT研究大多局限于语言领域。本文提出了一种创新的多模态CoT方法该方法将语言文本和视觉图像信息融合到一个两阶段的框架中该框架明确区分了基本原理的生成和答案的推理过程。这样的设计使得答案推理能够基于更加丰富和准确的多模态信息进行从而提升了推理的质量。采用多模态CoT后即使在模型参数仅为10亿的情况下其性能也远超之前的顶尖LLM如GPT-3.5准确率从75.17%大幅提升至91.68%甚至超越了ScienceQA基准上的人类表现。
引言 阅读一本未包含数字或图表的教育书籍时我们发现通过综合不同形式的数据如视觉图像、语言文字及音频信息我们的知识吸收效率显著提升。大型语言模型LLM在应对复杂推理任务时能够先构建一系列中间逻辑步骤再据此推导出答案这种技巧被形象地称为思维链推理CoT并广受赞誉。
然而遗憾的是当前关于CoT推理的研究大多局限于语言领域对多模态情境的探索显得不足。为了在多模态环境中激活CoT推理本文提出了一种新的多模态CoT框架。
在这个框架下面对来自不同模态的输入信息多模态CoT会先将复杂问题拆解成一系列中间推理环节即基本原理随后基于这些环节推导出最终答案。鉴于视觉与语言是当前最为普及的两种信息形式我们的研究特别聚焦于这两者。
一个示例如图1所示。 通常有两种方法可以引发多模式CoT推理 i提示LLM ii微调小模型
执行多模式CoT的最直接方法是将不同模态的输入转换为一个模态并提示LLM执行CoT。例如可以通过字幕模型提取图像的字幕然后将字幕与要输入LLM的原始语言连接起来。然而在字幕制作过程中存在严重的信息丢失因此使用字幕与视觉特征相反可能会在不同模态的表示空间中缺乏相互协同作用。
为了促进模态之间的交互另一个潜在的解决方案是通过融合多模态特征来微调较小的语言模型。
由于这种方法允许灵活地调整模型架构以包含多模式特征在这项工作中研究了微调模型而不是提示LLM。
我们都知道1000亿参数100B下的语言模型往往会产生幻觉推理误导答案推理。
为了减轻幻觉的挑战文章提出了多模态CoT将语言文本和视觉图像模式结合到一个分为两个阶段的框架中该框架将原理生成和答案推理分开。通过这种方式答案推理可以利用基于多模式信息的更好生成的理由。我们的实验是在ScienceQA基准上进行的这是最新的带有注释推理链的多模式推理基准。实验结果表明我们的方法比以前的GPT-3.5模型提高了16%75.17%→91.68%。文章的贡献总结如下 i 这项工作是第一次以不同的方式研究CoT推理。
ii提出了一个两阶段框架通过微调语言模型来融合视觉和语言表示以执行多模式CoT。该模型能够生成信息理性以便于推断最终答案。
iii文章的方法在ScienceQA基准上实现了最先进的新性能比GPT-3.5的精度高出16%甚至超过了人类的性能。
多模态思维链推理的挑战 现有研究表明CoT推理能力可能在一定规模的语言模型中出现例如超过100B参数的大模型。然而在1B模型中激发这种推理能力仍然是一个悬而未决的挑战更不用说在多模式场景中了。
这篇文章的重点是在1B左右模型因为这样可以与常规消费级GPU例如32G内存一起进行微调和部署。接下来将阐述1B模型在CoT推理中失败的原因并研究如何设计一种有效的方法来克服这一挑战。
下面有个有趣的现象
在ScienceQA基准上微调了CoT推理的纯文本基准模型。采用UnifiedQA-Base作为主干语言模型。任务为文本生成问题其中模型将文本信息作为输入并生成由基本原理和答案组成的输出序列。如图1所示的示例该模型将问题文本Q、上下文文本C和多个选项M的标记串联作为输入。 为了研究CoT的影响我们将其与三种变体的性能进行了比较 i 直接预测答案无CoTQCM→A ii 推理其中答案推理以基本原理为条件QCM→RA iii 使用基本原理解释答案推理的解释QCM→AR。 令人惊讶的是我们观察到准确性下降12.54%80.40%→67.86%如果模型在回答之前预测理性QCM→RA。结果表明这些理由可能不一定有助于预测正确的答案。
其中的原因可能是模型在获得所需答案之前超过了最大token限制或者提前停止生成预测。
然而文章发现生成的输出RA的最大长度总是小于400个token这低于语言模型的长度限制。因此对理性危害答案推理的原因进行更深入的探讨是值得的。
为了进一步探究上述情况形成的原因并深入研究原理如何影响答案预测本文将CoT问题分为两个阶段即原理生成和答案推理。基本原理生成使用RougeL分数来评估和答案推理使用准确性评估。表3显示了基于两阶段框架的结果。尽管两阶段基线模型在基本原理生成方面获得了91.76的RougeL分数但答案推理的准确率仅为70.53%。
与表2中的QCM→A80.40%相比结果表明在两阶段框架中生成的基本原理并不能提高答案的准确性。 随机抽取的50个错误案例分析揭示模型常陷入一种虚幻的推理陷阱导致答案推导偏离正确轨道。如图2所示一个典型错误是模型左侧基线模型在没有视觉信息辅助的情况下错误地推断出“一个磁体的南极会靠近另一个磁体的南极”。在这些错误案例中此类视觉缺失导致的推理幻觉占比高达64%。
文章推测这种幻觉根源在于执行高效多模态CoT时视觉上下文的缺失。为了弥补这一不足一种直观的做法是将图像转化为文字描述并将这些描述作为额外信息加入两个阶段的输入中。然而如表3所示这种做法带来的性能提升十分有限仅提升0.59%。
随后我们探索了一种更先进的技术即将视觉特征直接融入语言模型中。具体做法是利用DETR模型提取配对图像中的视觉特征并在将这些特征传递给解码器之前与编码后的语言表示相结合。引入视觉特征后基本原理生成的RougeL分数跃升至96.97%QCM→R这一改进也相应地提升了84.91%的答案准确率QCMR→A。随着有效理由的生成幻觉现象得到显著缓解——62.5%的幻觉错误得以纠正见图3b。这表明视觉特征对于构建有效推理路径和准确答案推断至关重要。作为两阶段方法QCMR→A表3中的方法相较于表2中的一阶段方法展现出更优越的性能因此在多模态CoT框架中我们选择了这一两阶段方法。
多模态CoT框架 基于之前的分析多模式CoT将语言文本和视觉图像模式合并到一个两阶段的框架中以减少幻觉输出提升模型的效果。
多模式CoT由两个训练阶段组成 i 基本原理生成 ii 答案推理
两个阶段共享相同的模型体系结构但输入X和输出Y不同。 整个过程如图4所示。 在基本原理生成阶段模型的输入为X其中X如下 其中括号中的前者表示第一阶段中的语言输入后者表示视觉输入即图像。
X可以看做实例化为多选推理问题的问题、上下文和选项的拼接如图4所示。目标是学习一个基本原理生成模型RFX其中R是基本原理。
在答案推理阶段将基本原理R融入到到原始语言输入 因此继续构建第二阶段的语言输入 其中◦ 表示拼接。然后我们将更新后的输入 馈送到答案推理模型以推断最终答案 。
现在回过头来看图4应该就比较清晰明了了。
多模态CoT模型架构细节 上面我们已经知道了文章的多模态CoT流程是怎么样的了接下来将分析其中关键的模型架构细节也就是上文提到的F( )以便我们能够对多模态CoT有更深入的理解。
F( )可以分为三个模块编码模块、融合模块、解码模块
编码模块 其中 LanguageEncoder(·)指的就是transformer的encoder部分输出的就是Transformer编码器中最后一层的隐藏状态。
VisionExtractor· 用于将输入图像矢量化为视觉特征使用的应该是现成的视觉提取模型DETR其实应该也是类似transformer的encoder因为计算机视觉中也有vision transformer。
融合模块 在编码模块获得到文本和图片的表示后先进行注意力计算将文本和图像信息联系起来 其中Q、K、V分别为
然后使用门控融合机制进行特征融合 其中 都是可训练的参数。
解码模块 这里就比较简单使用的就是transformer的decoder 作为输入输出为我们需要的Y
至此我们对多模态CoT应该有一个比较深入的了解了关键内容其实就是使用encoder将文本信息和图像信息表示出来使用门控融合机制进行特征融合然后预测出我们需要的结果这个过程就是F( )。
所以多模态CoT完整的流程就是先将初始的文本和图像输入F( )得到图片和原始文本融合之后的CoT然后再使用CoT的结果增强原始文本信息后得到的结果再和图片信息输入F( 得到我们最终需要的预测结果。此时再去看图4应该就一目了然了。
实验结果 表4显示了主要结果。Mutimodal CoTLarge比GPT-3.5高16.51%75.17%→91.68%并超过人类表现。具体而言在8个问题类别中Mutimodal CoT Large的得分为21.37%67.43%→88.80%的性能增益。与现有的UnifiedQA和GPT-3.5方法相比这些方法利用上下文中的图像字幕来提供视觉语义结果表明使用图像特征更有效。此外根据表5中的消融研究结果我们的两阶段框架有助于获得优异的结果。总体而言结果验证了多模态的有效性以及通过两阶段框架使用1B模型实现CoT推理的潜力。
运行代码 在这里不得不吐槽一句huggingface被禁了下载模型还得用镜像这就导致代码里设计模型加载的部分都得自己弄了再加上有些库版本不兼容一些代码还需要进行修改…历时3天终于跑通了。 因为我batch_size开的比原文大了2倍训练的时候显存用的就比较多了自己硬件是否符号复现条件可供参考。
测试运行代码epoch小、batch_size大方便加速调试
# rationale generation 生成理由
python main.py \--data_root data/ScienceQA/data \--caption_file data/instruct_captions.json \--model declare-lab/flan-alpaca-base \--user_msg rationale --img_type resnet \--bs 16 --eval_bs 32 --epoch 1 --lr 5e-5 --output_len 512 \--use_caption --use_generate --prompt_format QCM-E \--output_dir experiments训练一个epoch大约30min左右评估预测得几h 得到图像增强理由后对答案进行增强得到结果
# answer inference 回答
python main.py \--data_root data/ScienceQA/data \--caption_file data/instruct_captions.json \--model declare-lab/flan-alpaca-base \--user_msg answer --img_type resnet \--bs 16 --eval_bs 32 --epoch 1 --lr 5e-5 --output_len 64 \--use_caption --use_generate --prompt_format QCMG-A \--output_dir experiments \--eval_le experiments/rationale_declare-lab-flan-alpaca-base_resnet_QCM-E_lr5e-05_bs16_op512_ep1/predictions_ans_eval.json \--test_le experiments/rationale_declare-lab-flan-alpaca-base_resnet_QCM-E_lr5e-05_bs16_op512_ep1/predictions_ans_test.json
这段就比较快了
补充细节 安装包 pip install -r requirements.txt下载Flan-T5 从百度网盘下载Flan-T5模型参数解压到 declare-lab\flan-alpaca-base\
数据集准备 文本数据集 https://github.com/lupantech/ScienceQA/tree/main/data 的内容下载到data/ScienceQA/data/
图像数据集 https://hf-mirror.com/cooelf/vision_features/tree/main 的内容下载到vision_features/ 这是已经提取好的图像特征有resnet、vit等想用哪个下哪个
rouge
metric evaluate.load(r/mmcot/mm-cot-main/mm-cot-main/myrouge/evaluate-main/evaluate-main/metrics/rouge)main.py中rouge的路径要修改成自己的路径
nltk 下载nltk需要的数据
import nltk
nltk.download(punkt)如果下载不下来就把需要的tokenizers复制到对应的文件夹 cp -r tokenizers /root/nltk_data
all-MiniLM-L6-v2 在utils_evaluate.py中
model SentenceTransformer(sentence-transformers/all-MiniLM-L6-v2).cuda()如果网络不行需要自行下载模型 下载地址 https://hf-mirror.com/sentence-transformers/all-MiniLM-L6-v2/tree/main 里面所有的东西放在一个文件夹即可 代码里面模型的路径要改成自己的
运行
注意这里为了测试运行epoch只设置了1并且batch size设置的比较大 跑通了之后可以参考原文作者参数进行实验。
# rationale generation 生成理由
python main.py \--data_root data/ScienceQA/data \--caption_file data/instruct_captions.json \--model declare-lab/flan-alpaca-base \--user_msg rationale --img_type resnet \--bs 16 --eval_bs 32 --epoch 1 --lr 5e-5 --output_len 512 \--use_caption --use_generate --prompt_format QCM-E \--output_dir experiments# answer inference 回答
python main.py \--data_root data/ScienceQA/data \--caption_file data/instruct_captions.json \--model declare-lab/flan-alpaca-base \--user_msg answer --img_type resnet \--bs 16 --eval_bs 32 --epoch 1 --lr 5e-5 --output_len 64 \--use_caption --use_generate --prompt_format QCMG-A \--output_dir experiments \--eval_le experiments/rationale_declare-lab-flan-alpaca-base_resnet_QCM-E_lr5e-05_bs16_op512_ep1/predictions_ans_eval.json \--test_le experiments/rationale_declare-lab-flan-alpaca-base_resnet_QCM-E_lr5e-05_bs16_op512_ep1/predictions_ans_test.json 参考文献本文所涉及的所有资源的获取方式https://www.aspiringcode.com/content?id17097068673785uidd71ed07048414e97a398197d8a22e512