多模态大模型通用模式

MM-LLMs(多模态大模型)是目前比较新的和实用价值越发显著的方向。其指的是基于LLM的模型,具有接收、推理和输出多模态信息的能力。这里主要指图文的多模态。

代表模型:GPT-4o、Gemini-1.5-Pro、GPT-4v、Qwen-VL、CogVLM2、GLM4V、InternVL-Chat-V1.5、MiniCPM-Llama3-V2.5
在这里插入图片描述

1.模型结构

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

主要由编码器、连接器、LLM组成:

编码器 Modality Encoder (ME):编码器是处理输入数据的组件,它可以接收多种模态的输入,如图像、音频或视频。编码器的任务是将这些原始的多模态数据转换成模型可以理解的特征表示。
连接器:连接器是连接编码器输出和大型语言模型(LLM)的桥梁。它的主要作用是将编码器输出的特征进一步处理,使其能够与LLM的输入格式兼容,从而让LLM能够更好地理解这些特征。
LLM:LLM是MLLM的核心,通常是一个预训练的语言模型,负责处理和生成文本。它能够根据输入的文本和其他模态的特征,进行语言理解、生成或推理等任务。
生成器:是可选的。可以附加到LLM上,用于生成除文本之外的其他模态输出,如图像、音频或视频。

(1)模态编码器

通常使用预训练的编码器。常见的有CLIP、EVA-CLIP、EVA2-CLIP-E、InternViT-6B、VILT。

优化要点:更高的分辨率能带来更高的性能提升。

一文看完多模态:从视觉表征到多模态大模型 - 菜人卷的文章 - 知乎
https://zhuanlan.zhihu.com/p/684472814

(2)连接器

该模块用于对齐不同模态和LLM的文本模态。

The Input Projector is tasked with aligning the encoded features of other modalities with the text feature space .
https://arxiv.org/html/2401.13601v5

最主要的方法是在预训练的视觉编码器和LLM之间引入一个可学习的连接器,将信息投影到LLM可以高效理解的空间中。
可学习的连接器的分类
①基于投影的连接器(Projection-based):这种连接器将编码器输出的特征投影到与LLM的词嵌入相同的维度空间,使得特征可以直接与文本令牌一起被LLM处理。如MLP。 (令牌级)
②基于查询的连接器(Query-based):这种连接器使用一组可学习的查询令牌来动态地从编码器输出的特征中提取信息。如Q-Former。 (令牌级)
③基于融合的连接器(Fusion-based):这种连接器在LLM内部实现特征级别的融合,允许文本特征和视觉特征在模型内部进行更深入的交互和整合。如Cross-attention。 (特征级)

其次可以使用专家模型,直接将图像描述语言作为文本发送给LLM。基本思想是在不训练的情况下将多模态输入转换为语言。通过这种方式,大型语言模型(LLMs)可以通过转换后的语言理解多模态性。

(3)LLM

预训练的LLM,如QwenLM、Yi-34B、Llama-3-8B-Instruct。

优化要点:更大的参数量能带来更高的性能提升;专家混合(MoE)架构较优。

2.训练流程

和语言模型一样,都要经过预训练和监督微调两个阶段。下图为Qwen-VL的训练流程。
在这里插入图片描述

(1) MM PT 多模态预训练

预训练阶段通常涉及大规模图文Pair对数据,例如字幕数据。通过优化预定义的目标函数来训练连接器,以实现各种模态之间的对齐。冻结LLM的参数。

例如可以给定一张图像,模型被训练以自回归方式预测图像的字幕,使用标准的交叉熵损失。

语料类型:图文对(<img1><txt1>);图文交错语料(<txt1><img1><txt2><txt3><img2><txt4>)。

在这里插入图片描述
对于简短和嘈杂的字幕数据,可以采用较低分辨率(例如224)以加快训练过程,而对于更长和更清洁的数据,最好使用更高的分辨率(例如448或更高)以减少幻觉。

(2)MM IT 指令微调

指令微调旨在教模型更好地理解用户的指令并完成所需的任务。通过这种方式微调,LLM可以通过遵循新指令来泛化到未见过的任务,从而提升零样本性能。

