【论文极速读】 LLava: 指令跟随的多模态大语言模型

news2024/12/29 10:52:41
【论文极速读】 LLava: 指令跟随的多模态大语言模型
FesianXu 20240331 at Tencent WeChat Search Team

前言

如何将已预训练好的大规模语言模型(LLM)和多模态模型(如CLIP)进行融合,形成一个多模态大语言模型(MLLM)是目前很火热的研究课题。本文将要介绍的LLava是一个经典的工作,其采用了指令微调的方式对MLLM进行训练,笔者在此笔记,希望对诸位读者有所帮助。如有谬误请见谅并联系指出,本文遵守CC 4.0 BY-SA版权协议,转载请联系作者并注明出处,谢谢

∇ \nabla 联系方式:

e-mail: FesianXu@gmail.com

github: https://github.com/FesianXu

github page: https://fesianxu.github.io/

知乎专栏: 计算机视觉/计算机图形理论与应用

微信公众号:机器学习杂货铺3号店


之前笔者在博文中曾经介绍过不少MLLM的工作 [2-4],这些工作在模型结构和数据采集、利用上都有所创新。本文将会介绍LLava (Large Language and Vision Assistant) [1],一个视觉指令微调的工作,在这篇工作中收集了一个大规模的指令微调数据集llava-instruct-150k,可以供给下游的MLLM任务进行指令微调。这个工作为我们采集数据的实践提供了有价值的指导,让我们看看他是如何做的。

LLava采集多模态指令微调数据的思路很直接:先将图片的视觉信息转化为文本描述,然后通过ChatGPT/GPT4的强大文本理解能力,去构建指令微调数据。由于视觉信息和文本信息之间存在信息鸿沟,为了尽可能减少信息差,如Fig 1所示,作者不仅采用image caption对图片进行描述, 同时采用object detection模型对图中的物体进行检测和定位,丰富的文本信息有利于尽可能全面地描述图片的视觉上下文信息,为后续GPT4通过文字去理解图片的视觉信息提供了重要基础。

fig_1_image_context_to_text

Fig 1. 两种不同的文本化的图片上下文信息,分别采用image caption和object detection模型进行处理。

考虑到MLLM的下游应用可能有多种多样,比如聊天机器人,信息抽取器等多种场景,因此在指令微调数据的构建上也需要尽可能的多样化。如Fig 2所示,作者在构建指令微调数据的时候考虑了三种可能的类型,对话、细节描述和复杂推理,其中对话属于多轮交互,而其他则是单轮交互。引入对话形式的指令微调数据,有利于后续将MLLM应用到聊天机器人应用中,同时也为MLLM提供了多轮对话的能力。细节描述的问题,可以采样自固定的问题集合,如下所示,但是围绕图片展开讨论的对话显然不可能存在固定的问题集合,作者于是采用GPT4去围绕图片信息,同时产生问题和回答。

• “Describe the following image in detail”
• “Provide a detailed description of the given image”
• “Give an elaborate explanation of the image you see”
• “Share a comprehensive rundown of the presented image”
• “Offer a thorough analysis of the image”

为了更好地让GPT4产生的问题更符合指令微调的需求,除了在prompt中对任务进行清楚地定义外,如下prompt所示,作者还提供了例子(需要人工设计提供)去辅助GPT4生成问题和回答,即是采用了in-context learning的方式。最终,作者采集到了158k个图文指令微调数据,其中包括58k个对话,23k个细节描述和77k个复杂推理。

你是一个人工智能视觉助理,你在查看一张图片。你将看到五句话,用于描述你正在看到的同一幅图像。在你看到图像时回答所有问题。

设计一个你和一个询问这张照片的人之间的对话。答案应该是一个视觉人工智能助理看到图像并回答问题的语气。提出不同的问题并给出相应的答案。包括询问图像视觉内容的问题,包括对象类型、对象计数、对象动作、对象位置、对象之间的相对位置等。请提出仅包括有明确答案的问题:

(1) 人们可以看到问题所问的图像中的内容,并且可以自信地回答;

(2) 可以根据图像自信地确定它不在图像中。不要问任何没把握回答的问题。

你还可以提出包括与图像中的内容相关的复杂问题,例如,询问图像中对象的背景知识、询问讨论图像中发生的事件等。同样,不要询问不确定的细节。在回答复杂问题时提供详细答案。例如,给出详细的例子或推理步骤,使内容更有说服力和条理。如有必要,可以包括多个段落。

fig_2_response_types

Fig 2. 三种不同类型的指令微调数据类型,对话,细节描述和复杂推理,其中对话是多轮交互,而其他是单轮。

