对于使用RL进行微调的LLM,我们需要将问题框定在一个代理-环境环境中,agent ( ) 可以与环境互动,以获得其行动的奖励。然后,这种奖励被用作反馈来训练模型。
实体的映射情况如下
奖励被用在损失函数中,被更新。
方法概述
这是预先训练好的LLM,正在进行微调。
奖励模式
在训练奖励模型之前,要从人类标签者那里收集数据。对于每个输入的,通过从LLM中抽样产生几个。然后要求人类对这些进行排序,将最高的排序给予最好的反应。使用这个作为标签,奖励模型被训练成使用以下类型的损失来最大化正确反应的概率
奖励模型也可以是一个排名类型的损失函数,该模型试图最大化输出的排名顺序,而不是最大化一个输出的概率。
损失功能
训练策略的损失函数为
其中是奖励模型的输出,第二项是KL发散,以确保政策在微调时不会偏离语言模型太远。
为了优化损失函数,使用了PPO( 近似策略优化)算法。使用PPO的原因是优化是 “在策略上”,即我们直接优化政策。PPO类似于TRPO,与其他政策梯度方法的优化器相比,它提供了更稳定的政策更新。
在训练时,只有策略被更新,而奖励模型没有被优化。原因是奖励模型只是人类偏好的一个 “proxy”,它是用少数几个例子训练出来的,与策略一起优化会导致过度拟合。
训练过程概述
训练过程如下
最后一步,用奖励模型对政策进行微调。
开放源码库TRL
TRL是用于用RL训练语言模型的库。通过trl,你可以用近似策略优化(PPO)训练转化器语言模型。该库是建立在 Face的转化器库之上的。因此,预训练的语言模型可以直接通过变压器加载。在这一点上,只有像GTP2这样的解码器架构被实现。
RL4LM
RL4LM是Allen for AI的一个使用RL训练语言模型的库。他们的方法和改进措施在本文中做了介绍。以下是他们的库的亮点
使用类似方法的其他论文代码RL
是 的一个研究模型。论文可以在这里找到。它是对他们早期代码生成模型的增强。其基本思想是大多数代码生成模型都是开环的,即它们没有被训练成产生逻辑上正确或可执行的代码,因为模型没有任何关于代码正确性的反馈。试图通过使用RL对预训练的模型进行微调来解决这个问题,以提高代码生成的质量。
这里的关键思想是
在微调方面采取了不同的方法。论文可以在这里找到。这种方法不是对模型进行微调,而是对给予模型的提示进行微调。正如我们所知,搜索提示是一种试验和错误的方法,所使用的提示种类会影响模型的性能。
这种方法的关键思想是:
参考文献
☠️宝藏级☠️原创公众号『机器学习研习院』,公众号专注分享|领域的原创文章,一起研习,共同进步!
长按关注- 机器学习研习院 – 设为星标,干货速递