MM IT包括监督微调(SFT)和基于人类反馈的强化学习(RLHF),旨在与人类意图对齐并增强MM-LLMs的交互能力。

①SFT

样本格式:包括一个可选的指令和一个输入输出对。
在这里插入图片描述
模型被预测响应的下一个标记,训练目标通常是用于训练LLM的原始自回归目标,使用交叉熵损失函数。

数据集:LLaVA-Instruct-150k。

数据质量的评价维度:提示多样性;任务覆盖。

②RLHF

人类偏好对齐。利用强化学习算法使LLM与人类偏好对齐,训练环节中以人类注释作为监督。

流程:监督微调;奖励建模;强化学习。

方法:PPO;DPO。
跟语言大模型一样,具体可以看对应的论文。

3.模型评估

MM LLM 评估可以根据问题类型大致分为两类:封闭集和开放集。
评估可以看这个:https://github.com/open-compass/VLMEvalKit/blob/main/README_zh-CN.md#data-model-results

(1)封闭集

封闭集问题指的是一种可能答案选项是预定义且有限的问题类型。评估通常在任务特定的数据集上进行。
也就是选择题。

在这里插入图片描述

数据集:ScienceQA、MMBench、RealWorldQA。

(2)开放集

与封闭集问题相比,开放集问题的回答更灵活。
因此评测可以分为人工评测、GPT评分和案例研究。

①人工评测

人类评估可以从多个方面对微调后的模型进行评估,例如:

  • 相关性:评估模型的响应是否与给定的指令相关。
  • 连贯性:评估生成的文本在逻辑上一致且结构良好。
  • 流利性:评估生成的响应是否自然并且正确遵循语法规则。

数据集:https://github.com/X-PLUG/mPLUG-Owl/blob/main/mPLUG-Owl/OwlEval/OwlEval.md

②GPT评分

使用GPT代替人工。

③案例研究

专为某一模型设计定性或综合的评估方案。

4.发展方向

(1)粒度深入:朝向像素级定位。
(2)模态扩展:文本、图像、音频、视频等。
(3)多语言:多语言能力。
(4)场景扩展:多端(如手机)部署;垂域模型。

5.多模态幻觉

模型一定会有幻觉。多模态模型幻觉可分为:

(1)存在性幻觉(Existence Hallucination):

这是最基本的形式,指模型错误地声称图像中存在某些物体。

(2)属性性幻觉(Attribute Hallucination):

指错误地描述某些物体的属性,例如未能正确识别狗的颜色。它通常与存在性幻觉相关,因为属性的描述应基于图像中存在的物体。

(3)关系性幻觉(Relationship Hallucination):

这是更复杂的一种类型,也是基于物体的存在。它指的是错误描述物体之间的关系,例如相对位置和互动。

6.幻觉缓解方法

分为预纠正、过程中纠正和后纠正。

(1)预纠正

一种直观而简单的解决幻觉的方法是收集专门的数据(例如,负面数据)并使用这些数据进行微调,从而得到幻觉响应较少的模型。 如 VictorSanh/LrvInstruction

(2)过程中纠正

指改进架构设计或特征表示。这些工作尝试探索幻觉的原因,并设计相应的补救措施,以在生成过程中减轻幻觉。

  • HallE-Switch 对物体存在幻觉的可能因素进行了实证分析,并假设存在幻觉源于未被视觉编码器定位的物体,而这些物体实际上是基于嵌入在LLM中的知识推断出来的。基于这一假设,引入了一个连续控制因子和相应的训练方案,以在推理过程中控制模型输出的想象程度。
  • VCD 提出物体幻觉源于两个主要原因,即训练语料库中的统计偏差和嵌入在LLM中的强语言先验。作者注意到,当向图像注入噪声时,MLLMs倾向于依赖语言先验而非图像内容进行响应生成,从而导致幻觉。相应地,这项工作设计了一种放大-对比解码方案,以抵消错误的偏差。

(3)后纠正

