ChatGPT背后的模型

news2024/12/23 14:42:09

文章目录

  • 1.RLHF方法
  • 2.ChatGPT中的RLHF方法
    • 2.1 微调模型GPT-3
    • 2.2 训练奖励模型
    • 2.3 利用强化学习进一步微调语言模型
  • 3.效果
  • 4.面临挑战
  • 5.参考

InstructGPT语言模型,是一个比 GPT-3 更善于遵循用户意图,同时使用通过我们的对齐研究开发的技术使它们更真实、毒性更小。InstructGPT 模型循环迭代的过程当中,加入了人类反馈进行训练。

比如下面的例子:几句话向6岁的孩子解析登月
在这里插入图片描述

可以看到,GPT-3模型的回答需要分开多个句子进行解析,这样的回答并不像人类。而InstructGPT模型的回答,在逻辑和语义通顺上,更加偏向于人类的回答。

实际上,GPT-3 模型未接受过遵循用户说明的训练。InstructGPT 模型(上面蓝色的字体)生成更有用的输出以响应用户指令。

在GPT-3模型中,可以使用精心设计好的文本提示词语引导该模型执行自然语言任务。但是这些模型在生成文本时,会输出不真实、有毒或反映有害情绪的文本。这是因为,在训练GPT-3模型的时候,利用了大量的互联网文本数据来预测下一个单词,而不是在安全情况下执行用户想要的语言文本。总结来说,GPT-3模型与用户的需求不太一致。

为了让模型生成更安全,有用,对其用户需求的文本,OpenAI使用了一个称为**RLHF(Reinforcement Learning from Human Feedback)**的方法,**它是一种根据人类反馈从而进行学习的强化学习方法。**在实际过程中,用户提交文本提示词语,标注者针对模型给出的几个回答进行排序,这样就可以对GPT-3模型进行fine-tune,这样就可以得到InstructGPT模型。

InstructGPT模型比GPT-3模型更擅长遵循用户的指令。这个模型很少会编造事实,同时在有毒输出产生方面表现出小幅下降。InstructGPT模型参数量比GPT少100倍,只达到了1.3B,但其效果和GPT-3模型差不多。

1.RLHF方法

接下来详细讲一下InstructGPT中用到的RLHF方法。

构建一个安全的AI模型,**首先需要的就是摆脱直接编写目标函数的需求。**因为如果对复杂的目标任务使用简单的函数进行表征,或者使用错误的函数进行表征,就可能导致模型学习到不良的甚至时危险的行为。简单来说,就是让模型生成多种输出,然后人工标注哪种输出更好,来指导模型训练。

这里以“训练AI进行后空翻操作”为例子,讲述RLHF的原理
在这里插入图片描述

在算法中,仅仅需要900位人类的反馈,就可以完成AI后空翻的训练效果。其包含了3个训练循环步骤:
在这里插入图片描述

  • 奖励预测:根据人类的反馈
  • RL算法训练
  • agent理解目标行为

AI agent首先在环境中随机行动。定期将其行为的两个视频片段提供给人工审核,标注者决定两个片段中的哪一个最接近实现其目标——在本例中为后空翻。人工智能通过找到最能解释人类判断的奖励函数,逐步建立任务目标模型。然后它使用 RL 来学习如何实现该目标。随着其行为的改进,它会继续询问人类对轨迹行为的反馈,并进一步完善其对目标的理解。

后空翻视频需要不到 1000 位的人类反馈。它花费了人类评估者不到一个小时的时间。下面就是人工在看视频标注的过程:
在这里插入图片描述

作为对比,研究者重新编写了奖励函数也训练了一个模型。从实验上看,使用RLHF方法要更优雅得多。(左图为RLHF,右图为正常利用奖励函数进行训练)
在这里插入图片描述

OpenAI进一步把RLHF方法,试验到多个领域中,包括模拟机器人和 雅利达游戏上。在这些游戏中,没有利用后台的分数作为奖励函数,而仅仅利用标注进行奖励。

Agent可以从人类反馈中学习,有时甚至是超人的表现。在下面的动画中,可以看到训练好的智能体玩各种雅利达游戏。
在这里插入图片描述

2.ChatGPT中的RLHF方法

在实际应用上训练ChatGPT中,其包含了几个以下的三个主要步骤:
在这里插入图片描述

  • 收集人工标记的数据,用来微调预训练模型GPT-3
  • 训练奖励模型
  • 利用强化学习进一步微调语言模型

2.1 微调模型GPT-3

第一步比较简单,ChatGPT直接使用GPT-3作为预训练模型。在人工标注的数据微调后,可以得到一个初始化LM模型:Initial Language Model。
在这里插入图片描述

2.2 训练奖励模型

从Prompts数据集中,抽样出多个prompts,然后输入到上面微调过的LM模型中,这样会得到多个输出文本,即:[prompt, generated text]。
在这里插入图片描述

接下来利用人工方法对这些输出的文本进行排序,人为确认哪些文本较为满意。

