【OpenAI o1背后技术】Sef-play RL:LLM通过博弈实现进化

【OpenAI o1背后技术】Sef-play RL:LLM通过博弈实现进化

OpenAI o1是经过强化学习训练来执行复杂推理任务的新型语言模型。特点就是,o1在回答之前会思考——它可以在响应用户之前产生一个很长的内部思维链。也就是该模型在作出反应之前,需要像人类一样,花更多时间思考问题。通过训练,它们学会完善自己的思维过程,尝试不同的策略,并认识到自己的错误。重点在于,OpenAI 的大规模强化学习算法,教会模型如何在数据高度有效的训练过程中利用其思想链进行高效思考。换言之,类似于强化学习的 Scaling Law。

现如今LLM进化的途径有三种:
在这里插入图片描述

  • 行为克隆:通过让LLM学习Positive,从而教会模型进行指令遵循;
  • RLHF/DPO:通过引入Positive和Negative,让LLM知道偏好信息,从而实现对齐;
  • Slef-play:引入一种博弈的过程,让LLM实现Weak-to-Strong

Self-play基本形式

经过SFT和RLHF的模型,通过自我进化增强的形式实现Weak-to-Strong过程。LLM中的Self-play有两个先决条件:Generator 和 Verifier。

Self-play相当于Generator与Verifier之间的对抗博弈,Verifier十分关键,构造高质量数据用于RL/Reward训练。常见的判别式RM,大模型作为裁判(LLM as a judge)等模式的判定准确率仍显不足,我们急需一种能够scaling起来的方式。

Google DeepMind提出一种经典的方法(Generative Verifiers: Reward Modeling as Next-Token Prediction)如下所示:
在这里插入图片描述

对于一个问题和答案,首先按照生成式模型的方法给出自然语言的判断,然后再给出RL所需要的标量数值。通过CoT的形式让LLM充当Verifier并给出判断正确与否的思考过程。Verifer和generator之间也可以通过信息密度更高的自然语言的方式进行互动。相当于RM监督policy的时候,不仅告诉了每条答案的评分还详细给出了错误的原因。

Verifier判别出来的正例和负例可以同时利用起来!在强化学习中,引入负例可以更有效地提升大语言模型的推理强度。在论文《RL on Incorrect Synthetic Data Scales the Efficiency of LLM Math Reasoning by Eight-Fold》中表明,数据利用效率更是达到了仅使用正例的八倍,即对于推理来说一个巨大的采用空间内,做错的可能性在起初要大大高于能够做对的概率。如果无法充分利用负例的数据价值,学习效率就会大打折扣。

在这里插入图片描述
如上图所示,如果只在Positive上进行SFT训练,那么就需要接近8倍的训练数据/时间/资源来达到相同较低的Test Error时对应充分利用Negative数据的RL方法。

Self-play中的Inference-time Scaling Law

Google DeepMind提出的一种Inference Time Scaling Law(Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters)揭露出在推理阶段进行Scaling相比于训练更加有效。文中探索了两种有效的test-time scaling策略:

  • 通过搜索的方式结合过程奖励模型进行判断,例如PRM(过程监督奖励模型) + MCTS(蒙特卡洛树搜索)
  • 在推理时不断按照上下文进行模型分布调整。

那么推理阶段的Scaling有如下几种形态:

  • 宽度Scaling Law——Best-of-N:给定一个prompt(状态),并行地让LLM Generator生成若干推理结果,然后让Verifier对所有结果进行评判,并将得分最高(或者类似Self-Consistency投票法)选出最合适的答案。此时Scaling Law属于宽度(并行)方向
  • 深度Scaling Law——CoT:另外一种就是增加模型预测的“步数”,相当于让模型在给出答案之前生成较长的思考过程,从而约束LLM进行“深度思考”,从而得到靠谱的答案。这也是CoT的方式,即在推理阶段集中靠生成一定数量的token来实现Scaling。此时的Scaling Law属于深度串形方向。
  • 广深结合:OpenAI o1则是在Inference阶段结合了两者Scaling Law方向。在某一个状态进行Self-play过程中,通过蒙特卡洛树搜索(MCTS)展开若干可能的推理路径,并基于Verifier给出每一步和最终结果的判定和奖励。Self-play RL的推理态即是在这种guided search的模式下不断地获取到Positive和Negative推理数据,并通过RL进行自我进化。这一过程中考虑到的Scaling Law集中在(1)扩大搜索宽度有多少(探索与利用的trade-off)?以及(2)选择哪个方向可以在有限的深度范围内进行多步推理并得到预期答案?