不同于先前的范式,后纠正以后期补救的方式减轻幻觉,在输出生成后进行纠正。

  • Woodpecker 是一种无需训练的通用幻觉纠正框架。具体而言,该方法结合专家模型来补充图像的上下文信息,并设计了一条逐步纠正幻觉的流程。该方法具有可解释性,因为每一步的中间结果都可以检查,且物体是基于图像的。

参考:
1.https://arxiv.org/pdf/2401.13601
2.https://arxiv.org/pdf/2312.16602
3.https://arxiv.org/pdf/2306.13549
4.https://mp.weixin.qq.com/s/a1slqH2ScZnrFmDFpo0R7A
5.https://zhuanlan.zhihu.com/p/684472814
6.https://zhuanlan.zhihu.com/p/688215018
7.https://huggingface.co/spaces/opencompass/open_vlm_leaderboard
8.https://zhuanlan.zhihu.com/p/682893729

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

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

相关文章

Ptrade和QMT的区别,怎么获取合适的量化交易软件?

​Ptrade和QMT的适用人群 交易活跃用户 量化爱好者已经专业量化投资者 高净值个人或机构 Ptrade和QMT的区别 回测和交易频率 Ptrade回测和交易只支持分钟级和日线级别的频率&#xff0c;而QMT支持tick级、分钟级、5分钟级、10分钟级、日线、周线、月线等。 使用QMT进行回…

Docker overlay磁盘使用100%处理方法overlay 100%

一、问题描述 服务器上运行了几个docker容器,运行个一周就会出现overlay 100%的情况&#xff0c;经查找&#xff0c;是容器里生成了很多core.xxx的文件导致的。 二、解决方法 首先通过以下命令查看&#xff1a; df -h 可以看的overlay已经100%了&#xff0c;进入到/var/lib/d…

计算机网络实验(9):路由器的基本配置和单臂路由配置

一、 实验名称 路由器的基本配置和单臂路由配置 二、实验目的&#xff1a; &#xff08;1&#xff09;路由器的基本配置&#xff1a; 掌握路由器几种常用配置方法&#xff1b; 掌握采用Console线缆配置路由器的方法&#xff1b; 掌握采用Telnet方式配置路由器的方法&#…

Java | Leetcode Java题解之第148题排序链表

题目&#xff1a; 题解&#xff1a; class Solution {public ListNode sortList(ListNode head) {if (head null) {return head;}int length 0;ListNode node head;while (node ! null) {length;node node.next;}ListNode dummyHead new ListNode(0, head);for (int subL…

26 种 prompt 套路,驯服大模型

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接如…

封装音视频编解码和渲染的动态链接库编译和测试

1.动态链接库的编译 生成了以下几个文件 我们把生成的lib文件复制到lib文件夹中 其余三个文件不变动 2.进行测试看是否可以用生成的xcodec.lib库文件里的接口函数 以上是重新创建的新项目&#xff0c;导入了xcodec.lib&#xff0c;其他配置同以前项目 库测试结果 运行显示我们…

qt登录和闹钟实现

qt实现登录 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// 去掉头部this->setWindowFlag(Qt::FramelessWindowHint);// 去掉空白部分this->s…

栈(Stack)

目录 一.栈&#xff08;Stack&#xff09; 1.概念 2.栈的使用 3.栈的模拟实现 二.栈相关习题 1.逆波兰表达式求值 &#xff08;1&#xff09;链接 &#xff08;2&#xff09;解析 &#xff08;3&#xff09;题解 2.括号匹配 &#xff08;1&#xff09;链接 &#xff…

计算机网络——传输层重要协议(TCP、UDP)

一、常见名词解释 IP地址&#xff1a;IP地址主要用于标识网络主机、其他网络设备&#xff08;如路由器&#xff09;的网络地址&#xff0c;即IP地址用于定位主机的网络地址&#xff1b; IP地址是一个32位的二进制数&#xff0c;通常被分割为4个 8位⼆进制数&#xff08;也就是…

构建基于 LlamaIndex 的RAG AI Agent

I built a custom AI agent that thinks and then acts. I didnt invent it though, these agents are known as ReAct Agents and Ill show you how to build one yourself using LlamaIndex in this tutorial. 我构建了一个自定义的AI智能体&#xff0c;它能够思考然后行动。…

