DPO作者新作|From r to Q*


作者:陈陈
原文链接:https://zhuanlan.zhihu.com/p/693746297
后台留言交流』,加入NewBee讨论组

卷友们好,今天推荐一篇DPO作者的新作:

本文几乎是DPO的原班人马搞的,新来的Joey Hejna是X-QL(本文部分核心理论)一作。这篇文章并没有提出一个新的算法,或者是在一个新的任务上刷了SOTA,主要是对DPO算法给出了一个理论解释,统一了处理LLM强化学习任务的两个视角,即序列决策还是单步决策。用强化学习的语言就是说dense or sparse reward,r or Q*。而后者这个Q*有不禁让人联想到OPENAI“泄露的Q*计划”。应该说还是有其理论价值的。

此外我相信本文即使对于多数专业研究者也是晦涩难懂的。这篇文章对于NLP领域的读者而言要求了太多前置的RL知识,对theoretical RL领域读者又过于应用,符号系统一定程度上被改写了。

因此本文面向NLP领域已经有了DPO和PPO算法的基本了解和实践,但不熟悉系统强化学习理论的读者。本文不采用原论文的叙述思路和符号系统,更多反应的是一些个人见解(我并不完全认可原作者的叙述方式)。主要作为看不懂原文但又希望get到原作者想表达啥的参考。

本文符号系统:

  1. :表示一个句子,一个句子有多个token组成, 表示第t个token。表示字典。我们假设所有句子的长度都是T,即
  2. , 表示SFT阶段后得到的语言模型。是采样句子的概率,表示单步token采样概率, 表示前半句话。一般而言采样句子我们还需要一个prompt x作为条件,本文忽略这个x。
  3. :这是一个可以给任意一个句子打标量分值的函数。它抽象地代表人类偏好。
  4. 这是我们希望得到的语言模型分布。
  5. ,这是我们实际训练的那个LLM。被初始化为,它的优化目标是

要回答的问题:

  1. 为什么说LLM本质上是一个Q-function(而不仅仅是reward model)。
  2. 这篇文章有啥现实意义吗?新的视角可能带来哪些新的alignment研究方向(坑):RLHF dense reward 方向以及RL的Q-learning方向。这是我第一次尝试写文章解读,有什么可以改进的地方还请大家多提意见。以下是正文

DPO背景

我们知道DPO的loss function其实是一个训练reward model的loss。DPO这篇论文题目也叫做Your Language Model is Secretly a Reward Model:

DPO这篇文章的核心创新在于,他说我们其实不用拿这个loss去学一个奖励模型,奖励函数模型本身不也是为了拿来训练LLM的吗?我们直接定义:

这样我们直接一步就得到了LLM。

LLM ratio本质上是一个Q-function

那么问题来了,假设我们最终目的仅仅是为了得到一个奖励函数, 而不是为了得到一个\pi_{\theta}。我们还有必要用DPO这套方法来建模吗?

  1. 上面定义式。它由两个LLM来表征
  2. 一个单独的神经网络。就像RLHF种的普通reward model 那样输入一整条句子,输出一个标量。

这两个参数化建模的方式,不考虑计算速度,显存需求,网络架构这些empirical 区别,有理论上的本质差异吗?

----有!简单讲有一个极其好的数学性质:那就是这个期望会非常好计算,它不需要我们真的求数学期望,而是有严格解析解的。我们定义新符号

这个符号所代表的物理量满足下面的性质:

证明(这个证明无法省略,是算法叙述的核心)

当t=T-1时候,我们有

当t<T-1的时候,可以类似用数学归纳法证明。

认真看完证明公式你会发现, 这个看似intractable的物理量可以解析表示的核心原因就是 本质上是由两个通过softmax自归一化的生成式模型表征的。把 替换为传统的 你不可能得到类似的性质。(你想吧,如果你的打分函数 只能对一整个句子打分,得到一个scalar rew,现在给你半个句子,为了计算上面那个期望,你是不是只能先用 采样无数句子,再对这无数个句子打分然后取“平均”得到 ?)

上面Q-function的物理含义

总结上一节的内容:我们先定义了一个新的物理量

我们发现,当且仅当 时,