Self-Play RL = Search + Memory

什么是Self-play RL呢?RL本质上就是探索与利用的Trade-off:

  • Search——探索过程,Trial-and-Error不断地进行试错和尝试,根据推理结果的反馈进行反复思考、回溯;
  • Memory——利用过程,记住之前探索过程中积累的经验,并在下一次遇到类似状态时选择最好的路径;

Self-play RL可能的实现技术框架

一种可能的Self-play RL技术框架就是Generator + Verifier + RM的组合,如下图所示:
在这里插入图片描述

上图所示,其中实线代表LLM Generator生成结果,虚线代表Verifier对推理过程和结果进行判定

Generator和Verifier组合为一个Self-play System,通过Actor-Critic形式进行RL,通过引入TD-error实现参数更新。

Self-play过程中考虑到宽度和深度Scaling Law的结合,所需要的计算规模甚至会达到训练阶段的100~1000倍。正是这种Scaling Law使得LLM能够探索到足够多的推理路径,并利用这些Positive和Negative作为经验通过RL训练成为LLM的记忆。

Reward Model则可以是通过Bradley-Terry Model训练的标量奖励函数,在整个Self-play过程中充当一个Discriminator从而增强Verifier的能力,而Reward Model则可以充分利用Self-play过程中产生的反馈结果(Positive和Negative)进行训练。

参考资料

  • https://zhuanlan.zhihu.com/p/720106482
  • OpenAI o1 Survery:https://github.com/wjn1996/Awesome-LLM-Reasoning-Openai-o1-Survey/tree/main

【大模型&NLP&算法】专栏

近200篇论文,300份博主亲自撰写的markdown笔记。订阅本专栏【大模型&NLP&算法】专栏,或前往https://github.com/wjn1996/LLMs-NLP-Algo即可获得全部如下资料:

  • 机器学习&深度学习基础与进阶干货(笔记、PPT、代码)
  • NLP基础与进阶干货(笔记、PPT、代码)
  • 大模型全套体系——预训练语言模型基础、知识预训练、大模型一览、大模型训练与优化、大模型调优、类ChatGPT的复现与应用等;
  • 大厂算法刷题;

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/882013.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

k8s中pod的创建过程和阶段状态

管理k8s集群 kubectl k8s中有两种用户 一种是登录的 一种是/sbin/nologin linux可以用密码登录,也可以用证书登录 k8s只能用证书登录 谁拿到这个证书,谁就可以管理集群 在k8s中,所有节点都被网络组件calico设置了路由和通信 所以pod的ip是可以…

WebRTC编译后替换libwebrtc.aar时提示找不到libjingle_peerconnection_so.so库

Loading native library: jingle_peerconnection_so 问题原因:编译的时候只编译了armeabi-v7a的版本,但是应用程序是arm64-v8a,所以无法运行 解决方法:更新编译脚本,加上arm64-v8a进行编译 ./tools_webrtc/android/bu…

【漏洞复现】用友 NC-Cloud queryStaffByName Sql注入漏洞

免责声明: 本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测…

windows 驱动实例分析系列-COM驱动案例讲解

COM也被称之为串口,这是一种非常简单的通讯接口,这种结构简单的接口被广泛的应用在开发中,几乎所有系统都能支持这种通讯接口,它有RS232和RS485等分支,但一般我们都会使用RS232作为常见的串口,因为它足够简单和高效。 几乎所有的开发板,都会提供用于烧录、调试、日志的…

常见中间件漏洞(Apache)

CVE-2021-41773 搭建环境 docker pull blueteamsteve/cve-2021-41773:no-cgid curl http://192.168.10.190:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd 工具 验证

银河麒麟高级服务器操作系统V10:提升普通用户操作权限

银河麒麟高级服务器操作系统V10:提升普通用户操作权限 1. 打开终端2. 切换到root用户(可选)3. 将用户加入到wheel组4. 验证用户组变更5. 使用sudo执行命令结论 💖The Begin💖点点关注,收藏不迷路&#x1f4…

神经网络面试题目

1. 批规范化(Batch Normalization)的好处都有啥?、 A. 让每一层的输入的范围都大致固定 B. 它将权重的归一化平均值和标准差 C. 它是一种非常有效的反向传播(BP)方法 D. 这些均不是 正确答案是:A 解析: ‌‌‌‌  batch normalization 就…

