深度学习自然语言处理 原创
作者: 林哲乐
使用视觉和语言指令训练一个多模态聊天机器人!
基于开源多模态模型 OpenFlamingo,作者使用公开数据集创建了各种视觉指令数据,包括视觉问答、图像字幕、视觉推理、文本 OCR 和视觉对话。此外,还使用仅包含语言指令数据的语言模型组件进行了训练。
视觉和语言指令的联合训练有效提高了模型的性能!
具体细节就跟随小编继续往下看看吧~
总结
本文提出一种多模态GPT(视觉、语言),与人类进行多轮对话,同时设计了统一化多模态的指令数据模板
能够遵循的指令类型:生成详细的标题、计算特定的对象、处理一般的询问
基准模型:OpenFlamingo(用LoRA方式训练)
联合训练的数据:1.纯文本数据 2.图像-文本数据
其他的一些多模态GPT模型:GPT-4[1]、Mini-GPT[2]、LLaVA[3]
提到的其他LLM:Vicuna[4]、LLaMA[5]
提到的其他数据集:VQA v2.0、Ok-vqa、GQA、CLEVR、NLVR
1.引言
-
人类交流/理解世界的方式:视觉、语言等
-
AI智能助手的作用:根据多种模态的指令,理解人类意图,完成各种任务
-
之前的方法:将视觉表示与LLM的输入空间对齐,随后利用LLM中的原始自我注意来处理视觉信息
-
本文的方法:微调Flamingo(开源)
-
视觉编码器
-
门限交叉注意力机制
-
预训练使用“图文对”数据
-
统一多模态的指令模板
-
语言数据、语言-视觉数据,进行联合训练
-
-
本文目标:在多模态对话任务上,接近人的性能表现
2.统一指令模板
主要是提出了一个统一的训练数据模板,把以下两种数据整合起来,提高模型理解能力
2.1 仅语言的指令模板
仅包含语言的指令提示模板
{instruction}, {input}为输入文本,{response} ,<EOS> 用于计算损失
使用数据:
-
Dolly 15k数据集
-
Alpaca GPT4数据集
2.2 视觉-语言的指令模板
包含视觉-语言的指令提示模板
其中,{question} 是原始文本,<image_token>是表示图像存在的token,{response}、<EOS> 用于计算损失
使用数据集:
-
LLaVA
-
Mini-GPT4
-
A-OKVQA
-
COCO caption (不直接作为训练集,而是用GPT-4转化,再加入训练集)
-
OCR VQA
上述合成指令使得训练集较为丰富,则模型能够更健壮
图像描述的指令,举例如下:
本文方法
模型结构图
基线模型:open-flamingo模型
组成:
-
视觉编码器:CLIP
-
感知重采样
-
语言解码器:LLaMA (自注意力、交叉注意力、FFW中加入LoRA,便于微调)
训练数据:用2.1和2.2两种数据,进行联合训练
训练过程:通过预测文本的下一个标记进行训练,只有{responce}和标记参与损失计算
4.实验
实验设置:
实验参数 | 取值 |
---|---|
GPU | A100 * 8 |
epoch | 1 |
batch_size | 1 |
LoRA参数更新 | 每16轮 |
learning rate | 1e-5 |
Demos展示:
-
给出一个烤千层面的食谱,并告诉用户在哪里吃到它
-
能够识别埃隆·马斯克的形象,并回答关于埃隆·马斯克的问题
-
我知道照片上有4个女人,也知道她们在做什么
-
认得出电影,也知道电影是由哪个电影公司制作的
-
能识别图像中的人物,并认识该书的作者
-
可以回答关于用户旅行的一般问题
-
可以为图像生成详细的描述,并有能力推理得到在图像中的季节
在线网站
感兴趣可以去官方网站[6]去尝试下,真的很棒!点击阅读原文也可直达!
缺点是好像只支持英文