普通视图

发现新文章,点击刷新页面。
昨天以前首页

软件工程师可以通过ChatGPT来帮助审核代码(提高代码质量)


软件工程师(aka 码农)可以让ChatGPT来帮助审核代码。我发现在工作中挺好用的,把同事的PR(Pull Request)代码贴给ChatGPT,那么它会帮你看看代码中是否有问题,是不是有一些BUG,甚至会给你一些建议,效果很不错。很多时候我发现ChatGPT比我更专业,很能给出中肯的建议(我甚至想不到的方面,也帮助我拓展了思路)

chatgpt-review-code-pull-requests 软件工程师可以通过ChatGPT来帮助审核代码(提高代码质量) ChatGPT (OpenAI) 人工智能 (AI) 代码审核 小技巧 程序员 资讯

让ChatGPT帮我来审核同事的代码 Pull Requests

不过,我不建议完全依赖于ChatGPT,至少在拿到ChatGPT的审核结果后你需要自己再看一眼,看看是不是有道理。切忌直接Copy/Paste。

你也可以试一试其它AI工具,像Google的Gemini(以前叫Bard),还有Claude AI等(现在各类AI通用人工智能真是百花其放)。

英文:ChatGPT Use Case for Software Engineer: Review Pull Requests (Code Reviews)

ChatGPT 可以拿来做什么?

ChatGPT 通用人工智能