在解析意义上严格成立,可以轻易计算。

你可能会问:“ok,我们现在可以轻易算出来一个原本intractable的物理量。so what? 有什么物理含义吗?”

我先给出答案:说白了 这个函数输入LLM模型的前t个toekn的logp ratio之和,输出表示的是对前一半句子 的打分,Q exactly就是强化学习(softRL)中的Q-function。而我们传统认为的reward model只是Q在t=T时候的特例。当t=T时,我们有

这个牛逼的点就在于:如果你用DPO的方法来训练reward model,在训练的时候你输入给神经网络的全部都是一整条的句子,learning target是一个句子的reward。而evaluation的时候,你可以只输入给神经网络前一半句子,这个model自动就会变成半个句子的Q-function。而这一切都是有强理论保证且exactly精确的。回忆下PPO算法中,学一个类似的Q\value-function,为了算GAE你是不是得在训练中给Value model要喂半个句子(随机truncate得到)的数据?即使这样它学到的神经网络也只是“近似”的而已。

这个巨大的差别本质上就是因为我们在用两个generative model来表征一个函数,而生成式模型的“自归一化”(self-normalization)性质,带来了很多理论的好处。

Q-function用于credit assignment的empirical理解

实际有什么用呢?我为什么非要把他记为 而不把它记为 呢?

想象一个场景,如果我们现在正在用LLM生成一个句子,并且一直用 监测评估已经生成句子的分数,设句子在第100步出现了EOS token而终止。我们作图如下:

根据定义,Q的物理含义就是,“立足我已经生成的一半句子 ,我对于我未来完整句子能拿多少分数的一个预期”。随着t的增加,我们这个分数估计会越来越准确,在t=T时,我们的估计就是100%准确的。

那么如果我们生成了一个新的token,然后发现Q增加了,那这是不是就严格说明这个token是“好”的?反之,如果我们发现Q大幅度下降,我们是不是就知道这个token“非常有害”?

而一个token对于Q值造成的difference,其实在DPO setting下可以精确计算的:

这里的 就是一个token 的credit。 太低就意味着我们当下生成的token对系统影响是不利的。所有token的“credit”之和就等于我们这一条句子的真实reward

DPO原文的第一个实验也正是在做这样credit的分解

为了加强理解,我们再想象另外一个场景,如果我们还用LLM 生成句子,且已经生成了一半 。下一步我们要生成 这个token了。vocabulary只有两个单词, 。我现在想知道,如果我希望尽可能提高最终句子得高分的概率,那我到底是应该选 还是 呢?答案是你应该选 值更大者。而在 场景下,这两个物理量的比较式很容易的,因为你可以忽略他们公共部分,只比较 的 credit。基于这个理解,我们可以用这个来进行句子采样中的“planning”搜索,这也正是原文第二个实验应用

总结下这一小节,DPO在理论上基本严谨地完成了这么一个任务。就是给你一个sparse reward标注的数据集,在有足够多(指数级)的数据情况下,你可以训练得到一个模型,把稀疏的奖励合理分摊到每一个token上,从而把sparse rew问题转移为dense rew问题。(严谨理论后面再讨论)

上面Q-function的强化学习定义

(这是进阶内容,不太关心理论的同学可跳过,主要解释原文常提及的bellman consistency啥意思,需要简单RL基础)

首先我们把LLM建模成为一个MDP决策问题,每产生一个token是一步action,当下的state则是已经产生的所有token(前一半句子),产生T个token序列终止。这个episode中reward是稀疏的,只在最后一步得到:

我们在这个MDP环境中用强行定义 函数和 函数。这组定义式我们称为叫做Bellman Equation:

上面的定义式中间部分都是在dense reward场景下严格定义的。右侧式子,则是MDP在稀疏奖励且 ,也就是LLM应用中的特殊情况下得到的。

你可以把上面的定义式从t=T到t=0一步步数学归纳展开,可以得到下面的结论

到此为止,你可以自行验证,只要我能学到一个精确的 ,并且定义

那么 , 就自动成立了。这一切只需要我用DPO的方法搭建神经网络。

这也是原文反复说什么有他们方法有bellman consistency的含义