**为什么要使用排序方法,而不是直接打分数呢?**这是因为不同的研究人员对同一个句子可能有不一样的评分,这样会导致大量的噪声出现,如果改成排序,则会大大降低噪声。

得到排序结果后,就可以用来训练奖励模型。奖励模型可以利用预训练模型进行初始化,或者也可以进行随机初始化。然后把人工标注的排序结果输入到奖励模型中。这里可以使用类似推荐系统中的“pair-wise”,把两个句子输入进行,奖励模型判别哪个句子较好。

最后,我们就有了两个模型,一个是第一步得到的LM模型,另一个是现在得到的奖励模型(RM)。

2.3 利用强化学习进一步微调语言模型

利用强化学习方法,不断强化Tuned Language Model。让这个模型生成的文本越来越符合人类的语言认知。这样最终得到的模型在文本生成上,更加语义通顺和安全。
在这里插入图片描述

这其中用到的强化学习方法主要是PPO算法,感兴趣的同学可以了解一下。

3.效果

为了衡量模型的安全性,OpenAI主要在公开可用的数据集上进行验证。与 GPT-3 相比,InstructGPT 产生的模仿性错误更少并且毒性更小。同时发现 InstructGPT 更少地编造事实(“幻觉”),并生成更合适的输出。
在这里插入图片描述

4.面临挑战

RLHF算法的性能最高只能达到与人类评估的行为,因此如果人类没有很好地掌握任务,他们不会提供很多有用的反馈,这进一步限制了模型的效果。

同时,AI系统的安全性不仅取决于底层模型的行为,还取决于这些模型的部署方式。需要更多的过滤器来检测不安全行为的生成。

InstructGPT更多的还是偏向于英语的文化价值观,针对少数群体的差异和分歧,该模型很难对齐。这更需要加入人工知识,来进一步平衡模型的价值观。

5.参考

