当前位置: 首页 > 编程日记 > 正文

比 GPT-3 更擅长理解用户意图,OpenAI发布 InstructGPT

446a4cb80128f40d29152c70d8240b00.gif

作者 | 青苹果

来源 | 数据实战派

近日,OpenAI 发布了一项令人瞩目的研究—— InstructGPT。

在这项研究中,相比 GPT-3 而言,OpenAI 采用对齐研究(alignment research),训练出更真实、更无害,而且更好地遵循用户意图的语言模型 InstructGPT。论文题为 Training language models to follow instructions with human feedback

ae35cb698bde53aa3f7a2336cd8aaded.png

以往,GPT-3 也很可能产生不真实、有害或反映不良情绪的输出。这在一定程度上是因为,在互联网文本的大数据集上,训练 GPT-3 来完成下一个单词的预测,并非是安全地执行用户想要的语言任务。换句话说,这些模型与其用户可能实际上并不一致。

为了让模型更安全、更有用、更一致,OpenAI 使用了一种称为从人类反馈中强化学习(RLHF,Reinforcement Learning from Human Feedback)的现有技术。根据客户向 API 提交的反馈,OpenAI 对模型的多个输出进行排序。然后,OpenAI 使用这些数据来微调 GPT-3。

由此产生的 InstructGPT 模型,在遵循指令方面,远比 GPT-3 要好得多。而且,它们也较少的凭空捏造事实,有害输出的产生呈现小幅下降趋势。InsructGPT 的参数量为 1.3 B。

InstructGPT 模型,已经在 API 上进行了一年多的测试,现已成为 API 上可访问的默认语言模型。OpenAI 相信,用 RLHF 的解决方案来微调语言模型是提高安全性和可靠性的强大工具。

这也是团队多年来首次将对齐研究应用到产品上。

实验结果


OpenAI 将 InstructGPT 的输出与 GPT-3 的输出进行比较,以评估InstructGPT 的输出是否很好地遵循了用户指令。

结果发现,在 API 上,对于提交给 InstructGPT 和 GPT-3 模型的提示,InstructGPT 模型明显更受欢迎。当 OpenAI 为 GPT-3 提示符添加一个前缀,使其进入“指令跟随模式”时,这一点是成立的。

为了衡量模型的安全性,OpenAI 主要在公开可用的数据集上使用了一套现有的度量指标。

与 GPT-3 相比,InstructGPT 产生的模仿性谎言更少,危害更小。OpenAI 还对 API 提示分布展开了人工评估,结果显示,InstructGPT 捏造事实(“幻觉”)的频率更低,而且还能生成更恰当的输出。

最后,OpenAI 发现在客户分布上,InstructGPT 的输出要优于那些来自 FLAN 和 T0 的输出。这表明用于训练 FLAN 模型和 T0 模型的数据,主要是学术 NLP 任务,并不能完全代表部署的语言模型在实践中的使用情况。

为了训练 InstructGPT 模型,OpenAI 的核心技术是 RLHF,这是 OpenAI 在早期对齐研究中帮助开发的一种方法。该技术利用人类的偏好作为奖励信号来微调模型,这一点很重要,因为 OpenAI 旨在解决的安全性和对齐问题是复杂且主观的,并且无法被简单的自动度量指标所捕获。

OpenAI 首先在提交给 API 的提示上收集人工编写的演示数据集,然后用它来训练监督学习的基线。

接下来,在更大的 API 提示集上收集两个模型输出之间的人工标记的比较数据集。然后,在此数据集上训练奖励模型(RM,Reward Model),以预测 labelers 更偏爱哪一种输出。最后,使用 RM 作为奖励函数,并通过 PPO 算法微调 GPT-3 策略来最大化这个奖励。

可以用以下方式来思考上述过程,它“解锁”了 GPT-3 已经具备的功能,但很难仅通过提示工程(promptengineering)来实现:这是因为相对于预训练学到的知识而言,OpenAI 的训练程序在帮助模型 get 更多技能方面的确能力有限。相比于模型预训练,它使用的计算和数据甚至不足 2%。

这种方法的局限性在于它引入了“对齐税”(alignment tax):模型如果只对齐客户任务,可能会使其在其他一些学术 NLP 任务上的性能表现更差。

显然,这是不可取的,因为如果 OpenAI 的对齐技术使模型在人们关心的任务上变得更糟,那么,他们在实践中被采用的可能性会有多小便可想而知。不过,OpenAI 发现了一种简单的算法更改,可以最小化这种对齐税:在 RL 微调期间,OpenAI 混合了一小部分用于训练 GPT-3 的原始数据,并使用正常的对数似然最大化训练这些数据。

