LLM - 理解 多模态大语言模型(MLLM) 的 对齐微调(Alignment) 与相关技术 (五)

欢迎关注我的CSDN:https://spike.blog.csdn.net/
本文地址:https://spike.blog.csdn.net/article/details/142354652

免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。


完备(Full-Fledged) 的 多模态大语言模型(MLLM) 经历 3 个阶段的训练,即 预训练(Pre-training)、指令微调(Instruction-Tuning) 和 对齐调优(Alignment Tuning)。每个训练阶段都需要不同类型的数据,并且实现不同的目标。本篇介绍,对齐微调(Alignment Tuning) 部分。

对齐微调 (Alignment Tuning),通常用于需要将模型与特定人类偏好对齐的场景中,例如,在响应中包含更少的幻觉。目前,基于人类反馈的强化学习(Reinforcement Learning with Human Feedback, RLHF)直接偏好优化(Direct Preference Optimization, DPO) 是对齐微调的两种主要技术。依次介绍这两种技术的主要思想,提供用于解决实际问题的示例,最后,给出相关数据集的汇总。

Alignment tuning is more often used in scenarios where models need to be aligned with specific human preferences, e.g. response with fewer hallucinations. Currently, Reinforcement Learning with Human Feedback (RLHF) and Direct Preference Optimization (DPO) are two main techniques for alignment tuning. In this section, we introduce the main ideas of the two techniques in sequence and offer some examples of how they are utilized in addressing practical problems, and finally, give a compilation of the related datasets.

RLHF 使用强化学习算法,将 大语言模型(LLMs) 与 人类偏好 对齐,在训练循环中,以人类注释作为监督,参考 InstructGPT 中的示例,RLHF 主要包含 3 个关键步骤,即:

  1. 有监督的微调(Supervised Fine-Tuning, SFT),即微调预训练模型,实现初步期望的输出行为。在 RLHF 设置中,微调模型被称为策略模型(Policy Model)。注意,这一步可能会被跳过,因为 监督策略模型 π S F T \pi^{SFT} πSFT,可以是指令微调的模型。

  2. 奖励建模,即使用 偏好对(Preference Pairs) 训练奖励模型,输入 多模态的提示(例如,图像和文本) x x x 和 响应对 ( y w , y l ) (y_{w},y_{l}) (yw,yl),奖励模型 r θ r_{\theta} rθ 学习给予首选响应 y w y_{w} yw 更高的奖励,相比于 y l y_{l} yl,根据以下训练目标:
    L ( θ ) = − E x , y w , y l [ l o g ( σ ( r θ ( x , y w ) − r θ ( x , y l ) ) ) ] L(\theta)=-E_{x,y_{w},y_{l}}[log(\sigma(r_{\theta}(x,y_{w}) - r_{\theta}(x,y_{l})))] L(θ)=Ex,yw,yl[log(σ(rθ(x,yw)rθ(x,yl)))]
    其中 D = { ( x , y w , y l ) } D = \{(x, yw, yl)\} D={(x,yw,yl)} 是由人类标注的对比数据集。在实践中,奖励模型 r θ r_{\theta} rθ 与策略模型结构相似。

  3. 强化学习,即采用 近端策略优化(Proximal Policy Optimization, PPO) 算法来优化 RL 策略模型 π ϕ R L \pi^{RL}_{\phi} πϕRL。通常,在训练目标中,每个令牌添加 KL 惩罚,以避免偏离原始策略太远,从而得到训练目标:
    L ( ϕ ) = − E x ∼ D , y ∼ π ϕ R L ( y ∣ x ) [ r θ ( x , y ) − β D K L ( π ϕ R L ( y ∣ x ) ∣ ∣ π R E F ( y ∣ x ) ) ] L(\phi)=-E_{x \sim D, y \sim \pi_{\phi}^{RL}(y|x)}[r_{\theta(x,y)}-\beta D_{KL}(\pi_{\phi}^{RL}(y|x) || \pi^{REF}(y|x))] L(ϕ)=ExD,yπϕRL(yx)[rθ(x,y)βDKL(πϕRL(yx)∣∣πREF(yx))]
    其中 β \beta β 是 KL 惩罚项的系数。通常,RL 策略 π ϕ R L \pi_{\phi}^{RL} πϕRL 和参考模型 π R E F \pi^{REF} πREF 都是从监督模型 π S F T \pi^{SFT} πSFT 初始化的。通过这个调整过程,所获得的 RL 策略模型预计将与人类偏好对齐。

研究人员已经探索了使用 RLHF 技术进行更好的多模态对齐。例如,LLaVA-RLHF 收集人类偏好数据,根据 LLaVA 调整模型,以减少幻觉。