LLava的模型建模,如Fig 3所示,采用了类似于Frozen [5] 的visual prompt的方式,将图片进行视觉特征提取后,通过投影矩阵 W \mathbf{W} W将其映射到LLM同维度的特征空间之中,即是 H v = W f v ( X v ) \mathbf{H_v} = \mathbf{W} f_v(\mathbf{X}_v) Hv=Wfv(Xv),其中 f v ( ⋅ ) f_v(\cdot) fv()是视觉提取模型,比如CLIP,而 X v \mathbf{X_v} Xv是输入的图片。最后将视觉侧的特征 H v \mathbf{H_v} Hv和文本侧的特征 H q \mathbf{H}_q Hq拼接在一起,即可送给LLM。在训练过程中,对于多轮对话的数据 ( X q 1 , X a 1 , ⋯   , X q T , X a T ) (\mathbf{X}^{1}_{q}, \mathbf{X}^{1}_{a},\cdots,\mathbf{X}^{T}_{q}, \mathbf{X}^T_{a}) (Xq1,Xa1,,XqT,XaT),其中 T T T是对话的轮次,将所有的回答 X a t \mathbf{X}_a^{t} Xat都视为LLM的待预测内容,那么第 t t t轮的LLM的指令输入 X i n s t r u c t t \mathbf{X}_{instruct}^{t} Xinstructt则是:
X i n s t r u c t t = { R a n d   c h o o s e   [ X q 1 , X v ]   o r   [ X v , X q 1 ] t = 1 X q t t > 1 (1) \mathbf{X}^{t}_{instruct} = \begin{cases} \mathrm{Rand\ choose\ } [\mathbf{X}^1_q, \mathbf{X}_v] \ or \ [\mathbf{X}_v, \mathbf{X}^1_q] & t=1 \\ \mathbf{X}^{t}_q & t \gt 1 \end{cases} \tag{1} Xinstructt={Rand choose [Xq1,Xv] or [Xv,Xq1]Xqtt=1t>1(1)
在第一个轮次 t = 1 t=1 t=1的时候,会随机选择图片 X v \mathbf{X}_v Xv前置或者图片后置,这样有利于增加数据的多样性。如Fig 4所示,模型的输入包含有一个系统提示词(system prompt),在本文是X_{system message} = A chat between a curious human and an artificial intelligence assistant.The assistant gives helpful, detailed, and polite answers to the human’s questions. <STOP> = ###,注意到只有绿色字样部分的才会进行损失计算,不难发现都是<STOP>部分和 X a t \mathbf{X}_{a}^{t} Xat部分。整体损失就是LLM的自回归损失,如公式(2)所示:
p ( X a ∣ X v , X i n s t r u c t ) = ∑ i = 1 L p θ ( x i ∣ X v , X i n s t r u c t , < i , X a , < i ) (2) p(\mathbf{X}_a|\mathbf{X}_v, \mathbf{X}_{instruct}) = \sum_{i=1}^{L} p_{\theta}(x_i|\mathbf{X}_v, \mathbf{X}_{instruct,<i}, \mathbf{X}_{a, <i}) \tag{2} p(XaXv,Xinstruct)=i=1Lpθ(xiXv,Xinstruct,<i,Xa,<i)(2)
注意到,在第 i i i个令牌(token)之前的所有令牌(包括指令和回答部分)都会作为输入,去预测第 i i i个令牌。

fig_3_visual_prompt

Fig 3. 采用visual prompt的形式引入多模态向量。

fig_4_multiturn_input

Fig 4. 模型的输入示例,只有绿色字样部分才会进行损失计算。

在训练范式上,由于引入了投影矩阵 W \mathbf{W} W去对齐视觉特征和LLM文本特征,因此作者设计成两阶段训练,在第一阶段引入预训练的方式,除了投影矩阵外其余所有参数都固定住,其数据采用的是CC3M中过滤出来的595k个图文对数据,采用如下所示最简单的提示词输入

X_q, X_v \n Assistant: X_a \n

其中的 X a \mathbf{X}_a Xa直接采用图文对中的文本部分,即是图片的caption,而 X q \mathbf{X}_q Xq则随机采样自以下几个问题。

• “Describe the image concisely.”
• “Provide a brief description of the given image.”
• “Offer a succinct explanation of the picture presented.”
• “Summarize the visual content of the image.”
• “Give a short and clear explanation of the subsequent image.”
• “Share a concise interpretation of the image provided.”
• “Present a compact description of the photo’s key features.”
• “Relay a brief, clear account of the picture shown.”
• “Render a clear and concise summary of the photo.”
• “Write a terse but informative summary of the picture.”
• “Create a compact narrative representing the image presented.”

在第二阶段的训练中,作者只对视觉编码器的参数就行固定,而LLM和投影矩阵的参数都进行端到端的训练,训练数据就来在于之前采集的158k个指令微调数据。

Reference

[1]. Liu, Haotian, Chunyuan Li, Qingyang Wu, and Yong Jae Lee. “Visual instruction tuning.” Advances in neural information processing systems 36 (2024). aka llava

[2]. https://blog.csdn.net/LoseInVain/article/details/136428429, 《Kosmos-1: 通用接口架构下的多模态大语言模型》

[3]. https://blog.csdn.net/LoseInVain/article/details/136072993, 《【论文极速读】Flamingo:一种交织图文的视觉语言大模型方法》

[4]. https://blog.csdn.net/LoseInVain/article/details/136013909,《BLIP2——采用Q-Former融合视觉语义与LLM能力的方法》

[5]. Tsimpoukelli, Maria, Jacob L. Menick, Serkan Cabi, S. M. Eslami, Oriol Vinyals, and Felix Hill. “Multimodal few-shot learning with frozen language models.” Advances in Neural Information Processing Systems 34 (2021): 200-212. aka Frozen

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1684467.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「云渲染课堂」3dmax渲染影响时间的原因有哪些

在3ds Max使用过程中经验丰富的用户普遍了解&#xff0c;渲染大型场景往往需要消耗更多的时间&#xff0c;尤其是在硬件配置相同的情况下。但有时候&#xff0c;我们可能会遇到一个反直觉的现象&#xff1a;在相同的硬件配置下&#xff0c;渲染小型场景所需的时间竟然超过了大型…

数据挖掘与机器学习——机器学习概述

一、什么是机器学习 机器学习的英文名称叫Machine Learning&#xff0c;简称ML&#xff0c;该领域主要研究的是如何使计算机能够模拟人类的学习行为从而获得新的知识。 机器学习与数据挖掘的联系&#xff1a;简单来说&#xff0c;机器学习就是让计算机从大量 的数据中学习到相关…

大创项目推荐 深度学习手势识别 - yolo python opencv cnn 机器视觉

文章目录 0 前言1 课题背景2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存 5 模型训练5.1 修…

MagicAnimate: Temporally Consistent Human Image Animation using Diffusion Model

show lab NUS&bytedancehttps://github.com/magic-research/magic-animate 问题引入 输入参考图片 I r e f I_{ref} Iref​和动作序列 p 1 : N [ p 1 , ⋯ , p N ] p^{1:N}[p_1,\cdots,p_N] p1:N[p1​,⋯,pN​]&#xff0c;其中 N N N表示的是帧数&#xff0c;输出的是 …

MySQL主从复制+读写分离(ShardingJDBC)

MySQL主从复制读写分离 MySQL主从复制介绍二进制日志&#xff1a; MySQL的主从复制原理如下搭建主从复制准备工作主库配置从库配置 测试 读写分离案例ShardingJDBC介绍数据库环境初始工程导入读写分离配置测试1). 保存数据2). 修改数据3). 查询数据4). 删除数据 MySQL主从复制 …

ipad air6电容笔推荐,2024十大高性价比电容笔排行榜!

​电容笔作为ipad的最佳拍档&#xff0c;为学生党和打工人带来了极大的便利&#xff0c;二者搭配效率真的大大提升&#xff0c;但是&#xff0c;如何选购一支适合自己的电容笔呢&#xff1f;作为一个对数码设备非常感兴趣并且有一定了解的人&#xff0c;我根据自己多年的使用经…

deepseek是哪家公司

deepblue是什么公司 DeepSeek是杭州深度求索人工智能基础技术研究有限公司的简称。12 杭州深度求索人工智能基础技术研究有限公司&#xff0c;成立于2023年&#xff0c;位于浙江省杭州市&#xff0c;是一家专注于研究和试验发展的企业。该公司的注册资本为1000万人民币&…

安装和使用图像处理软件GraphicsMagick @FreeBSD

GraphicsMagick是一个用于处理图像的读取、写入和操作的工具软件。它被誉为图像处理领域的“瑞士军刀”&#xff0c;短小精悍&#xff0c;支持超过88种图像格式&#xff0c;包括DPX、GIF、JPEG、JPEG-2000、PNG、PDF、PNM和TIFF等。 GraphicsMagick的主要特点包括&#xff1a;…

pyqt6水平布局

效果预览 main_window.ui <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>MainWindow</class><widget class"QMainWindow" name"MainWindow"><property name"geo…

【AI基础】反向传播

文章目录 1. 先写出第一步2.将其封装成函数3. pytorch版 1. 先写出第一步 # 定义输入值和期望输出 x_1 40.0 x_2 80.0 expected_output 60.0 初始化# 定义权重 w_1_11 0.5 w_1_12 0.5 w_1_13 0.5 w_1_21 0.5 w_1_22 0.5 w_1_23 0.5w_2_11 1.0 w_2_21 1.0 w_2_31 1…

【Android】WorkManager(章二)

剩余的三部分 官方文档 案例 实现下载器&#xff0c;并监听下载进度 界面 定义Worker 在官方案例的前提下&#xff0c;进行完善 下载download 下载进度 授予权限 开始工作并监听 完整代码 MainActivity.java package com.test.downloadworkerapplication;import static…

【SpringBoot】整合百度文字识别

流程图 一、前期准备 1.1 打开百度智能云官网找到管理中心创建应用 全选文字识别 1.2 保存好AppId、API Key和Secret Key 1.3 找到通用场景文字识别&#xff0c;立即使用 1.4 根据自己需要&#xff0c;选择要开通的项目 二、代码编写 以通用文字识别&#xff08;高精度版&am…

AI图书推荐:用OpenAI API 开发AI应用详细指南

随着人工智能不断重塑行业&#xff0c;OpenAI 处于人工智能研究的前沿&#xff0c;了解如何创建聊天机器人、虚拟助手、内容生成器和生产力增强器等创新应用程序是一个游戏规则改变者。本书《用OpenAI API 开发AI应用详细指南》&#xff08;OpenAI API Cookbook&#xff09;&am…

Docker访问文件权限受限问题解决

问题描述 运行项目的docker环境&#xff0c;新添加了一个数据集&#xff0c;但是数据集的访问权限受限&#xff08;Permission dinied&#xff09;&#xff0c;运行的命令如图所示 问题解决 chmod 777 xxx YYDS&#xff01;&#xff01;&#xff01;但是单纯直接运行会因为权限…

LLaVA UHD:一种可感知任意纵横比和高分辨率图像的LMM

LLaVA-UHD: an LMM Perceiving Any Aspect Ratio and High-Resolution Images (2024-03-18) 文章概要作者: Ruyi Xu; Yuan Yao; Zonghao Guo; Junbo Cui; Zanlin Ni; Chunjiang Ge; Tat-Seng Chua; Zhiyuan Liu; Maosong Sun; Gao Huang期刊: arXiv 预印版DOI: 10.48550/arXiv…

Python 全栈体系【四阶】(五十二)

第五章 深度学习 十二、光学字符识别&#xff08;OCR&#xff09; 2. 文字检测技术 2.1 CTPN&#xff08;2016&#xff09; 2.1.1 概述 CTPN全称Detecting Text in Natural Image with Connectionist Text Proposal Network&#xff08;基于连接文本提议网络的自然图像文本…

uniappx 安卓保活(多种技术;UTS版) Ba-KeepAlive-U

简介&#xff08;下载地址&#xff09; Ba-KeepAlive-U 是一款android原生保活插件&#xff0c;UTS版本&#xff08;同时支持uniapp和uniappx&#xff09;&#xff0c;支持市面上大部分机型&#xff0c;Android4.4到Android14&#xff08;**注意&#xff1a;**不保证支持所有机…

Go-zero(api部分)

目录 api的语法&#xff1a; type&#xff1a;用于定义请求/响应体 service&#xff1a;定义HTTP服务 server&#xff1a;控制生成HTTP服务时候的meta信息 根据api文档生成最小HTTP服务 目录结构 api响应封装 api的语法&#xff1a; 首先定义一个api文档 type&#xff…

电磁兼容(EMC):时钟电路PCB设计

目录 1. 布局 2. 布线 时钟电路做为产品内部的强辐射源&#xff0c;在设计阶段已经选用展频或者分频方案后&#xff0c;见另外接下来就需要对PCB的耦合路径进行规划设计。时钟电路具体的PCB设计具体要求如下&#xff1a; 1. 布局 结构干涉&#xff1a;时钟电路的晶振和法拉电…

K8s之ku-be admin部署安装

目录 一、环境配置 1、机器部署 2、部署大致流程 二、实验环境配置 1、所有节点关闭防火墙核心防护以及关闭swap交换 2、所有节点安装docker 3、所有节点安装kubeadm&#xff0c;kubelet和kubectl 4、部署K8s集群 5、设定kubectl 6、所有节点部署网络插件flannel 7、…