这大致维持了安全性和人类偏好的表现,同时还降低了学术任务的性能表现,在某些情况下甚至超过了 GPT-3 的基线。

536c132056bfa6edde2b807d2ae86d1d.png

推广到更广泛的偏好


OpenAI 使模型的行为与 labelers 的偏好相一致,labelers 直接产生用于训练模型的数据,而研究人员则通过书面指示、对具体例子的直接反馈和非正式对话为 labelers 提供指导。

此外,模型还受到客户和 API 政策中隐含偏好的影响。

OpenAI 选择了在筛选测试中表现良好的 labelers,既可以识别敏感提示,又可以对敏感提示迅速做出响应。然而,这些对数据产生影响的不同来源并不能保证,模型会与任何更广泛群体的偏好相一致。

e83e54fb971f3ca382eb142c04e62b22.png

OpenAI 开展了两个实验来研究这个问题。

首先,使用未产生任何训练数据的保留 labelers 来评估 GPT-3 和 InstructGPT 模型,并发现这些 labelers 更喜欢 InstructGPT 模型的输出。

其次,用来自子集的数据训练奖励模型,并发现它们可以很好进行推广,以预测不同 labelers 子集的偏好。这也就表明,模型并非只完全适合于 OpenAI 的训练 labelers 的偏好。

然而,还需要更多的工作来研究这些模型如何在更广泛的用户群体中执行,以及他们如何在人们对预期行为有异议的输入中执行。

局限性


尽管该研究取得了重大进展,但 InstructGPT 模型距离完全对齐或完全安全仍任重而道远;他们仍然会产生有害或有偏见的结果/捏造事实,并在没有明确提示的情况下产生性和暴力的相关内容。但机器学习系统的安全性不仅取决于底层模型的行为,还取决于这些模型的部署方式。

为了支持 API 的安全性,OpenAI 将在潜在的 App 上线之前继续审核,提供内容过滤器来检测安全性,并监视滥用情况。

训练模型遵循用户指令的副产品是,如果指示它们产生不安全的输出,它们可能更容易被滥用。解决这个问题就需要模型学会拒绝,视情况筛选指令;显然,帮助模型可靠的完成这一点,是 OpenAI 非常乐意解决的一个重要的开放研究问题。

此外,也有很多情况,可能并不希望与平均 labelers 偏好保持一致。例如,当生成不成比例地影响少数群体的文本时,该群体的偏好应该得到更大的权重。

现在,InstructGPT 接受的训练是遵循英文指令;因此,它偏向于以英语为母语的群体的文化价值观。

当然,OpenAI 正在进行研究,以了解 labelers 偏好之间的差异和分歧,以便于根据更具体的人群的价值观来具体设置模型。

总而言之,这是 OpenAI 首次将对齐研究应用到产品上。这些技术可以显著有效地改善通用 AI 系统与人类意图的一致性。这也只是一个开始,OpenAI 表示,将继续推动这些技术,以进一步改进当前和未来的模型,使之朝着对人类安全且有益的语言工具的方向发展。

c14f3942e631a673e00771a9bff8a440.gif

资讯

谷歌使出禁用2G大招

技术

干货满满的python实战项目!

技术

Python写了一个网页版的P图软件

技术

11款可替代top命令的工具!

3938847cc3e6c593935d1896531ad494.png

分享

fe100b8766088508ae02e0f884ab87d3.png

点收藏

374991c68ef4133c5fcc61f93d87ff85.png

点点赞

c3d86bd1a1a55b794efc267912c65faf.png

点在看

相关文章:

The C10K problem原文翻译

原文地址:http://www.cnblogs.com/fll/archive/2008/05/17/1201540.htmlThe C10K problem如今的web服务器需要同时处理一万个以上的客户端了,难道不是吗?毕竟如今的网络是个big place了。 现在的计算机也很强大了,你只需要花大概$…

mysql中模糊查询的四种用法介绍

下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。 比如 SELECT * FROM [user] WHERE u_name LIKE …

spring data jpa 详解

2019独角兽企业重金招聘Python工程师标准>>> 本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求。这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring整…

php使用curl可以get 模拟post

