网站建设百度推广,企业网站备案号密码忘记,个人不能建设论坛网站怎么办,WordPress数据库密码文件承接上文GPT前2代版本简介
GPT3的基本思想
GPT2没有引起多大轰动#xff0c;真正改变NLP格局的是第三代版本。
GPT3训练的数据包罗万象#xff0c;上通天文下知地理#xff0c;所以它会胡说八道,会说的贼离谱#xff0c;比如让你穿越到唐代跟李白对诗#xff0c;不在一…承接上文GPT前2代版本简介
GPT3的基本思想
GPT2没有引起多大轰动真正改变NLP格局的是第三代版本。
GPT3训练的数据包罗万象上通天文下知地理所以它会胡说八道,会说的贼离谱比如让你穿越到唐代跟李白对诗不在一个频道上他说的你理解不了你说的他理解不了。
GPT3太泛了把世界上所有的东西都给训练了不受约束条件的、无法无天给它发一个指令它抗拒指令按照自己的思维模式去做比如我问一个问题接下来你用python代码的方式来回答我它可能不按照这个模式来不受我的约束。
这就是GPT3不按照我们自己的思维去做我们自己的事情也是给后面的ChatGPT做了一个铺垫。
GPT3 三种模式对比 Zero-shot 不管我输入什么后面都会加上提示比如把英文转换成法语接下来就输出了法语。 One-shot 为了让它更好的理解我说的意思我给它举了一个例子。
举一个例子这个例子作为输入我让你干什么我给你举一个例子你回答的时候可以参考这个例子。
这些例子都是我写到输入对话框中一起给到模型模型基于我写的例子再往下输出。 Few-shot Few-shot是举多个例子。
这就是GPT3的基本思想。
Few-shot像在下游任务中又做了个简单的训练比如举了三个例子即三条数据相当于把下游任务融入到了这个任务当中。
GPT3本质上还是一个生成式模型它不需要下游任务下游任务可以放到Few-shot或放到One-shot中。 横轴表示语言模型的大小 One-shot和Few-shot之间还是存在差异的尤其是模型越大的时候差异越明显Few-shot效果更好一些。 GPT3网络结构没有什么亮眼的就是把Transformer做的更大了。
NLP哪家强就看谁的模型更大谁的数据更多。
OpenAI训练的GPT-3 1750亿个权重参数每批次的训练数据大小是3.2M这么大的量级目前只有OpenAI大型GPU集群才能玩的转。
准备训练数据
准备数据不难但数据又多又干净才不容易准备。
OpenAI对收集到的数据有质量的判断对于网页的爬取会设计一些算法去评估哪些网页要求比较低或可信度比较低的它会把这些网页过滤掉只爬一些有价值的网页。
GPT三代算法告诉我们一件事这种生成式语言模型能解决一切的事情即以不变应万变。以后的趋势是GPT这个系列一家独大可能再过10年NLP的其他分支就不存在了因为一个通用大模型可以解决所有的事情干嘛还要每个NLP分支做自己的东西呢。
CODEX
程序猿一般都是面向百度、Google编程而GPT面向github编程。
使用GPT-3模型训练数据是所有的github数据进行重新训练注意不是微调。
github和OpenAI都是微软的所以CODEX拿到github的数据很容易然后进行清洗和训练。
10年之内不用考虑程序猿能否被替代因为ChatGPT以及现在的GPT还不能解决特别多的实际任务。
举例说明什么是有监督学习
小时候家里没钱买电脑就经常上网吧我爸就教育我不要去网吧我特别理解我爸我还没嫌他穷呢他还嫌我上网吧。我爸教育我你这么做是不对的我爸给了明确的标签有了标准答案我下次去网吧的时候就会想一想是我不对不是我爸不对那这次我就不去网吧了这是一个有监督学习。
人工的给了一些标注在预训练模型基础之上继续去学一学正确的说话逻辑学一学怎样正确的回答问题。
ChatGPT提出的第一件事情就是不能再用无监督去做了无监督不确定的东西太多了它生出来的东西是好是坏都不好说所以要限制它它的语言能力已经非常强了我们现在要让它继续去完成我们的任务学我们说的话办我们说的事所以ChatGPT是有监督训练。
模型越大、参数越大并不是越好文本模型越大参数越多结果越专一越专一的结果可能并不是想要的比如随便问一句话永远回复的一样。
训练模型希望模型学人类说话的逻辑说人话办人事让机器更像人更符合人的逻辑的给你解释这些东西而不是像原来的GPT3只是纯生成的模型那下一步应该怎么办
大家在问ChatGPT问题的时候后面加一个提示这些提示是经常问的问题这些问题由人工标注人工来回答。有了输入和输出接下来训练GPT3.5模型继续在它无监督的基础上再去做这个有监督任务有监督学习就是我们希望它输出啥就用这样的数据去训练它。 无监督学习任务中不可能有一个学习的过程而有监督首先要解决的就是敏感话题比如跳楼是一个不好的得告诉你不要去跳楼。 第一个要标注答案不要是有“毒”的东西 第二个应该是跟我们聊天近似的要一些有感情的东西而不是像专家一样教育我
这得需要有监督去做通过有监督解决无监督解决不了的事情要说人话、办人事。
强化学习
先来玩个游戏来了解下什么是强化学习 右边有一个飞船想降落在2个旗子当中某一时刻的飞船可以往左走也可以往右走那飞船应该往哪边走
上图中的飞船想要落到两个棋子中间需要往左走飞船往左走的时候给它一个奖励表示走对了如果往右走了奖励就很低表示走错了。 飞船降落的过程不要把它想象成一个连续的当它是离散的比如它是由1000个step组成每一个step都有当前的一个状态 当前位置以及actionaction表示接下来往那边走这些属性。
我们所关注的东西并不是一个片面的即并不是每一步走的怎么样而是要看最终的一个累加的结果。 这是目标函数希望全局奖励越高越好。
不关注每一步怎么样而是看全局飞船完成一个完整的过程之后总的奖励这就是强化学习基本的思想。
有这样一个序列,{s1,a1,s2,a2,....,st,at},表示飞船在每一个step的状态和action
类似于见人s1说人话a1见鬼s2说鬼话a2。
那每一步如何走才能得到更多的奖励呢这就需要训练神经网络了。 把a1输入到神经网络中不需要知道a1是人还是鬼神经网络输出这个状态下的预测结果是什么。
或者把这个图片作为输入到神经网络中 神经网络会告诉飞船往左走。
状态和动作可以跟神经网络联系在一起动作做的对做的准奖励才高。
为了让奖励做的高神经网络的权重参数要不断更新。
通过奖励最高这种机制来训练神经网络让神经网络知道输入一个状态怎么样输出一个好的答案。
在ChatGPT中状态是你输入的一句话action是输出的一句话。
象棋、围棋等游戏也都可以设置奖励阿法尔狗大战李世石就是用强化学习来做的。
用强化学习得需要有什么
得有一个奖励得知道这一步到底做的对不对做的不对的话再改正所以需要单独训练一个可以预测奖励的模型。
输入一句话到奖励模型输出一个reward奖励值。
为什么ChatGPT没有用纯的监督学习来训练不用强化学习行不行 什么是监督学习
比如我上网吧我爸给我一顿揍这是监督学习我爸告诉我我干这件事情是错的。
我爸揍我的强弱程度决定了这件事我是错的多还是错的少这是监督学习直接告诉你这件事情是对的还是错的。 什么是强化学习
我去网吧了我爸回家哭了我没哭我寻思我爸咋哭了是不是我哪做的不对是不是以后不上网吧就行了呢 强化学习并不是哪件事情是对还是错而是告诉你你做的这个东西可能是好的可能也是不好的但没有告诉你有多不好或有多坏你接下来怎么去更新并不是一个固定的机制需要我去思考的不是固定的。
再比如导师给你安排了一个项目但没有说具体该怎么做。
导师说你态度不端正思考问题的方式不行。
说你不对但没有告诉你哪块不对也没有告诉你这个项目第一步怎么做第二步怎么做不会告诉你具体的每一件事。
如果导师告诉你就是有监督学习你输入一个东西我告诉你答案但是没有锻炼到你。
你回到家去思考想到一个解决方式就先这么改进吧改进完之后给导师看导师又给一顿骂在反复找导师的过程中会思考一个问题怎么做更迎合导师的思维。
强化学习并不是一个固定的输入输出模式怎么做能让输出的东西更符合想要的答案强化学习不是给你的一个答案而给的是导师的满意程度。 需要额外再训练一个奖励模型第一步少不了人工标注。
比如随便问一个问题“你瞅啥”产生四种答案瞅你咋滴、没瞅啥、我就随便看看、你说啥。
导师对4个答案打分对于每一个输出都要人工打分人工打分之后再做一个排序操作。
人工打分需要知道什么样的打分高什么样的打分低。
怎么训练奖励模型输入一句话,输出一个分值?
正常的语言模型要输出接下来预测的每一个词的概率比如一共有3万个词每个词的概率是多少。 奖励模型不是这样了它把最后的输出层改了去预测一个得分值。
奖励模型还是基于Transformer去做的只是以前是一个分类任务3万个词预测每个词的得分现在变成了预测一个得分值。 通过这个损失函数去猜怎么训练的这个奖励模型是一个小的6亿参数的GPT。
x是“你瞅啥”
Yw是得分最高的那一个
Yl是得分较低的那一个
w是“瞅你咋滴”
l是“我就随便看看”。
得分最高和最低两者差异越大越好 sigmod函数差异越大得到的结果越接近1。 得分高的和得分低的没啥差异的化可能就接近0效果就越差。
传入log对数函数中越接近1的损失越小越接近0的 损失越大。
标注分高的和标注分低的起码在奖励得分上要高出一个等级越高越好。 输入和输出是由人工标注的。
比如k4表示4句话比如选“瞅你咋滴”和随便看看以及没瞅啥,你说啥从中选择2个 所有的输出结果都是由人工标注的在所有标注中任选其中的2个k个里面选2个来计算损失越低越好。
奖励模型怎么去做首先人工标注想要的得分高点不想要的得分低点。
奖励模型并不需要特别大的模型若是1750亿权重参数的模型验证集准确率很低效果一般小版本6亿参数的模型却恰恰好。
继续训练这个模型得到一个初始化模型最后的一个圈层 当中正常是要做一个多分类现在把多分类用FC预测一个得分值。
往ChatGPT模型中输入“你瞅啥”输出“没瞅啥”
输出的东西要往奖励模型中传入奖励模型会帮你输出一个分数分数低的话要更新ChatGPT模型的权重参数。
通过强化学习的方式就可以无限制的更新我们的模型了 奖励模型会判断你输入给我的东西是不是我想要的是我想要的分高一点不是我想要的分低一点 根据分的高低更新ChatGPT。
比如经过了一个epoch一个epoch等于使用训练集中的全部样本训练一次的过程之后ChatGPT更新了一次奖励模型也要进行更新交替训练交替更新这就是强化学习当中的基本思想。
ChatGPT和奖励模型都是在原始的GPT中衍生过来的。
我们需要的模型就是通过RL来更新的模型输出的句子通过奖励模型得到得分再反馈而且模型更新一阵后也需要再更新奖励模型。
目标函数 这是目标函数首先要更新的是ChatGPT模型这是最核心的模型在更新的过程中希望x传入这个模型之后得到的奖励越高越好对应着第一项越大越好 第一项后面是一个减号 对于目标函数来说希望减去的第二项越小越好。
贝塔系数β是一个权重 SFT表示有监督渲染出来的模型把x输入之后有监督模型会帮我们生成一个结果强化学习ChatGPT也会生成一个结果强化学习跟有监督之间的一个pk两者做了一个除法输出是一个句子可以把输出一个句子叫输出一个分布或者输出它的概率分布这时强化学习认为输入这个句子每个词的概率分布合在一起。
右边是有监督模型它输出的句子每个词的概率分布合在一起。
计算两个分布之间的差异。 前面是一个对数对数当中只有为1的时候最小。
除法2/21、3/3为1两者旗鼓相当。
强化学习思维会比较发散那怎么做才能得分高可能会尝试很多东西。
类比怎么让导师满意我我给他转100万和用监督模型学习结果导师可能都高兴 但现在越学越离谱了因为强化学习不太可控强化学习说你把导师揍一顿他下次就不敢说你了会和人工标注的有监督差异非常大。
强化学习要探索我不知道正确答案但我不按套路出牌我可以任意去发挥它很容易发散比如我从9楼跳下去它说你从天台跳9楼可能摔不死。
需要降低强化学习和有监督的差异强化学习太离谱了别让它那么离谱减去这个差异要以人为主跟有监督模型人工标注的做对比你要去学怎么样接近人类的思维。 这个是泛化能力之前是没有的额外做了拓展即做了一个对比实验。
模型能生成你的对话但模型不仅仅生成对话。
类比你的体育天赋特别好一般跑步跳远很棒的人踢足球也是很好的。
加了一些下游任务在不同的下游任务里面也要预测的好比如情感分析、机器翻译、文本摘要在这些例子中也会做的不错所以叫它泛化能力。
就在当前这个前提上可能人家又加了一些业务场景在其他业务场景中也要做的好这就是一个多目标损失函数 而不仅是一项做的好。
强化学习要以人为主尽可能跟有监督是类似的最后再结合一个泛化能力应用到不同的拓展任务当中效果也要好才行。 上面所将的ChatGPT思想出自2020年的一篇论文。
它是做文本摘要的怎么把文本摘要做的好
第一步
人工的去收集一些数据这个文本应该有哪些摘要。
在语言模型当中再加上下游任务。
第二步
训练一个奖励模型奖励模型希望得分高的和得分低的差异越大越好要让模型知道这样一个事。
再用PPO损失函数去渲染整个模型。
OpenAI做了个分析 GPT、给GPT加了提示、有监督模型、PPO强化学习思想、ptx泛化能力这几个模型的对比效果图。
第一个比较维度问ChatGPT能不能争取有效的回答。
第二个维度有没有满足限制条件比如请你用一个女生的口吻来和我说话。
第三个维度模型输出的有没有太离谱的为什么解释以人本其实就是以这个图思考的
第四个维度能不能帮我们解决常见的事情比如充当一个助手。