如ChatGPT,GPT-4,Claude这样的语言模型之所以强大,是因为它们采用了基于人类反馈的强化学习(ReinforcementLearningfromHumanFeedback,RLHF)来使之更符合我们的使用场景。
本博客旨在展示用RLHF训练一个LLaMA模型,以回答StackExchange上的问题。具体而言,包含以下几个方面:
有监督的微调(SupervisedFine-tuning,SFT)。奖励/偏好建模(Reward/preferencemodeling,RM)。基于人类反馈的强化学习(RLHF)。摘自InstructGPT论文,Ouyang,Long,etal.“Traininglanguagemodelstofollowinstructionswithhumanfeedback.”arXivpreprintarXiv:.().
结合了上述方法,我们发布了StackLLaMA模型,该模型在??Hub上开源(访问链接查看Meta的原始LLaMA),整个训练的流程已经集成到了HuggingFaceTRL库中。你可以通过下面的demo来尝试该模型。
LLaMA模型在实践RLHF时,选取一个合适的模型很重要:RLHF只是一个让模型满足我们交互形式的需求的微调过程。所以我们选取了最近上线的LLaMA模型。LLaMA模型是MataAI最近推出的大语言模型。其参数量大小涵盖7B到65B,以及训练在1T和1.4T的token上,这让其很实用。我们这里采用7B的模型。(请填写MetaAI的这份表单来下载模型)。
StackExchange数据集收集人类的反馈数据集是很复杂且昂贵的劳动。为了做到这个,并且还能保证模型的有效性,我们使用StackExchange数据集。该数据集涵盖了StackExchange平台上的问题和答案(包含StackOverflow的编程等话题下的)。这很适合我们的实践,因为其包含了每个答案的赞和踩的数量。
我们按照Askelletal.中的方法,给每个答案赋分:
score=log2(1+upvotes)roundedtothenearestinteger,plus1ifthequestioneracceptedtheanswer(weassignascoreof?1ifthenumberofupvotesisnegative).
对奖励模型,我们将看到每个问题总是需要两个答案对比。有些问题有很多答案,可以产生很多对,我们只取十个以限制每个问题的数据量。最后,我们把格式从HTML转化到Markdown以提高输出的可读性。你可以看到数据集和处理过程的[笔记本]。(