本机windows测试需要打开curl php.ini extensionphp_curl.dll重启apacheinclude (Curl.php);$cunew QP_Curl_Curl();$s$cu->get(http://www.baidu.com);echo $s;Curl.php可以使用http://www.myquickphp.com/的框架中的组件Curl.php/*** CURL 工具* * category QuickPHP(II…

为什么使用模块?

# -*- coding: utf-8 -*- #python 27 #xiaodeng #模块01#每个文件都是一个模块,并且模块导入之后就可以导入模块定义的变量名。#为什么使用模块? #命名空间提供了将部件组织为系统的简单的方法。 #在一个模块文件的顶层定义的所有变量名都成了被导入的模…

报告!插件×元宵来啦

欢欢喜喜 闹元宵迈过新年,开工大吉,元宵节的脚步悄悄靠近,在大家努力搬砖得同时,CSDN插件带着它的元宵活动走来啦~元宵喜乐汇虎年的第一个月圆之夜,除了吃汤圆还能干啥呢?当然是猜灯谜咯!CSDN插…

%f%g%e区别

%f 表示按浮点数的格式输出 %e 表示按指数形式的浮点数的格式输出 %g 表示自动选择合适的表示法输出,可以去小数末尾多余的0转载于:https://www.cnblogs.com/holyday/p/9111777.html

Cassandra安装测试

说明,本人成功安装过程记录 只要看解压目录的readme.txt即可,其他网上教程由于版本不对会执行报错,例如遇到编码问题 #wget http://www.apache.org/dyn/closer.cgi?path/cassandra/1.0.3/apache-cassandra-1.0.3-bin.tar.gz #tar -zxvf a…

如何使用 Python 隐藏图像中的数据

作者 | 小白来源 | 小白学视觉隐写术是在任何文件中隐藏秘密数据的艺术。秘密数据可以是任何格式的数据,如文本甚至文件。简而言之,隐写术的主要目的是隐藏任何文件(通常是图像、音频或视频)中的预期信息,而不实际改变…

php 的 危 险 参 数

hpinfo() 功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。 危险等级:中 passthru() 功能描述:允许执行一个外部程序并回显输出,类似于 exec()。 危险等级:高 exec() 功能描述:允许执行一个外部…

开源 | 蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系

小蚂蚁说: 数据、消息、微服务是蚂蚁金服自主研发的金融级分布式中间件 SOFA (Scalable Open Financial Architecture)的三大方向。 一个多月前,蚂蚁金服开源了 SOFABoot 和 SOFARPC 两个组件,受到了社区的热烈欢迎&am…

System.Web.Caching.Cache类 缓存 各种缓存依赖

原文:System.Web.Caching.Cache类 缓存 各种缓存依赖Cache类,是一个用于缓存常用信息的类。HttpRuntime.Cache以及HttpContext.Current.Cache都是该类的实例。 一、属性 属性说明Count获取存储在缓存中的项数。EffectivePercentagePhysicalMemoryLimit获取在 ASP.NE…

Python 可视化近 90 天的百度搜索指数 + 词云图

作者 | 叶庭云来源 | AI庭云君一、简介 在实际业务中我们可能会使用爬虫根据关键词获取百度搜索指数历史数据,然后进行对应的数据分析。百度指数,体验大数据之美。但要获取百度指数相关的数据,困难如下:不是静态网页,并…

php常用比较函数区别表

php常用比较函数区别表 表达式 empty() is_null() isset() if($x) $x "" TRUE FALSE TRUE FALSE $x null TRUE TRUE FALSE FALSE $x is undefined TRUE TRUE FALSE FALSE(报E_NOTICE错) $x array() TRUE FALSE TRUE FALSE $x false TRUE FALSE TRUE FALSE $x 0 …

实战分享:淘宝Web 3D应用与游戏开发

大家下午好!我们今天讲个比较有意思的话题,这个话题在业界被谈及得比较少。大家在座有做过移动端开发的同学吗?请举个手,人还挺多的。那做过3D应用的同学请举个手,有用过Threejs的请举个手,做过游戏的呢..人…

常见NoSQL系统使用场景分析

•Cassandra •特性:分布式与复制的权衡\根据列和键范围进行查询\BigTable类似的功能:列,列族\写比读快很多 •最佳适用:写操作较多,读比较少的时候。如果你的系统都是基于Java的时候。 •应用场景:银行&am…

再一次输给了AI,弯道急速超车、登上 Nature 封面

作者 | 学术头条来源 | 学术头条人工智能(AI)的很多潜在应用,涉及与人类交互时做出更优化的实时决策,而竞技或者博弈类游戏,便是最佳的展示舞台。近日,发表在《自然》杂志上的封面文章报告称,AI…

maven 多环境打包

2019独角兽企业重金招聘Python工程师标准>>> 1.在项目的pom中添加 <build><resources><!-- Resource Filter --><resource><directory>src/main/resources</directory><filtering>true</filtering></resource&g…

Sass函数:Sass Maps的函数-map-has-key($map,$key)

map-has-key($map,$key) 函数将返回一个布尔值。当 $map 中有这个 $key&#xff0c;则函数返回 true&#xff0c;否则返回 false。 前面的示例&#xff0c;当 $key 不在 $map 中时&#xff0c;使用 map-get($map,$key) 函数将返回一个 null 值。但对于开发人员&#xff0c;并看…

Memcache内存分配策略

转自&#xff1a;http://tank.blogs.tkiicpp.com/2010/12/14/memcache%e5%86%85%e5%ad%98%e5%88%86%e9%85%8d%e7%ad%96%e7%95%a5/ 一、Memcache内存分配机制关于这个机制网上有很多解释的&#xff0c;我个人的总结如下。 Page为内存分配的最小单位。 Memcached的内存分配以page…

论排列组合,持续更新

今天刚好碰到了一个排列组合问题&#xff0c;因为之前对这方面的学习比较少&#xff0c;所以用的非常蠢的方法做了四位数中取三位的排列&#xff0c;写的程序太有局限性&#xff0c;源码如下#define _CRT_SECURE_NO_WORNINGS 1#include<stdio.h>#include<stdlib.h>…

Python 中少为人知的 10 个安全陷阱

作者&#xff1a;Dennis Brinkrolf译者&#xff1a;豌豆花下猫Python猫原题&#xff1a;10 Unknown Security Pitfalls for Python英文&#xff1a;https://blog.sonarsource.com/10-unknown-security-pitfalls-for-pythonPython 开发者们在使用标准库和通用框架时&#xff0c;…

JS+CSS3 360度全景图插件 - Watch3D.js

日常闲扯 从上一篇文章到这篇中间快过了一年了&#xff0c;时间真滴过得快。不是在下中间没想过写新的文章&#xff0c;而是自己确实变懒了(体重1 1 1 1....) 。。OTL。。。不过到最后觉得还是需要写点东西&#xff0c;不然人就真废了&#xff0c;于是便有了这样一个插件&#…

CQRS学习——最小单元的Cqrs(CommandEvent)[其一]

【说明&#xff1a;博主采用边写边思考的方式完成这一系列的博客&#xff0c;所以代码以附件为准&#xff0c;文中代码仅为了说明。】 结构 在学习和实现CQRS的过程中&#xff0c;首要参考的项目是这个【http://www.cnblogs.com/yangecnu/p/Introduction-CQRS.html】。所以Dpfb…

PHP APC安装与使用

最简单的方法&#xff0c;找到php安装目录的pecl 自动安装&#xff1a; # /usr/local/php/bin/pecl install apc 下面按提示一步步完成即可 配置/etc/php.ini 末尾加入extensionapc.so 手动安装&#xff1a; 官网 http://cn2.php.net/manual/zh/book.apc.php 下载http://p…

AIphaCode 并不能取代程序员,而是开发者的工具

编译 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; DeepMind 是 AI 研究实验室&#xff0c;它引入了一种深度学习模型&#xff0c;可以生成具有显著效果的软件源代码。该模型名为 AIphaCode&#xff0c;是基于 Transformers&#xff0c;OpenAI 在其代码生…

源码阅读:SDWebImage(六)——SDWebImageCoderHelper

该文章阅读的SDWebImage的版本为4.3.3。 这个类提供了四个方法&#xff0c;这四个方法可分为两类&#xff0c;一类是动图处理&#xff0c;一类是图像方向处理。 1.私有函数 先来看一下这个类里的两个函数 /**这个函数是计算两个整数a和b的最大公约数*/ static NSUInteger gcd(N…

基于 OpenCV 的网络实时视频流传输

作者 | 努比来源 | 小白学视觉大多数人会选择使用IP摄像机&#xff08;Internet协议摄像机&#xff09;而不是CCTV&#xff08;闭路电视&#xff09;&#xff0c;因为它们具有更高的分辨率并降低了布线成本。在本文中&#xff0c;我们将重点介绍IP摄像机。IP摄像机是一种数字 摄…

【转】让Chrome化身成为摸鱼神器,利用Chorme运行布卡漫画以及其他安卓APK应用教程...

下周就是十一了&#xff0c;无论是学生党还是工作党&#xff0c;大家的大概都会有点心不在焉&#xff0c;为了让大家更好的心不在焉&#xff0c;更好的在十一前最后一周愉快的摸鱼&#xff0c;今天就写一个如何让Chrome&#xff08;google浏览器&#xff09;运行安卓APK应用的教…

PHP安装parsekit扩展查看opcode

也可以通过VLD查看&#xff0c;具体请看本人写的http://blog.csdn.net/21aspnet/article/details/7002644安装parsekit扩展 http://pecl.php.net/package/parsekit 下载最新的 #wget http://pecl.php.net/get/parsekit-1.3.0.tgz 安装过程省略 可以参考 本人写的http://blog.c…