ChatGPT 在国内使用的方法

AI如今很强大,聊聊天、写论文、搞翻译、写代码、写文案、审合同等等,ChatGPT 真是无所不能~ 作为一款出色的大语言模型,ChatGPT 实现了人类般的对话交流,最主要是能根据上下文进行互动。 接下来,我将介绍 ChatGPT 在国…

docker|Oracle数据库|docker快速部署Oracle11g和数据库的持久化(可用于生产环境)

一、 容器数据持久化的概念 docker做为容器化的领先技术,现在广泛应用于各个平台中,但不知道什么时候有一个说法是docker并不适用容器化数据库,说容器化的数据库性能不稳定,其实,这个说法主要是因为对docker的数据持…

电气设备施工现场风险状态判断ai模型训练数据集

电气设备施工现场风险状态判断ai模型训练数据集 id:18 电气设备施工现场工人人工智能学习数据和工作环境安全数据,建立系统化管理体系,改变全球EHS范式,预防工业事故。数据集记录了387709例子电力设施建设以及施工现场相关的灾害安全环境数据…

Python进阶学习笔记(一)对象

1.对象模型 在面向对象理论中类和对象是不同的概念,而在python中类也是对象,叫做类型对象。 所以python中的类,实例对象,类型都是对象。 元类型: 在python中实例对象的类型为对应类型的对象,而类型的对象…

FastAPI 的隐藏宝石:自动生成 TypeScript 客户端

在现代 Web 开发中,前后端分离已成为标准做法。这种架构允许前端和后端独立开发和扩展,但同时也带来了如何高效交互的问题。FastAPI,作为一个新兴的 Python Web 框架,提供了一个优雅的解决方案:自动生成客户端代码。本…

Java笔试面试题AI答之设计模式(3)

文章目录 11. Spring开发中的哪里使用了工厂设计模式 ?1. BeanFactory2. 工厂方法模式3. 抽象工厂模式4. 示例说明总结 12. 什么是代理模式 ?13. 请列举代理模式的应用场景 ?14. 什么是原型模式 ?15. 请简述Java中原型模式的使用方…

c++二叉搜索树

⼆叉搜索树的概念 ⼆叉搜索树又称⼆叉排序树,它或者是⼀棵空树,或者是具有以下性质的⼆叉树: • 若它的左子树不为空,则左子树上所有结点的值都小于等于根结点的值 • 若它的右子树不为空,则右子树上所有结点的值都大于等于根结…

Contact Form 7最新5.9.8版错误修复方案

最近有多位用户反应Contact Form 7最新5.9.8版的管理页面有错误如下图所示 具体错误文件的路径为wp-content\plugins\contact-form-7\admin\includes\welcome-panel.php on line 153 找到welcome-panel.php这个文件编辑它,将如下图选中的部分删除 删除以后&#xf…

洛谷P5740——结构体运用

简单的结构体&#xff0c;但是要注意这个排序还有求和重复 时的特判 AC代码附在后面 #include<bits/stdc.h> using namespace std; struct Node{string name;int a,b,c,sum;//语文&#xff0c;数学&#xff0c;英语 }node[1000]; bool cmp(Node a,Node b){return a.sum…

软件测试之测试用例

1. 测试用例的基本要素 测试用例&#xff08;Test Case&#xff09;是为了实施测试而向被测试的系统提供的一组集合&#xff0c;这组集合包含&#xff1a;测试环 境、操作步骤、测试数据、预期结果等要素。 好的测试用例是一个不熟悉业务的人也能依据用例来很快的进行测试 评价…

Fyne ( go跨平台GUI )中文文档- 架构 (八)完结

本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法 go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章&#xff1a; Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne ( go跨平台GUI…

恶意Bot流量识别分析实践

1、摘要 随着互联网的发展&#xff0c;自动化工具和脚本&#xff08;Bots&#xff09;的使用越来越普遍。虽然一些善意 Bots 对于网站的正常运行和数据采集至关重要&#xff0c;但恶意 Bots 可能会对网站带来负面影响&#xff0c;如爬取敏感信息、恶意注册、刷流量等。因此&am…

某建筑市场爬虫数据采集逆向分析

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 目标网站 aHR0cHM6Ly9qenNjLm1vaHVyZC5nb3YuY24vZGF0YS9jb21wYW55P2NvbXBsZXhuYW1lPSVFNiVCMCVCNA 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面…