大语言模型-RLHF(七)-PPO实践(Proximal Policy Optimization)原理&实现&代码逐行注释

这篇具有很好参考价值的文章主要介绍了大语言模型-RLHF(七)-PPO实践(Proximal Policy Optimization)原理&实现&代码逐行注释。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

从open AI 的论文可以看到,大语言模型的优化,分下面三个步骤,SFT,RM,PPO,我们跟随大神的步伐,来学习一下这三个步骤和代码实现,本章介绍PPO实践。

生活中,我们经常会遇到,希望chatgpt在指定内容范围内回答问题。目前的解决方案大致可以分为两大类,一类是知识库外挂,代表作如langchain。把chatgpt的结果转换为向量在知识库里检索。如下图,本质上最终还是一种向量检索,chatgpt的能力其实是打了一个大的折扣。

另外一类是扩展现有LLM模型的Context处理长度,把候选直接作为llm模型的Context。这里涉及到两个问题,一个是如何扩展Context长度,一个是如何让llm模型只在指定Context内回答问题。今天我们ppo优化主要解决llm模型只在指定Context内回答问题。

大语言模型-RLHF(七)-PPO实践(Proximal Policy Optimization)原理&实现&代码逐行注释,人工智能,大语言模型,chatgpt,AIGC


样本

我们在1000篇文章中随机选择30篇作为prompt,让模型从这30篇文章中选择出我们想要的文章。

        #随机选择30篇作为prompt
       random_articles = df.sample(n=31)
       random_article = random_articles.iloc[0]
       cat = random_article['category']
       article_list = [title + ' (' + cat + ')' for title, cat in zip(random_articles['title'], random_articles['category'])]
       input_str = construct_input(article_list, cat)
       input_ids = tokenizer.encode(input_str, return_tensors='pt').to('cuda')

模型准确率判定

可以回答多篇结果,如果模型有我们希望的回答的结果,加1分,不符合减1分。

        #判断命中条数
       for ans in answer.split('\n'):
           similarity_threshold = 0.9  # 相似度阈值
           # 判断是否在input中且分类是否一致
           if is_similar(ans, article_list, similarity_threshold):
               positive_num = positive_num +1
               break
       print(i, 'accuracy:', positive_num / (i+1))

rm样本制作

第一种

正例:选择一条在prompt中符合条件的新闻为正例

负例:随机选择一条不在prompt中的新闻作为负例,        

第二种,

正例:sft一次预测多条,从预测的结果中,挑选出符合条件的为正

负例:sft一次预测多条,从预测的结果中,挑选出不符合条件的为负

比较的结果是第二种方案会好一些。

也可以参考这篇博文ChatGLM-RLHF(三)-RM(Reward Model)实现&代码逐行注释_Pillars-Creation的博客-CSDN博客

ppo训练预测

ppo原理前一章节已经讲了,传送门ChatGLM-RLHF(六)-PPO(Proximal Policy Optimization)原理&实现&代码逐行注释_Pillars-Creation的博客-CSDN博客

需要注意的就是,因为训练时候需要加载sft和rm两个模型, 你需要一个大一点显存的gpu,本例在A100,40G显存上跑通。如果显存小了容易报显存不足的错误。

训练结果

原始预测结果

大语言模型-RLHF(七)-PPO实践(Proximal Policy Optimization)原理&实现&代码逐行注释,人工智能,大语言模型,chatgpt,AIGC

sft预测结果

大语言模型-RLHF(七)-PPO实践(Proximal Policy Optimization)原理&实现&代码逐行注释,人工智能,大语言模型,chatgpt,AIGC

ppo预测结果

大语言模型-RLHF(七)-PPO实践(Proximal Policy Optimization)原理&实现&代码逐行注释,人工智能,大语言模型,chatgpt,AIGC

几点体会,

1,好的sft可以解决大部分的问题,从上面实验看简单sft训练后准确率就可以得到明显提升

2,要根据自身需要定制好的rm样本和loss。有时候单纯根据sft样本,模型可能很难总结出你真正的目的,rm可以帮助模型更好的理解人的期望。

3,rm单独使用效果不一定比sft效果更好,这也比较好理解,rm需要人工标注pair对,数量总是有限的,并且这个pair对,是否清晰表达给了模型用户的全部意图,容易顾此失彼。所以rm我们更多用在最后,结合ppo纠正模型。

4,rm过程可以进行多次,把自己的目标拆解成几个rm过程,更容易达到我们的目标

5,PPO过程确实帮助模型效果得到了提升,并且可以从比较粗劣的rm结果和sft模型对比中学到知识。

 完整代码可以参考:

GitHub - Pillars-Creation/ChatGLM-RLHF-LoRA-RM-PPO: ChatGLM-6B添加了RLHF的实现,以及部分核心代码的逐行讲解 ,实例部分是做了个新闻短标题的生成文章来源地址https://www.toymoban.com/news/detail-657743.html

