大模型对齐方法笔记二:基于Rank的对齐方法RRHF和PRO
大模型对齐方法笔记二:基于Rank的对齐方法RRHF和PRO
大模型对齐是AI领域的重要研究方向,旨在使AI模型的行为和输出更好地符合人类的偏好和期望。本文将介绍两种基于Rank的对齐方法:RRHF和PRO,它们通过排序学习的方式优化模型的输出质量。
RRHF
RRHF(Rank Responses to align Human Feedback)出自2023年4月的论文《RRHF: Rank Responses to Align Language Models with Human Feedback without tears》,是较早提出的不需要使用PPO来对齐人类偏好的方法。
设输入数据记为x,输出记为y,奖励函数为R(x,y),待训练模型记为π(从模型ρ初始化得到)。
在训练前,先对输入从不同来源采样输出(response)构建数据集,来源包括待训练模型、ChatGPT、GPT-4、人工标注的高质量和低质量输出。训练时,对于一个输入x,就有k个不同的输出y_i(1 ≤ i ≤ k),奖励函数给每一个y_i的打分为R(x, y_i) = r_i,为了使模型与分数{r_i}_k对齐,让模型π对每一个y_i使用下式计算分数p_i:
p_i=-\frac{\sum_{t} \log P_{\mathcal{\pi}}\left(y_{i, t} \mid x, y_{i,<t}\right)}{||y_i||} \qquad (1.1)
p_i是模型π下y_i的对数条件概率,目的是使模型π对高质量输出给更大概率,对低质量输出给小概率。使用如下ranking loss来优化这个目标:
L_{rank} = \sum_{r_i < r_j} max(0, p_i - p_j) \qquad (1.2)
此外要求模型从最高奖励的输出学习,损失与SFT的交叉熵损失类似:
i^{\prime} = \mathop{arg max}i\ { r_i} \
L{ft} = - \sum_t \log P_{\mathcal{\pi}}\left(y_{i^{\prime}, t} \mid x, y_{i^{\prime},<t}\right) \qquad (1.3)
RRHF的最终目标为这两部分损失之和:
L = L_{rank} + L_{ft} \qquad (1.4)
PRO
PRO(Preference Ranking Optimization)出自2023年6月的论文《Preference Ranking Optimization for Human Alignment》, 与RRHF一样,也是基于排序的对齐方法。相比于RRHF只使用两个输出进行pair-wise排序,PRO会考虑多个输出之间的排序。
设输入prompt为x,两个输出为y^1和y^2,人工标注的偏好为y^1 \succ y^2\ | x,Bradley-Terry(BT)模型定义的偏好概率如下式,其目标可以看作为二分类问题奖励模型:L_{BT} = -\log \sigma(r_{\phi}(x, y^1) - r_{\phi}(x, y^2)),r_{\phi}是奖励模型。
P_{PB} = \frac{\exp(r_{\phi}(x, y^1))} {\exp(r_{\phi}(x, y^1)) + \exp(r_{\phi}(x, y^2))} \qquad (2.1)
如果输入prompt x对应n个可能的输出{ y^i},且有偏好标注顺序y^1 \succ y^2 \succ \cdots \succ y^n,则可以定义y^1和偏好排序在其之后的输出满足y^{1,2:n}=y^1 \succ {y^2, \cdots, y^n},那么Bradley-Terry(BT)的目标将变成下式:
P(y^{1, 2:n}|x) = \frac {\exp(r(x, y^1))}{ \sum^n_{i=1}\exp (r(x, y^i))} \qquad (2.2)
我们可以很容易想到上述目标没有完全利用排序信息,只使用了y^1 \succ {y^2, \cdots, y^n},而剩余的n-2个排序如y^2 \succ {y^3, \cdots, y^n}、y^{n-1} \succ y^n则没有被使用,所以PRO的作者将上式扩展为下式:
P(y^{1, \cdots ,n}|x) = \prod_{k=1}^{n-1}P(y^{k,k+1:n}|x) \
= \prod_{k=1}^{n-1} \frac {\exp(r(x, y^k))}{ \sum^n_{i=k}\exp (r(x, y^i))} \qquad (2.3)
PRO定义r_{\pi_{\text{PRO}}}(x, y^k)为以目标LLMπ_{\text{PRO}}为参数的函数,即LLMπ_{\text{PRO}} 通过将π_{\text{PRO}} 生成的每个token的概率相乘来计算输出y^k的分数。
r_{\pi_{\text{PRO}}}(x, y^k) = \frac{1}{|y^k|} \sum^{|y^k|}{t=1} \log P{\pi_{\text{PRO}}} (y^k_t | x, y^k_{<k}) \qquad (2.4)
PRO的优化目标如下式:
\mathcal{L}(y^{1,\cdots, n}|x) = \mathcal{L}{\text{PRO}} + \beta \mathcal{L}{\text{SFT}} \qquad (2.5)
\mathcal{L}{\text{SFT}} 是使用top 1候选输出得到的NLL损失,β是用来平衡文本质量和人类偏好的超参,\mathcal{L}{\text{PRO}} 的定义如下(即前面2.3式的对数形式):
\mathcal{L}{\text{PRO}} = \sum{k=1}^{n-1} \log \frac {\exp(r_{\pi_{\text{PRO}}}(x, y^k))}{ \sum^n_{i=k}\exp (r_{\pi_{\text{PRO}}}(x, y^i))} \qquad (2.6)
将RLHF嫁接到PRO
PRO不需要奖励模型就可以直接在人类标注偏好排序序列上进行优化,但作者也进行了试验发现将RLHF嫁接到PRO给其带来更多的灵活性,所以作者提出了如下三种可能的结合方式:
Affordable Preference Ranking。PRO只依赖于人类偏好排序序列,但其数据来源没有被限定,即可以通过人工方式生成不同质量的多个输出,也可以利用已有LLM如ChatGPT、Alpaca等来生成不同的输出。生成的输出再由一个奖励模型r_{\phi}来排序。
Differentiated Contrast。前面2.6式\mathcal{L}{\text{PRO}} 的定义将全部满足y^i \prec y^k的输出作为y^k的负样本并施加相同的惩罚。这种处理方式可能不合理,比如y^{k+1}只比y^k的效果差一点点,而y^n比y^k效果差很多,与y^k比较时模型应该轻微地惩罚y^{k+1}而重重地惩罚y^n。于是PRO作者将式2.6修改为下式,由奖励模型r{\phi}得到的分数r_{\phi}(x, y^i)表明y^i的数值偏好。
\mathcal{L}{\text{PRO}} = \sum{k=1}^{n-1} \log \frac {\exp \left( \frac{r_{\pi_{\text{PRO}}}(x, y^k)}{\mathcal{T}^k_k} \right)} { \sum^n_{i=k}\exp \left( \frac{r_{\pi_{\text{PRO}}}(x, y^i)}{\mathcal{T}^i_k} \right)} \qquad (2.7)
上式中
\mathcal{T}^{i>k}k = \frac {1}{r{\phi}(x, y^k) - r_{\phi}(x, y^i)} \
\mathcal{T}^{k}k = \min{i>k} \mathcal{T}^{i}_k
也就是将原有的\mathcal{L}{\text{PRO}} 添加了动态温度参数,如果r{\phi}(x, y^k)和r_{\phi}(x, y^i)之间的差值增加,y^k和y^i之间的偏好差距更明显,温度\mathcal{T}^i_k减小放大了正例y^k相比于y_i的惩罚。T^k_k定义为所有负例里的最小温度值有助于维持分子和分母的平衡。
Self-bootstrapping Augmentation。PRO对于偏好序列的长度要求不是固定的,所以可以将RLHF里的自举(self-bootstrapping)优势应用到PRO,即给定prompt x和当前模型,采样输出\hat{y}将其添加到输出集{y^1, \cdots, y^n},并使用奖励模型重新排序输出集得到p(\hat{y}^{1, \cdots, n+1} | x),\mathcal{L}_{\text{PRO}} 相应地变成:
\mathcal{L}{\text{PRO}}(y^{1, \cdots, n}|x) \Rightarrow \mathcal{L}{\text{PRO}}(\hat{y}^{1, \cdots, n+1} | x)
其训练过程如下图
参考资料
- RRHF:arxiv,github
- PRO:arxiv,github