京东618 :AI总裁数字人、京东Apple Vision Pro版亮相

2004年6月18日&#xff0c;刚刚转型电商才半年的京东&#xff0c;用最互联网的方式为忠实粉丝打造了一场价格降到“难以置信”的店庆促销活动&#xff0c;这场促销活动还有一个很具有当年网络小说特质的名字——“月黑风高”。 2024年京东618&#xff0c;早已成为一场亿万消费…

泛微开发修炼之旅--20关于Ecology中如何查询正文文件的物理文件,并修改正文中的内容的解决方案

文章链接地址&#xff1a;20关于Ecology中如何查询正文文件的物理文件&#xff0c;并修改正文中的内容的解决方案

Linux系统编程——网络编程

目录 一、对于Socket、TCP/UDP、端口号的认知&#xff1a; 1.1 什么是Socket&#xff1a; 1.2 TCP/UDP对比&#xff1a; 1.3 端口号的作用&#xff1a; 二、字节序 2.1 字节序相关概念&#xff1a; 2.2 为什么会有字节序&#xff1a; 2.3 主机字节序转换成网络字节序函数…

C语言程序设计-10 指针

指针是&#xff23;语言中广泛使用的一种数据类型。运用指针编程是&#xff23;语言最主要的风格之一。利用指针变量可以表示各种数据结构&#xff1b;能很方便地使用数组和字符串&#xff1b;并能象汇编语言一样 处理内存地址&#xff0c;从而编出精练而高效的程序。指针极大地…

C语言 指针——字符数组与字符指针:字符串的输入和输出

目录 逐个字符输入输出字符串 整体输入输出字符串 用scanf输入/输出字符串 用gets输入/输出字符串 用scanf输入/输出字符串 用gets输入/输出字符串 逐个字符输入输出字符串 #define STR_LEN 80 char str[STR_LEN 1 ]; 整体输入输出字符串 用scanf输入/输出字符串 用gets…

【CVPR2021】LoFTR:基于Transformers的无探测器的局部特征匹配方法

LoFTR&#xff1a;基于Transformers的局部检测器 0. 摘要 我们提出了一种新的局部图像特征匹配方法。我们建议先在粗略级别建立像素级密集匹配&#xff0c;然后再在精细级别细化良好匹配&#xff0c;而不是按顺序进行图像特征检测、描述和匹配。与使用成本体积搜索对应关系的密…

oracle12c到19c adg搭建(二)oracle12c数据库软件安装

运行安装程序 不勾选 只安装软件 选择单实例安装 选择语言 企业版 确认目录 产品目录 用户组 开始安装 执行root脚本 [rooto12u19p software]# /u01/app/oraInventory/orainstRoot.sh Changing permissions of /u01/app/oraInventory. Adding read,write permissions for gro…

字节豆包大模型API吞吐、函数调用能力、长上下文能力测试总结

离开模型能力谈API价格都是耍流氓&#xff0c;豆包大模型作为API最便宜的模型之一&#xff0c;最近向个人开发者开放了&#xff0c;花了300元和一些时间对模型的API吞吐、函数调用能力、长上下文能力等进行了深度测试&#xff0c;看看它的能力究竟适合做 AI 应用开发吗&#xf…

【Anaconda】【Windows编程技术】【Python】Anaconda的常用命令及实操

一、Anaconda终端 在安装Anaconda后&#xff0c;电脑上会新增一个Anaconda终端&#xff0c;叫Anaconda Prompt&#xff0c;如下图&#xff1a; 我们选择“打开文件位置”&#xff0c;将快捷方式复制一份到桌面上&#xff0c;这样日后就可以从桌面上方便地访问Anaconda终端了&…

用python实现多文件多文本替换功能

用python实现多文件多文本替换功能 今天修改单位项目代码时由于改变了一个数据结构名称&#xff0c;结果有几十个文件都要修改&#xff0c;一个个改实在太麻烦&#xff0c;又没有搜到比较靠谱的工具软件&#xff0c;于是干脆用python手撸了一个小工具&#xff0c;发现python在…