最近chatGPT火得一塌糊涂,自己也是被惊掉下巴,但最受打击的还是这个
因为确实我现在在做的是nlu理解任务 & 亲自将bert部署到了业务中并取得了很好的效果 & 我对生成任务的印象还停留在seq2seq那个时代,以至于对GPT等一系列生成式预训练语言模型的追踪做的很少。即便gpt3刚推出 & 去年跟NLP合作了解了PLATO之后,有被惊艳到但还是其能力应该还是跟BERT类似不过是一个生成任务。直到上周chatGPT出现,再跟小伙伴在群里被震惊了一下午之后,我觉得是时候更新一下自己的认知了。
网上有太多关于ChatGPT和InstructGPT技术细节的文章,我这里也并不想重复放图和码字,所以就写一下自己的理解和学习路径给需要的小伙伴吧;
学习路径
GPT1-3、CodeX等系列论文沐神视频:GPT1-3论文精读 ,Codex 论文精读InstructGPT论文和原理介绍沐神视频:https://www.bilibili.com/video/BV1hd4y187CR论文详解:大师兄:ChatGPT/InstructGPT详解Prompt范式模型并行化Megatron LMDeepSpeed我对ChatGPT的认识
GPT3大模型很厉害,知识能力很强,配合prompt激发模型潜力可以实现zero-shot。但终归还是数据驱动的生成模型,真正产品应用逃脱不掉构造高质量数据的过程;相比传统的分类、序列标注等任务定义,生成确实有更多的可能性,理解效果上BERT还能打平但是prompt带来的灵活性是不能比的;GPT3也证明了当模型足够大就不需要Finetuine,In-context Learning效果足够好;产品应用的过程中,模型如何随着数据不断更新,新的知识如何喂给模型?RLHF的范式很强,但我觉得在InstructGPT中并没有多么的惊艳,更像是一个rank model,起到的作用就是对于模型无法回答、黄反等情况进行规避,真正说让生成的内容变好了吗,我觉得并没有;reward只有在整个序列生成完毕之后才会产生,对生成细节的干预不是很强;InstructGPT没有爆火可能也是单纯的加RLHF并不能带来很多效果提升,更多是回答的一种倾向性;但不得不承认RLHF有很大的想象空间,可以指导模型朝正确的方向优化;ChatGPT最让我好奇的点在于长context的建模能力,各种比较亮眼的上下文依赖,比如指代、否定、继承等。数据收集的时候是基于session组织的,更适合对话的场景和交互方式;RL可能跟InstructGPT不一样,比如加了session级别的reward,鼓励生成内容与上文相关;比如RM模型的输入是session,reward是判断哪个结果更符合上下文;单纯的看强化学习对理解能力提升不大,但是从对话policy的角度看,有更多的探索空间模型并行化&工程优化是一个关键问题;实践
其实看完论文原理是了解了,但总觉得还差点什么,恰好最近看到一个不错的开源项目TRL,一个基于Transformer的强化学习工具,可以方便的实现基于GPT2等语言模型的PPO训练,原理和InstructGPT一致且代码很简单易懂,我觉得是一个不错的上手项目,分享给大家。
GitHub – lvwerra/trl: Train transformer language models with reinforcement learning.
还有另外一个trlx,实现的功能更全,强化学习算法包括PPO和ILQL
,而且支持更多的预训练模型,如gpt2,gpt-j,gpt-neoandgpt-neox等,也支持模型并行和分布式训练。
https://github.com/CarperAI/trlx© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容