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

简单聊聊多模态大语言模型MLLM

阅前声明:

本文是笔者阅读相关文章后,按个人理解的总结。如有不正之处,欢迎指正!

参考文章:

https://zhuanlan.zhihu.com/p/674698482

https://zhuanlan.zhihu.com/p/1903914328081540180

MLLM经典综述:A Survey on Multimodal Large Language Models

MLLM的训练过程:

MMLLM训练过程中,主要包含三个步骤:预训练->指令微调->对齐微调

这三个步骤的主要功能分别是:

预训练:基于一般的LLM模型,模态编码器,模态接口,这一步主要的功能实现MLLM对多模态的通用世界知识的认识;

指令微调:区别于一般的SFT(有监督微调)方法,使用“指令”辅助训练(也即类似提示词工程),提升MLLM的泛化能力。实现zero-shot的能力(即零样本性能,在没有经历过训练的数据上也能有较好的表现)。

对齐微调:这一步相当于对MLLM模型能力的进一步修正,约束模型的输出范围,让模型的输出更加规范,符合人类社会的伦理要求之类。换言之,就是要让模型的输出符合人类偏好,修正模型的不良行为。

个人理解,对齐微调有点类似LLM中的RAG功能,让MLLM只输出某个范围内的知识。

下面进一步介绍一下这三个步骤的主要内容:

预训练:

预训练过程主要包含三个结构:LLM模型,模态编码器,模态接口

LLM:

传统的LLM只有文本输入文本输出的功能,输入端和输出端的数据类型都是文本。LLM作为MLLM的关键结构之一,如何让LLM能够理解其他类型的数据,这是关键的一步,这一步的实现主要依靠模态编码器

另外,关于LLM,这里有一点就是LLM的架构问题。一般分为密集型模型架构和稀疏模型架构。这两种架构的区别在于:“训练时有多少比例的模型参数会被激活参与计算”。有点类似于传统神经网络中的drop_out操作。主流的稀疏模型架构就是混合专家模型(MoE),其主要还是基于Transformer架构。具体这种模型是什么原理,如何实现稀疏训练的,读者可自行了解。使用稀疏模型的一个好处就是:可以选择性的激活参数来扩展总参数大小,而不会增加计算成本。这种架构貌似正成为主流。

模态编码器:

这个模型的结构其实就是将不同类型的数据进行转化。一般是通过向量化,映射到语义空间的方式,然后通过训练,尽可能将其他数据类型的语义向量和文本向量在语义空间进行对齐。这部分可以参考我的另外一篇关于“语义空间”的介绍。

这里有非常多的经典模态编码器,如CLIP等。许多MLLM都是直接使用这些经典的预训练模态编码器的。

模态接口:

前文提到,模态编码器是将具有相同含义的不同类型数据映射到一个语义空间,让这些数据所对应的语义向量尽可能的接近。但这还并不能将其他数据类型和文本数据类型衔接起来,然后输入到LLM中训练。比如,“一张画有猫的图片”和“这是一只猫的文本”,尽管通过模态编码器,这两个数据所对应的语义向量在语义空间非常接近,但他们仍无法重合,无法关联起来。虽然他们很近,但MLLM并不知道这二者可以是等同。此时,就需要模态接口,模态接口就相当于将这两个向量进行映射,使他们一一对应起来。让“一张画有猫的图片”和“这是一只猫的文本”所对应的两个语义向量具有等同关系。

模态编码器经过大量的训练,就能够知道该将哪些语义向量关联起来。这样,就实现了其他类型数据到文本类型数据的转化。

最后,关联起来之后,一种常见的处理方式就是将模态编码器输出的特征转化为token和文本token连接在一起,输入给LLM进行下一步的处理。

指令微调:

这里的“指令”其实是一种标准结构化的数据类型,也即是一些模版数据,数据集就是许多条指令。用这些数据去进行微调训练,这种训练方式有点类似于提示词功能。这里需要介绍一下传统的SFT(监督微调)和指令微调训练的区别,以及为什么在MLLM的训练中使用这种微调方式。

指令数据具有类似这样的结构:

介绍:<用户的问题>

输入:{<图片>,<文本>...}
输出:<...>

首先,这里需要注意的一点是,指令微调也是一种监督学习策略。只不过他和一般的监测学习策略有些不同。