DPO 使用简单的二元分类损失,从人类偏好标签中学习,与基于 PPO 的 RLHF 算法相比,DPO 无需学习显式的奖励模型,从而将整个流程简化为两个步骤,即人类偏好数据收集和偏好学习。学习目标如下:
L ( ϕ ) = − E ( x , y w , y l ) ∼ D [ l o g σ ( β l o g π ϕ R L ( y w ∣ x ) π R E F ( y w ∣ x ) ) − β l o g π ϕ R L ( y l ∣ x ) π R E F ( y l ∣ x ) ) ] L(\phi)=-E_{(x,y_w,y_l) \sim D}[log\sigma(\beta log \frac{\pi_{\phi}^{RL}(y_{w}|x)}{\pi^{REF}(y_{w}|x)}) - \beta log \frac{\pi_{\phi}^{RL}(y_{l}|x)}{\pi^{REF}(y_{l}|x)})] L(ϕ)=E(x,yw,yl)D[logσ(βlogπREF(ywx)πϕRL(ywx))βlogπREF(ylx)πϕRL(ylx))]

RLHF-V 通过纠正模型响应中的幻觉,收集 细粒度(段落级) 偏好数据对,使用获得的数据执行密集 DPO。或者,通过提示 GPT-4V 收集偏好数据,通过 DPO 将偏好监督蒸馏到指令调整模型中。

相关数据集,对齐调整的数据收集要点是收集对模型响应的反馈,即决定哪个响应更好。通常,收集这类数据的成本更高,而且这一阶段使用的数据显示通常甚至比前一阶段还要少,即:

  • LLaVA-RLHF,包含 10K 个基于诚实度和有用性从人类反馈中收集的偏好对,主要用于减少模型响应中的幻觉。
  • RLHF-V,包含 5.7K 个通过段落级幻觉纠正收集的细粒度人类反馈数据。
  • VLFeedback,利用人工智能对模型响应提供反馈,数据集包含了超过 380K 个由 GPT-4V 根据有用性、忠实度和伦理问题评分的比较对。

对齐调整的数据集汇总,对于输入/输出模态,I: 图像,T: 文本:

Dataset

参考论文:

  • InstructGPT - Training language models to follow instructions with human feedback

InstructGPT 的 RLHF 相关步骤:

  1. 有监督的微调(Supervised Fine-Tuning, SFT)
  2. 训练 奖励模型(Reward Model, RW)
  3. 通过 近端策略优化(Proximal Policy Optimization, PPO),在奖励模型上,进行强化学习。

蓝色箭头通过这些数据训练模型。在第 2 步中,A~D是模型输入的样本,由标注者进行排序。即:

RLHF

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

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

相关文章

为什么git有些commit记录,只有git reflog可以看到,git log看不到?

文章目录 原因分析1. git log 只能显示 **可达的** 提交2. git reflog 记录所有引用的变更 常见导致 git log 看不到提交的原因1. git reset 操作2. git rebase 操作3. 分支删除4. git commit --amend5. 垃圾回收(GC)* 如何恢复 git log 看不到的提交&am…

带你0到1之QT编程:十七、Http协议实战,实现一个简单服务器和一个客户端进行http协议通信

此为QT编程的第十七谈!关注我,带你快速学习QT编程的学习路线! 每一篇的技术点都是很很重要!很重要!很重要!但不冗余! 我们通常采取总-分-总和生活化的讲解方式来阐述一个知识点! …

DEPLOT: One-shot visual language reasoning by plot-to-table translation论文阅读

文章链接:https://arxiv.org/abs/2308.01979http://arxiv.org/abs/2212.10505https://arxiv.org/abs/2308.01979 源码链接:https://github.com/cse-ai-lab/RealCQA 启发:two-stage方法可能是未来主要研究方向,能够增强模型可解释…

利用AI增强现实开发:基于CoreML的深度学习图像场景识别实战教程

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

网络安全-利用 Apache Mod CGI

目录 一、环境 二、开始操作 三、总结 一、环境 蚁剑官网拉取 二、开始操作 蚁剑连接 一样终端命令不能执行 可以看到putenv已经禁用 我们开始一下,跳入一个新终端且可以执行命令 我们具体看一下干了什么事情 上传了一个htaccess这个文件的作用是让以后所有ant文…

LAMP架构搭建

目录 LAMP架构搭建 编译安装Apache httpd服务 1、需要的安装包 2、关闭防火墙和核心防护 3、安装环境依赖包 4、配置软件模块 5、编译及安装 6、优化配置文件路径(可不做) 7、添加httpd系统服务 8、修改httpd 服务配置文件 9、浏览器访问验证…

【Pycharm】Pycharm创建Django提示pip版本需要升级

目录 1、现象 2、分析 3、本质 前言:经常使用pycharm创建django、flask等项目时候提示pip版本需要升级,解决方案 1、现象 使用Pycharm创建Django项目提示安装Django超时,报错建议pip升级22升级到24 2、分析 之前使用命令升级了pip到了24…

linux 基础(一)mkdir、ls、vi、ifconfig