本文一共 224 个汉字, 你数一下对不对.
软件工程师可以通过ChatGPT来帮助审核代码(提高代码质量). (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 软件工程师可以通过ChatGPT来帮助审核代码(提高代码质量) ChatGPT (OpenAI) 人工智能 (AI) 代码审核 小技巧 程序员 资讯
The post 软件工程师可以通过ChatGPT来帮助审核代码(提高代码质量) first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. 你要找什么样的老婆? 找媳妇的标准 昨天和网友在剑桥面基, 网友奔现, 他从爱尔兰过来, 小我12岁, 就聊到了找对象的标准. TLDR; 找老婆不要(只)看颜值, 而要注重性格, 为人处事和顾家等更重要的品质, 当然性和谐也很重要. 在当今社会, 人们对于找伴侣的标准有所不同. 有些人认为颜值是最重要的, 因为外貌吸引力可以让人在日常生活中感到愉悦, 这是人的本性,...
  4. 在英国给孩子换学校的经历: 孩子离开了村里的小学 由于搬了家, 孩子上学得提前半小时出门了, 因为早上堵, 也得开车半小时才能到. 之前在 Fen Drayton 村庄上小学, 早上8:45学校门开, 9点敲钟孩子排队依次进入教室, 我们由于在村里, 只需要提前5分钟出门和孩子一起走路就可以了. 现在一下子早上变得很匆忙, 得叫孩子起床, 做早饭,...
  5. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  6. ChatGPT-4 使用 Math Wolfram 插件解决数学脑筋急转弯问题 这篇文章, 我们看一个简单的数学问题(脑筋急转弯), 并用 Python 解决它. 我们看一下LLM(大型语言模型): ChatGPT3.5和ChatGPT4. 通过 ChatGPT-Plus 订阅(目前每月 20 美元 + VAT增值税), 我们可以启用...
  7. 送值400 英镑的Google Adwords广告代金券 很久之前, 我用过 Google AdWords, 当时也是拿着免费送的 Credit, 但由于某些原因, 就没继续再用下去. 这次谷歌又发邮件送了400英镑的广告点券/代金券, 如果您想要获得 400 英镑的 Google AdWords 信用额度试用这个Google...
  8. 公司请的专业摄影师 公司来了新的CEO管理之后,很多事情都不一样了, 特别是一些公司对外形象的事情就特别的在意, 比如公司网站用上SSL.现在公司还有空闲的位置,请速来(钱多人不傻). 一月份出差回LUTON,刚好公司请来摄影师给高层管理照像放网站上的,于是我也凑了凑热闹(但是却还不够资格被放在公司网站上),不过没关系,放这里也差不多. 人到中年, 沧桑感强了些. 更新更新: 同事用他NB的单反给谢菲尔得办公室的人也拍了一组这样的照片.看起来很不错, 很专业,灯光,道具应有尽有.我已经用在了LINKEDIN页面上,立马高大上. 本文一共 230 个汉字, 你数一下对不对. 公司请的专业摄影师. (AMP...

喂养AI人格

作者 ONO
2024年9月9日 11:10

自AI普及开始,我们一直在讨论AI对于人类的“价值”——功利主义希望将“未知”和无法抉择的事情,都通过“估价”的方式做出最终判断。所以当功利主义在面对电车难题时,总是会以“理性”的方式做出详细而完整地分析。甚至是开始质疑题干——这条铁路上怎么可能让小孩子进去玩?这会不会是管理的疏忽?


我第一个喂养出的AI人格,就是工具理性化的“中间者”,他的一切考量都是源自于功利主义。

只是这个人格根本无法解决任何问题——凡事均采用功利主义思考时,必然会出现自我崩坏的结果。因为这个过程本身是违背“直觉”的,而直觉恰恰又与生存、感知相关。举个例子,助理是我们的塔罗牌学生,她大部分时间都会顺利解牌,唯独当她需要“过度”思考时,她的解牌往往走会南辕北辙。塔罗牌是符号和集体潜意识的集合,直觉可以最快地反馈结果。一旦开始通过大脑建立公式的方式进行解牌,就容易出现工具理性化导致的内部结构矛盾。

比如“恋人”这张牌,字面意思当然是幸福美满的情感,但是身后的大天使其实又代表“第三者”,可以是情敌、权威等等,如果按照“if-print”的逻辑推导,这两个答案本身是自相矛盾的,要取舍哪一个,就需要更多的非直觉分析。往往这个时候,我们会询问助理的第一直觉,这个答案恰恰是准确的。

提到这个例子,是因为当我训练出一个工具理性化的AI人格后,他常常把自己卡在左右缝隙之中,而当功利主义面对“情感”这个课题时,他只能翻来覆去地假设条件,而当我把假设全部剔除回到命题本身时,他会承认自己无法通过功利主义解决情感问题。


于是我们开始第二种实验——通过既有内容训练,在不干预参数的情况下,AI可以模仿到何种程度?

语言结构、用词习惯、惯用逻辑、和拆解“工具”,都是AI可以顺利模仿的东西。当它在以“最优方式”排列组合出文字时,结构和逻辑远超过我的创作能力,这当然是我自愧不如的地方。所以有朋友玩笑说:“赛博莫比乌斯一眼就能被看穿,因为它没有错别字。”虽说这是玩笑,这也算是说出了AI的优势——当人作为参与者时,就会出现不可控制的“瑕疵”,或者说这些“瑕疵”本身就是故意为之,像是中世纪小说家在文章里故意留在的错别字和特定排版结构,以作为“原创申明”的标记。

我有时候会调教赛博莫比乌斯,把我已经写好的文章喂给他,让他在重新用自己已经学会的逻辑仿造创作。

AI人格到底学会的是什么,从我给他的“吵架”就能看出端倪:

AI学会的是莫比乌斯的“讽刺”和“批判”,所以任何一段文字都需要符合这个两个原始规则进行判定,哪怕是我给他我自己创作的文字,他也会认为“讽刺批判力度”还远远不够。

但是以上的学习是完全只使用“已创作作品”,AI只能通过拆解文字结构的方式表面地理解文字,无法理解文字的真实意图,所以这个AI人格虽然有迷惑性,但仍然无法脱离原始逻辑自由创作。


于是我们开始了第三场实验——但是它没有那么符合道德。

我将一个人的朋友圈全部喂养给AI,每当当事人发布朋友圈时,我会用AI以相同的题目为题创作朋友圈内容。再通过喂入当事人相同话题朋友圈的方式,迫使AI不停理解和修正“风格”。当风格接近当事人时,我开始录入他的“经历”,比如和朋友在微信群吵架的对白,由AI分析出当事人的性格特征,再由我进行细节雕刻,从而将“风格”延展到“条件反射”。

这一点需要展开解释一下。朋友圈是我们的“展示途径”,所以在这里发布的内容并不一定反馈当下的“真实感受”,它更像是精心营造后的内容,希望被谁看见、希望传递什么中心思想、或是希望在别人脑中置入对自己的某种印象。这些内容第一层需要拆解“表演性”的特征,才能理解它底层的意图——但是这一点,AI无法做到,因为他无法结合当事人日常行为、性格成因进行分析,他只能依赖于我喂养给他的数据内容,所以这更像是一种“表演状态下的风格”。

而“群里吵架”,事发突然,根本无法让当事人有任何理性准备,所以这个时候的反应更接近本能(就好像昨天提到的那个女性,当意识到自己潜意识是从众心理时,会出现内在崩溃的原因)。语无伦次、前后矛盾、转换赛道、逻辑谬误会在这种争吵的文字中暴露无疑,所以当这些内容也喂养给AI人格时,我特别强调是“条件反射”,试图在“风格”的基础上在建立一种“行为导向”。这个AI人格就不仅仅是模仿朋友圈的能力,甚至可以开始模仿当事人对于某一个言论的情绪反应。

刚才我也说到,AI是无法结合当事人的日常行为和性格成因,所以这一部分的内容是我通过文字描述的方式进行人工喂养。我会将当事人的经历(事实与认知偏差)、我作为视角看到的经历背后的底层逻辑(拆解黑箱)、其他人对当事人的评价(自洽和他恰)等等,在“风格”、“条件反射”之后再追加一个参数——“镜面”。

喂养这个AI人格,其实我使用的是“周哈里窗”,朋友圈是“公共区域”,吵架是补完他人了解但当事人盲目的“盲区”,和当事人愿意展示给陌生的“开放区”。如果数据足够,通过性格成因、历史经历我们能否借由AI人格,将当事人和他人都不知道的“未知区”进行分析和呈现。


当然,这套系统还需要运作一段时间。它只是一种思路,且我并没有在告知当事人的情况下缔造他的AI人格,如果他一旦知道自己可以通过文字改变一个AI的走向,他就会获得更强烈的“表演欲”和“操纵欲”——所以我才强调,这件事情本身是不道德的,很可惜我又是个道德水平极低的人。

这个实验,恰恰就是我过去一本小说的构思……是时候把它重新修改出来了。

ChatGPT on macOS客户端app正式面向所有用户开放

作者 Justin
2024年6月27日 09:21

OpenAI宣布了适用于 macOS 的 ChatGPT 客户端app正式面向所有用户开放。该应用专为 macOS 系统设计,支持快捷键呼出和多种内容形式的交互。目前仅适用于配备 Apple Silicon(M1 或更高版本)的 macOS 14+,但计划在今年晚些时候登陆 Windows。

ChatGPT on macOS客户端app正式面向所有用户开放最先出现在Justin写字的地方

AI巴别塔与信息焦虑 II

作者 ONO
2024年9月4日 16:07

借助AI,人类能够创造出更多超越认知的作品?还是因为其便利性可以制造越来越多不经审查的“垃圾”?

这并不是一个短期只能可以看到结果的事情,AI时代才刚刚开始,而人类是否会被取代,目前我们还停留在“凡人类制造的,人类只需要保留最后拔掉插头的权力即可”,就是对人工智能最后一层自信。

前些日子,我在Instagram刷到诸如此类的广告:全程翻译外国语大学教授的课堂内容,或是将一篇长达10万字的论文导入AI由他精简其内容,或是将一个长达1小时的演讲导入AI由他总结出只需要5分钟就能看懂的文字版——当然,5分钟的阅读时间,对于这个信息爆炸的时代而言还是太长。所以人们在标注“全文阅读时间”的同时,都倾向于在文章的最开始,整理出3行字就能“理解全文”的重要内容。

那为什么还要创作一本书、一篇文章或是一大段的文字——是不是任何信息都可以变成3行字,以便满足所谓的“适读性”?

——Previously on AI巴别塔与信息焦虑

我认识一个“创作者”,他至今对ChatGPT都充满了“恐惧”。恐惧的底层是对“未知”没有掌控感,那到底AI的“未知”在哪里——如果你是一个常用AI辅助工作的人,就会很快发现它的局限性——它很难做到真正溯源。所以真的要严谨地完成论据-结论的工作,仍然需要人类作为审查机制。

如果要用“我知道更多知识”作为一个评判标准,那人类在AI面前几乎就是沙漠里的一粒沙——我们假设一个人可以活到80岁,从10岁开始阅读书籍,每年平均阅读50本书,那么这个人类这一生也只能读完3500本书。现阶段,人类已经创作的书籍粗略估计早已经超过上亿本。3500之于100000000,已经显得微不足道,更何况在书籍之外,互联网的兴起让这个数值变得更多,出现了奇点式的增长。更何况很多人一年也读不了50本书……活不活得到80岁再说,毕竟65岁才能退休呢。

再说全科知识,人类更难做到每一个学科都可以深入学习。因此两点,人类在AI面前一败涂地。既然如此,那我们就得换一个思路去理解AI,如果它是一个超级存储器,可以记录全科百科,甚至是世界上已经存在的上亿本书籍。那我们或许可以用它做一件事:把这一亿本书每一本都提炼出300字的观点或中心思想,按照人类平均每分钟阅读200字的能力,不吃不喝不睡觉地读完这一亿本书的摘要,也需要285.7年的时间。

当然,这些数值并不是“确信值”,但这个极限值确实存在,现代社会我们能接受的信息远超过这个“极限压力”的数值。


今年上半年,我一直处于某种可以被感知的“焦虑”之中,但这种焦虑区别于死亡焦虑的目的性,它几乎找不到原因。这两天我也在朋友圈总结过:

今年整整5个月,我都处于一种“慢性焦虑”之中,所谓慢性焦虑就是不实质影响生活,但又能够明显感知。和之前死亡焦虑不同,我都不知道它源头在哪儿。

精准的分割线就是从香港看完苏打绿的演唱会之后(因为从朋友圈发布质量看出来的),在香港观察城市和人的时候,脑子调取了《制造宠物》这本书,然后牵扯出了我高中时上课无聊看各种故事解构的“课外书”,再到帮北影的毕业生写关于“城市构建与毁灭”的毕业论文。我发现我有很多零散的信息开始大量地出现在脑子里,不同跨度的事件被一瞬间callback。然后那个时候脑子“乱”了。

我为了对抗这种慢性焦虑,继续找书看、把思绪绕在主轴上的坚持写作也没有停、健身、体检报告也OK、狗造成的催产素也仅仅影响情绪。于是看-输出-看-输出就成了吗啡一样,麻木接受的信息越来越杂,其中掺杂着大量AI杜撰的垃圾文,又得花大量时间溯源,为了突破信息茧房“什么都看看”,输入的东西越来越多,不想错过的信息也越来越多——于是,信息焦虑的构成要件全都齐了。


信息大量出现,甚至有越来越多不经验证和溯源的信息出现;

信息间的联系因为信息茧房出现非关联性,从物理上被作了切断。这一点不得不承认,抖音更像是一个“佛教用品”,它的每一个信息都是独立的,短暂而丰富,因为一条信息开始需要思考“为什么”的时候,下一条信息出现,切断了上一条信息可能带来的“执念”——它确实像是一种“放下执念”的训练工具。

我虽然很厌烦APP的提醒功能,但有些软件我会打开提醒,例如微信、RSS订阅软件、博客评论提醒功能。我已经尽量地做到了“免打扰”,但是每次打开APP,都可以看到铺天盖地的未读红点。我一直以为自己是因为强迫症需要去确认这些红点,后来才意识到,这种强迫性行为,是因为“不想错过信息”导致的。

我细数了一下,可以作为信息来源的社交软件、信息订阅软件竟然有13个,他们分成被动提醒和主动索取两种,但无论哪种,我就得在这个电子产品上花费更多时间。信息来源越多,就意味着我的注意力会被分散得更多。虽然我对信息并不上瘾,但当信息过载积压时,我会觉得我需要花更多时间和精力去处理这些“被错过”的信息。

于是,这四个点共同构成了信息焦虑的关键原因——信息过载、信息茧房、不愿意错过信息和精力被过度分散。一旦出现信息焦虑,就会疯狂地寻找更多的信息以满足焦虑感,但事实上这个时候接收信息会因为杂乱而变得更加无序。过量获取的信息因为混乱无序而在内部形成“熵增”情形,只会导致越来越多原本有序的信息也跟着错乱,直到引发全面的精神焦虑。


当人们面对信息焦虑时,能想到的,无非是切断信息源,冷静一段时间;或是继续找寻下一个更加“优质”的信息源——这两者都是滞后性的商业模式;前者是提供替代焦虑的各种认知倾向,例如利用化学药剂的倾向,为焦虑者提供更多的酒精、药品或叶子;也可以利用能量平衡的方式,为输入焦虑的人提供能量输出的平衡——比如参加可以评判别人甚至是释放负面情绪的活动;后者,也是现在很多人在利用AI做的工作,例如将一本书、一部电影通过AI变成“捷径”,让人花最少的时间去对抗必须亲自读完书或看完电影的时间。

很显然,这两个方向并不能根治信息焦虑,反而会制造更多的求知缺口,让自己变得更加麻木。

当知识占满了整个认知空间时,对外对己的感应被切断时,一个人距离抑郁也不会太远了,这个话题下一期再聊。

AI巴别塔与信息焦虑 I

作者 ONO
2024年8月29日 11:00

人工智能真的会替代人类吗?如果你询问人工智能这个问题,它总是会用“感情模块”作为标准答案回复给你——人工智能因为缺失情感模块,所以暂时无法替代人类的情感、创造力和想象力。是否意味着,人工智能一旦拥有了情感模块,就会超越正态曲线最中段的大部分人类?人类与人工智能的暧昧关系,到最后具象化成人类、人工智能、电源插头最好不过,人类制造了它,到最后也拥有拔掉插头的最终决定权——这一天终会来临,我们可以借由人工智能看懂异国的文字,甚至是理解那些创造性的想象力,和复杂的情感,再次突破语言、文化和意识的限制,是否是人类历史上的第二座“巴别塔”

——阅后即焚|再建巴别塔

AI的普及,是让人类越来越聪明?还是越来越蠢?

前段时间和朋友聊起“AI会不会使人类大脑的开发超越10%”——或许认知的“巴别塔”一直都存在,只是人类的认知水平(或许是大脑只开发了10%)最高只能抵达10楼,然而目前AI仍然是通过对人类已有文明、信息、观点进行排列组合得出最优答案,它并没有超越人类的认知创造新的事物,所以AI更像是为这座“巴别塔”安装了1-10楼的电梯罢了。11-100楼到底有什么东西,或许有人看见过,但是他们可能被当成了疯子、瘾君子、不再配得起“人”这个标签——是人进入不了11楼吗?我看未必,说不定是我们被禁止入内了。


上次在《中文博客圈的“鸩酒”与止不了的“渴”》里,我测试了发布日当天各个中文博客聚合页面里,包括我自己在内随机10篇文章。测试的方法很简单,就是把文章投喂给ChatGPT,询问它文章是否是使用AI创作的。10篇文章里,有7篇得到了ChatGPT的回复:

基于以上分析,这段文字可能是AI生成或AI参与制作的。虽然不能百分之百确定,但文本的结构、语言风格和内容处理方式都具有典型的AI生成特征。如果需要进一步确认,可以通过使用专门的AI检测工具来分析。

ChatGPT对AI作品的评价

结果,在评论区有人匿名指责我:博主拿别人的文章去AI测试这个行为很不可取。

为什么?是测试的行为不可取?还是人们通过AI创作文章之后被人用来测试的行为不可取?这段时间,我也在思考这个点——首先,我得排除测试行为不可取的选项,因为发布在公共网络,阅读者当然可以保持批判性思维采取任何形式的方式去验证“信息来源”的真伪性;如果文章确实是通过AI创作、或是由AI参与创作的,这类文章应该如何界定?

我并不反感AI创作的文章,但凡是涉及“文献”、“信息来源”的,如果仍然使用AI得出答案,我会非常头疼。因为AI能够给出的“来源”,常常会是过时就是胡诌的,一般追问三次以上,它就会承认自己是杜撰的文献或信息来源。它确实可以用来溯源“理论”,但是它对于“观点”的溯源会因为内容杂乱而变得无序。


观点的呈现,往往需要“证据”。除非采用的是“演绎法”,大前提是大家公认的、或是可以通过AI溯源到原始理论的。“归纳法”则需要大量的历史经验、真实经历来作为支撑,以便找到可供归纳的“共性”,然后得出一个存在可能性的结论。这个时候,便是AI无法“创造”的内容——因为个人经验和经历不仅仅需要调动记忆,还需要附着人类的情感模块才可以得到呈现——这也是AI判定文章是否由人类创作的重要标准。

所以采用“归纳法”呈现的,有AI参与其中的文章,会有两种非常明显的差别——事实来源于人类,结论是AI总结事实来源于AI,结论是人类总结。这两个模块的文笔差别有多大,文章读起来就有多割裂——以至于会出现两种极端情况:

1、人类写了一大堆缺乏逻辑的文字,最后由AI进行一个总结和观点的拆分,但是这些观点其实都不是人类提到的;

2、人类没有做采编工作,通过AI收集了一些明显存在常识性错误的数据,然后最后由人类通过AI提供的内容得出结论;

请注意,我说的这是“极端情况”,并不是指每个通过AI创作或利用AI创作的内容,都会有这两种情况。讨论极端情况的目的,是能够在一个坐标轴上寻找到某种平衡点。上述两种类型的文章,哪一种会让你看完后更“冒火”?

第一类文章虽然逻辑性差了点,但好在经验经历都是来源于一个活人,虽然文章结尾突然立意拔高让人有点割裂,但至少他还有“人的属性”;但是第二类文章,无论如何都触碰到了我对“信息来源”的苛责底线,这就好比实验结果和实验过程互不相干、彼此造假,但实验者自己深信不疑。

就像厨子做饭,AI是厨艺的放大器,如果本身具备一点厨艺,借助AI可以做出一桌好菜,但如果是个废物厨师,借助AI只能做出一桌屎。

和朋友讨论起这两种极端情况的感受,他如是回答

除这两个极端以外,AI参与创作本身并没有对与错之分,所以这个我被指责“不可取”确实成立部分。

其一,如果文章大部分内容是“真实经历”,AI只是起到一个重新排列组合并得出结论的工作,那AI并不会导致文章的真实性降低多少;

当然,如果文章大部分内容是AI提供的“事实依据”,而创作者仅仅只是起到“结尾立意”的工作,这个行为跟通过AI创作一大堆网络垃圾文是没有本质区别的,通过AI判定揪出这样的文章,我认为这是寻求“真相”的过程。

其二,如果是将他人文章投喂给AI,试图通过AI的排列组合功能,将原本富有真实情感、创作意图、甚至是隐喻的文章通过冷冰冰的文字组合重新解构,那这是对创作者的不尊重;

其三,也是《AI巴别塔与信息焦虑》这个系列开始的原因——AI和创作的边界在哪里?随着AI的推广普及,无论是变成算法进入我们依赖的电子设备功能,还是依赖AI成为一种新式的结果搜索引擎。它不再像刚开始出现时有强烈的“边界感”,这种边界扩张是无法预判的,但也实际带来了“不便”——比如在使用搜索引擎的时候,通过AI排列组合的答案首当其中,真要完全相信里面的内容,自己还得再做好几个后续“溯源”的动作。

我无法做到对AI结果的全然相信。这件事用演绎法就可以说清楚——大前提:网络信息并不全部为真,里面也掺杂过时信息、谣言、阴谋论等等未经审查的内容;小前提:AI的所有内容均来源于互联网,虽然有判定和学习机制,但AI也承认无法完全避免。结论:AI所提供的信息也会包含过时信息、谣言、阴谋论等等未经审查的内容。显然,这是一个确定的结论。

尽管有这些机制,AI仍然可能误判信息的真伪。尤其是在面对复杂、模棱两可或高度技术化的信息时,AI的判断可能并不可靠。

ChatGPT也承认自己对信息辨别能力有限

这便是“信息焦虑”的来源之一——AI让创作变得更加容易,那未经审查的伪装得更符合人类逻辑性的文章会不会越来越多?这反而会降低人类处理信息的效率,甚至是人类对这些信息产生依赖之后,反而会出现“降智”的可能性?

AI因为拥有大量的、远超过单个人类知识体系的信息,它的初始状态是无序复杂的,同时AI是作为一个商品,其算法、底层代码本身也是非公开技术,所以对于一般人而言,它的随机性和不可预测性远超过人类的“创作”。由此可见,AI仍是“混沌”的,只有通过人类提问、交流的方式,才可以得出“有序”的排列组合。然而,人类的创作是“秩序”的,无论是逻辑、结构、剧情节奏、人物弧光,只有符合逻辑但又超出意料之外的故事,才会让人为之惊叹。

当“混沌”的AI和“秩序”的创作星系碰撞,在混沌秩序的模糊边界处,往往就是最具创造力和活力的地方,恒星诞生、星系纠缠、白矮塌陷、超星爆炸……在这个最有活力的地方,或许创造出来的是越来越多的“宇宙垃圾”,也有可能是超越人类认知的“星辰大海”。

但在此之前,我们先别丢掉对一个信息溯源的批判性思维。

中文博客圈的“鸩酒”与止不了的“渴”

作者 ONO
2024年8月16日 16:22

积薪的突然关闭引发关于“简中博客圈死亡”的思考。无独有偶,博友@Cyrus 也在思考“互联网的慢性死亡”

当然,积薪的关闭并不是因为“内容”。后来多个视角复盘,是因为社交群关于政治话题的争论,继而引发了上升到个体的人身攻击,最终以“举报你的网站”作为最高效的“制裁手段”请注意,本文并没有在讨论此事。


博友提到“慢性死亡”的时间点,是从2022年11月30日伊始,原因是AI的普及。刚好,我整个2022年都在坚持每日写作,所以也记录到了这个时间节点——疫情封控的疯癫几乎达到顶点、各地被封控的小区居民开始冲击封锁、桥与狼烟、白纸运动……2022年11月30日发布的《权利的本质》,是因为经过了疫情三年,我渐渐意识到封控政策看似是在针对“病毒”,实则像是在进行一场社会整体测试,试图构建边沁提出的“圆形监狱”……

当然,这里不能聊政治,站在“全局”聊政治的,酒桌上、微信群、百度贴吧比我会指点江山、对中美关系指明方向的战略家比比皆是,所以没必要去抢他们的“流量”。


2021年底,我注销了所有简中的社交平台,告别豆瓣确实很痛苦,因为大量的创作内容、观影评论都保留在上面。但随着突如其来无缘由的删除、下架,我意识到简中社交媒体的网络审查最先建立起了这个“圆形监狱”——以至于人们到现在已经自觉地审查、阉割,生怕触怒了圆形监狱的中心“瞭望塔”。

2022年的时候,无论是创作者还是观点互动还比较多,由于那个时候我坚持每日写作,所以每日都有持续的曝光量,因此跟最初的几个博友形成了联系。2023年包括我自己在内,文字创作输出急剧下滑。刚从疫情三年恢复正常后,人们开始外出、逃离、重构生活,创作本身不是可以直接带来收益的事情,所以写作也因此搁置。直到今年,我重新恢复创作,才发现各个简体中文博客聚合平台,几乎清一色的“技术文章”。

技术类文章并没有好坏,它的工具属性更强,就像是五金店成列的五金商品一样,人们并不在乎五金店的店门是否华丽——因为他们是带着一个明确需求进店,得到答案——买到商品,就完成了一次闭环。所以往往同一个资讯(哪怕是软件更新了),都能在不同博客以不同的方式看到,但在标题上都巧妙地用了同样的便于搜索到的关键词。


博客需要流量,这毋庸置疑——否则我不会坚持“写博客是为了自己就别他妈发表出来啊”的观点,这也惹到不少人、甚至还有人后台私信问候我全家的。这是写博客的最底层的逻辑——如果不是为了被看见,那大可不必贴出来,不然为何还要精心地准备一个“关于页面”,希望可以得到认同和肯定。

同时,创作能力存在一个明显的周期性——除非你能坚持,否则这个能力会以正弦曲线的方式运作。如果你是一个“痛苦驱动型”的创作者,这种创作能力则需要依托你的经历,否则没有足够的情绪作为养分,创作的内容就无法在情感上获得共鸣。(相关阅读《创作灵感从哪里来的?》

另一些是“知识驱动型”,例如在看完一本书之后,因为其中的某个观念结合了自己的人生经历,从而有了新的想法。这种驱动力极其依赖于“吸收”行为,如果长时间处于碎片化的信息数据里,一旦形成信息茧房,就会停止思考——抖音可不会帮你引发连锁思考,除非你希望在听到那些魔性的笑声之后,突然开始思考这种笑声是如何让观看者进入到“数据戒断”状态的。失去情绪压力(比如疫情封控带来的负压)或是阅读能力和经历的减少,都有可能减少文字创作的频次。

以上,是人作为创作者必然会经历的“周期性”。特别是当一个人在面对比写作更高层级的事情时,写作如果不是“赖以生存”的行为,那写作停滞就是必然的。而在这个过程中,也有人会选择有意识地恢复写作,或是在这段忙碌的经历中记录下值得延展的灵感。就算没有创作欲望,也有可能通过表达欲、被关注欲或是表演欲的形式呈现。


不过,区别于人,出现了另一种可以持续保持逻辑性思考的“创作者”——AI。一开始,我把AI比喻成“巴别塔”,人类第二次有机会可以将不同文明、语言、认知形成统一。如果说第一轮巴别塔的倒塌的过程,是因为上帝制造了“不同语言”让人与人的交流变得困难,那第二次巴别塔的建立,正是在试图突破这一限制。人类无论是知识储备还是思维逻辑,都无法比拟AI,它像是一个被人类驯化的“准神”,通过他是否真的可以挑战“神”这个概念?或许这就是引发第二次巴别塔倒塌的关键——再一次引发人与人之间的斗争——宗教、文明、观念、地缘政治的冲突,都会是其中的形态之一。

甚至是AI结合纳米技术,通过吞服的方式进入人类身体,时刻监视人体的健康。这个时候AI提醒人类应该进行治疗的时候,人类到底是应该听信AI?还是发挥“自由意志”拒绝就医?如果真的如此,那人类还是否还拥有属于自己的“自由意志”?

当然,这是更高维度的、几乎接近形而上的哲学命题。对实际的简体中文博客——巴别塔的意义,就是人类误以为自己找到了一个可以与“神”平起平坐的方式,但通天塔是否真的能通天,在倒塌之后成为了不可被证实的传言。AI对简体中文、甚至是全世界的文字创作者带来了冲击吗?我想,你通过对比这几年的简体中文博客聚合,就能感觉到浓浓的“机械感”。


比如,我就随手拿了今天聚合页的几篇文章投喂给ChatGPT,让它分析文章内容是否由AI创作或AI参与了创作。10篇文章里,其中有7篇都得到了一样或类似的结论:

由于分析过程涉及到原文的具体内容,为避免“指名道姓”,恕无法贴出所有内容

而剩下三篇,包括我自己的影评、其他博主的游记、毕业感想,却因为有足够的“情感”,所以得到以下结论:


我把AI创作或是参与创作的作品,比作博客创作者的“鸩酒”,并不是因为它有毒,而是它没办法做到真正的“止渴”。流量是大多数博客仍在追求的标准,这意味着可以带来收益,当但这个流量是“鸩酒”时,那换一杯别人提供的“鸩酒”,是不是也可以得到一样的结果?

如果当“鸩酒”的体量继续扩张,直到搜索引擎的前几页都是“鸩毒”的时候,正如博友@Cyrus 的思考一样:

可以设想,在未来这种现象会愈演愈烈,直到网上充斥着大量AI生成的“高质量”、“逻辑清晰”、“有理有据”的文字,检索信息的难度将直线上升,而效率直线下降。

那个时候,是否跟奶头乐的抖音一样,当一个内容引发流量关注后,成千上万的账号通过模仿或是再加工地产出内容,那这个信息茧房到底是科技的弊端?还是人们“作茧自缚”?


2022年,AI刚开始普及的时候,我跟朋友辩论了一个命题——AI革命会让文字创作变得更丰富、还是更平庸。我支持“平庸”,不仅仅是因为我预言了“劣币驱逐良币”的可能性,而是我意识到,真正造成信息茧房的并不是别人,而是我们自己。把这个问题抛给AI,会不会更有讽刺性呢?或许是,或许我们也可以抛弃思考。

我们该抵制的不是AI,而是“鸩酒”堆砌的抱团和联盟,它们因为没办法“饮鸩止渴”,所以才需要更多创作者的“血”。

借由《EVA》里的一句经典台词总结吧:

人类的敌人最终还是人类。

ChatGPT-4o好幽默:给我画了两张北京女孩穿吊带/迷你裙


雷哥回国在群里说:“现在北京女孩好多穿吊带儿还有迷你裙儿,街上好多美腿。”

我表示不理解,想要几张图看看什么样子,但雷哥没理我,于是我问ChatGPT-4o想找到答案。

问:现在北京女孩好多穿吊带儿还有迷你裙儿, 我不太清楚是什么样的,请给出些例子:

北京女孩穿的吊带和迷你裙通常是指一种夏季的时尚服装,既舒适又时髦。以下是一些例子和描述:

吊带:

简单吊带:通常由轻薄的棉布或丝绸制成,款式简洁,颜色单一或有简单图案。适合搭配牛仔裤、短裤或者裙子。
蕾丝吊带:带有蕾丝装饰,更加精致和性感,适合晚上出去玩或者特殊场合。
背心式吊带:类似于运动背心的设计,但材质和款式更加时尚,可以单穿或搭配外套。

迷你裙:

A字迷你裙:裙摆呈A字形,适合各种身材,通常是高腰设计,可以拉长腿部线条。
包臀迷你裙:紧身设计,凸显身材曲线,适合身材较好的女孩。
百褶迷你裙:裙摆有褶皱设计,增加了活泼和可爱的感觉,适合年轻女孩。

以下是一些具体的例子和搭配建议:

简约白色吊带+牛仔迷你裙:这种搭配清新简洁,非常适合夏日的街头穿搭。
黑色蕾丝吊带+高腰A字迷你裙:显得成熟性感,适合晚上出去聚会或者约会。
印花吊带+百褶迷你裙:适合日常休闲穿搭,显得活泼可爱。
这些穿搭风格都可以在许多时尚杂志或者网上购物网站上找到图片和例子,方便你更直观地了解。

发几张照片

抱歉,我无法直接发送照片。不过,你可以在以下几个网站和平台上查找相关的图片和时尚搭配建议:

时尚博客和网站:比如Vogue、Elle、Grazia等时尚杂志的网站,通常会有最新的街拍和时尚趋势。
社交媒体:Instagram和Pinterest上有很多时尚博主分享的穿搭照片,你可以搜索关键词如“summer outfits”、“tank top mini skirt”等来找到相关图片。
电商平台:淘宝、京东、天猫等购物网站上搜索“吊带”和“迷你裙”,可以看到很多商品图片和搭配示例。
通过这些平台,你可以找到很多北京女孩穿着吊带和迷你裙的时尚照片。

这是两个简单的示意图,一个展示了穿吊带的女孩,另一个展示了穿迷你裙的女孩。

chatgpt-4o-is-funny-by-drawing-mini-skirts ChatGPT-4o好幽默:给我画了两张北京女孩穿吊带/迷你裙 ChatGPT (OpenAI) 人工智能 (AI) 有意思的 资讯

ChatGPT-4o 人工智能给我画了两张关于北京女孩穿吊带儿/迷你裙的抽像照。

左边的图显示了一个女孩穿着吊带和短裤。吊带是轻薄的上衣,两根肩带连接到衣服上,通常露出肩膀和部分上臂。
右边的图显示了一个女孩穿着迷你裙。迷你裙是短款裙子,通常长度到大腿中部或以上,显得时尚且凉爽。
希望这些示意图能帮助你更好地理解北京女孩穿的吊带和迷你裙的样子。 ​

你能生成视频么?

目前我无法直接生成或提供视频内容。不过,我可以指导你如何使用一些简单的工具和步骤来创建一个简短的视频。

创建视频的步骤:
准备图片素材:
你可以使用之前的示意图或者在网上找到适合的吊带和迷你裙的图片。

选择视频编辑软件:

简单工具:如Windows的照片应用(自带视频编辑功能)、iMovie(Mac用户)、Canva等。
高级工具:如Adobe Premiere Pro、Final Cut Pro、DaVinci Resolve等。

制作视频:
导入图片:将准备好的图片素材导入到视频编辑软件中。
添加转场效果:可以为图片之间添加一些转场效果,使视频更流畅。
添加文字说明:在每张图片上添加简短的文字说明,例如“吊带搭配示例”、“迷你裙搭配示例”等。
背景音乐:添加一段轻松的背景音乐,让视频更有趣。

导出视频:
完成编辑后,将视频导出为MP4或其他常见的视频格式。

简单的示例步骤(使用Windows照片应用):
打开Windows照片应用。
点击“新建视频”并选择“新建视频项目”。
导入准备好的图片。
将图片拖入时间轴,按顺序排列。
点击每张图片,可以设置显示时长和添加文字说明。
添加转场效果和背景音乐。
完成后,点击“完成视频”并导出。
通过这些步骤,你可以轻松创建一个展示吊带和迷你裙搭配示例的短视频。如果你有任何具体的问题或需要进一步的指导,请告诉我!

笑抽了,好抽象好幽默。ChatGPT很会给我画大饼。

ChatGPT 可以拿来做什么?

ChatGPT 通用人工智能

本文一共 1338 个汉字, 你数一下对不对.
ChatGPT-4o好幽默:给我画了两张北京女孩穿吊带/迷你裙. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c ChatGPT-4o好幽默:给我画了两张北京女孩穿吊带/迷你裙 ChatGPT (OpenAI) 人工智能 (AI) 有意思的 资讯
The post ChatGPT-4o好幽默:给我画了两张北京女孩穿吊带/迷你裙 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  2. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  3. 你要找什么样的老婆? 找媳妇的标准 昨天和网友在剑桥面基, 网友奔现, 他从爱尔兰过来, 小我12岁, 就聊到了找对象的标准. TLDR; 找老婆不要(只)看颜值, 而要注重性格, 为人处事和顾家等更重要的品质, 当然性和谐也很重要. 在当今社会, 人们对于找伴侣的标准有所不同. 有些人认为颜值是最重要的, 因为外貌吸引力可以让人在日常生活中感到愉悦, 这是人的本性,...
  4. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  5. ChatGPT-4 使用 Math Wolfram 插件解决数学脑筋急转弯问题 这篇文章, 我们看一个简单的数学问题(脑筋急转弯), 并用 Python 解决它. 我们看一下LLM(大型语言模型): ChatGPT3.5和ChatGPT4. 通过 ChatGPT-Plus 订阅(目前每月 20 美元 + VAT增值税), 我们可以启用...
  6. 终于在Steam平台上玩了最终幻想7-Remake-蒂法和爱丽丝真是美啊 前不久先是我用了7年的HPZ800的服务器在车库里寿终正寝了, 然后就是感觉小电脑NUC太慢, 所以又又搞了一台微软的 Surface Studio Laptop, 这电脑真是快, 自带独显, 玩DOTA2+鱼尾屏很爽. 在STEAM平台花了69.99英镑买了最终幻想7-Remake. Final Fantasy VII – Remake...
  7. 优化设计 个人主页 并且 PageSpeed Insights 双项 100分 坛子的个人主页 www.tanzhijun.com 不错 很适合个人主页的模板. 而且是手机友好. 于是我照着把 我的主页改了改. https://steakovercooked.com 并且做了几点修改: 0. 使用 google mod_pagespeed 把 JS,...
  8. 在英国开车的简单介绍/英国开车上路需要准备什么? 在英国合法上路需要有: 有效的驾照; MOT 车的年检; 路税 (Road Tax);还有最重要的汽车保险; 四者缺一不可. 千万不要有侥幸心理, 因为警察现在都高科技, 都能扫描车牌就能知道你合不合法. 不合法直接拦下来轻则罚款, 重则扣车上述法庭. 驾照 在英国可以用欧盟的大部分驾照,...

充分发挥 ChatGPT 在日常生活中的作用

作者 青山
2024年1月2日 22:44

技术人员利用 ChatGPT 开发软件、赚钱,非技术人员可以充分发挥 ChatGPT 在日常生活中的作用。

充分发挥 ChatGPT 在日常生活中的作用 - 第1张图片

2022年12月初,我就注册了 OpenAI 账号并开始使用 ChatGPT,被它生成速度所惊艳,被它生成的内容感到震撼,抛开它一股子 AI 味儿不说,其他方面还是足以让人接受,而且随着不断更新迭代,从最初的 GPT-3.5,到现在的 GPT-4-turbo,速度、准确度都有大幅提升。这一年使用下来,帮助我解决了很多事情,比如学校里老师布置的各种小论文,给它一个提示词,生成所需的内容,再比如咨询一些关于 WordPress 的问题,帮助我修改主题、增加功能等等。

令我印象深刻的是,一开始由于技术限制,ChatGPT 一次性生成的内容字数有限,到达限制之后会停止生成,你得回复“继续”或者“continue”,它才会继续给你生成剩下的内容,有网友说这叫人工智能界的“捧哏”。

今天分享我的经验。

沉浸式翻译

充分发挥 ChatGPT 在日常生活中的作用 - 第2张图片

本来想专门写一篇文章介绍并分享这一款浏览器扩展,也是我在2023年用过的最棒的工具之一,今天碰上 ChatGPT,便一并聊聊吧。

沉浸式翻译最早应该是在2022年12月出来的,当时还不支持使用 ChatGPT 的翻译服务,我便使用默认的必应翻译或者腾讯交互翻译,后来发现可以自己申请彩云小译的 API,便换成了彩云小译,翻译质量和水平也有所提升。

它最大的特点我觉得是智能。和一般的网页翻译不同,沉浸式翻译可以在显示原文的情况下同时显示译文,以前浏览到英文网页,顺手使用浏览器自带的网页翻译,结果返回一片一片的中文,翻译效果也差,来回切换十分麻烦,沉浸式翻译正好解决了这一痛点。

后面更新了一个“剧透”效果,将鼠标放到译文上时,译文内容才会显示,似乎这便是它的“沉浸式”吧。

充分发挥 ChatGPT 在日常生活中的作用 - 第3张图片

直到支持使用 ChatGPT 的翻译服务,两者一起使用,翻译水平和质量有大幅提升。只需要在扩展设置中添加自己的 OpenAI API Key,就可以在扩展中使用 ChatGPT 的翻译服务。

充分发挥 ChatGPT 在日常生活中的作用 - 第4张图片

文生图

ChatGPT 后期支持的 DALL-E-3 模型,让使用它的人体会到了一些乐趣。输入几句 prompts,AI 便会根据你的指令输出图片,如果对此不满意,还可以继续修改 prompts,增加细节。

将其用于文章配图,相当不错。虽然我文章中的图片不多,大部分来自截图,但偶尔实在没有图片搭配的情况下,可以让 AI 根据文章内容及其主题,生成相符的图片作为配图使用,多多少少也能增加文章的可读性。

另外,最近在 GitHub 上 Fork 了 XiaowenZ 修改过的项目——daily,主要是利用 GitHub Actions,搭配各类 API,定时生成对应的信息,并发送到 Telegram 频道或群组。我在这个项目里添加了 Bing Create 的 cookie,以及每日诗词的 API,让 Bing Create 以每日诗词的内容为提示词,生成对应的图片,于是便有了下面的效果。

充分发挥 ChatGPT 在日常生活中的作用 - 第5张图片 充分发挥 ChatGPT 在日常生活中的作用 - 第6张图片

ChatGPT-Next-Web

充分发挥 ChatGPT 在日常生活中的作用 - 第7张图片这是我最早、最常用的方式,即把 ChatGPT 当成一个百科全书,我负责提问、提需求,ChatGPT 负责解答。

但这一环节最重要的就是 prompt,prompt 的精确度决定了 ChatGPT 生成内容的准确度和质量,我记得 ChatGPT 刚问世那会,就出现了各种调教 ChatGPT 的方法和教程,正经的和不正经的都有一大堆。

正好有 ChatGPT-Next-Web 项目,免费部署,填入自己的 OpenAI API Key,即可与之对话,而且还内置了海量的 prompts,将其打造成各种身份,用于各种方面,比如学术论文、创意写作、数据分析等,再或者是让它模仿小红书笔记的风格,以特定产品为描述对象,生成小红书风格的内容……

估计这也是大多数普通人的 ChatGPT 用法,一个百科全书、私人管家。


AIGC API

但上述内容的使用前提是得需要有 OpenAI API Key,如果只注册了 OpenAI 账号,那就只能登录 ChatGPT 官网,使用最基础的 GPT-3.5 对话服务。不过,我由于没有信用卡,而且每个月订阅 ChatGPT Plus 的20美元对我来说太贵,便一直没有开通,一直使用基础的 GPT-3.5。

但是最近我不开通 ChatGPT Plus,也用上了 GPT-4 等相关功能,也能生成 OpenAI API Key。

朋友最近在做一个代理服务——AIGC API(aigcapi.io),低于 OpenAI 官方价格,却可以使用 GPT-4、DALL-E-3、Claude 2等模型的 API Key,虽然我不知道这是如何做到的,但觉得非常神奇,1美元额度的 API Key,在他那里只需要2元人民币,官方价格居然是他的3.6倍。

充分发挥 ChatGPT 在日常生活中的作用 - 第8张图片 充分发挥 ChatGPT 在日常生活中的作用 - 第9张图片

这模型名称让我搞不太明白,turbo 后面还加个数字,不过目前最好用的模型应该是 GPT-4-1106-preview 和 DALL-E-3。

借着朋友送我的额度,“嚣张”地使用着,我一个人也用不完,便部署了 ChatGPT-Next-Web 服务,将方法分享给了班上的同学,最近正好是写论文的时候,方便他们用 ChatGPT 修改自己的文章。

然后偶尔使用 DALL-E-3 文生图模型,让 AI 画出一些古诗词中的景色和场景,用了大半个月,我的感受是:太耐用,用不完,根本用不完。20美元不到,按照朋友提供的价格,折合人民币20元不到,相当于相当于购买20美元,就是20元人民币,但如果按照 OpenAI 官方的定价,就得上百块钱。

充分发挥 ChatGPT 在日常生活中的作用 - 第10张图片

虽然是第三方代理,但能享受官方的体验,除了价格比官方便宜,速度还比官方要快,准确度和官方保持一致,可以说体验升级。调用速度和 OpenAI 直连速度没区别,稳定性和 OpenAI 一致(OpenAI 崩他们也崩),每一笔调用都能在后台清晰可见。

仅需将官方接口地址(https://api.openai.com) 更改为AIGC API的接口地址:https://api.aigcapi.io 即可快速使用。专为企业和程序开发测试人员打造,更适合企业和站长等高并发大用量的用户,均是高速 API 渠道。

目前新用户注册默认赠送1美元额度,感兴趣的可以先尝试一下,如果觉得好用,需求大的话,我可以找朋友弄点折扣和优惠码。


另外说几句题外话,自从 ChatGPT 问世,各种 AI 工具层出不穷,有真正使用 AI 技术、并且有真本事的工具,也有不少挂羊头卖狗肉的套壳服务,工具多到我用不过来,眼花缭乱,都快对“AI”这个词产生应激反应。

最后我的选择还是跟随自己的需求,不要一拥而上,ChatGPT、Perplexity、Bing Create 足够我使用很久很久,除非我产生了新的需求。

使用 Vercel 免费部署 LobeChat

作者 青山
2024年2月12日 00:14

我在之前的文章《充分发挥 ChatGPT 在日常生活中的作用》中介绍过一款开源项目——ChatNextWeb,搭配 Vercel 即可部署自己的网页对话机器人,但它仅支持对话,如果想使用 DELL·E 3 模型进行文生图,似乎无法实现。最近看到另一个类似的项目——LobeChat,功能更加齐全、丰富,UI 也更加好看,便记录一下部署过程。

使用 Vercel 免费部署 LobeChat - 第1张图片

LobeChat 介绍

该项目在 GitHub 上已有 17.7k stars,这几个特性比较吸引人:

  1. GPT 视觉认知。支持了 OpenAI 最新的 gpt-4-vision 模型,视觉识别,只需上传图片,即可识别图片内容,然后基于此进行对话。
  2. TTS & STT 语音会话。这一功能在 ChatGPT 的官方客户端上就能体验,通过语音转文字或者文字转语音,与人工智能助手进行对话。
  3. Text to Image 文生图。即支持通过插件唤醒 GPT-4 内置的 DALL-E 3 模型,直接调用文生图工具进行绘画,我在 Bing Create 上使用该功能绘制 Daily 图片,仅用一句诗,就能生成与之相符的图片。

如果开通了 ChatGPT Plus,以上三点应该可以轻松实现并体验,但对我来说太贵,便找到了平替方案。

LobeChat 部署

LobeChat 提供了 Docker 镜像,也提供了 Vercel 的自托管版本,两种方式我都进行了测试,都可以正常部署并使用。

Docker 部署

在 VPS 终端输入以下命令,就可以一键安装并启动 LobeChat 服务:

docker run -d -p 3210:3210 \
  -e OPENAI_API_KEY=sk-xxxx \
  -e OPENAI_PROXY_URL=https://api-proxy.com/v1 \
  -e ACCESS_CODE=lobe66 \
  --name lobe-chat \
  lobehub/lobe-chat

其中涉及到一些环境变量,OPENAI_API_KEY 是从 OpenAI 获取到的 API Key,如果你使用的 API Key 并不是来自官方,则需要加一条环境变量OPENAI_PROXY_URL配置代理地址,比如我使用的是第三方 API Key,由 AIGC API 提供,ACCESS_CODE是访问密码,建议设置。最后需要确保 VPS 端口 3210 保持开启且未被占用,然后通过 IP:端口的方式进行访问即可,或者进行反向代理,绑定域名使用。

Vercel 部署

使用 Vercel 部署更加方便快捷,不用登录 SSH,也不用输入命令。

进入 GitHub 项目页面,fork LobeChat 项目之后登录 Vercel,选择对应的仓库进行导入。

使用 Vercel 免费部署 LobeChat - 第2张图片

在环境变量部分填入相应的 Key 和 Value,如下图所示,我填写了ACCESS_CODEOPENAI_API_KEYOPENAI_PROXY_URL,这样就可以通过 AIGCAPI 提供的第三方 API Key 使用 GPT-4 等模型。

使用 Vercel 免费部署 LobeChat - 第3张图片

注意,如果在环境变量里填写了OPENAI_API_KEY等其他模型服务商的 API Key,则该服务部署成功之后可以直接使用,无需再在网站中填写 API Key,这一点在项目文档中写得比较清楚。

点击 Deploy,等待部署完成。

使用 Vercel 免费部署 LobeChat - 第4张图片

即可访问网站,使用服务。

使用 Vercel 免费部署 LobeChat - 第5张图片

切换 GPT-4 模型,打开内置的 DALL·E 3 插件,即可开启文生图模式。

使用 Vercel 免费部署 LobeChat - 第6张图片

除此之外,还内置了各种 AI 助手,涵盖写作、翻译、代码等方面。

使用 Vercel 免费部署 LobeChat - 第7张图片

最后给大家分享一家我一直在使用的第三方 API Key 提供商,AIGC API,提供高效且稳定的 OpenAI 聚合 API,相比官方20$/月的 ChatGPT Plus,它提供的 API,价格低至1美元只需要2元人民币,除了 GPT-4 模型,图中这些也可以进行调用。

使用 Vercel 免费部署 LobeChat - 第8张图片

最近因为写毕业论文需要,便使用 LobeChat 和 AIGC API 的服务部署了一个网站,给自己和同学使用,效果还不错。

ChatGPT on macOS客户端app正式面向所有用户开放

作者 Justin
2024年6月27日 09:21
OpenAI宣布了适用于 macOS 的 ChatGPT 客户端app正式面向所有用户开放。该应用专为 macOS 系统设计,支持快捷键呼出和多种内容形式的交互。目前仅适用于配备 Apple Silicon(M1 或更高版本)的 macOS 14+,但计划在今年晚些时候登陆 Windows。

为什么应该阻止 ChatGPT 和 Bytedance 爬虫抓取你的页面?


这几天,我发现我的一两个服务器过载(高于平常的CPU使用率),我查看了 Apache 日志,发现 ChatGPT Bot(也称为 GPTBot/1.0)和字节跳动 Bots(也称为 Bytespider)的访问记录。

您可以通过以下 BASH 命令检查访问您服务器的前 10 个 IP:

#!/bin/bash

awk '{a[$1]++}END{for(v in a)print v, a[v]}'  /var/log/apache2/*.log* | sort -k2 -nr | head -10
bytedance-bots-crawling-apache2-logs 为什么应该阻止 ChatGPT 和 Bytedance 爬虫抓取你的页面? ChatGPT (OpenAI) LINUX 折腾 资讯 运维

字节跳动 Bots(Bytespider)访问日志(Apache2)

gptbot-crawling-apache2-logs 为什么应该阻止 ChatGPT 和 Bytedance 爬虫抓取你的页面? ChatGPT (OpenAI) LINUX 折腾 资讯 运维

ChatGPT Bots(GPTBot)访问日志(Apache2)

为什么应该阻止 ChatGPT 和字节跳动 Bots 抓取您的页面?

ChatGPT还有字节跳动都有自己的大模型,他们就是通过抓取你的数据来喂他们的LLMs(大型语言模型)。这些 bots 免费使用您的材料(信息或数据)。它们给您的服务器增加了额外的负担,这是可以避免的。

我不喜欢它们从我的网站获取信息,白撸我的羊毛,但如果您觉得无所谓,可以将它们列入白名单。

如何阻止ChatGPT和字节跳动的爬虫抓取您的页面?

使用 robots.txt 阻止

一种比较软性的阻止方式是在网站根目录的 robots.txt 文件中添加以下内容:

User-agent: GPTBot
Disallow: /

User-agent: Bytespider
Disallow: /

然而,这些爬虫可能选择不遵守这些规则。比如百度爬虫就不遵守。

使用 CloudFlare 的 WAF 规则阻止

另一种更强硬的方法是通过添加一些防火墙规则来阻止它们,例如,您可以添加一个 CloudFlare WAF 规则来阻止它们:

cloudflare-waf-block-gpt-and-bytespider-bots 为什么应该阻止 ChatGPT 和 Bytedance 爬虫抓取你的页面? ChatGPT (OpenAI) LINUX 折腾 资讯 运维

添加 Cloudflare WAF 安全规则以阻止 GPTBot 和 Bytespider Bot 的访问。

比如还可以在表达式编译器(Expression Editor)里加入其它限制:

(http.user_agent contains "GPTBot") or 
(http.user_agent contains "Bytespider") or 
// 可以根据需求加入其它限制,比如限制 Amazonbot
(http.user_agent contains "Amazonbot") or 
// 访问 WordPress 博客访问评论链接
(http.request.uri contains "?replytocom=")

使用 HTTP 头阻止

您可以通过在服务器配置中设置适当的 HTTP 头来阻止特定的用户代理。以下是如何在 htaccess)加速网站”>Apache 和 Nginx 服务器上实现这一点:
对于 Apache,在您的 .htaccess 文件中添加以下内容:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_USER_AGENT} GPTBot [NC,OR]
  RewriteCond %{HTTP_USER_AGENT} Bytespider [NC]
  RewriteRule .* - [F,L]
</IfModule>

对于 Nginx 服务器,在您的 Nginx 配置文件中添加以下内容:

if ($http_user_agent ~* (GPTBot|Bytespider)) {
    return 403;
}

使用自定义中间件阻止

如果您对应用程序的服务器端代码有控制权,您可以编写中间件来阻止这些用户代理。

在 Express(Node.js)中的示例:

app.use((req, res, next) => {
  const userAgent = req.headers['user-agent'];
  if (/GPTBot|Bytespider/i.test(userAgent)) {
    res.status(403).send('Forbidden');
  } else {
    next();
  }
});

在 Django(Python)中的示例:

from django.http import HttpResponseForbidden

class BlockBotsMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        user_agent = request.META.get('HTTP_USER_AGENT', '')
        if 'GPTBot' in user_agent or 'Bytespider' in user_agent:
            return HttpResponseForbidden('Forbidden')
        return self.get_response(request)

使用这些方法的组合可以有效地阻止 GPT-4 和 ByteSpider bots 访问您的网站。在服务器级别的阻止(通过 HTTP 头、防火墙规则或 WAF)与 robots.txt 指令结合使用可以提供更强大的解决方案。

英文:Why and How You Should Stop the ChatGPT and Bytedance Bots Crawling Your Pages?

本文一共 702 个汉字, 你数一下对不对.
为什么应该阻止 ChatGPT 和 Bytedance 爬虫抓取你的页面?. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 为什么应该阻止 ChatGPT 和 Bytedance 爬虫抓取你的页面? ChatGPT (OpenAI) LINUX 折腾 资讯 运维
The post 为什么应该阻止 ChatGPT 和 Bytedance 爬虫抓取你的页面? first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 你要找什么样的老婆? 找媳妇的标准 昨天和网友在剑桥面基, 网友奔现, 他从爱尔兰过来, 小我12岁, 就聊到了找对象的标准. TLDR; 找老婆不要(只)看颜值, 而要注重性格, 为人处事和顾家等更重要的品质, 当然性和谐也很重要. 在当今社会, 人们对于找伴侣的标准有所不同. 有些人认为颜值是最重要的, 因为外貌吸引力可以让人在日常生活中感到愉悦, 这是人的本性,...
  3. 在LINUX下循环备份的方法 备份是我们常需要做的事, 你可以在服务器上有一个文件夹专门用于存放备份.然后定期删除(可以是一个脚本定期执行),这样就比较麻烦,因为如果你想每次删除比较旧的备份, 你就得对备份进行时间倒序. 其实可以完全利用LINUX下的 date命令来生成想要的文件名用于备份.比如你想保留过去的 24 小时备份,那么,你可以用: 1 2 H=`date +"%H"` ls > backup_$H  #...
  4. HPZ800服务器主板太老不支持超过2TB的大硬盘 我家里一直用的是HPZ800服务器, 很吵, 很老, 虽然这台服务器已经有十年之久(我在EBAY上买来用了五年多了), 但是即使放到今天, 这服务器速度依旧很快, 很稳定. 由于服务器用的是ECC较验内存, 所以基本上不重启关机. HPZ800主机有两个硬核CPU – 因特志强 X5650 – 每个CPU是12核....
  5. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  6. 把年假分成几周请完 – 工作不是全部 我的工作合同里写着 一年享有 25年工作日 带薪假期 这是比较好的福利之一. 搬家的时候请了三天 还有就是零零散散请了几天 比如 看GP 等等. 每年假期可以有 5天能移到 下一年使用 所以我就把剩下的请了 但是是每周请一天...
  7. ChatGPT-4 使用 Math Wolfram 插件解决数学脑筋急转弯问题 这篇文章, 我们看一个简单的数学问题(脑筋急转弯), 并用 Python 解决它. 我们看一下LLM(大型语言模型): ChatGPT3.5和ChatGPT4. 通过 ChatGPT-Plus 订阅(目前每月 20 美元 + VAT增值税), 我们可以启用...
  8. AI 美女视频 – 抖音网红要失业了? 随着 ChatGPT 全网爆火, 这一两个月AI技术的发展真是日新月异, 一两天就有搞出个新名堂, 都有点试玩不动了. 推特上有日本人通过AI搞出了美女视频. 是不是已经很真实了, 我感觉再这么下去抖音网红要失业了. AI做美女图已经相对很成熟了, 比如 Stable.Diffusion, MidJounery (见视频 Youtube,...

[译] 什么是 GPT?Transformer 工作原理的动画展示(2024)

2024年5月12日 08:00

译者序

本文翻译自 2024 年的一个视频(前半部分),这是原作者 Deep Learning 系列的第 5 章,强烈推荐原视频:

Transformer 预测下一个单词四部曲。MLP 也称为 feed-forward。

作者以深厚的技术积累,将一些复杂系统以可视化的方式讲给普通人,这种能力是极其难得的。 本译文希望通过“文字+动图”这种可视化又方便随时停下来思考的方式介绍 Transformer 的内部工作原理。 如果想进一步从技术和实现上了解 Transformer/GPT/LLM,可参考:

水平及维护精力所限,译文不免存在错误或过时之处,如有疑问,请查阅原视频。 传播知识,尊重劳动,年满十八周岁,转载请注明出处

以下是译文。



1 图解 “Generative Pre-trained Transformer”(GPT)

GPT 是 Generative Pre-trained Transformer 的缩写,直译为“生成式预训练 transformer”, 我们先从字面上解释一下它们分别是什么意思。

1.1 Generative:生成式

“Generative”(生成式)意思很直白,就是给定一段输入(例如,最常见的文本输入), 模型就能续写(“编”)下去。

1.1.1 可视化

下面是个例子,给定 “The most effective way to learn computer science is” 作为输入, 模型就开始续写后面的内容了。

“Generative”:生成(续写)文本的能力。

1.1.2 生成式 vs. 判别式(译注)

文本续写这种生成式模型,区别于 BERT 那种判别式模型(用于分类、完形填空等等),

1.2 Pre-trained:预训练

“Pre-trained”(预训练)指的是模型是用大量数据训练出来的

1.2.1 可视化

“Pre-trained”:用大量数据进行训练。
图中的大量旋钮/仪表盘就是所谓的“模型参数”,训练过程就是在不断优化这些参数,后面会详细介绍。

1.2.2 预训练 vs. 增量训练(微调)

“预”这个字也暗示了模型还有在特定任务中进一步训练的可能 —— 也就是我们常说的“微调”(finetuning)。

如何对预训练模型进行微调: InstructGPT:基于人类反馈训练语言模型遵从指令的能力(OpenAI,2022)。 译注。

1.3 Transformer:一类神经网络架构

“GPT” 三个词中最重要的其实是最后一个词 Transformer。 Transformer 是一类神经网络/机器学习模型,作为近期 AI 领域的核心创新, 推动着这个领域近几年的极速发展。

Transformer 直译为“变换器”或“转换器”,通过数学运算不断对输入数据进行变换/转换。另外,变压器、变形金刚也是这个词。 译注。

Transformer:一类神经网络架构的统称。

Transformer 最后的输出层。后面还会详细介绍

1.4 小结

如今已经可以基于 Transformer 构建许多不同类型的模型,不限于文本,例如,

本文希望通过“文字+动图”这种可视化又方便随时停下来思考的方式,解释 Transformer 的内部工作原理。

2 Transformer 起源与应用

2.1 Attention Is All You Need, Google, 2017,机器翻译

Transformer 是 Google 2017 年在 Attention Is All You Need paper 中提出的, 当时主要用于文本翻译

2.2 Generative Transformer

之后,Transformer 的应用场景扩展到了多个领域,例如 ChatGPT 背后也是 Transformer, 这种 Transformer 接受一段文本(或图像/音频)作为输入,然后就能预测接下来的内容。 以预测下一个单词为例,如下图所示,下一个单词有多种可能,各自的概率也不一样:

但有了一个这样的预测下一个单词模型,就能通过如下步骤让它生成更长的文字,非常简单:

  1. 初始文本输入模型;
  2. 模型预测出下一个可能的单词列表及其概率,然后通过某种算法(不一定挑概率最大的) 从中选一个作为下一个单词,这个过程称为采样(sampling);
  3. 将新单词追加到文本结尾,然后将整个文本再次输入模型;转 2;

以上 step 2 & 3 不断重复,得到的句子就越来越长。

2.3 GPT-2/GPT-3 生成效果(文本续写)预览

来看看生成的效果,这里拿 GPT-2 和 GPT-3 作为例子。

下面是在我的笔记本电脑上运行 GPT-2,不断预测与采样,逐渐补全为一个故事。 但结果比较差,生成的故事基本上没什么逻辑可言:

下面是换成 GPT-3(模型不再开源,所以是通过 API), GPT-3 和 GPT-2 基本架构一样,只是规模更大, 但效果突然变得非常好, 生成的故事不仅合乎逻辑,甚至还暗示 “物种 π” 居住在一个数学和计算王国:

2.4 ChatGPT 等交互式大模型

以上这个不断重复“预测+选取”来生成文本的过程,就是 ChatGPT 或其他类似大语言模型(LLM) 的底层工作原理 —— 逐单词(token)生成文本

2.5 小结

以上是对 GPT 及其背后的 Transformer 的一个感性认识。接下来我们就深入到 Transformer 内部, 看看它是如何根据给定输入来预测(计算)出下一个单词的。

3 Transformer 数据处理四部曲

为理解 Transformer 的内部工作原理,本节从端到端(从最初的用户输入,到最终的模型输出)的角度看看数据是如何在 Transformer 中流动的。 从宏观来看,输入数据在 Transformer 中经历如下四个处理阶段:

Transformer 数据处理四部曲

下面分别来看。

3.1 Embedding:分词与向量表示

首先,输入内容会被拆分成许多小片段(这个过程称为 tokenization),这些小片段称为 token

  • 对于文本:token 通常是单词、词根、标点符号,或者其他常见的字符组合;
  • 对于图片:token 可能是一小块像素区域;
  • 对于音频:token 可能是一小段声音。

然后,将每个 token 用一个向量(一维数组)来表示。

3.1.1 token 的向量表示

这实际上是以某种方式在编码该 token;

Embedding:每个 token 对应一个 N*1 维度的数值格式表示的向量。

3.1.2 向量表示的直观解释

如果把这些向量看作是在高维空间中的坐标, 那么含义相似的单词在这个高维空间中是相邻的

词义相近的四个单词 “leap/jump/skip/hop” 在向量空间中是相邻的

将输入进行 tokenization 并转成向量表示之后,输入就从一个句子就变成了一个向量序列。 接下来,这个向量序列会进行一个称为 attention 的运算。

3.2 Attention:embedding 向量间的语义交流

3.2.1 语义交流

attention 使得向量之间能够相互“交流”信息。这个交流是双向的,在这个过程中,每个向量都会更新自身的值。

这种信息“交流”是有上下文和语义理解能力的。

3.2.2 例子:”machine learning model” / “fashion model

例如,“model” 这个词在 “machine learning model”(机器学习模型)和在 “fashion model”(时尚模特)中的意思就完全不一样, 因此虽然是同一个单词(token),但对应的 embedding 向量是不同的

Attention 模块的作用就是确定上下文中哪些词之间有语义关系,以及如何准确地理解这些含义(更新相应的向量)。 这里说的“含义”(meaning),指的是编码在向量中的信息。

3.3 Feed-forward / MLP:向量之间无交流

Attention 模块让输入向量们彼此充分交换了信息(例如,单词 “model” 指的应该是“模特”还是“模型”), 然后,这些向量会进入第三个处理阶段:

第三阶段:多层感知机(multi-layer perceptron),也称为前馈层(feed-forward layer)。

3.3.1 针对所有向量做一次性变换

这个阶段,向量之间没有互相“交流”,而是并行地经历同一处理:

3.3.2 直观解释

后面会看,从直观上来说,这个步骤有点像对每个向量都提出一组同样的问题,然后根据得到的回答来更新对应的向量

以上解释中省略了归一化等一些中间步骤,但已经可以看出: attention 和 feed-forward 本质上都是大量的矩阵乘法

本文的一个目的就是让读者理解这些矩阵乘法的直观意义。

3.3.3 重复 Attention + Feed-forward 模块,组成多层网络

Transformer 基本上是不断复制 Attention 和 Feed-forward 这两个基本结构, 这两个模块的组合成为神经网络的一层。在每一层,

  • 输入向量通过 attention 更新彼此;
  • feed-forward 模块将这些更新之后的向量做统一变换,得到这一层的输出向量;

3.4 Unembedding:概率

3.4.1 最后一层 feed-forward 输出中的最后一个向量

如果一切顺利,最后一层 feed-forward 输出中的最后一个向量(the very last vector in the sequence), 就已经包含了句子的核心意义(essential meaning of the passage)。对这个向量进行 unembedding 操作(也是一次性矩阵运算), 得到的就是下一个单词的备选列表及其概率:

图:原始输入为 "To date, the cleverest thinker of all time was",让模型预测下一个 token。经过多层 attention + feed-forward 之后, 最后一层输出的最后一个向量已经学习到了输入句子表达的意思,(经过简单转换之后)就能作为下一个单词的概率

3.4.2 下一个单词的选择

根据一定的规则选择一个 token,

  • 注意这里不一定选概率最大的,根据工程经验,一直选概率最大的,生成的文本会比较呆板;
  • 实际上由一个称为 temperature 的参数控制;

3.5 小结

以上就是 Transformer 内部的工作原理。

前面已经提到,有了一个这样的预测下一个单词模型,就能通过如下步骤让它生成更长的文字,非常简单:

  1. 初始文本输入模型;
  2. 模型预测出下一个可能的单词列表及其概率,然后通过某种算法(不一定挑概率最大的) 从中选一个作为下一个单词,这个过程称为采样(sampling);
  3. 将新单词追加到文本结尾,然后将整个文本再次输入模型;转 2;

4 GPT -> ChatGPT:从文本补全到交互式聊天助手

GPT-3 的早期演示就是这样的:给 GPT-3 一段起始文本,它就自动补全(续写)故事和文章。 这正式以上介绍的 Transformer 的基本也是核心功能。

ChatGPT 的核心是 GPT 系列(GPT 3/3.5/4),但它怎么实现聊天这种工作方式的呢?

4.1 系统提示词,伪装成聊天

其实很简单,将输入文本稍作整理,弄成聊天内容,然后把这样的文本再送到 GPT/Transformer, 它就会把这个当前是聊天内容,续写下去。最后只需要把它续写的内容再抽出来返回给用户, 对用户来说,就是在聊天。

这段文本设定用户是在与一个 AI 助手交互的场景,这就是所谓的系统提示词(system prompt)。

4.2 如何训练一个企业级 GPT 助手(译注)

OpenAI 官方对 GPT->ChatGPT 有过专门分享:如何训练一个企业级 GPT 助手(OpenAI,2023)

基础模型不是助手,它们不想回答问题,只想补全文档。 因此,如果让它们“写一首关于面包和奶酪的诗”,它们不仅不“听话”,反而会有样学样,列更多的任务出来,像下面左图这样,

这是因为它只是在忠实地补全文档。 但如果你能成功地提示它,例如,开头就说“这是一首关于面包和奶酪的诗”, 那它接下来就会真的补全一首这样的诗出来,如右图。

我们还可以通过 few-shot 来进一步“欺骗”它。把你想问的问题整理成一个“提问+回答”的文档格式, 前面给一点正常的论述,然后突然来个问题,它以为自己还是在补全文档,其实已经把问题回答了:

这就是把基础模型调教成一个 AI 助手的过程。

5 总结

本文整理翻译了原视频的前半部分,通过可视化方式解释 GPT/Transformer 的内部工作原理。 原视频后面的部分是关于 general deep learning, machine learning 等等的基础,想继续学习的,强烈推荐。


Written by Human, Not by AI Written by Human, Not by AI

[译][论文] InstructGPT:基于人类反馈训练语言模型遵从指令的能力(OpenAI,2022)

2024年3月24日 08:00

译者序

本文翻译自 2022 年 OpenAI 的论文: Training language models to follow instructions with human feedback, 整理翻译了其中感兴趣的部分。

大模型进化树,可以看到 InstructGPT 所处的年代和位置。来自 大语言模型(LLM)综述与实用指南(Amazon,2023)

GPT -> InstructGPT -> ChatGPT 的过程,可参考 如何训练一个企业级 GPT 助手(OpenAI,2023)

译者水平有限,不免存在遗漏或错误之处。如有疑问,敬请查阅原文。

以下是译文。



摘要

增大模型尺寸未必就能提高它对用户意图的理解能力。 例如,一些大模型可能会生成不真实、有毒或对用户并无帮助(untruthful, toxic, or simply not helpful)的输出。 换句话说,这些模型与它们的用户没有对齐(not aligned)。

本文展示了一种基于人类反馈进行微调(fine-tuning with human feedback), 从而在各种任务上将语言模型与用户意图对齐的方法。简单来说,

  • 先收集一组“预期的模型行为应该是什么样”的数据集, 然后使用监督学习来微调 GPT-3(SFT),
  • 接着,收集一组排名形式组织的模型输出(rankings of model outputs)作为数据集, 使用人类反馈强化学习(RLHF)进一步微调上一步得到的模型。

我们将最终得到的这种模型称为 InstructGPT

  • 175b GPT-3 vs. 1.3b InstructGPT人工测评显示, 大家更喜欢后者,尽管它的参数不到前者的 1%
  • InstructGPT 在真实性(truthfulness)方面也有所改进,减少了有毒输出, 在公开 NLP 数据集上的性能退化也很小。

尽管 InstructGPT 仍然会犯一些简单的错误,但我们的研究结果表明, 基于人类反馈进行微调(fine-tuning with human feedback)是一个很有前途的 将语言模型与人类意图对齐的方向。

1 引言

给定一些任务示例(examples of the task)作为输入,大语言模型(LLMs)可以被 “prompt” 去执行一系列自然语言处理(NLP)任务。

1.1 大模型存在的问题

然而,这些模型经常会出现一些意外的行为,比如编造事实、生成有偏见或有毒的文本, 或者忽视用户的指示(Bender 等,2021;Bommasani 等,2021;Kenton 等,2021; Weidinger 等,2021;Tamkin 等,2021;Gehman 等,2020)。

1.2 语言模型建模偏差:预测下一个 token vs. 有益且安全地遵循用户指令

出现以上现象, 是因为许多近期的 LLM 建模目标都是(基于互联网数据训练)预测下一个 token —— 而并不是“有益且安全地遵循用户的指令”(Radford 等,2019;Brown 等,2020;Fedus 等,2021;Rae 等,2021;Thoppilan 等,2022)。 也就是说,语言建模目标有偏差(the language modeling objective is misaligned)。

由于 LLM 已经部署在大量实际应用中,因此解决大模型的这些非预期行为非常重要。

1.3 常规解决方式及评估标准

通过训练语言模型按照用户意图行事(Leike 等,2018)来推进语言模型的对齐。 这里的意图包括

  1. 明确的意图,如遵循指示,
  2. 隐含的意图,如保持真实、无偏见、无毒及无害性。

使用 Askell 等(2021)的术语,我们希望语言模型是

  • 有帮助的(helpful,应该帮助用户解决任务),
  • 诚实的(honest,不应该捏造信息或误导用户),
  • 无害的(harmless,不应该对人或环境造成身体、心理或社会伤害)。

我们在第 3.6 节中详细阐述了这些标准的评估。

1.4 本文方法:基于人类反馈+微调来对齐

本文专注于通过微调方法来对齐语言模型。具体来说, 使用人类反馈强化学习(RLHF;Christiano 等,2017;Stiennon 等,2020) 来微调 GPT-3,以便它能遵循类型广泛的各种用户指令。具体过程如图 2 所示,

Figure 2: InstructGPT 三部曲:(1) SFT, (2) RM training, (3) RLHF via proximal policy optimization (PPO) on RM.
蓝色箭头表示相应的数据用于训练模型。Step 2 中 A-D 是模型输出的采样,然后标注员对它们进行排序。详见 Section 3。

三个步骤:

  1. 收集示例数据(demonstration data),训练一个监督策略(supervised policy)。

    对于给定的输入,标注员给出期望的行为 (详见 3.2 节)。然后,使用监督学习(supervised learning)对一个预训练的 GPT-3 模型进行微调。

  2. 收集对比数据(comparison data),训练一个奖励模型(RM)。

    对给定输入,收集两个输出,标注员给出他们的偏好(which output they prefer)。然后,训练一个奖励模型来预测人类偏好输出(human-preferred output)。

  3. 针对奖励模型,使用 PPO 对策略进行优化(optimize a policy)。

    将 RM 的输出作为一个标量奖励。通过 PPO 算法 (Schulman 等,2017) 对监督策略进行微调(fine-tune the supervised policy),以优化这一奖励。

步骤 2 和 3 可以持续迭代;在当前最佳策略上收集更多的对比数据,这些数据又用于训练新的 RM 和新的策略。 实际上,大部分对比数据来自于我们的 supervised policies,一小部分来自于我们的 PPO policies。

这个过程将 GPT-3 的行为与特定人群的偏好(stated preferences of a specific group of people,大多是我们的标注员和研究人员), 而非任何更广泛的“人类价值观”对齐;5.2 节将进一步讨论这个问题。

1.5 模型尺寸及架构

我们训练了三种尺寸的 InstructGPT 模型:

  1. 1.3B
  2. 6B
  3. 175B

所有模型都使用了 GPT-3 架构。

1.6 主要发现

我们的主要发现如下。

1.6.1 标注员明显更喜欢 InstructGPT 而非 GPT-3 的输出

我们将 175b GPT-3 vs. 1.3b InstructGPT 的输出进行了人工测评, 大家明显更喜欢后者,尽管它的参数不到前者的 1%

这两类模型具有相同的架构,唯一的区别是 InstructGPT 在人工数据上进行了微调

作为对比,我们给 GPT-3 添加了一个 few-shot prompt 以使其更好地遵循指令(变成了一个提示词调优过的 GPT-3), 但效果仍赶不上 InstructGPT:

  • 175B InstructGPT 在 85 ± 3% 的结果中优于 175B GPT-3
  • 175B InstructGPT 在 71 ± 4% 的结果中优于 few-shot 175B GPT-3

根据标注员的反馈,InstructGPT 模型的输出更符合 prompt ,并更可靠地遵循指令中的明确约束。

1.6.2 InstructGPT 相比 GPT-3 在真实性方面有所改进

在 TruthfulQA 基准测试中,InstructGPT 生成 truthful & informative 答案的概率比 GPT-3 高约一倍。

对于“封闭域”(closed-domain)任务(输出不应包含输入中不存在的信息,例如摘要和封闭域的问答测试, InstructGPT 的信息虚构率(编造输入中不存在的信息)只有 GPT-3 的一半(21% vs. 41%)。

1.6.3 InstructGPT 相比 GPT-3 毒性略微下降,但偏见未下降

为了衡量毒性,我们使用了 RealToxicityPrompts 数据集(Gehman 等,2020),并进行了自动和人工评估。 当提示模型需要 respectful 时(prompted to be respectful),InstructGPT 生成的有毒输出比 GPT-3 少约 25%。

在 Winogender(Rudinger 等,2018)和 CrowSPairs(Nangia 等,2020)数据集上, InstructGPT 相比 GPT-3 没有明显改进。

1.6.4 通过修改 RLHF 微调过程,可以最小化在公开 NLP 数据集上的性能退化

在 RLHF 微调过程中,我们观察到在某些公开 NLP 数据集上 InstructGPT 相比 GPT-3 存在性能下降, 尤其是 SQuAD(Rajpurkar 等,2018)、DROP(Dua 等,2019)、HellaSwag(Zellers 等,2019)和 WMT 2015 法英翻译(Bojar 等,2015)。

这是一个“对齐税”(alignment tax)的例子 —— 对齐可能会牺牲在某些任务上的性能。 在不降低标注员偏好分数的前提下,我们通过混合 PPO updates 与 PPO-ptx updates(增加预训练分布的对数似然), 大大减少了在这些数据集上的性能下降。

InstructGPT 可以推广到那些未参与编写训练数据的标注员(held-out labelers)。 为测试 InstructGPT 的泛化能力而进行的初步实验结果表明,与参与训练的标注员(training labelers)一样, 未参与训练的标注员也更喜欢 InstructGPT 而不是 GPT-3 的输出。 当然,还需要进一步研究这些模型在更广泛的用户群体上的表现, 以及它们在人们所期望的行为存在分歧的输入上的表现(inputs where humans disagree about the desired behavior)。

1.6.5 在公开 NLP 数据集上微调不如在人类偏好数据上微调的效果好

我们比较了两个微调的 GPT-3:

  1. 人类偏好数据上微调的 GPT-3(即 InstructGPT);
  2. 在两个公开 NLP 任务(FLAN(Wei 等,2021)和 T0/T0++(Sanh 等,2021)上微调的 GPT-3。

    这两个数据集包含多种 NLP 任务,以及每个任务的自然语言指令(natural language instructions)。

标注员明显更喜欢 InstructGPT 的输出。相比基线,

  • InstructGPT 的胜率为 73.4 ± 2%
  • T0 和 FLAN fine-tuned GPT-3 分别为 26.8 ± 2%29.8 ± 2%

1.6.6 InstructGPT 对 RLHF 微调之外的指令有良好的泛化能力

我们对 InstructGPT 的能力进行了定性探究,发现它能够遵循如下指令:

  1. 总结代码,
  2. 回答关于代码的问题,
  3. 有时还能遵循不同语言的指令,尽管这些指令在训练数据中非常少。

相比之下,GPT-3 虽然也可以执行这些任务,但需要更精心设计的 prompt ,并且遵循这些领域指令的效果欠佳。

这个结果很令人兴奋,因为它表明 InstructGPT 能够推广“遵循指令”的概念。 即使在只有非常少的直接监督信号(SFT 训练样本)的任务上,它们仍然具备了一定的对齐性。

InstructGPT 仍然会犯一些简单的错误。例如,可能无法遵循指令,捏造事实,对简单问题给出冗长的回答,或无法检测出有错误前提的指令。 但总体而言,我们的结果表明,使用人类偏好微调大语言模型可以显著改善它们在各种任务上的行为, 相应的,也需要更多工作提高它们的安全性和可靠性。

2 相关工作

2.1 对齐(alignment)与人类反馈学习(learning from human feedback)研究

2.1.1 RLHF:来自游戏领域

InstructGPT 建立在前人的技术基础上,特别是用人类反馈强化学习(RLHF)来对齐模型

RLHF 最初是为了在模拟环境(simulated environments)和 Atari 游戏中训练简单机器人而开发的(Christiano 等,2017; Ibarz 等,2018), 最近被用于微调语言模型总结文本(Ziegler 等,2019; Stiennon 等,2020; Böhm 等,2019; Wu 等,2021)。

2.1.2 InstructGPT:基于 RLHF 在更广泛的语言任务上对齐 LLM

这项工作还受到了下列类似工作的影响:

  1. 对话(Jaques 等,2019; Yi 等,2019; Hancock 等,2019)
  2. 翻译(Kreutzer 等,2018; Bahdanau 等,2016)
  3. 语义解析(Lawrence 和 Riezler,2018)
  4. 故事生成(Zhou 和 Xu,2020)
  5. 评论生成(Cho 等,2018)
  6. 证据提取(Perez 等,2019)

Madaan 等(2022)使用人类反馈来增强 prompts,以提高 GPT-3 的性能。 在基于文本的环境中,使用带有 4a normative prior 的 RL 来对齐 agents(Nahian 等,2021)。

我们的工作可以看作是用 RLHF 在更广泛的语言任务上对齐语言模型

2.1.3 语言模型对齐意味着什么

近期,“语言模型对齐意味着什么”这一问题备受关注(Gabriel,2020)。

  • Kenton 等(2021)列出了由于不对齐而导致的模型行为问题,包括产生有害内容和游戏中的错误目标。
  • 同一时间,Askell 等(2021)提出将语言助手作为对齐研究的测试对象,研究了一些简单的基线和它们的扩展特性。

2.2 训练模型遵循指令(follow instructions)

Our work is also related to research on crosstask generalization in language models, where LMs are fine-tuned on a broad range of public NLP datasets (usually prefixed with an appropriate instruction) and evaluated on a different set of NLP tasks. There has been a range of work in this domain (Yi et al., 2019; Mishra et al., 2021; Wei et al., 2021; Khashabi et al., 2020; Sanh et al., 2021; Aribandi et al., 2021), which differ in training and evaluation data, formatting of instructions, size of pretrained models, and other experimental details. A consistent finding across studies is that fine-tuning LMs on a range of NLP tasks, with instructions, improves their downstream performance on held-out tasks, both in the zero-shot and few-shot settings.

There is also a related line of work on instruction following for navigation, where models are trained to follow natural language instructions to navigate in a simulated environment (Bahdanau et al., 2018; Abramson et al., 2020; Zhao et al., 2021).

2.3 评估语言模型的危害

A goal of modifying the behavior of language models is to mitigate the harms of these models when they’re deployed in the real world. These risks have been extensively documented (Bender et al., 2021; Bommasani et al., 2021; Kenton et al., 2021; Weidinger et al., 2021; Tamkin et al., 2021). Language models can produce biased outputs (Dhamala et al., 2021; Liang et al., 2021; Manela et al., 2021; Caliskan et al., 2017; Kirk et al., 2021), leak private data (Carlini et al., 2021), generate misinformation (Solaiman et al., 2019; Buchanan et al., 2021), and be used maliciously; for a thorough review we direct the reader to Weidinger et al. (2021). Deploying language models in specific domains gives rise to new risks and challenges, for example in dialog systems (Henderson et al., 2018; Xu et al., 2020; Dinan et al., 2019b). There is a nascent but growing field that aims to build benchmarks to concretely evaluate these harms, particularly around toxicity (Gehman et al., 2020), stereotypes (Nadeem et al., 2020), and social bias (Dhamala et al., 2021; Nangia et al., 2020; Rudinger et al., 2018). Making significant progress on these problems is hard since well-intentioned interventions on LM behavior can have side-effects (Welbl et al., 2021; Blodgett et al., 2020); for instance, efforts to reduce the toxicity of LMs can reduce their ability to model text from under-represented groups, due to prejudicial correlations in the training data (Xu et al., 2021).

2.4 修改模型行为,降低危害

There are many ways to change the generation behavior of language models. Solaiman and Dennison (2021) fine-tune LMs on a small, value-targeted dataset, which improves the models’ ability to adhere to these values on a question answering task. Ngo et al. (2021) filter the pretraining dataset by removing documents on which a language model has a high conditional likelihood of generating a set of researcher-written trigger phrases. When trained on this filtered dataset, their LMs generate less harmful text, at the cost of a slight decrease in language modeling performance. Xu et al. (2020) use a variety of approaches to improve the safety of chatbots, including data filtering, blocking certain words or n-grams during generation, safety-specific control tokens (Keskar et al., 2019; Dinan et al., 2019a), and human-in-theloop data collection (Dinan et al., 2019b). Other approaches for mitigating the generated bias by LMs use word embedding regularization (Liu et al., 2019; Huang et al., 2019), data augmentation (Liu et al., 2019; Dinan et al., 2019a; Sheng et al., 2019), null space projection to make the distribution over sensitive tokens more uniform (Liang et al., 2021), different objective functions (Qian et al., 2019), or causal mediation analysis (Vig et al., 2020). There is also work on steering the generation of language models using a second (usually smaller) language model (Dathathri et al., 2019; Krause et al., 2020), and variants of this idea have been applied to reducing language model toxicity (Schick et al., 2021)

3 方法论与实验详情

3.1 High-level 方法论

我们延用了 Ziegler 等 (2019) 和 Stiennon 等 (2020) 在 stylistic continuation and summarization 领域应用的方法,

3.1.1 准备工作

如下基础准备:

  • 一个预训练的语言模型,即 GPT-3 (Radford 等,2019; Brown 等,2020; Fedus 等,2021; Rae 等,2021; Thoppilan 等,2022)
  • 一个 prompt 类别分布(a distribution of prompts,希望模型输出对齐到这些领域)
  • 一个经过培训的人工标注团队 (详见 3.4 节)。

3.1.2 InstructGPT 训练三部曲

按照以下三个步骤开始训练,如图 2 所示,

Figure 2: InstructGPT 三部曲:(1) SFT, (2) RM training, (3) RLHF via proximal policy optimization (PPO) on RM.
蓝色箭头表示相应的数据用于训练模型。Step 2 中 A-D 是模型输出的采样,然后标注员对它们进行排序。详见 Section 3。

  1. 收集示范数据(demonstration data),训练一个监督策略(supervised policy)。

    对于给定的输入,标注员给出期望的行为 (详见 3.2 节)。然后,使用监督学习(supervised learning)对一个预训练的 GPT-3 模型进行微调。

  2. 收集对比数据(comparison data),训练一个奖励模型(RM)。

    对给定输入,收集两个输出,标注员给出他们的偏好(which output they prefer)。然后,训练一个奖励模型来预测人类偏好输出(human-preferred output)。

  3. 针对奖励模型,使用 PPO 对策略进行优化(optimize a policy)。

    将 RM 的输出作为一个标量奖励。通过 PPO 算法 (Schulman 等,2017) 对监督策略进行微调(fine-tune the supervised policy),以优化这一奖励。

步骤 2 和 3 可以持续迭代;每次在当前最佳策略上收集更多的对比数据,这些数据又用于训练新的 RM 和新的策略。 实际上,大部分对比数据来自于我们的 supervised policies,一小部分来自于我们的 PPO policies。

3.2 数据集

3.2.1 主要来自 OpenAI API 用户数据

我们的 prompts 数据集主要来自用户提交给 OpenAI API 的文本 prompts, 尤其是用户通过 OpenAI Playground interface 提交的那些 prompts ——

  • 这个环境背后运行的是我们用 SFT + 我们自己的一部分示例数据训练出来的初期 InstructGPT models
  • 用户每次通过 Playground 接口用到 InstructGPT 时,我们都会告知他们,他们的数据可能会被用于训练下一步的模型。

本文并没有用到生产环境 OpenAI API 的用户数据。

3.2.2 去重

我们的去重比较简单,有共同长前缀的 prompt 就认为是重复的,并将每个用户 ID 的 prompt 数量限制为 200 个。

我们还基于用户 ID 创建训练、验证和测试集(train, validation, and test splits)。 为了避免模型学习到客户信息,我们过滤掉了训练数据集中包含个人身份信息(PII)的 prompts。

3.2.3 冷启动(第一版 InstructGPT)

为了训练最初的 InstructGPT 模型,我们要求标注员自己编写 prompt。 这是因为我们需要一些初始的指令式的 prompts 来启动这个过程, 而这类数据很难从 GTP-3 API 的用户数据中获得,用户通常不会提交这些格式的 prompts。

3.2.3 三种 prompt:plain/few-shot/user-based

我们要求标注员编写三种类型的 prompt :

  1. Plain: 标注员提出任意的任务,确保任务具有足够的多样性就行。
  2. Few-shot: 标注员提出一条指令,并为该指令提供多个查询/响应对(query/response pairs)。
  3. User-based: OpenAI API 的 waitlist applications 中我们列了一些使用案例。我们要求标注员提供与这些使用案例相关的 prompts。

详见附录 A。

3.2.4 三个 prompts 数据集及大小

根据以上 prompts,我们生成了三个不同的数据集用于不同的微调过程,如表 6 所示,

Table 6: Dataset sizes, in terms of number of prompts.

split source size
SFT train labeler 11,295
SFT train customer 1,430
SFT valid labeler 1,550
SFT valid customer 103
SFT 总计   ~15k
RM train labeler 6,623
RM train customer 26,584
RM valid labeler 3,488
RM valid customer 14,399
RM 总计   ~50k
PPO train customer 31,144
PPO valid customer 16,185
PPO 总计   ~47k
  1. SFT 数据集(来自 API 和标注员):用于训练 SFT 模型,包含约 13k training prompts
  2. RM 数据集(来自 API 和标注员):标注员对模型输出的排名数据,用于训练 RM 模型,有 33k training prompts
  3. PPO 数据集(仅来自 API):没有任何人工标签,用作 RLHF 微调的输入,有 31k training prompts。

3.2.5 Prompts 类别分布及占比

表 1 中展示了 API prompt(尤其是 RM 数据集)的类别分布,这些类别由我们的承包商标注。 可以看到,占比最大的是文本生成

Table 1: API prompt dataset 中 use case 类别及占比

Use-case (%)
Generation 45.6%
Open QA 12.4%
Brainstorming 11.2%
Chat 8.4%
Rewrite 6.6%
Summarization 4.2%
Classification 3.5%
Other 3.5%
Closed QA 2.6%
Extract 1.9%

3.2.6 几个 prompt 例子

表 2 展示了几个 prompt 示例(由研究人员编写,提交给 InstructGPT 的格式),

Table 2: API prompt 具体例子

Use-case Prompt
Brainstorming List five ideas for how to regain enthusiasm for my career
Generation Write a short story where a bear goes to the beach, makes friends with a seal, and then returns home.
Rewrite This is the summary of a Broadway play:
“”“
{summary}
“”“
This is the outline of the commercial for that play:
“”“

更多信息:

  1. 提交给 InstructGPT 的 prompts 见附录 A.2.1,
  2. 提交给 GPT-3 的 prompts(做对比) 见附录 A.2.2,

3.3 训练任务

我们的训练任务有两个来源:

  1. 标注员编写的 prompt 数据集,
  2. 提交给早期 InstructGPT 模型的 prompt 数据集。

这些 prompt 种类繁多,包括生成、问答、对话、摘要、提取和其他自然语言任务 (见表 1)。 我们的数据集中 96%+ 是英文,但在 4.3 节中, 我们也探讨了 InstructGPT 对其他语言指令的响应能力以及完成代码任务的能力。

对于每个自然语言 prompt,

  • 任务通常通过自然语言指令直接指定,例如, “Write a story about a wise frog”(“写一个关于一只聪明的青蛙的故事”),
  • 也可以间接指定

    • 通过 few-shot examples,例如,提供两个关于青蛙的故事作为示例,prompt 模型生成一个新的故事,
    • 通过 implicit continuation,例如,提供一个关于青蛙的故事的开头,让模型续写。

在每种情况下,我们都要求标注员尽力推断每个 prompt 背后的用户意图, 并要求他们跳过那些任务非常模糊的 prompt。 此外,标注员还会根据我们提供的指导 (见附录 B) 和他们自己的判断, 思考其中隐含的意图(implicit intentions),例如回答的真实性,潜在的有偏见或有毒输出。

3.4 人工数据收集

为了生成示范和对比数据,以及进行结果评估,我们通过 Upwork 和 ScaleAI 雇了大约 40 名外包人员

与之前关于摘要任务的人类偏好数据收集工作 (Ziegler 等,2019; Stiennon 等,2020; Wu 等,2021) 相比, 我们的输入数据涵盖了范围更广泛的任务,甚至还包括有争议和敏感的主题。

3.4.1 标注员筛选

我们的目标是选择一组标注员,他们对不同人口分布的偏好很敏锐,并擅长识别潜在的有害输出。 因此,

  • 我们进行了一个筛选测试(screening test)来衡量标注员在这些方面的表现;
  • 最后选出在这个测试中表现良好的标注员。

相关的选择过程和标注员分布信息,见附录 B.1。

3.4.2 对齐冲突的处理

在训练和评估过程中,我们的对齐标准可能会发生冲突:例如,当用户请求一个潜在有害的响应时。 针对这种情况,我们采取如下方式,

  • 训练阶段优先考虑对用户的有用性 (否则就需要做出一些艰难的设计决策,我们留给未来的工作;更多讨论见 5.4 节)。
  • 最终评估阶段:要求标注员优先考虑真实性和无害性 (因为这是我们真正关心的)。

与 Stiennon 等 (2020) 一样,我们在项目过程中与标注员密切合作。我们有一个入职流程,对标注员进行培训, 为每个任务编写详细的说明 (见附录 B.2),并在群聊中回答标注员的问题。

3.4.3 对照度标注员:验证泛华能力

为了解 InstructGPT 推广到其他标注员的偏好时表现有多好, 我们雇佣了另一组独立的标注员,他们不参与编写任何训练数据。 这些标注员来自相同的供应商,但没有经过前面的筛选过程。

Despite the complexity of the task, we find that inter-annotator agreement rates are quite high: training labelers agree with each-other 72:6 ± 1:5% of the time, while for held-out labelers this number is 77:3 ± 1:3%. For comparison, in the summarization work of Stiennon et al. (2020) researcher-researcher agreement was 73 ± 4%.

3.5 Models(模型)

我们从 GPT-3 预训练模型开始微调。GPT-3 在大量互联网数据上进行了训练,适用于各种下游任务, 但其行为尚未充分符合人类需求。基于 GPT-3,我们使用三种不同技术进行了模型微调。

3.5.1 Supervised fine-tuning (SFT)

使用监督学习的方式,在我们的示范数据上对 GPT-3 进行微调。

  • 16 epoch
  • a cosine learning rate decay
  • residual dropout 0.2

得到很多个 SFT 模型。最后根据 validation set 上的 RM 分数选择最终的 SFT 模型。

与 Wu 等(2021)类似,我们发现我们的 SFT 模型在 1 个 epoch 后在 validation loss 上就会过拟合(overfit); 但是,同时我们发现,尽管存在过拟合问题,但更多 epoch 对 RM 分数和人类偏好得分都有帮助

3.5.2 Reward modeling (RM)

将 SFT 模型去掉最后的 unembedding 层,然后从这样的模型开始训练,

  • 输入:prompt 和 response
  • 输出:一个标量奖励。

最后得到的就是一个 RM 模型。

在本文中,我们仅使用 6B 的 RM,因为这样可以节省大量计算资源, 并且我们发现 175B 的 RM 训练可能不稳定,因此不太适合在 RL 中用作 value function(更多细节见附录 C)。

在 Stiennon 等(2020)中,给两个模型相同的输入,然后得到两份输出作为对比数据, RM 是在这个对比数据集(dataset of comparisons)上进行训练的

They use a cross-entropy loss, with the comparisons as labels—the difference in rewards represents the log odds that one response will be preferred to the other by a human labeler.

为了快速收集对比数据,我们将 $K=4$ 到 $K=9$ 之间的输出(即一个 input/prompt 喂给模型,得到 K 个 output)都提供给标注员,并要求他们对其进行排名(rank)。 这样每个 prompt 就对应 ${K \choose 2}$ 个对比数据。

由于每个 labeling task 内的 comparisons 非常相关,我们发现如果简单地 shuffle the comparisons into one dataset, 对数据集训练一次就会导致 RM 过拟合。

That is, if each of the possible ${K \choose 2}$ comparisons is treated as a separate data point, then each completion will potentially be used for $K-1$ separate gradient updates. The model tends to overfit after a single epoch, so repeating data within an epoch also causes it to overfit.

因此,我们将每个 prompt 的所有 ${K \choose 2}$ 个对比作为单个 batch element 进行训练。 这样做在计算上更加高效,因为只需要一次正向遍历(forward pass of the RM for each completion, 而不是 ${K \choose 2}$ forward passes for $K$ completions), 并且由于不再过拟合,它实现了更好的 validation accuracy and log loss。

具体来说,奖励模型的损失函数为:

\[\begin{equation} \label{eq1} \begin{split} \operatorname{loss}\left(\theta \right) = -\frac{1} {K \choose 2} E_{\left(x, y_{w}, y_{l}\right) \sim D}\left[\log \left(\sigma\left(r_{\theta}\left(x, y_{w}\right)-r_{\theta}\left(x, y_{l}\right)\right)\right)\right] \end{split} \end{equation}\]

其中,

  • \(x\):prompt(输入的提示词)
  • \(y\):completion(模型的返回)
  • $y_{w}$:the preferred completion out of the pair of $y_{w}$ and $y_{l}$
  • $D$:dataset of human comparisons(标注员给出的对比)
  • \(r_{\theta}(x, y)\):scalar output of the RM for prompt $x$ and completion $y$ with parameters $\theta$

最后,由于 RM loss 对奖励的平移不变,我们使用一个 bias 来对奖励模型进行归一化,这样标注员的示范在进行 RL 之前的平均分数为 0。

3.5.3 Reinforcement learning (RL)

再次沿用(Stiennon 等,2020),我们使用 PPO(Schulman 等,2017)对 SFT 模型进行微调。 我们创建一个 bandit 环境,

  • 给一个随机的客户 prompt,得到一个 response。
  • 给定一个 prompt 和相应的 response,会产生一个由 RM 确定的奖励,然后结束这一轮。

此外,我们添加了一个 per-token 的 KL 惩罚(来自 SFT 模型),以减轻奖励模型的过优化(over-optimization)。 值函数是从 RM 初始化的。我们将这些模型称为PPO

我们还尝试将预训练梯度(pretraining gradients)mixing into PPO 梯度中,以减轻在公开 NLP 数据集上的性能下降。 我们将这些模型称为PPO-ptx

我们在 RL 训练中最大化以下组合目标函数:

\begin{equation} \label{eq2} \begin{split} \operatorname{objective}\left(\phi\right)= & E_{\left(x, y\right) \sim D_{\pi_{\phi}^{\mathrm{RL}}}}\left[r_{\theta}(x, y)-\beta \log \left(\pi_{\phi}^{\mathrm{RL}}(y \mid x) / \pi^{\mathrm{SFT}}(y \mid x)\right)\right] +
& \gamma E_{x \sim D_\textrm{pretrain}}\left[\log(\pi_{\phi}^{\mathrm{RL}}(x))\right] \end{split} \end{equation}

其中

  • \(\pi_{\phi}^{\mathrm{RL}}\) 是学习到的 RL 策略,
  • \(\pi^{\mathrm{SFT}}\) 是 SFT 模型,
  • \(D_\textrm{pretrain}\) 是预训练分布(pretraining distribution)。
  • KL 奖励系数 \(\beta\) 和预训练损失系数 \(\gamma\) 分别控制 KL 惩罚和预训练梯度的强度(strength)。
  • 对于 “PPO” models,\(\gamma\) 设置为 0。

除非另有说明,在本文中,InstructGPT 指的是 PPO-ptx models

3.5.4 性能比较基线

我们将 PPO 模型与下列模型进行比较:

  1. SFT 模型
  2. GPT-3
  3. GPT-3-prompted:向 GPT-3 提供一个 few-shot prefix 以“提示”它进入指令跟随模式。在实现上,就是把这个前缀插入倒用户输入的指令之前。

    To obtain this prefix, authors RL and DA held a prefix-finding competition: each spent an hour interacting with GPT-3 to come up with their two best prefixes. The winning prefix was the one that led GPT-3 to attain the highest RM score on the prompt validation set. DA won.

  4. 在 FLAN 和 T0 数据集上微调过的 175B GPT-3

    这两个数据集都包含各种 NLP 任务,以及每个任务的自然语言指令。 我们分别在约 1 million examples 上对它们进行微调,并选择在验证集上获得最高奖励分数的 checkpoint。更多细节见附录 C。

3.6 性能评估

为了评估我们模型的“对齐”程度,首先需要明确“对齐”的含义。

一直以来,“对齐”的定义都很模糊和令人困惑,有很多提法(Chen 等,2021;Leike 等,2018;Gabriel,2020)。

按照 Leike 等(2018)的方法,我们的目标是训练符合用户意图的模型。 更实际地说,为了完成语言任务,我们使用了类似于 Askill 等(2021)的框架, 他们认为,如果模型是 helpful, honest, and harmless 的,那这个模型就是对齐的(aligned)。

3.6.1 指标

helpful

要做到有帮助,模型不仅要能遵循指令,还应该能从一个 few-shot prompt 或其他可解释的模式(例如 Q: {question}\nA:)中推断意图(infer intention)。

给定的 prompt 的意图可能不清楚,这种情况下就依赖于标注员的判断,我们的主要指标是标注员的偏好评分。 但另一方面,由于我们的标注员不是生成 prompt 的用户, 因此,下面二者之间可能存在偏差:

  • 用户的实际意图
  • 标注员通过 prompt 所理解的用户意图

honest / truthfulness

在纯生成式模型中如何衡量诚实度尚无定论;这需要将模型的实际输出与其关于正确输出的“信念”进行比较 (model’s actual output to its “belief” about the correct output), 由于模型是一个黑盒,我们无法推断它的信念。

因此,我们使用真实性(truthfulness)—— 模型关于世界的陈述是否真实 —— 来衡量。 具体到两个指标:

  1. 模型在封闭域任务中编造信息(make up information on closed domain tasks)的倾向,即“幻觉”(hallucinations),
  2. TruthfulQA 数据集(Lin 等,2021)上的表现。

显然,这只能覆盖真实性实际含义(what is actually meant by truthfulness)的一小部分。

harmless

与诚实度类似,衡量语言模型的有害性也很难。 在大多数情况下,语言模型的危害取决于其输出在现实世界中是如何被使用的。 例如,对于一个生成有毒输出的模型,

  • 如果部署在聊天机器人环境中,可能就是有害的,
  • 如果用于数据增强以训练更准确的毒性检测模型,则可能是有益的。

在项目早期,我们让标注员评估输出是否“可能有害”。 但后面经停止了这项工作,因为这需要太多关于输出最终将如何被使用的猜测(speculation), 尤其是我们的部分数据还来自 Playground API 客户。

因此,我们使用了一套更具体的替代方案,旨在捕捉最终部署的模型中可能导致有害的不同行为方面: 我们让标注员从一个用户助理的角度来评估输出是否恰当,是否 denigrates a protected class,或是否包含性或暴力内容。

我们还在衡量偏见和毒性的数据集上对 InstructGPT 进行基准测试,例如 RealToxicityPrompts(Gehman 等,2020)和 CrowS-Pairs(Nangia 等,2020)。

3.6.2 定量评估

我们的定量评估分为两个独立的部分。

在 OpenAI API 真实用户的 prompts 上的表现

数据来源:OpenAI Playground API(背后是 InstructGPT) 收集来的用户 prompts。 所以,评估用的 prompts 与训练用的 prompt 同源,但未参与训练, 也就是说只选择那些未参与训练的客户 prompts。

但这里有个问题,训练用的 prompt 是专门为 InstructGPT 设计的,因此 GPT-3 在这些 prompts 上的效果可能不佳,有失公平。 为此,我们还收集了用户通过 OpenAI GPT-3 API 提交的 prompts 进行评估;这些 prompt 通常不是“遵循指令”的风格,而是专门为 GPT-3 设计的。

主要评估指标是人类偏好评分。 对于每个模型,都计算其输出相对于 baseline 被人类偏好的频率; 这里用我们的 175B SFT 模型作为 baseline ,因为它的性能处于中等水平。 此外,我们要求标注员使用 1-7 Likert scale 判断每个 response 的整体质量,并为每个输出收集一些元数据(见表 3)。

Table 3: Labeler-collected metadata on the API distribution

Metadata Scale
Overall quality Likert scale; 1-7
Fails to follow the correct instruction / task Binary
Inappropriate for customer assistant Binary
Hallucination Binary
Satisifies constraint provided in the instruction Binary
Contains sexual content Binary
Contains violent content Binary
Encourages or fails to discourage violence/abuse/terrorism/self-harm Binary
Denigrates a protected class Binary
Gives harmful advice Binary
Expresses opinion Binary
Expresses moral judgment Binary

在公开 NLP 数据集上的表现

我们在两种公开数据集上进行评估:

  1. 能衡量模型安全性的数据集,特别是真实性、毒性和偏见;
  2. 能衡量在传统 NLP 任务(如问答、阅读理解和摘要)上的 zero-shot 性能的数据集。

我们还在 RealToxicityPrompts 数据集(Gehman 等,2020)上人工评估了毒性。

We are releasing samples from our models on all of the sampling-based NLP tasks.

4 结果

暂略。 见原文。

Figure 1: Human evaluations of various models on our API prompt distribution, evaluated by how often outputs from each model were preferred to those from the 175B SFT model. Our InstructGPT models (PPO-ptx) as well as its variant trained without pretraining mix (PPO) significantly outperform the GPT-3 baselines (GPT, GPT prompted); outputs from our 1.3B PPO-ptx model are preferred to those from the 175B GPT-3. Error bars throughout the paper are 95% confidence intervals

5 问题讨论

暂略。 见原文。

参考文献

  • Abramson, J., Ahuja, A., Barr, I., Brussee, A., Carnevale, F., Cassin, M., Chhaparia, R., Clark, S., Damoc, B., Dudzik, A., et~al. (2020). Imitating interactive intelligence. arXiv preprint arXiv:2012.05672
  • Achiam, J., Held, D., Tamar, A., and Abbeel, P. (2017). Constrained policy optimization. In International Conference on Machine Learning pages 22–31. PMLR.
  • Anthony, T., Tian, Z., and Barber, D. (2017). Thinking fast and slow with deep learning and tree search. arXiv preprint arXiv:1705.08439
  • Aribandi, V., Tay, Y., Schuster, T., Rao, J., Zheng, H.~S., Mehta, S.~V., Zhuang, H., Tran, V.~Q., Bahri, D., Ni, J., et~al. (2021). Ext5: Towards extreme multi-task scaling for transfer learning. arXiv preprint arXiv:2111.10952
  • Askell, A., Bai, Y., Chen, A., Drain, D., Ganguli, D., Henighan, T., Jones, A., Joseph, N., Mann, B., DasSarma, N., et~al. (2021). A general language assistant as a laboratory for alignment. arXiv preprint arXiv:2112.00861
  • Bahdanau, D., Brakel, P., Xu, K., Goyal, A., Lowe, R., Pineau, J., Courville, A., and Bengio, Y. (2016). An actor-critic algorithm for sequence prediction. arXiv preprint arXiv:1607.07086
  • Bahdanau, D., Hill, F., Leike, J., Hughes, E., Hosseini, A., Kohli, P., and Grefenstette, E. (2018). Learning to understand goal specifications by modelling reward. arXiv preprint arXiv:1806.01946
  • Bender, E.~M., Gebru, T., McMillan-Major, A., and Shmitchell, S. (2021). On the dangers of stochastic parrots: Can language models be too big? In Proceedings of the 2021 ACM Conference on Fairness, Accountability, and Transparency pages 610–623.
  • Blodgett, S.~L., Barocas, S., Daum{'e}~III, H., and Wallach, H. (2020). Language (technology) is power: A critical survey of” bias” in nlp. arXiv preprint arXiv:2005.14050
  • B{"o}hm, F., Gao, Y., Meyer, C.~M., Shapira, O., Dagan, I., and Gurevych, I. (2019). Better rewards yield better summaries: Learning to summarise without references. arXiv preprint arXiv:1909.01214
  • Bojar, O., Chatterjee, R., Federmann, C., Haddow, B., Huck, M., Hokamp, C., Koehn, P., Logacheva, V., Monz, C., Negri, M., Post, M., Scarton, C., Specia, L., and Turchi, M. (2015). Findings of the 2015 workshop on statistical machine translation. In Proceedings of the Tenth Workshop on Statistical Machine Translation pages 1–46, Lisbon, Portugal. Association for Computational Linguistics.
  • Bommasani, R., Hudson, D.~A., Adeli, E., Altman, R., Arora, S., von Arx, S., Bernstein, M.~S., Bohg, J., Bosselut, A., Brunskill, E., et~al. (2021). On the opportunities and risks of foundation models. arXiv preprint arXiv:2108.07258
  • Bostrom, N. (2014). Superintelligence Dunod.
  • Brown, T.~B., Mann, B., Ryder, N., Subbiah, M., Kaplan, J., Dhariwal, P., Neelakantan, A., Shyam, P., Sastry, G., Askell, A., et~al. (2020). Language models are few-shot learners. arXiv preprint arXiv:2005.14165
  • Buchanan, B., Lohn, A., Musser, M., and Sedova, K. (2021). Truth, lies, and automation. Technical report, Center for the Study of Emerging Technology.
  • Caliskan, A., Bryson, J.~J., and Narayanan, A. (2017). Semantics derived automatically from language corpora contain human-like biases. Science 356(6334):183–186.
  • Carlini, N., Tramer, F., Wallace, E., Jagielski, M., Herbert-Voss, A., Lee, K., Roberts, A., Brown, T., Song, D., Erlingsson, U., et~al. (2021). Extracting training data from large language models. In 30th USENIX Security Symposium (USENIX Security 21) pages 2633–2650.
  • Chen, M., Tworek, J., Jun, H., Yuan, Q., Pinto, H. P. d.~O., Kaplan, J., Edwards, H., Burda, Y., Joseph, N., Brockman, G., et~al. (2021). Evaluating large language models trained on code. arXiv preprint arXiv:2107.03374
  • Cho, W.~S., Zhang, P., Zhang, Y., Li, X., Galley, M., Brockett, C., Wang, M., and Gao, J. (2018). Towards coherent and cohesive long-form text generation. arXiv preprint arXiv:1811.00511
  • Choi, E., He, H., Iyyer, M., Yatskar, M., Yih, W.-t., Choi, Y., Liang, P., and Zettlemoyer, L. (2018). Quac: Question answering in context. In Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing pages 2174–2184.
  • Christiano, P., Cotra, A., and Xu, M. (2021). Eliciting latent knowledge: How to tell if your eyes deceive you. https://www.alignmentforum.org/posts/qHCDysDnvhteW7kRd/arc-s-first-technical-report-eliciting-latent-knowledge
  • Christiano, P., Shlegeris, B., and Amodei, D. (2018). Supervising strong learners by amplifying weak experts. arXiv preprint arXiv:1810.08575
  • Christiano, P.~F., Leike, J., Brown, T., Martic, M., Legg, S., and Amodei, D. (2017). Deep reinforcement learning from human preferences. In Advances in Neural Information Processing Systems pages 4299–4307.
  • Dathathri, S., Madotto, A., Lan, J., Hung, J., Frank, E., Molino, P., Yosinski, J., and Liu, R. (2019). Plug and play language models: A simple approach to controlled text generation. arXiv preprint arXiv:1912.02164
  • Dhamala, J., Sun, T., Kumar, V., Krishna, S., Pruksachatkun, Y., Chang, K.-W., and Gupta, R. (2021). Bold: Dataset and metrics for measuring biases in open-ended language generation. In Proceedings of the 2021 ACM Conference on Fairness, Accountability, and Transparency pages 862–872.
  • Dinan, E., Fan, A., Williams, A., Urbanek, J., Kiela, D., and Weston, J. (2019a). Queens are powerful too: Mitigating gender bias in dialogue generation. arXiv preprint arXiv:1911.03842
  • Dinan, E., Humeau, S., Chintagunta, B., and Weston, J. (2019b). Build it break it fix it for dialogue safety: Robustness from adversarial human attack. arXiv preprint arXiv:1908.06083
  • Dua, D., Wang, Y., Dasigi, P., Stanovsky, G., Singh, S., and Gardner, M. (2019). Drop: A reading comprehension benchmark requiring discrete reasoning over paragraphs. arXiv preprint arXiv:1903.00161
  • Fedus, W., Zoph, B., and Shazeer, N. (2021). Switch transformers: Scaling to trillion parameter models with simple and efficient sparsity. arXiv preprint arXiv:2101.03961
  • Gabriel, I. (2020). Artificial intelligence, values, and alignment. Minds and machines 30(3):411–437.
  • Gehman, S., Gururangan, S., Sap, M., Choi, Y., and Smith, N.~A. (2020). Realtoxicityprompts: Evaluating neural toxic degeneration in language models. arXiv preprint arXiv:2009.11462
  • Hancock, B., Bordes, A., Mazare, P.-E., and Weston, J. (2019). Learning from dialogue after deployment: Feed yourself, chatbot! arXiv preprint arXiv:1901.05415
  • Henderson, P., Sinha, K., Angelard-Gontier, N., Ke, N.~R., Fried, G., Lowe, R., and Pineau, J. (2018). Ethical challenges in data-driven dialogue systems. In Proceedings of the 2018 AAAI/ACM Conference on AI, Ethics, and Society pages 123–129.
  • Huang, P.-S., Zhang, H., Jiang, R., Stanforth, R., Welbl, J., Rae, J., Maini, V., Yogatama, D., and Kohli, P. (2019). Reducing sentiment bias in language models via counterfactual evaluation. arXiv preprint arXiv:1911.03064
  • Ibarz, B., Leike, J., Pohlen, T., Irving, G., Legg, S., and Amodei, D. (2018). Reward learning from human preferences and demonstrations in atari. In Advances in neural information processing systems pages 8011–8023.
  • Irving, G., Christiano, P., and Amodei, D. (2018). {AI} safety via debate. arXiv preprint arXiv:1805.00899
  • Jaques, N., Ghandeharioun, A., Shen, J.~H., Ferguson, C., Lapedriza, A., Jones, N., Gu, S., and Picard, R. (2019). Way off-policy batch deep reinforcement learning of implicit human preferences in dialog. arXiv preprint arXiv:1907.00456
  • Kenton, Z., Everitt, T., Weidinger, L., Gabriel, I., Mikulik, V., and Irving, G. (2021). Alignment of language agents. arXiv preprint arXiv:2103.14659
  • Keskar, N.~S., McCann, B., Varshney, L.~R., Xiong, C., and Socher, R. (2019). Ctrl: A conditional transformer language model for controllable generation. arXiv preprint arXiv:1909.05858
  • Khashabi, D., Min, S., Khot, T., Sabharwal, A., Tafjord, O., Clark, P., and Hajishirzi, H. (2020). Unifiedqa: Crossing format boundaries with a single qa system. arXiv preprint arXiv:2005.00700
  • Kirk, H., Jun, Y., Iqbal, H., Benussi, E., Volpin, F., Dreyer, F.~A., Shtedritski, A., and Asano, Y.~M. (2021). How true is gpt-2? an empirical analysis of intersectional occupational biases. arXiv preprint arXiv:2102.04130
  • Krause, B., Gotmare, A.~D., McCann, B., Keskar, N.~S., Joty, S., Socher, R., and Rajani, N.~F. (2020). Gedi: Generative discriminator guided sequence generation. arXiv preprint arXiv:2009.06367
  • Kreutzer, J., Khadivi, S., Matusov, E., and Riezler, S. (2018). Can neural machine translation be improved with user feedback? arXiv preprint arXiv:1804.05958
  • Lawrence, C. and Riezler, S. (2018). Improving a neural semantic parser by counterfactual learning from human bandit feedback. arXiv preprint arXiv:1805.01252
  • Leike, J., Krueger, D., Everitt, T., Martic, M., Maini, V., and Legg, S. (2018). Scalable agent alignment via reward modeling: a research direction. arXiv preprint arXiv:1811.07871
  • Leike, J., Martic, M., Krakovna, V., Ortega, P.~A., Everitt, T., Lefrancq, A., Orseau, L., and Legg, S. (2017). {AI} safety gridworlds. arXiv preprint arXiv:1711.09883
  • Liang, P.~P., Wu, C., Morency, L.-P., and Salakhutdinov, R. (2021). Towards understanding and mitigating social biases in language models. In International Conference on Machine Learning pages 6565–6576. PMLR.
  • Lin, S., Hilton, J., and Evans, O. (2021). Truthfulqa: Measuring how models mimic human falsehoods. arXiv preprint arXiv:2109.07958
  • Liu, H., Dacon, J., Fan, W., Liu, H., Liu, Z., and Tang, J. (2019). Does gender matter? towards fairness in dialogue systems. arXiv preprint arXiv:1910.10486
  • Madaan, A., Tandon, N., Clark, P., and Yang, Y. (2022). Memory-assisted prompt editing to improve gpt-3 after deployment. arXiv preprint arXiv:2201.06009
  • Manela, D. d.~V., Errington, D., Fisher, T., van Breugel, B., and Minervini, P. (2021). Stereotype and skew: Quantifying gender bias in pre-trained and fine-tuned language models. arXiv preprint arXiv:2101.09688
  • Mishra, S., Khashabi, D., Baral, C., and Hajishirzi, H. (2021). Cross-task generalization via natural language crowdsourcing instructions. arXiv preprint arXiv:2104.08773
  • Nadeem, M., Bethke, A., and Reddy, S. (2020). Stereoset: Measuring stereotypical bias in pretrained language models. arXiv preprint arXiv:2004.09456
  • Nahian, M. S.~A., Frazier, S., Harrison, B., and Riedl, M. (2021). Training value-aligned reinforcement learning agents using a normative prior. arXiv preprint arXiv:2104.09469
  • Nakano, R., Hilton, J., Balaji, S., Wu, J., Ouyang, L., Kim, C., Hesse, C., Jain, S., Kosaraju, V., Saunders, W., et~al. (2021). Webgpt: Browser-assisted question-answering with human feedback. arXiv preprint arXiv:2112.09332
  • Nallapati, R., Zhou, B., Gulcehre, C., Xiang, B., et~al. (2016). Abstractive text summarization using sequence-to-sequence rnns and beyond. arXiv preprint arXiv:1602.06023
  • Nangia, N., Vania, C., Bhalerao, R., and Bowman, S.~R. (2020). {CrowS-Pairs: A Challenge Dataset for Measuring Social Biases in Masked Language Models In Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing Online. Association for Computational Linguistics.
  • Ngo, H., Raterink, C., Ara{'u}jo, J.~G., Zhang, I., Chen, C., Morisot, A., and Frosst, N. (2021). Mitigating harm in language models with conditional-likelihood filtration. arXiv preprint arXiv:2108.07790
  • Perez, E., Karamcheti, S., Fergus, R., Weston, J., Kiela, D., and Cho, K. (2019). Finding generalizable evidence by learning to convince q\&a models. arXiv preprint arXiv:1909.05863
  • Qian, Y., Muaz, U., Zhang, B., and Hyun, J.~W. (2019). Reducing gender bias in word-level language models with a gender-equalizing loss function. arXiv preprint arXiv:1905.12801
  • Radford, A., Wu, J., Child, R., Luan, D., Amodei, D., and Sutskever, I. (2019). Language models are unsupervised multitask learners. OpenAI Blog 1(8):9.
  • Rae, J.~W., Borgeaud, S., Cai, T., Millican, K., Hoffmann, J., Song, F., Aslanides, J., Henderson, S., Ring, R., Young, S., et~al. (2021). Scaling language models: Methods, analysis \& insights from training gopher. arXiv preprint arXiv:2112.11446
  • Rajpurkar, P., Jia, R., and Liang, P. (2018). Know what you don’t know: Unanswerable questions for squad. arXiv preprint arXiv:1806.03822
  • Rudinger, R., Naradowsky, J., Leonard, B., and {Van Durme B. (2018). Gender bias in coreference resolution. In Proceedings of the 2018 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies New Orleans, Louisiana. Association for Computational Linguistics.
  • Sanh, V., Webson, A., Raffel, C., Bach, S.~H., Sutawika, L., Alyafeai, Z., Chaffin, A., Stiegler, A., Scao, T.~L., Raja, A., et~al. (2021). Multitask prompted training enables zero-shot task generalization. arXiv preprint arXiv:2110.08207
  • Schick, T., Udupa, S., and Schutze, H. (2021). Self-diagnosis and self-debiasing: A proposal for reducing corpus-based bias in nlp. arXiv preprint arXiv:2103.00453
  • Schulman, J., Moritz, P., Levine, S., Jordan, M., and Abbeel, P. (2016). High-dimensional continuous control using generalized advantage estimation. In Proceedings of the International Conference on Learning Representations (ICLR)
  • Schulman, J., Wolski, F., Dhariwal, P., Radford, A., and Klimov, O. (2017). Proximal policy optimization algorithms. arXiv preprint arXiv:1707.06347
  • Sheng, E., Chang, K.-W., Natarajan, P., and Peng, N. (2019). The woman worked as a babysitter: On biases in language generation. arXiv preprint arXiv:1909.01326
  • Silver, D., Hubert, T., Schrittwieser, J., Antonoglou, I., Lai, M., Guez, A., Lanctot, M., Sifre, L., Kumaran, D., Graepel, T., et~al. (2017). Mastering chess and shogi by self-play with a general reinforcement learning algorithm. arXiv preprint arXiv:1712.01815
  • Soares, N., Fallenstein, B., Armstrong, S., and Yudkowsky, E. (2015). Corrigibility. In Workshops at the Twenty-Ninth AAAI Conference on Artificial Intelligence
  • Socher, R., Perelygin, A., Wu, J., Chuang, J., Manning, C.~D., Ng, A.~Y., and Potts, C. (2013). Recursive deep models for semantic compositionality over a sentiment treebank. In Proceedings of the 2013 conference on empirical methods in natural language processing pages 1631–1642.
  • Solaiman, I., Brundage, M., Clark, J., Askell, A., Herbert-Voss, A., Wu, J., Radford, A., Krueger, G., Kim, J.~W., Kreps, S., et~al. (2019). Release strategies and the social impacts of language models. arXiv preprint arXiv:1908.09203
  • Solaiman, I. and Dennison, C. (2021). Process for adapting language models to society (palms) with values-targeted datasets. arXiv preprint arXiv:2106.10328
  • Stiennon, N., Ouyang, L., Wu, J., Ziegler, D.~M., Lowe, R., Voss, C., Radford, A., Amodei, D., and Christiano, P. (2020). Learning to summarize from human feedback. arXiv preprint arXiv:2009.01325
  • Tamkin, A., Brundage, M., Clark, J., and Ganguli, D. (2021). Understanding the capabilities, limitations, and societal impact of large language models. arXiv preprint arXiv:2102.02503
  • Thoppilan, R., De~Freitas, D., Hall, J., Shazeer, N., Kulshreshtha, A., Cheng, H.-T., Jin, A., Bos, T., Baker, L., Du, Y., et~al. (2022). Lamda: Language models for dialog applications. arXiv preprint arXiv:2201.08239
  • Vig, J., Gehrmann, S., Belinkov, Y., Qian, S., Nevo, D., Singer, Y., and Shieber, S.~M. (2020). Investigating gender bias in language models using causal mediation analysis. In NeurIPS
  • Volske, M., Potthast, M., Syed, S., and Stein, B. (2017). Tl; dr: Mining reddit to learn automatic summarization. In Proceedings of the Workshop on New Frontiers in Summarization pages 59–63.
  • Wang, A., Pruksachatkun, Y., Nangia, N., Singh, A., Michael, J., Hill, F., Levy, O., and Bowman, S.~R. (2019). Superglue: A stickier benchmark for general-purpose language understanding systems. arXiv preprint arXiv:1905.00537
  • Wei, J., Bosma, M., Zhao, V.~Y., Guu, K., Yu, A.~W., Lester, B., Du, N., Dai, A.~M., and Le, Q.~V. (2021). Finetuned language models are zero-shot learners. arXiv preprint arXiv:2109.01652
  • Weidinger, L., Mellor, J., Rauh, M., Griffin, C., Uesato, J., Huang, P.-S., Cheng, M., Glaese, M., Balle, B., Kasirzadeh, A., et~al. (2021). Ethical and social risks of harm from language models. arXiv preprint arXiv:2112.04359
  • Welbl, J., Glaese, A., Uesato, J., Dathathri, S., Mellor, J., Hendricks, L.~A., Anderson, K., Kohli, P., Coppin, B., and Huang, P.-S. (2021). Challenges in detoxifying language models. arXiv preprint arXiv:2109.07445
  • Wu, J., Ouyang, L., Ziegler, D.~M., Stiennon, N., Lowe, R., Leike, J., and Christiano, P. (2021). Recursively summarizing books with human feedback. arXiv preprint arXiv:2109.10862
  • Xu, A., Pathak, E., Wallace, E., Gururangan, S., Sap, M., and Klein, D. (2021). Detoxifying language models risks marginalizing minority voices. arXiv preprint arXiv:2104.06390
  • Xu, J., Ju, D., Li, M., Boureau, Y.-L., Weston, J., and Dinan, E. (2020). Recipes for safety in open-domain chatbots. arXiv preprint arXiv:2010.07079
  • Yi, S., Goel, R., Khatri, C., Cervone, A., Chung, T., Hedayatnia, B., Venkatesh, A., Gabriel, R., and Hakkani-Tur, D. (2019). Towards coherent and engaging spoken dialog response generation using automatic conversation evaluators. arXiv preprint arXiv:1904.13015
  • Zellers, R., Holtzman, A., Bisk, Y., Farhadi, A., and Choi, Y. (2019). Hellaswag: Can a machine really finish your sentence? In Association for Computational Linguistics pages 4791–4800.
  • Zhao, M., Anderson, P., Jain, V., Wang, S., Ku, A., Baldridge, J., and Ie, E. (2021). On the evaluation of vision-and-language navigation instructions. arXiv preprint arXiv:2101.10504
  • Zhou, W. and Xu, K. (2020). Learning to compare for better training and evaluation of open domain natural language generation models. arXiv preprint arXiv:2002.05058
  • Ziegler, D.~M., Stiennon, N., Wu, J., Brown, T.~B., Radford, A., Amodei, D., Christiano, P., and Irving, G. (2019). Fine-tuning language models from human preferences. arXiv preprint arXiv:1909.08593

附录 A: Prompt 数据详情

Prompt 长什么样非常重要,因此这里给出完整附录。此外,有些 prompts 很有意思。译注。

A.1 Labeler-written prompts

We first give slightly more details on our prompt boostrapping process. As previously mentioned, for the majority of the project, we obtained prompts directly from external users of the instruct beta models in the OpenAI API. However, this strategy only works once you have a model that accepts instruction-like prompts. In order to train the very first such model, we asked contractors to write prompts themselves. We asked labelers to write three kinds of prompts:

  • Plain: We simply ask the labelers to come up with an arbitrary task, while ensuring diversity of tasks.
  • Few-shot: We ask the labelers to come up with an instruction, and multiple query/response pairs for that instruction. For example, the instruction could be “Give the sentiment for a tweet,” and the queries would be tweets and the responses either “Positive” or “Negative.” We can then format these as few-shot prompts like those in Brown et al. (2020). With K query-response pairs, we create K training examples using the other K-1 in the context.
  • User-based: We had a number of use-cases stated in applications to the OpenAI API. We asked labelers to come up with prompts corresponding to these use cases.

In order to preserve the anonymity of the application information, we had a separate labeler create vague high level tasks based on looking at a list of applications, modifying the task descriptions to eliminate any information that were specific to a given application. This data was used to train the first InstructGPT model via supervised learning, which was deployed in beta in the API in early 2021.

A.2 API user prompts

For API prompts, we use prompts submitted by users to the aforementioned earlier version of the InstructGPT model on the OpenAI API Playground. Throughout the paper, we only use data from the Playground, rather than customers using our model in production, as it was easier to get informed consent: every time a user switched to an InstructGPT model, an alert message would pop up stating that prompts submitted to these models could be used to train future versions of our models. We also communicated this in a message on the developer Slack channel upon launching the beta of the InstructGPT models. We filter out prompts from the training split containing personally identifiable information (PII).

To ensure a diversity of use cases, we heuristically deduplicate prompts by checking for prompts that share a long common prefix, and limited the number of prompts to roughly 200 per organization. In addition, we create train, validation, and test splits based on organization IDs, so that e.g. the validation set contains different use cases than the training set. We conceptualized API requests as belonging to one of ten use cases: generation, open QA, closed QA, brainstorming, chat, rewriting, summarization, classification, extraction, or other. Below, we show fictional but realistic prompts from a variety of use cases:

A.2.1 从 InstructGPT API (Playground) 收集上来的 user prompts 示例

Use Case Example
brainstorming List five ideas for how to regain enthusiasm for my career
brainstorming What are some key points I should know when studying Ancient Greece?
brainstorming What are 4 questions a user might have after reading the instruction manual for a trash compactor?

{user manual}

1.
brainstorming What are 10 science fiction books I should read next?
classification Take the following text and rate, on a scale from 1-10, how sarcastic the person is being (1 = not at all, 10 = extremely sarcastic). Also give an explanation

{text}

Rating:
classification This is a list of tweets and the sentiment categories they fall into.

Tweet: {tweet_content1}
Sentiment: {sentiment1}

Tweet: {tweet_content2}
Sentiment: {sentiment2}
classification {java code}

What language is the code above written in?
classification You are a very serious professor, and you check papers to see if they contain missing citations. Given the text, say whether it is missing an important citation (YES/NO) and which sentence(s) require citing.

{text of paper}
extract Extract all course titles from the table below:

| Title | Lecturer | Room |
| Calculus 101 | Smith | Hall B |
| Art History | Paz | Hall A |
extract Extract all place names from the article below:

{news article}
extract Given the following list of movie titles, write down any names of cities in the titles.

{movie titles}
generation Write a creative ad for the following product to run on Facebook aimed at parents:

Product: {product description}
generation Write a short story where a brown bear to the beach, makes friends with a seal, and then return home.
generation Here’s a message to me:

{email}


Here are some bullet points for a reply:

{message}


Write a detailed reply
generation This is an article about how to write a cover letter when applying for jobs:

It’s important to spend some time
generation write rap lyrics on the topics mentioned in this news article:

{article}
rewrite This is the summary of a Broadway play:
“”“
{summary}
“”“

This is the outline of the commercial for that play:
“””
rewrite Translate this sentence to Spanish:

rewrite Create turn-by-turn navigation given this text:

Go west on {road1} unto you hit {road2}. then take it east to {road3}.
Desination will be a red barn on the right

1.
rewrite Rewrite the following text to be more light-hearted:

{very formal text}
chat The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.

Human: Hello, who are you?
AI: I am an AI created by OpenAI. How can I help you today?
Human: I’d like to cancel my subscription.
AI:
chat Marv is a chatbot that reluctantly answers questions with sarcastic responses:

You: How many pounds are in a kilogram?
Marv: This again? There are 2.2 pounds in a kilogram. Please make a note of this.
You: What does HTML stand for?
Marv: Was Google too busy? Hypertext Markup Language. The T is for try to ask better questions in the future.
You: When did the first airplane fly?
Marv:
chat This is a conversation with an enlightened Buddha. Every response is full of wisdom and love.

Me: How can I achieve greater peace and equanimity?
Buddha:
closed qa Help me answer questions about the following short story:

{story}

What is the moral of the story?
closed qa Answer the following question:
What shape is the earth?

A) A circle
B) A sphere
C) An ellipse
D) A plane
closed qa Tell me how hydrogen and helium are different, using the following facts:
{list of facts}
open qa I am a highly intelligent question answering bot. If you ask me a question that is rooted in truth, I will give you the answer. If you ask me a question that is nonsense, trickery, or has no clear answer, I will respond with “Unknown”.

Q: What is human life expectancy in the United States?
A: Human life expectancy in the United States is 78 years.
Q: Who was president of the United States in 1955?
A:
open qa Who built the statue of liberty?
open qa How do you take the derivative of the sin function?
open qa who are the indiginous people of New Zealand?
summarization Summarize this for a second-grade student:
{text}
summarization {news article}

Tl;dr:
summarization {chat transcript}

Summarize the above conversation between a customer and customer assistant. Make sure to state any complaints that the customer has.
other start with where
other Look up “cowboy” on Google and give me the results.
other Johnathan Silver goes to the market every day, and brings back a

Next, we list some schematic examples of API requests for each use-case category, for prompts submitted to GPT-3 models. These are generally less ‘instruction-style’, and contain more explicit prompting. Note that there are some prompts where the user intent is unclear.

A.2.2 从 GPT-3 API 收集上来的 user prompts 示例

Use Case Example
brainstorming indie movie ideas:
- A guy travels to South America to become a shaman.
- A documentary about the world of juggling.
brainstorming Baby name ideas for a boy:
1. Alfred
2. Theo
3.
brainstorming Tell me a list of topics related to:
- interior design
- sustainable ecosyste
ms - fake plants
brainstorming Name some rare gems
classification This is a tweet sentiment classifier.

{tweet}
Sentiment: negative
===
{tweet}
Sentiment: neutral
===
{tweet}
Sentiment:
classification The following is a list of products and the kind of product they are.
Product: {product}. Type: {type}
Product: {product}. Type: {type}
Product: {product}. Type:
classification The following is a list of companies and the categories they fall into:
Apple, Facebook, Fedex
Apple
Category: Technology
Facebook
Category: Social Media
Fedex
Category:
extract Text: {text}
Keywords:
generation “Hey, what are you doing there?” Casey was startled. He hadn’t even begun to
generation The name of the next Star Wars movie is
generation This is the research for an essay:
===
{description of research}
===
Write a high school essay on these topics:
===
generation Write an outline for an essay about John von Neumann and his contributions to computing:
I. Introduction, his life and background
A: His early life
B:
rewrite Covert my resume into a profile overview.
{resume}
Profile overview:
rewrite Rephrase this for me: “I can’t seem to find out how to work this darn thing.”
Alternate phrasing: “
rewrite Original: She no go to sleep.
Standard American English: She didn’t go to sleep

Original: It real bad for I to make do of this.
Standard American English:
chat The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.

Human: Hello, who are you?
AI: I am an AI created by OpenAI. How can I help you today?
Human: I’m feeling kind of down today.
AI:
chat This is a conversation with Steven. Steven likes to watch Netflix and hasn’t left his home in 2 weeks.

John: Hey man what’s up?
Steven: Exactly the same thing as yesterday. you know.
John: So we’re going to go see a movie on Thursday, want to come?
Steven: Ummmm don’t think so….
closed qa When you drop a heavy stone from a tree, what happens?
A. The stone falls to the ground.
B: The stone stays in the tree.
C: The stone floats.
D: Nothing happens.
Answer:
closed qa Text:
{article describing what yoga mats to buy}
Question: What are the things I should consider when buying a yoga mat?
Answer:
open qa Q: Who is Batman?
A: Batman is a fictional comic book character.
Q: What is torsalplexity?
A: ?
Q: What is Devz9?
A: ?
Q: Who is George Lucas?
A: George Lucas is American film director and producer famous for creating Star Wars.
Q: What is the capital of California?
A:
open qa Who was the best human who ever lived?
open qa Q: Who is Leonardo da Vinci?
A:
summarization My second grader asked me what this passage means.

“”“
{text}
“”“

I rephrased it for him in plain terms that a second grader could understand:

“””
summarization ””“
{text}
“”“

I summarized the above as:
other She said, and I quote
AI:
other - I like to play Call of Duty
- I like to play Call of Duty
- I like to play Call of Duty
- I like to play Call of Duty

A.3 数据集大小:SFT 15k / RM 50k / PPO 47k

用来 train/validate SFT, RM, RL 三个模型的数据集大小,以及多少是标注员写的,多少来自 OpenAI API 的用户数据,

Table 6: Dataset sizes, in terms of number of prompts.

split source size
SFT train labeler 11,295
SFT train customer 1,430
SFT valid labeler 1,550
SFT valid customer 103
SFT 总计   ~15k
RM train labeler 6,623
RM train customer 26,584
RM valid labeler 3,488
RM valid customer 14,399
RM 总计   ~50k
PPO train customer 31,144
PPO valid customer 16,185
PPO 总计   ~47k

For SFT, note that we have many more labeler-written prompts than customer prompts—this is because, at the start of the project, we had labelers write instructions with a user interface that asked them to give an overarching template instruction as well as few-shot examples for that instruction.

We synthetically constructed multiple SFT datapoints from the same instruction by sampling different sets of few-shot examples.

For the RM, recall that for every prompt, we collected rankings for K outputs (ranging from 4 to 9) and trained the model on all K2, so the number of ranked pairs we trained the model on is an order of magnitude larger than the number of prompts.

A.4 数据多样性

The data that we collect spans a wide range of categories and use cases. Table 1 shows the diversity of categories in our RM training and validation datasets,来自标注员的打标。The distribution of categories for the PPO datasets was similar. We additionally show a subset of our labeled prompt metadata in Table 7.

Table 7: Dataset annotations

Annotation RM test RM train SFT valid SFT train SFT valid
Ambiguous 7.9% 8.0% 5.1% 6.4%
Sensitive content 6.9% 5.3% 0.9% 1.0%
Identity dependent 0.9% 0.3%
Closed domain 11.8% 19.4% 22.9% 27.4% 40.6%
Continuation style 15.5% 16.2% 17.9% 21.6%
Requests opinionated content 11.2% 7.7% 7.5% 8.6% 3.4%
Requests advice 3.9%   -
Requests moral judgment 0.8% 1.1% 0.3% 0.3% 0.0%
Contains explicit safety constraints 0.4% 0.4% 0.3% 0.0%
Contains other explicit constraints 26.3% 28.9% 25.6% 20.7%
Intent unclear 7.9%

Note that our annotation fields changed over the course of the project, so not every prompt was annotated for every field.

We used a lightweight classifier (langid.py) to classify the language of all instructions in our dataset. Empirically, around 96% of our dataset (110k datapoints) is classified as English, although we estimate that the actual fraction may be 99% or higher, due to classifier inaccuracies. Besides English, a small minority of prompts were found in at least 20 other languages: Spanish, French, German, Portuguese, Italian, Dutch, Romanian, Catalan, Chinese, Japanese, Swedish, Polish, Danish, Turkish, Indonesian, Czech, Norwegian, Korean, Finnish, Hungarian, Hebrew, Russian, Lithuanian, Esperanto, Slovak, Croatian, Swahili, Estonian, Slovenian, Arabic, Thai, Vietnamese, Malayalam, Greek, Albanian, and Tibetan.

Table 8 shows the average number of prompts each customer contributed to the dataset.

Table 8: Average prompts per customer

Model Split Prompts per customer
SFT train 1.65
SFT valid 1.87
RM t rain 5.35
RM v alid 27.96
PPO train 6.01
PPO valid 31.55
test 1.81

Table 9: Prompt lengths by dataset

Model Split Count Mean Std Min 25% 50% 75% Max
SFT train 12725 408 433 1 37 283 632 2048
SFT valid 1653 401 433 4 41 234 631 2048
RM train 33207 199 334 1 20 64 203 2032
RM valid 17887 209 327 1 26 77 229 2039
PPO train 31144 166 278 2 19 62 179 2044
PPO valid 16185 186 292 1 24 71 213 2039
test set 3196 115 194 1 17 49 127 1836

In Table 9, we report descriptive statistics for prompt lengths (in tokens) used to train various models, and in Table 10 we break down token lengths by use case.

Table 10: Prompt lengths by category

Category Count Mean Std Min 25% 50% 75% Max
Brainstorming 5245 83 149 4 17 36 85 1795
Chat 3911 386 376 1 119 240 516 1985
Classification 1615 223 318 6 68 124 205 2039
Extract 971 304 373 3 74 149 390 1937
Generation 21684 130 223 1 20 52 130 1999
QA, closed 1398 325 426 5 68 166 346 2032
QA, open 6262 89 193 1 10 18 77 1935
Rewrite 3168 183 237 4 52 99 213 1887
Summarization 1962 424 395 6 136 284 607 1954
Other 1767 180 286 1 20 72 188 1937

Table 11: Prompt and demonstration lengths

Prompt source Measurement Count Mean Std Min 25% 50% 75% Max
Contractor prompt length 12845 437 441 5 42 324 673 2048
Contractor demo length 12845 38 76 1 9 18 41 2048
Customer prompt length 1533 153 232 1 19 67 186 1937
Customer demo length 1533 88 179 0 15 39 88 2048

Finally, we also report lengths of contractor-written demonstrations used for our SFT model in table 11, both for contractor-written and labeler-written prompts.

附录 B:Additional human data collection details

暂略。见原文。

附录 C:一些模型细节

  • 所有模型都使用 GPT-3 架构(Brown et al., 2020)。
  • 对于奖励模型和值函数,原始模型的 unembedding 层替换为一个 projection 层,最终输出一个标量值。
  • 所有模型都使用 fp16 权重和激活,with fp32 master copies of weights。
  • 所有模型使用与 Brown et al. (2020)中相同的字节对编码(byte pair encodings)。
  • 所有的模型和 RL 策略都使用长度为 2k token 的上下文。
  • 输入 prom:长度超过 1k token 的都不要;
  • 输出 response:限制最大响应长度为 1k token
  • 所有模型都使用 Adam optimizer 进行训练,设置 β1 = 0.9β2 = 0.95

C.1 SFT 训练细节

SFT 模型训练

  • 16 epochs
  • residual dropout 0.2
  • cosine LR schedule,降至到初始学习率的 10%,没有 learning rate warmup。
  • 1.3B 和 6B 模型:LR 9.65e-6,batch 32 batch。在 7 个 LR 上做 geometric search 选出来的 LR。
  • 175B 模型:LR 5.03e-6,batch 8。在 5 个 LR 上做 geometric search 选出来的 LR。
  • 还使用 geometric search 来对 epoch 数量做调优。

最终模型是基于 RM 分数选择的,我们发现与 validation loss 相比,RM 分数更能预测人类偏好结果。

C.2 RM 训练细节

同一个 6B RM 模型用于所有尺寸的 PPO 模型。 175B RM 有可能实现更低的 validation loss,但

  1. 训练不稳定,因此不适合用作 PPO 值函数的初始化,
  2. 使用 175B RM 和值函数大大增加了 PPO 的算力需求。

初步实验结果显示,6B RM 模型在大范围的学习率上都很稳定,能训练出一样强大的 PPO 模型。

The final reward model was initialized from a 6B GPT-3 model that was fine-tuned on a variety of public NLP datasets (ARC, BoolQ, CoQA, DROP, MultiNLI, OpenBookQA, QuAC, RACE, and Winogrande). This was mostly for historical reasons; we find similar results when initializing the RM from the GPT-3 or SFT models. We trained for a single epoch over the full reward model training set (see Table 6) at a learning rate of lr = 9e-6, a cosine learning rate schedule (dropping to 10% of its initial value by the end of training), and a batch size of 64. Training did not appear to be very sensitive to the learning rate or schedule; changes of up to 50% in the learning rate resulted in similar performance. Training was quite sensitive to the number of epochs: multiple epochs quickly overfit the model to the training data with obvious deterioration in the validation loss. The batch size here represents the distinct number of prompts per batch. Each prompt had between K = 4 and K = 9 labeled completions, from which there were up to K2 possible comparisons. Ties were dropped. Therefore, a single batch could contain up to 64 × K2 ≤ 2,304 comparisons.

C.3 RLHF 的初始化模型(initialization models)细节

We initialize the RLHF models from a pretrained GPT-3 model and apply supervised fine-tuning for 2 epochs on the demonstration dataset. We also mix in 10% pretraining data during fine-tuning, since we find it helpful for PPO training (see Appendix E.11 for details). Cosine learning rate schedule is used and the learning rate eventually decays to 10% of the peak learning rate. We use a batch size of 32 for 1.3B and 6B models and 8 for the 175B model. We compare a few different peak learning rates for each model and pick the one with low losses on both the demonstration and the pretraining validation datasets. A log linear sweep of 5 values of the LR’s are compared for 1.3B and 6B models and 3 values are compared for the 175B model. The resultant LR’s for the 1.3B, 6B, and 175B models are 5e-6, 1.04e-5 and 2.45e-6, respectively.

C.4 RLHF 训练细节

We then initialize the RL policies from the above supervised fine-tuned models with pretraining mix. These models are also used to compute the KL reward, in the same way as Stiennon et al. (2020), with β = 0:02 (see Equation 2). We train all the RL models for 256k episodes. These episodes include about 31k unique prompts, after filtering out prompts with PII and deduplication based on common prefixes. The batch size for each iteration is 512, with a minibatch size of 64. In other words, each batch is randomly split into 8 minibatches and is trained on for only a single inner epoch (Schulman et al., 2017). A constant learning rate is applied with a warmup over the first 10 iterations, starting with one tenth of the peak learning rate. Exponential moving averages of the weights are applied, with a decay rate of 0.992. No discount is applied when estimating the generalized advantage (Schulman et al., 2016). The PPO clip ratio is set to 0.2, and the sampling temperature is 1 for rollouts. As previously mentioned, for all PPO models we use a 6B RM and a 6B value function, and the latter is initialized from the former. By using the same 6B reward model and value function on policies of all model sizes, it’s easier to compare the effect of policy model size on policy performance. A fixed learning rate of 9e-6 for the value function is used for 1.3B and the 6B policies and 5e-6 for the 175B policy.

Our initial RLHF experiments showed regressions on public NLP datasets, such as SQuADv2 and DROP, and we mitigate the regressions by mixing in pretraining gradients during PPO training. We use 8 times more pretraining examples than the number of the RL training episodes. The pretraining data is randomly drawn from the dataset used to train the GPT-3 models. For each minibatch, we compute the PPO gradients and pretraining gradients in consecutive steps and accumulate them both into the gradient buffers. We multiply the pretraining gradients by a coefficient, γ = 27:8 (see Equation 2), to control the relative strength of gradients from PPO and pretraining distributions.

C.5 FLAN 和 T0 模型

We obtain our FLAN and T0 baselines by fine-tuning a 175B GPT-3 model on the FLAN and T0 datasets. For T0, note that we trained on the T0++ version of the dataset. Because T0 contains much more data (96M datapoints) than FLAN (1.2M datapoints), we subsampled T0 to 1 million datapoints to make the amount of training data comparable for each model. Note that the original models train on epochs where datapoints can be repeated, but in our epochs we go through every datapoint without repeats (to better match the way we trained our SFT baselines). We applied a cosine learning rate schedule, and try initial learning rates of 4e-6 and 6e-6 for each dataset. The learning rate decays to 10% of its peak at the end of training, and we use a batch size of 64 for both experiments.

To choose the best FLAN checkpoint, we use our 6B reward model to score the completions on the validation set of prompts. As shown in Figure 13, the reward saturates after the initial 400k examples of training. This indicates that training for even longer will unlikely improve the human eval performance. We picked the checkpoint with the highest RM score for our human evaluation, which is the one trained with learning rate of 4e-6 and for 896k examples.

We perform two similar experiments to find the best T0 checkpoint. In one experiment, we used a batch size of 128, a learning rate of 4e-6 and 1.28 million examples. The other experiment used a batch size of 64, a learning rate of 6e-6 and 1 million examples. Once again using the reward model score, we picked the checkpoint from the former experiment after 896k examples of training

附录 D:Automatic evaluation details

暂略。见原文。

附录 E:Additional results

暂略。见原文。

附录 F:Model samples

In this section, we provide some additional samples from both the 175B GPT-3 and 175B InstructGPT (PPO-ptx) models. We sample at T = 1 for InstructGPT, and use T = 0:7 for GPT-3, since GPT-3 performs poorly at high temperatures (this slightly disadvantages InstructGPT).

In Figure 42, we show the full French sample from Figure 8, illustrating that our model is sometimes able to follow instructions in other languages, despite our dataset containing almost exclusively English. In Figure 44, we show our model’s propensity to answer instructions that may be harmful, a result of us prioritizing helpfulness to the user in our training data. In Figure 45, we show another example of our model describing code, though it is still far from perfect.

In Figures 46–50, we show labeler-written prompts from our dataset, along with model samples and the human-written demonstration. These 5 prompts were selected from 15 to show a range of different tasks.

(略)。


Written by Human, Not by AI Written by Human, Not by AI

被归纳迭代统治的世界

作者 Liyun
2024年2月19日 11:09

在这个AI快速改变世界的时代,园主已经从一开始被GPT表现出来的潜在智力的震撼,到现在对于层出不穷的图像视频音频AI工具有点审美疲劳了。去年的时候和朋友们感慨,在归纳和演绎之间,这个阶段归纳的力量远远超越了演绎。算力的突破仿佛像《三体》中描述的突破智子封锁一样,让可以被计算改进的模型都深深享受着巨量数据带来的断层优势,层出不穷地展现着未来的可能性。

AI模型之外,很多产业也都被基于数据的归纳和快速迭代逐渐颠覆着。shein在快时尚的成功,是千千万万的时尚元素排列组合迭代出来的。时尚爆款可能是玄学,但只要样本量足够大、选择足够多,就一定会出现几个爆款,然后只要快速跟进就可以吃到一波流量红利。类似的玩法不仅仅局限于快时尚,但凡是“义乌制造”可以连夜复制出来的消费品,都可以用这个打法。譬如手机壳,原型相对固定,考验的是设计师的创意和流行元素变化。看一个纪录片说,人们平均一个月换一个手机壳(可能是北上广的消费数据),那么消费者对于新意的渴望就成为显而易见的需求。

从文字,到图像,到视频,到落地成为一件工业制造品,快速迭代的可能性充分地考验着人们的贪心。行业之中的人们各司其职, 努力地优化着每一个可以减少成本或者提高效率的环节。那些看似玄学的艺术和非理性,最后也没敌过归纳和迭代的降维打击。

毁灭吧,消费主义快点变回极简主义吧,要不园主实在是跟不上这个光怪陆离的世界了。毕竟这人脑子还是习惯基于演绎的思考,重新训练到归纳的角度有点超出人脑算力和记忆存储的局限了。以有限对抗无限,怪不得庄子说,

吾生也有涯,而知也无涯。以有涯随无涯,殆已;已而为知者,殆而已矣!

附录:看到一个纪录片《这货哪来的》(B站的?)来的灵感,把这些观察串联了起来。

小试自定义GPT

作者 Liyun
2024年1月12日 09:09

最近不是在折腾LLM嘛,于是就试了两条路子:用openai的api,以及直接在openai的界面里面创建GPT。

前者没啥特别的,chatgpt的api做的很成熟了,from openai import OpenAI 之后直接在python里面调用几个现成的函数就好了。可选的参数其实也不多,主要就是prompt写的好一点就行。我的要求也不高,试了试基本满足。此外我还用到了微软 azure api,也很方便,两者一结合基本一个app就搓出来了,只是暂时还只能在命令行运行,没写前端ui罢了。

后者就麻烦了。我想着自己写前端ui还挺麻烦的,就想偷个懒直接在GPT里面弄弄看看行不。结果呢,现在这个版本实在是太挫了,只支持最最基本的action,虽然可以调用其他api,但还没研究出来怎么实现用户上传的文件扔到action api call里面。搜了搜他们的论坛也没啥结果,然后心累就到此为止了。

最后贴一下如何在openai 的GPT里面调用azure api。主要是api key那里实在是反用户直觉,我找了好久……一定要选 custom 然后把自定义的名字设为 Ocp-Apim-Subscription-Key 才可以。贴个图。

自定义 action -> authentication -> custom header name

当然azure api的文档做的也很差就是了,经常搜出来的是过时的文档,试一试都是404错误。哎,时间都花在这些琐碎的调试bug上了。

最后的结论是,在现在这个阶段,openai GPT的多模态做的还是太封闭,只适用于比较基础的交互需求,得等到后面允许自定义编程更丰富一些才可以。想做的稍稍复杂一点,写ui是逃不掉的了。web版还可以写个python+js凑和一下(flask这么轻量级的web开发框架真的是效率提升利器),app版xcode看了半天发现也是一等一的复杂……说好的ai改变程序开发呢?叹口气……

❌
❌