比如,对于一条指令训练数据,假设指令的问题部分是:“将这段文本分类为消极或积极”,另外一个指令数据的问题部分是:“判断这段文本的情感倾向”。通过提供大量这种表达方式不同,但含义相同的句子,模型通过学习就能够自动总结出这些句子的核心要点,当出现一个含义相同即使陌生的问题时,MLLM也能够题解“问题”是什么,这就显著提高了模型的泛化能力和Zero-Shot能力。这里和一般的监督学习不同的点在于,通过指令这种数据格式,训练的过程其实是利用LLM对自然语言的理解能力的。这就像在训练一个已经掌握知识的学生,老师只需要通过指令的形式进行点拨,就能理解和完成新的任务。

而传统的监督学习,需要在大量的数据和标签中,进行一一映射的关系学习,这个过程往往是从空白开始的,且在训练的过程中,并没有对模型本身能力的复用。此外,传统监督模型,本质上是模型在记忆许多输入和输出关系的映射,当训练数据不足时,模型的泛化能力往往很差。而指令微调训练的模型,可以根据语义和逻辑,结合自身知识进行推理和响应,泛化能力更前。

对齐微调:

关于对齐微调,主要的方法有:强化学习与人类反馈(RLHF)和直接偏好优化(DPO)。

对于对齐微调这一步的目的并不难理解,再具体实现上,归根到底还是有奖有罚类的监督学习,让模型的输出符合人类要求规范,在此不做进一步的介绍。

写在最后:

在简单了解了MLLM的原理后,笔者其实对于现有的传统神经网络算法产生了一定担忧。在最初,原以为多模态大语言模型是采用传统视觉模型/音频模型等+LLM的方式实现。但现实是:其将数据采取了新的利用方式,将多模态的数据token化了去处理。这种处理方式和传统的神经网络算法是完全不同的。

笔者近期也测试了豆包的MLLM,发现其对数字识别,图像分类,危险检测等这些粗粒度领域的视觉问题,有非常高的准确度,而且对图片的质量要求,鲁棒性,域自适应能力都非常强。这对于该领域的传统神经网络方法是一个巨大的打击。也无法否认,现在大模型方向越来越主流。

但值得庆幸的是,对于一些细粒度问题,以及生成需求上,现阶段的MLLM还不能够很好的胜任。比如一个非常简单的任务:利用红色检测框,圈出图片中的某个物体,返回处理后的图像。MLLM不仅无法准确圈出目标对象,甚至还会修改原始输入的图片。

究其原因,现阶段的大模型对于多模态->文本的理解,这一步已经做的越来越好了;但是对于文本理解->多模态,仍有较大的提升空间。且本质上,这是一个将图片数据打散又重新还原的过程,目前还存在较大问题。

http://www.xdnf.cn/news/1348309.html

相关文章:

  • LeetCode100 -- Day4
  • RCE的CTF题目环境和做题复现第3集
  • RoboTwin--CVPR2025--港大--2025.4.17--开源
  • 大模型微调训练资源占用查询:Windows 10 查看 NVIDIA 显卡GPU状态教程(替代 Ubuntu 下 watch nvidia-smi)
  • Python精确小数计算完全指南:从基础到金融工程实践
  • 二、高可用架构(Nginx + Keepalived + MySQL 主从)
  • StarRocks启动失败——修复全流程
  • AI生成技术报告:GaussDB与openGauss的HTAP功能全面对比
  • 【COMSOL】Comsol学习案例时的心得记录分享(三)
  • 期货Level2五档订单簿0.25秒级高频分时及日频历史行情数据使用指南
  • 刷题日记0822
  • 实现自己的AI视频监控系统-第一章-视频拉流与解码4(重点)
  • uboot添加ping命令的响应处理
  • 音视频处理工作室:实时通信的媒体层设计
  • Paddle3D-PETRv1 精度测试与推理实践指南
  • 容器安全实践(一):概念篇 - 从“想当然”到“真相”
  • 车载诊断架构 --- EOL引起关于DTC检测开始条件的思考
  • Mongodb操作指南
  • 大麦盒子DM4036-精简固件包及教程
  • 2025.8.22周五 在职老D渗透日记day24:burp+mumu抓包 安卓7.0以上证书配置
  • 电脑端完全免费的动态壁纸和屏保软件(真正免费、无广告、无会员)
  • 二叉搜索树(BST)、AVL树、红黑树
  • 爬虫基础学习-链接协议分析,熟悉相关函数
  • 基于抗辐照性能的ASP4644S电源芯片特性分析与多领域应用验证
  • 笔记本怎么才能更快散热?
  • DataStream实现WordCount
  • 信息结构统一论:物理世界与人类感知、认知及符号系统的桥梁
  • 透射TEM新手入门:衍射斑点标定 1
  • [特殊字符] TTS格局重塑!B站推出Index-TTS,速度、音质、情感表达全维度领先
  • Day25 栈 队列 二叉树