视频链接: https://youtu.be/WMmGzx-jWvs?si=j1csmrOYHXB9faxp
欢迎回来。让我们看看如何利用强化学习来改进ChatGPT。大型语言模型是大型神经网络,它们学习预测句子中的下一个单词。
如果你看过一个关于大型语言模型的短视频,你会记得它们可以做一些非常惊人的事情,比如翻译语言,写诗,创建食谱,甚至生成计算机代码。
但它们也存在一些问题,比如偏见,刻板印象,事实错误,和质量问题。
那笑话呢?我曾经以为自己优柔寡断,但现在我不太确定了。这个笑话还不错,对吧?这是人类写的。这是ChatGPT版本的这个笑话。嗯,这是用相同提示尝试的另外几个版本。好吧,最后一个其实还不错。我的意思是,我直接让ChatGPT编一个关于这个的笑话。
我们怎样才能让大型语言模型更有趣呢?嗯,部分问题在于它们是在互联网上训练的,而互联网上有很多糟糕的笑话。一个想法是去掉那些糟糕的笑话,只重新训练好的笑话。确实,获得非常好的训练数据可以帮助提高结果,但这只能做到一定程度。
为什么?嗯,假设这个盒子代表所有笑话的空间。这里的每个点都是一个笑话。假设你有一个好笑话的训练集,你的任务是将这个新笑话分类为好或坏。机器学习算法将通过定义好与坏之间的边界来完成这个任务。但我们该在哪里画这个边界呢?很难确定。如果你这样画,你会得到不同的答案。
更好的方法是不仅训练好的笑话,还要训练坏的笑话,然后拟合一个将好与坏分开的边界。现在我们可以使用好笑话和坏笑话来改进我们的语言模型。如果笑话是好的,网络将加强那些促成这些单词的权重。如果笑话是坏的,促成这些单词的权重会受到惩罚。
那么这与强化学习有什么关系呢?嗯,你可以把语言模型看作一个预测动作的策略,即生成下一个单词。直到你生成完整个笑话,你才能得到奖励。这就像我们视频的第一部分,你执行一系列动作,发现自己是赢是输,然后回溯时间奖励每一个单独的动作。这就是策略梯度方法。它的PPO变体在微调大型语言模型时很流行。这被称为基于人类反馈的强化学习,简称RLHF。
RLHF的一个挑战是数据更难获取。从互联网上下载大量笑话很容易。更难的是让人们标记这些数据,在这张图片中评价哪些笑话是红色(坏)的,哪些是绿色(好)的。
幸运的是,有一些捷径。首先,我们并不真的需要所有这些数据点,只需要靠近边界的那些。这可以节省一些精力。通常你只需要少量数据点就能完成任务。这相当令人惊讶。这里的数据点不足以完全定义边界的形状。那为什么这还能奏效呢?
嗯,一种理论是,语言模型实际上已经知道如何讲笑话了。它知道这个边界的形状,但这些知识潜藏在它的记忆库中。所以当你用RLHF微调网络时,它解锁了这种能力。所以好消息是,你通常可以用相对较少的训练样本来解锁强大的能力。
很好。但这在实践中是如何运作的呢?假设我们从这样一个提示开始。语言模型生成了这样的续写,我们得到了这样的奖励。模型更新了权重并生成了新的续写。新的奖励是什么?我们可以去问人类读者来评估这个新笑话,但这样的迭代会有很多次。所以这会变得非常缓慢且昂贵。我们不希望程序在每次微更新时都等待人类反馈。
因此,我们会训练一个奖励网络,预测人类对每个输入会给出的奖励。这样,我们只需要让人类评估一次笑话,然后网络就可以自己预测类似笑话的评分。你会注意到我们的奖励网络看起来很像一个大型语言模型(LLM)。事实上,它就是一个去掉顶部的LLM,我们在顶部替换了一个单一标量输出。为了节省时间,你可以冻结网络的大部分,只重新训练顶部的新部分。这让奖励模型能够继承对语言的理解,而不需要从头学习。
总结一下,这就是我们目前描述的方法。我们首先让人类阅读大量文本。然后训练一个奖励网络来预测人类评分,接着通过强化学习优化LLM。
但这种基本方法有很多变体。例如,我们一直在要求人类给出“好”或“坏”的标签。嗯,这个笑话是好还是坏?还可以吧。我们常常难以做出这种二元判断,但有一点是肯定的,它比这个笑话好。人们通常更擅长做这种比较。因此,一些系统会训练奖励网络,将这种比较转化为数值评分,确保左边的笑话比右边的笑话评分更高。
我们的基于人类反馈的强化学习(RLHF)在改进许多大型语言模型方面取得了显著成功,提高了准确性,减少了偏见,并让它们变得更有趣一点。
那么,这些笑话怎么样?为什么RLHF算法去咨询了一位拉比?因为它想要神圣的反馈。希望你喜欢这个关于RLHF的视频!