问:PPO RLHF中我们需要用到一个 函数,它定义是 ,似乎和上面定义不一致啊?

这个新的bellman定义并非空穴来风,有较深层的RL理论保证(原文Eq 5),是经典理论。感兴趣可以参考到X-QL,softQL,SAC等论文。X-QL一作也和本文一作重合,我记得是去年ICLR的oral。

上式也可以称为一个value function, 只不过它不再是简单平均期望,而是指数意义下期望(softmax而非mean):

问:这种训练方法对RL领域有何启示?

我个人认为,off-policy算法的核心痛点在于Q函数很难学。它往往需要用bellman公式来进行bootstrapping训练,这导致了训练的极其不稳定,才有了16-18年各种各样的优化trick(如target network和twin delayed update)。DPO给出了一种generative model for discriminative task的Q-learning范式,可能有其意义。

DPO训练中chosen response的logp ratio在训练中下降问题

我相信绝大多数实操过DPO训练的同学都会发现一个反直觉的现象。就是看logp的评估曲线,你会发现无论数据还是测试集中被preferred的数据,经过DPO finetune后被sample到的概率反而下降,而不是上升了。只不过那个rejected response的logp下降的更快,才让loss function持续下降(因为reward margin上升了)。

这篇文章第三个实验,给这个现象进行了一些合理性分析,但并没有给出理论上的解决方案,因此希望在这里给我们的工作打个广告(图穷匕见)。

Noise Contrastive Alignment of Language Models with Explicit Rewards
https://arxiv.org/abs/2402.05369

这篇工作里,我们从contrastive learning的视角,基于NCE算法严格推导得到了一个更加general的LLM alignment方法。它不仅可以处理preference二元数据(>),还可以处理任意多个的由explicit scalar reward标注的reponse数据,可以充分利用分差信息。这篇文章中提出的NCA算法,应该是首次提出并从理论和实践两个层面都解释并解决了DPO算法chosen response 的logp下降的问题。(虽然并没被引用)

在工程实践中,THUNLP实验室的一篇工作[1]在他们提出的tree-structure reasoning数据集UltraInteract上对我们的方法进行了独立的第三方评测,并于KTO和DPO算法进行了对比。发现NCA在70B模型上表现最优,在数理代码等指标上接近或超过了GPT3.5的水平

此外,UltraInteract这个数据集在我看来部分解决了from r to Q*这篇文章走向应用的一个痛点:目前没有dense-reward标注的response数据集。虽然UltraInteract也无法对句子进行per-token level的质量标注,但是他们采用逐阶段标注打分标注的方法也依然可以视为某种trade-off。这应当是符合LLM 从sparse reward setting走向dense reward的趋势的。

参考资料

[1]

Advancing LLM Reasoning Generalists with Preference Trees: https://arxiv.org/abs/2404.02078


一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定o要备注信息才能通过)



相关推荐

  • 如何优雅的实现在线人数统计功能?
  • 8 个关于 Promise 高级用途的技巧
  • ICLR2024杰出论文——Never Train from Scratch!
  • 60*16K,大厂高端岗位卷爆了!
  • 手把手教大家实现OAuth2第三方登录
  • Node 之父新作:一个全新的 NPM 下载源工具!!!
  • 摸鱼网站精选分享第一番
  • 三个实用开源项目工具:无代码编辑器
  • 万丈高楼平地起,一切从 PyObject 开始
  • 一不小心成了知名开源项目的贡献者?!
  • 30%参数达到92%的表现,大模型稀疏化方法显神通
  • 从零开始手搓GPU,照着英伟达CUDA来,只用两个星期
  • Sam Altman 5月最新2万字谈AI未来:GPT-5与OpenAI的使命 (附全文+视频)
  • [开源]综合性在线网校平台,内容分享、付费、营销一站式解决方案
  • 偷偷爆料下银行信息科技岗(含各大银行薪资)
  • 与AI角色共筑虚拟人生是啥体验?
  • 进程之间的通信方式有哪些?我被问倒了。。
  • 被 Bug 折磨疯后,我写了本 Bug 修复手册。
  • 我是真讨厌验证码啊!赶紧淘汰掉吧
  • 上班摸鱼神器!标星 17k 的安卓手机投屏工具!