到了这里,关于大语言模型-RLHF(七)-PPO实践(Proximal Policy Optimization)原理&实现&代码逐行注释的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [论文笔记] chatgpt——PPO算法(Proximal Policy Optimization)

    Proximal Policy Optimization (PPO)         避免较多的策略更新。 根据经验,训练期间较小的策略更新更有可能收敛到最优解决方案。 在策略更新中,太大的一步可能会导致“掉下悬崖”(得到一个糟糕的策略),并且有很长时间甚至没有可能恢复。         所以在PPO中,我们

    2024年02月01日
    浏览(38)
  • Proximal Policy Optimization (PPO) 算法理解:从策略梯度开始

    近端策略优化(PPO)算法是OpenAI在2017提出的一种强化学习算法,被认为是目前强化学习领域的SOTA方法,也是适用性最广的算法之一。本文将从PPO算法的基础入手,理解从传统策略梯度算法(例如REIFORCE算法)、自然策略梯度算法、信赖域策略优化算法(TRPO)直到PPO算法的演

    2023年04月26日
    浏览(82)
  • [论文笔记] chatgpt系列 1.1 PPO算法(Proximal Policy Optimization)

    Proximal Policy Optimization (PPO)         避免较多的策略更新。 根据经验,训练期间较小的策略更新更有可能收敛到最优解决方案。 在策略更新中,太大的一步可能会导致“掉下悬崖”(得到一个糟糕的策略),并且有很长时间甚至没有可能恢复。         所以在PPO中,我们

    2024年02月03日
    浏览(52)
  • ChatGPT 使用 强化学习:Proximal Policy Optimization算法(详细图解)

    ChatGPT 使用 强化学习:Proximal Policy Optimization算法 强化学习中的PPO(Proximal Policy Optimization)算法是一种高效的策略优化方法,它对于许多任务来说具有很好的性能。PPO的核心思想是限制策略更新的幅度,以实现更稳定的训练过程。接下来,我将分步骤向您介绍PPO算法。 首先,

    2023年04月10日
    浏览(33)
  • 论文阅读-MOSS-RLHF:PPO

    https://github.com/OpenLMLab/MOSS-RLHF Secrets of RLHF in Large Language Models Part I: PPO Ablustrund/moss-rlhf-reward-model-7B-zh · Hugging Face 小虎AI珏爷:从人的反馈中强化学习(RLHF)-简单理解 小虎AI珏爷:ChatGPT背后的技术之理解人类反馈强化学习(RLHF) 小虎AI珏爷:OpenAI默认算法-PPO:近端策略优化

    2024年02月02日
    浏览(45)
  • Secrets of RLHF in Large Language Models Part I: PPO

    本文是LLM系列文章,针对《Secrets of RLHF in Large Language Models Part I: PPO》的翻译。 大型语言模型(LLM)为通用人工智能的发展制定了蓝图。它的主要目标是作为一个以人为本(乐于助人、诚实无害)的助手。与人类保持一致具有至关重要的意义,人类反馈强化学习(RLHF)成为支

    2024年02月07日
    浏览(137)
  • 强化学习PPO从理论到代码详解(1)--- 策略梯度Policy gradient

    Proximal Policy Optimization(PPO) 近端策略优化,可以说是目前最稳定,最强的强化学习算法之一了,也是openAI默认的强化学习算法,有多叼不用我说了吧。 笔者在强化学习的道路上看来很多书,看了很多代码,和很多大佬的博客,只是很多都是侧重一个方面,所以我在吸取百家之

    2024年02月07日
    浏览(46)
  • 论文阅读--EFFICIENT OFFLINE POLICY OPTIMIZATION WITH A LEARNED MODEL

    作者:Zichen Liu, Siyi Li, Wee Sun Lee, Shuicheng YAN, Zhongwen Xu 论文链接:Efficient Offline Policy Optimization with a Learned Model | OpenReview 发表时间:  ICLR   2023年1月21日  代码链接:https://github.com/sail-sg/rosmo MuZero的离线版本算法(MuZero Unplugged)为基于日志数据的离线策略学习提供了一种很

    2024年02月03日
    浏览(53)
  • 微调实操三:人类反馈对语言模型进行强化学习(RLHF)

    1、前言 前面我们在《微调实操一: 增量预训练(Pretraining)》和《微调实操二: 有监督微调(Supervised Finetuning)》实操的两个章节,学习了PT(Continue PreTraining)增量预训练和SFT(Supervised Fine-tuning)有监督微调过程,,今天我们进入第三阶段的微调, 第三阶段微调主流分成2种做法: 1.1 RLHF(

    2024年02月22日
    浏览(55)
  • 大语言模型微调过程中的 RLHF 和 RLAIF 有什么区别?

            目前想要深入挖掘大型语言模型(LLM)的全部潜力需要模型与我们人类的目标和偏好保持一致。从而出现了两种方法:来自人类反馈的人力强化学习(RLHF)和来自人工智能反馈的人工智能驱动的强化学习(RLAIF)。两者都利用强化学习(RL)中的反馈循环来引导大语

    2024年04月24日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包