1、linux简介 linux是一个操作系统(os: operating system) 中国有没有自己的操作系统(华为鸿蒙HarmonyOS,阿里龙蜥(Anolis) OS 8、百度DuerOS都有) 计算机组的组成:硬件软件 硬件:运算器&am…

思通数科开源产品:免费的AI视频监控卫士安装指南

准备运行环境: 确保您的服务器或计算机安装了Ubuntu 18.04 LTS操作系统。 按照产品要求,安装以下软件: - Python 3.9 - Java JDK 1.8 - MySQL 5.5 - Redis 2.7 - Elasticsearch 8.14 - FFmpeg 4.1.1 - RabbitMQ 3.13.2 - Minio (…

240912-设置WSL中的Ollama可在局域网访问

A. 最终效果 B. 设置Ollama(前提) sudo vim /etc/systemd/system/ollama.service[Unit] DescriptionOllama Service Afternetwork-online.target[Service] ExecStart/usr/bin/ollama serve Userollama Groupollama Restartalways RestartSec3 Environme…

​OpenAI最强模型o1系列:开启人工智能推理新时代

前不久OpenAI发布全新模型——o1模型,也就是业界说的“草莓模型”,包含三款型号:OpenAI o1、OpenAI o1-preview和OpenAI o1-mini。 其中,OpenAI o1-mini和 o1-preview已经对用户开放使用: OpenAI o1:高级推…

C语言之预处理详解(完结撒花)

目录 前言 一、预定义符号 二、#define 定义常量 三、#define定义宏 四、宏与函数的对比 五、#和## 运算符 六、命名约定 七、#undef 八、条件编译 九、头文件的包含 总结 前言 本文为我的C语言系列的最后一篇文章,主要讲述了#define定义和宏、#和##运算符、各种条件…

植物大战僵尸【源代码分享+核心思路讲解】

植物大战僵尸已经正式完结,今天和大家分享一下,话不多说,直接上链接!!!(如果大家在运行这个游戏遇到了问题或者bug,那么请私我谢谢) 大家写的时候可以参考一下我的代码思…

前端工程化4:从0到1构建完整的前端监控平台

前言 一套完整的前端监控系统的主要部分: 数据上报方式数据上送时机性能数据采集错误数据采集用户行为采集定制化指标监控sdk 监控的目的: 一、数据上报方式 本文的方案是,优先navigator.sendBeacon,降级使用1x1像素gif图片…

群晖NAS使用Docker本地部署网页版Ubuntu系统并实现无公网IP远程访问

文章目录 前言1. 下载Docker-Webtop镜像2. 运行Docker-Webtop镜像3. 本地访问网页版Linux系统4. 群晖NAS安装Cpolar工具5. 配置异地访问Linux系统6. 异地远程访问Linux系统7. 固定异地访问的公网地址 前言 本文旨在详细介绍如何在群晖NAS部署docker-webtop,并结合c…

《财富之眼:用经济思维看清世界》pdf电子书下载

《财富之眼:用经济思维看清世界》pdf电子书下载 内容简介 一切社会现象都是经济现象,我们只能赚到自己认知范围内的 钱。我国社会主要矛盾已经转化为人民日益增长的美好生活需要和不 平衡不充分的发展之间的矛盾,其中“不平衡不充分”很大程…

【网络】高级IO——Reactor版TCP服务器

目录 1.什么是Reactor 1.1.餐厅里的Reactor模式 2.Reactor的由来 2.1.单 Reactor 单进程 / 线程 2.2.单 Reactor 多线程 / 多进程 2.3.多 Reactor 多进程 / 线程 3.实现单 Reactor 单进程版本的TCP服务器 3.1.Connection类 3.2.TcpServer类 3.3.Connection的真正用处 …

C++—vector的常见接口与用法(正式进入STL)

目录 0.提醒 1.介绍 2.构造 1.正常构造 2.默认值构造 3.调用默认构造函数构造 3.遍历 1.迭代器 2.范围for 3.下标访问 4.容量 1.capacity:返回当前容器的容量 2.reserve:如果传的k比当前容量大,则扩容到比k大或者等于k的数&…

Windows10安装cuda11.3.0+cudnn8.5.0,以及创建conda虚拟环境(pytorch)

1、检查电脑驱动版本为561.09&#xff0c;选择cuda版本&#xff0c;下图可知cuda版本<12.6。 nvidia-smi #查看驱动版本&#xff0c;以及最大可以安装的cuda版本 2、Anaconda3-2024.06-1-Windows-x86_64.exe下载&#xff1a; 官网&#xff1a;https://www.baidu.com/link?…

STL之vector

vector简单介绍 vector是一个STL的一个容器&#xff0c;行为类似于变成数组&#xff0c;也就是存储空间是连续的&#xff0c;同时其空间大小又是动态可变的。 vector访问元素的效率很高可以通过下标直接访问&#xff0c;但是其占用的空间很多&#xff0c;插入删除元素的效率很…