1.[https://zhuanlan.zhihu.com/p/591474085](https://zhuanlan.zhihu.com/p/591474085)
2.[https://huggingface.co/blog/rlhf](https://huggingface.co/blog/rlhf)
3.[https://openai.com/blog/deep-reinforcement-learning-from-human-preferences/](https://openai.com/blog/deep-reinforcement-learning-from-human-preferences/)
4.[https://mp.weixin.qq.com/s?__biz=MzI4MDYzNzg4Mw==&mid=2247554744&idx=3&sn=58d27263f499a939cba817522840a9cb&chksm=ebb72e6cdcc0a77a135c55c297c3c8c5ee106780c92f072bbf821ea0f8a1e143a47034e69680&scene=27](https://mp.weixin.qq.com/s?__biz=MzI4MDYzNzg4Mw==&mid=2247554744&idx=3&sn=58d27263f499a939cba817522840a9cb&chksm=ebb72e6cdcc0a77a135c55c297c3c8c5ee106780c92f072bbf821ea0f8a1e143a47034e69680&scene=27)
5.[https://openai.com/blog/instruction-following/](https://openai.com/blog/instruction-following/)

好了,以上就是本期的全部内容了,我是leo,欢迎关注我的公众号/知乎"算法一只狗",我们下期再见~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

应急/linux 挂D盾扫描方法

0x00 linux 挂D盾扫描方法 这个方法可以解决Linux下无法使用D盾查杀webshell的困扰 利用ssh将Linux文件系统挂在到win上面,然后扫描就好了 0x01 环境安装 安装D盾 D盾都用过吧,应急经常用来扫一下是否存在 Webshell D盾下载地址 D盾防火墙 (d99ne…

python 性能优化

文章目录性能测试运行速度内存消耗并行加速分布式并行多线程多进程框架即时编译njitcase1 计算熵case2 找到最大概率类别case3 计算两两准确率GPU使用工具关于程序优化的第一个准则是“不要优化”,第二个准则是“不要优化那些无关紧要的部分”。性能测试 性能测试是…

4种FPGA时钟分频 【附源码】:1.偶数分频;2.奇数分频(占空比50%);3.奇数分频(任意无占空比);4.小数分频;

题目来源于牛客网,完整工程源码:https://github.com/ningbo99128/verilog 目录 VL37 偶数分频 VL40 奇数分频(占空比50%) VL42 奇数分频(任意无占空比) VL41 任意小数分频 VL37 偶数分频 题目介绍 请…

https的相关知识,为什么https更加安全,为什么要对称与非对称加密,非对称加密的算法

目录 https相比于http更加安全,三个优势: 下面是一些必须知道的问题 1.对称加密与非对称加密: 2.对称加密的密钥SK如何产生和传输: 3.https有两套非对称加密 4.https的哈希一共用于两个地方 5.https的整个流程 https相比于ht…

ElasticSearch数据实时性原理分析与持久化

问题复现 现在有这么一种业务场景,需要将海量的数据通过Hive进行数据清洗并统计,最后落库到ES中,因为需要支持大数据量的分词,模糊搜索,所以考虑用ES而不直接放到Mysql中,前端需要直接对数据进行交互&…

Redis的自增也能实现滑动窗口限流?

文章目录限流核心原理以及代码基于Spring切面实现的注解版本限流是大家开发之路上一定会遇到的需求。比如:限制一定时间内,接口请求请求频率;一定时间内用户发言、评论次数等等,类似于滑动窗口算法。这里分享一份拿来即用的代码&a…

buildroot构建hisi平台根文件系统和工具链

buildroot构建hisi平台根文件系统和工具链 前面使用了arm-hisiv300-linux 工具链来作为Buildroot的外部工具链进行编译,然后遇到了很多编译问题。 https://blog.csdn.net/duapple/article/details/128516133?spm1001.2014.3001.5501 这里不使用hisi的工具链&…

Seata简介

小结: nacos 【name server】:注册中心,解决服务的注册与发现 nacos【config】:配置中心,微服务配置文件的中心化管理,同时配置信息的动态刷新 Ribbon:客户端负载均衡器,解决微服务集…

C++之引用类型,深浅拷贝构造

引用类型:给内存段取别名。 int m 10; //引用,给内存段取别名,所以需要给他一段内存段,而不只是声明。 int& n m;//不是赋值的意思,是别名的意思 想要在被调函数中修改主调函数中定义的变量的值时,…

小程序用户头像昵称获取规则调整与之对应调式策略、新API接口的bug

目录 调整时间 调整背景 调整说明 开发者与之对应的debug策略 1.button里面包含一个image,这种包含关系 2.然后我们可以看到官方给出的是用button组件中的open-type属性并且给到了一个chooseAvatar值! 3.我们会发现光放给我们了一个“配置好的”命…

CSAPP Cache Lab

CSAPP Cache Lab 本实验将帮助您了解缓存存储器对 C 语言性能的影响程式。实验室由两部分组成。 在第一部分中,您将编写一个小的 C 程序(大约 200-300 行)模拟高速缓存的行为。 在第二部分中,您将优化一个小型矩阵转置函数&#…

NoMachine出现 The session negotiation failed的解决方案及踩坑总结

问题情况:我A电脑输入用户名和密码可以远程B电脑,B电脑输入用户名密码就是登录不上A电脑。 B电脑上密码是用的账户密码(就是图标是一把钥匙的那个)。 A电脑上的密码是用的PIN密码(Win11系统推荐的那个)。 通…

ArcGIS基础实验操作100例--实验37线要素生成规则或随机采样点

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验37 线要素生成规则或随机采样点 目录 一、实验背景 二、实验数据 三、实验步骤 &…

小程序安全设置的经验分享

一、小程序框架概述 在第一部分小程序框架概述中,将介绍小程序抽象框架、小程序调用框架和小程序初始化流程。下面让大白来逐一介绍。 1、小程序抽象框架 1.1视图层 包含WXML、WXSS和页面视图组件。 WXML是一种类似XML格式的语言,支持数据绑定、条件渲染、列表渲染、自定…

零入门容器云网络-10:基于golang编程netlink包方式操作tun设备

已发表的技术专栏(订阅即可观看所有专栏) 0  grpc-go、protobuf、multus-cni 技术专栏 总入口 1  grpc-go 源码剖析与实战  文章目录 2  Protobuf介绍与实战 图文专栏  文章目录 3  multus-cni   文章目录(k8s多网络实现方案) 4  gr…

【Linux】静态库和共享库

目录 库是什么 静态库和共享库 库的链接 优缺点 查看使用的库 制作库 制作静态库 静态库的使用 制作共享库 共享库的使用 静态库和共享库的区别 库是什么 库就是预先编译好的方法的集合 .h中是库函数的声明,库函数的实现在库中,如&#xff…

ChatGPT上线了!我在2023年1月2日这一天用上了它!百问百答!我只能说(真NB)算法工程师可以不用百度/Google了!

目录:问答结果1、你有什么nlp算法?2、平台终端3、如何训练深度学习模型?4、如何压缩nlp模型?5、bert模型有哪些用途?6、你知道汽车座舱吗?7、知识图谱有什么用途?8、能给一个构建知识图谱的案例吗&#xff…

S32K144—基于MBD的BLDC六步换相算法

可以简单分为六个功能区域: 1、全局变量 全局变量的定义是建模过程中遇到的第一个难点,因为它涉及到我们软件开发中最基础的东西——数据类型定义(Data Types Definition)。 在 Simulink 中可以通过 Bus Editor 构建自定义数据类…

【 shell 编程 】第5篇 文本编辑三剑客

文本编辑三剑客 文章目录文本编辑三剑客一、正则表达式1.基本正则表达式元字符2.拓展正则表达式元字符二、grep1.grep2.egrep3.fgrep三、sed四、awk一、正则表达式 1、简介:正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的…

点云算法-提取kitti路面点云

目录 一、ransac原理 二、ransac 地面分割原理 三、ransac常见应用 四、代码 五、截图 六、总结 一、ransac原理 RANSAC是“random sample consensus(随机抽样一致)”的缩写。它可以从一组包含“局外点”的观测数据集中,通过迭代方式估…