RLHF各种训练算法科普
强化学习在LLM中的应用越来越多了,本文针对常见的几种训练算法,用生活中的例子做类比,帮助理解相关概念。
包括:PPO、DRO、DPO、β-DPO、sDPO、RSO、IPO、GPO、KTO、ORPO、SimPO、R-DPO、RLOO,以及GRPO。
PPO(Proximal Policy Optimization,近端策略优化)
背景:
在强化学习中,策略更新时可能会导致策略发生过大的变化,从而导致训练不稳定。PPO通过限制策略更新的幅度来解决这个问题,确保训练过程的稳定性。
例子:
你去水果摊挑苹果,摊主有很多苹果,你希望挑出最甜的苹果,但你不想每次都尝遍所有苹果,也不想因为尝太多而失去味觉的敏感性。
奖励信号:你有一个甜度计,可以大致测量苹果的甜度。这个甜度计就是“奖励信号”,用来帮助你判断哪个苹果更甜。
保持稳定:你不会一下子尝试所有苹果,而是先尝几个,然后根据甜度计的读数,逐步调整你的选择策略。比如,你先尝了5个苹果,发现其中3个比较甜,你就会在这3个里面继续挑选,而不是一下子换一整批苹果。
单独训练奖励信号:你还需要单独校准你的甜度计,确保它能准确测量甜度。比如,你可能会先尝一些已知甜度的苹果,来调整甜度计的准确性。
论文:
Proximal Policy Optimization Algorithms
DRO(Direct Reward Optimization,直接奖励优化)
背景:
在某些强化学习任务中,直接优化奖励信号可能比优化策略更直接有效,尤其是在奖励信号非常明确的情况下。DRO直接优化奖励信号,避免了复杂的策略更新过程。
例子:
你去水果摊挑苹果,摊主给你一个甜度计,让你根据甜度计的读数来挑选苹果。
直接奖励:你直接用甜度计测量每个苹果的甜度,然后根据甜度计的读数来挑选最甜的苹果。比如,你测量了10个苹果,发现其中3个甜度最高,你就会在这3个里面继续挑选,直接以甜度计的读数作为奖励信号,挑选出最甜的苹果。
论文:
Offline regularised reinforcement learning for large language models alignment
DPO(Direct Preference Optimization,直接偏好优化)
背景:
在某些情况下,直接比较样本的偏好可能比依赖奖励信号更有效,尤其是在奖励信号不准确或难以获取的情况下。DPO通过直接比较样本的偏好来优化选择策略。
例子:
这次,你还是在水果摊挑苹果,但你不想用甜度计这种奖励信号了,而是直接比较苹果的口感。
正负样本:你从摊主那里拿了两个苹果,一个是你随便拿的(负例),另一个是摊主推荐的(正例)。比如,摊主说这个苹果特别甜。
对比优化:你直接比较这两个苹果,尝尝哪个更甜。比如,你发现摊主推荐的苹果确实比你随便拿的甜。
直接优化:你通过这种直接的比较,直接学习如何挑选甜苹果,而不需要单独校准甜度计。
论文:
Direct preference optimization: Your language model is secretly a reward model
β-DPO (Direct Preference Optimization with Dynamic)
背景:
在直接偏好优化(DPO)中,性能对超参数β的选择非常敏感,且对偏好数据的质量也很敏感。静态的β值在不同数据质量下表现不稳定,导致优化过程不够鲁棒。β-DPO通过动态调整β值来解决这个问题,使其能够根据数据质量自动调整,从而提高模型的鲁棒性和适应性。
例子:
你去水果摊挑苹果,摊主给你两个苹果,一个是你随便拿的(负例),另一个是摊主推荐的(正例)。你希望通过比较这两个苹果来学习如何挑选更甜的苹果。
动态调整β值:你发现不同的苹果对甜度的感知差异很大。有些苹果对甜度的感知差异很明显,而有些则不明显。你决定根据每个苹果对甜度感知的差异来动态调整你的“甜度偏好参数”β。如果两个苹果的甜度差异很大,你会降低β值,这意味着你会更积极地更新你的偏好;如果差异不大,你会增加β值,以保持原有的偏好,避免过度调整。
数据过滤:在比较苹果时,你注意到有些苹果的甜度差异非常小,几乎可以忽略不计。这些苹果可能会误导你的学习过程,因为它们的差异不足以提供有效的学习信号。因此,你决定过滤掉这些差异过小的苹果对,只保留那些有明显甜度差异的苹果对进行学习。
批量调整:你意识到,如果每次只根据一对苹果来调整β值,可能会导致学习过程不稳定。因此,你决定采用批量调整的方法。每次从摊主那里拿一组苹果(比如5对),然后根据这一组苹果的甜度差异来计算一个平均的β值,用于这一组苹果的学习。这种方法可以减少单个苹果对的影响,使学习过程更加稳定。
论文:
β-DPO: Direct preference optimization with dynamic β
sDPO(stepwise Direct Preference Optimization,逐步DPO)
背景:
在复杂的环境中,一次性比较所有样本可能会导致选择困难或策略不稳定。sDPO通过逐步比较样本,逐步优化选择策略,确保每一步的决策都是基于当前最优的信息。
例子:
这次,你去水果摊挑苹果,你想通过逐步比较来优化你的选择。
逐步比较:你先从摊主那里拿了两个苹果,比较它们的甜度。然后,你再拿两个苹果,继续比较。
逐步优化:每次比较后,你都会记住哪个苹果更甜,并逐步调整你的选择策略。比如,你先比较了A和B,发现A更甜,然后你再比较C和D,发现C更甜,最后你比较A和C,确定哪个更甜。
逐步学习:这种方法通过逐步比较,逐步优化你的选择策略,避免了一次性比较太多苹果带来的困惑。
论文:
sDPO: Don't use your data all at once
RSO(Rejection Sampling Optimization,拒绝采样优化)
背景:
在样本质量参差不齐的情况下,直接拒绝低质量样本可以提高训练效率和模型性能。RSO通过拒绝低质量样本,确保训练过程只基于高质量样本。
例子:
这次,你去水果摊挑苹果,摊主给你一个大筐苹果,里面苹果的品质参差不齐。
初步筛选:你先随意挑选一些苹果,尝尝看。比如,你从筐里随便抓了10个苹果,尝了尝,发现其中3个特别不甜,你直接拒绝这3个苹果,把它们放回筐里,不再考虑。
优化策略:然后你从剩下的苹果中继续挑选,尝尝看哪些更甜。比如,你从剩下的7个苹果中又尝了3个,发现其中2个比较甜,你就会在这2个里面继续挑选,同时记住这次拒绝的经验,下次再挑选时尽量避开那些不甜的苹果类型。
论文:
Statistical rejection sampling improves preference optimization
IPO(Identity Preference Optimization,身份偏好优化)
背景:
在某些情况下,样本的身份(如产地、品牌等)可能对选择结果有重要影响。IPO通过考虑样本的身份信息来优化选择策略,确保选择结果符合特定偏好。
例子:
你去水果摊挑苹果,摊主告诉你,这些苹果有不同产地,比如山东的、陕西的、辽宁的。
身份标记:你先按照产地把苹果分好类,比如把山东的苹果放一堆,陕西的苹果放一堆,辽宁的苹果放一堆。你认为不同产地的苹果口感可能不同,所以给它们分别标记了身份。
偏好学习:你先尝尝每个产地的苹果,比如你尝了山东的苹果后觉得比较甜,尝了陕西的苹果后觉得酸甜适中,尝了辽宁的苹果后觉得口感稍差。然后你就会根据这种偏好,优先挑选你认为口感好的产地的苹果,比如多选山东的苹果,少选辽宁的苹果。
论文:
A general theoretical paradigm to understand learning from human preferences
GPO(Generalized Preference Optimization,广义偏好优化)
背景:
在某些情况下,单一的偏好指标(如甜度)可能不足以描述样本的优劣。GPO通过综合考虑多个因素(如甜度、大小、颜色等)来优化选择策略,确保选择结果更符合实际需求。
例子:
你去水果摊挑苹果,这次你想综合考虑多种因素来挑选苹果,不仅仅是甜度,还有口感、大小、颜色等。
综合评价:你先尝尝几个苹果,同时观察它们的大小、颜色等。比如,你尝了5个苹果,发现其中2个很甜,但其中一个个头小,颜色也不太好看;另一个个头大,颜色鲜艳。你综合考虑后,觉得个头大、颜色鲜艳的苹果更好。
偏好调整:然后你根据这种综合偏好来调整挑选策略,下次挑选时会优先考虑个头大、颜色鲜艳且口感好的苹果,而不是单纯追求甜度。
论文:
Generalized preference optimization: A unified approach to offline alignment
KTO(Kahneman-Tversky Optimization,Kahneman-Tversky优化)
背景:
在某些情况下,人类的决策过程受到损失厌恶等心理因素的影响。KTO通过模拟这种心理因素来优化选择策略,确保选择结果更符合人类的实际决策过程。
例子:
你去水果摊挑苹果,摊主给你两种选择方案。
方案一:你先尝一个苹果,如果甜,就再给你一个;如果不好吃,就什么都没有。
方案二:你先尝一个苹果,如果不好吃,就再给你一个;如果甜,就什么都没有。
损失厌恶:你更倾向于选择方案一,因为你不希望尝到不好吃的苹果后什么都没有,你更害怕损失。这种心理反映了Kahneman-Tversky优化中对损失厌恶的考虑,在挑选苹果时,你会尽量避免选择那些可能导致不好结果的苹果,比如那些看起来颜色不好、表皮有瑕疵的苹果。
论文:
KTO: Model alignment as prospect theoretic optimization
ORPO(Odds Ratio Preference Optimization,比值偏好优化)
背景:
在某些情况下,直接比较样本的偏好可能不够精确。ORPO通过计算样本之间的比值比来优化选择策略,确保选择结果更精确。
例子:
你去水果摊挑苹果,摊主给你两个苹果,让你比较它们的口感。
比值计算:你尝了尝这两个苹果,发现一个很甜,另一个不太甜。你计算一下它们的口感比值,比如甜的苹果口感得分为8,不太甜的苹果口感得分为4,比值为2。你根据这个比值来判断哪个苹果更好。
偏好更新:然后你根据这种比值比来更新你的挑选偏好,下次遇到类似的苹果时,就会优先挑选口感得分高的苹果。
论文:
ORPO: Monolithic preference optimization without reference model
SimPO (Simple Preference Optimization,简单偏好优化)
背景:
在某些简单任务中,直接比较样本的偏好可能已经足够有效。SimPO通过简单的偏好比较来优化选择策略,适用于简单的决策任务。
例子:
你去水果摊挑苹果,摊主给你两个苹果,让你比较它们。
简单比较:你直接尝尝这两个苹果,比较一下哪个更甜。比如,你发现左边的苹果比右边的甜,你就会记住左边的苹果更好。
偏好学习:然后你根据这种简单的比较结果来学习挑选苹果的偏好,下次遇到类似的苹果时,就会优先挑选左边这种类型的苹果。
论文:
SimPO: Simple preference optimization with a reference-free reward
R-DPO(Regular DPO,正则化DPO)
背景:
在某些情况下,直接优化偏好可能导致模型过于复杂或过拟合。R-DPO通过引入正则化约束来优化选择策略,确保模型的简洁性和泛化能力。
例子:
你去水果摊挑苹果,摊主给你两个苹果比较,但这次你不仅比较它们的口感,还要考虑其他因素,比如苹果的大小、颜色等。
正则化约束:你在比较两个苹果的口感时,还会考虑它们的大小、颜色等因素。比如,你发现一个苹果口感很好,但个头太小;另一个苹果口感稍差,但个头大、颜色鲜艳。你综合考虑这些因素后,会更倾向于选择个头大、颜色鲜艳的苹果。
偏好优化:通过这种正则化约束,你优化了你的挑选偏好,不仅考虑口感,还会考虑其他因素,使挑选出的苹果更符合你的综合要求。
论文:
Disentangling length from quality in direct preference optimization
RLOO(REINFORCE Leave-One-Out)
背景:
在某些情况下,样本之间的相互影响可能导致选择策略不稳定。RLOO通过留一法验证来优化选择策略,确保每一步的决策都是基于独立的样本。
例子:
你去水果摊挑苹果,摊主给你一筐苹果,让你从中挑选。
留一法验证:你先从筐里拿出一个苹果,尝尝看。比如,你拿出了一个苹果,发现它很甜。然后你把剩下的苹果分成若干组,每组再拿出一个苹果来尝尝,看看哪组的苹果比你之前拿的那个更甜。
策略更新:通过这种留一法验证,你不断更新你的挑选策略,下次挑选时会优先考虑那些比之前拿的那个更甜的苹果组里的苹果。
论文:
Back to basics: Revisiting reinforce style optimization for learning from human feedback in LLMs
GRPO(Group Relative Policy Optimization,群体相对策略优化)
背景:
在某些情况下,单独评价每个样本可能不够高效。GRPO通过分组比较来优化选择策略,确保每一步的决策都是基于群体的相对优势。
例子:
这次,你还是在水果摊挑苹果,但你不想单独评价每个苹果,而是通过分组比较来优化。
分组比较:你从摊主那里拿了5个苹果,分成两组,每组2个,剩下1个单独放。比如,你把苹果分成A组和B组。
相对评价:你尝尝每组里的苹果,比较哪个更甜。你不需要给每个苹果一个具体的甜度分数,只需要知道哪个苹果比另一个甜。比如,你发现A组的苹果比B组的苹果甜。
消除负例:你把那些不甜的苹果(负例)排除掉。比如,你发现B组的苹果不甜,就不再考虑它们,只关注A组的苹果。
更新策略:你告诉自己,下次挑苹果的时候要优先考虑A组的苹果,因为它们更甜。比如,你发现A组的苹果颜色更鲜艳,表皮更光滑,你就记住这些特征,下次挑苹果的时候就优先选这样的苹果。
论文:
DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models
RLHF各种训练算法科普的更多相关文章
- EM算法(2):GMM训练算法
目录 EM算法(1):K-means 算法 EM算法(2):GMM训练算法 EM算法(3):EM算法运用 EM算法(4):EM算法证明 EM算法(2):GMM训练算法 1. 简介 GMM模型全称为Ga ...
- 受限玻尔兹曼机(RBM)学习笔记(七)RBM 训练算法
去年 6 月份写的博文<Yusuke Sugomori 的 C 语言 Deep Learning 程序解读>是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算 ...
- 【原创】batch-GD, SGD, Mini-batch-GD, Stochastic GD, Online-GD -- 大数据背景下的梯度训练算法
机器学习中梯度下降(Gradient Descent, GD)算法只需要计算损失函数的一阶导数,计算代价小,非常适合训练数据非常大的应用. 梯度下降法的物理意义很好理解,就是沿着当前点的梯度方向进行线 ...
- 传统神经网络ANN训练算法总结
传统神经网络ANN训练算法总结 学习/训练算法分类 神经网络类型的不同,对应了不同类型的训练/学习算法.因而根据神经网络的分类,总结起来,传统神经网络的学习算法也可以主要分为以下三类: 1)前馈型神经 ...
- 传统神经网络ANN训练算法总结 参考 。 以后研究
http://blog.163.com/yuyang_tech/blog/static/21605008320146451352506/ 传统神经网络ANN训练算法总结 2014-07-04 17:1 ...
- [ACM训练] 算法初级 之 搜索算法 之 深度优先算法DFS (POJ 2251+2488+3083+3009+1321)
对于深度优先算法,第一个直观的想法是只要是要求输出最短情况的详细步骤的题目基本上都要使用深度优先来解决.比较常见的题目类型比如寻路等,可以结合相关的经典算法进行分析. 常用步骤: 第一道题目:Dung ...
- [ACM训练] 算法初级 之 搜索算法 之 广度优先算法BFS (POJ 3278+1426+3126+3087+3414)
BFS算法与树的层次遍历很像,具有明显的层次性,一般都是使用队列来实现的!!! 常用步骤: 1.设置访问标记int visited[N],要覆盖所有的可能访问数据个数,这里设置成int而不是bool, ...
- [ACM训练] 算法初级 之 基本算法 之 枚举(POJ 1753+2965)
先列出题目: 1.POJ 1753 POJ 1753 Flip Game:http://poj.org/problem?id=1753 Sample Input bwwb bbwb bwwb bww ...
- 基于Levenberg-Marquardt训练算法的BP网络Python实现
经过一个多月的努力,终于完成了BP网络,参考的资料为: 1.Training feed-forward networks with the Marquardt algorithm 2.The Leve ...
- BLSTM的训练算法、解码算法以及模型的改进
摘要 BLSTM解码时,解码器需要等待整个音频到达后才开始解码,因为时间反方向的前向传播需要末尾的历史信息.BLSTM这一延时问题使其不适用与实时语音识别.context-sensitive-chun ...
随机推荐
- 序列化-serialVersionUID作用
Serializable接口 作用:标记一个类可以被序列化,如果没有实现该接口,则会抛出异常. ObjectOutputStream中源码: 实验: serialVersionUID 作用:表示一个序 ...
- Jenkis 简单介绍—持续集成、持续交付的工具
Jenkis是什么? 首先是一款持续集成.持续交付的工具. Jenkis的思想是自动化部署:当我们向版本库提交最新的代码后,应用服务器(tomcat)就会自动从Git / svn上拉取最新的包,再重新 ...
- ZCMU-1149
就是背包01问题 #include<iostream> #include<cstring> /*01背包问题*/ using namespace std; const int ...
- MarkDown文档的编写
MarkDown的基本语法 MarkDown的标题语法 通过#进行创建标题,#的数量控制标题的级别 MarkDown的段落语法 通过空白行将一行或者多行文本进行分隔 MarkDown的强调语法 粗 ...
- 从Delphi到Lazarus——安装最新版的Lazarus
0.前言 在这篇文章里将会介绍以下内容: 下载最新版的Lazarus安装程序 安装Lazarus 安装整合IDE界面的软件包 编译运行你的第一个测试程序 结束语 1.下载最新版的Lazarus安装程序 ...
- 一套以用户体验出发的.NET8 Web开源框架
前言 今天大姚给大家分享一套以用户体验出发的.NET8 Web开源框架:YiFramework. 项目介绍 YiFramework是一个基于.NET8 + Abp.vNext + SqlSugar 的 ...
- 【快慢指针】LeetCode 143. 重排链表
题解 用快慢指针先找到中间结点,然后断开前后两条链,用头插法的思路逆转后面那条链,最后两条链依次从前往后遍历插入即可. 参考代码 /** * Definition for singly-linked ...
- ruoyi若依前端验证码不显示的终极解决方法-20230721
搞了3天啊,查了各种资料啊. 然后使劲的看log啊,总算搞定了啊. 一般情况,本地开发环境测试没问题,部署到服务器就各种不适应,就是服务器配置的问题了. 本次这种验证码不显示,典型的nginx的配置 ...
- shell之变量默认值
{var:-default_value}当var 不存在,或者值为空时,返回default_value name不存在,返回了一个默认值,但是name并没有改变, 后续不可访问 $ set -u # ...
- Navicat Premium15安装与激活
Navicat premium是一款数据库管理工具,是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到 MySQL.SQLite.Oracle 及 PostgreSQL 资料库,让管理不 ...