要说2023刷屏最多的词条,ChatGPT可以说是无出其右。到最近的GPT-4,技术的革新俨然已呈现破圈之势,从学术圈到工业界再到资本圈,同时也真切逐步影响到普通人的日常生活与工作。
2.开源实现技术【soon】:总结最近几个月开源工作者们followChatGPT的主要方向和方法;
3.自然语言生成任务的前世今生和未来【later】:大语言模型之外,谈谈自然语言生成的“传统”研究方向与未来畅想。
▲10B以上大模型(黄色为开源)
此外,本文阅读需要一定的NLP基础概念,比如知道什么是BERT和Transformer、什么是Encoder-Decoder架构、什么是预训练和微调,什么是语言模型等。
本节目标是通过OpenAI系列论文阅读细窥ChatGPT的主要原理,其先进的工作脉络可以概括为下图。从依赖往上追溯需要了解Codex和instructGPT、再往上是GPT-3、继而也需要了解GPT-2和GPT-1。(GPT-4暂时简单地看作是Plus版本的GPT-3.5,而且增加了多模态数据的处理能力,等更多的细节公开后再作讨论)。
论文题目:
ImprovingLanguageUnderstandingbyGenerativePre-Training
1.1.1动机
1.1.2方案概述
模型结构:Transformer的Decoder部分
训练方法:自回归的生成方式进行语言模型预训练,判别式的结构进行下游任务微调。
1.1.3一些细节
1.1.4结果与讨论
论文链接:
1.2.1动机
GPT-1之后不久,BERT出现,刷榜各种任务。GPT-1尝试增加模型大小,但在预训练+微调的训练框架下,仍打不过同参数大小的BERT;但研究还得继续,尝试换个打法,以Zero-Shot作为卖点,效果不错。
1.2.2方案概述
GPT-2实现Zero-Shot的方法在现在看来比较简单:将所有的NLP任务统一看作是p(output|input)的建模,而如果统使用一个足够容量的模型实现,还要告诉模型需要完成什么任务,这时建模目标可以表达为p(output|input,task)。
对于统一大模型的选择,网络结构与GPT-1相同,使用方式也很自然:task和input均使用自然语言的方式作为输入交给GPT,模型继续一步步地预测下一个最大可能的token,直到结束。如翻译任务:模型输入“翻译中文到英文,原文‘我爱深度学习’”,模型输出“Ilovedeeplearning.”。又如阅读理解任务,模型输入“回答问题,内容‘xxx’,问题‘xxx?’”,模型输出问题的答案。
没错,就是早期的Prompting方法(其实也不是最早的)。这么做的依据则是考虑到训练数据集里有大量的Prompt结构的语料,可以使模型学到遇到类似的提示语后需要生成什么。
1.2.3一些细节
1.2.4结论与讨论
1.3.1动机
BERT出来之后,虽然预训练+微调架构取得了惊人的效果(GPT系列短期比不了了),但这种微调有很多限制:
1.3.2方案简述
主要与GPT-2相比:
1.3.3一些细节
1.3.4结论与讨论
1.4.1动机
GPT-3论文里提到,GPT可以微调但放在未来搞,Codex就是微调工作之一。任务是GPT模型在代码生成方向做微调的探索,算是一个应用方向的论文。
1.4.2方案简述
具体地,Codex是利用代码注释生成代码。训练数据从github上获取,主要为python语言。为了验证模型效果,Codex做了一个新的数据集(164个原始代码问题,可以认为一些经典的leetcode题、面试题),通过单元测试的方式验证生成代码的正确性。
最终Codex可以取得28%的测试通过率(GPT-3只能解决0%);如果允许重复采样生成多个结果,选择100个,可以达到70%的通过率(想想自己能通过多少)。经过一些rerank策略,通过率直逼80%。
1.4.3一些细节
1.4.4结论与讨论
Traininglanguagemodelstofollowinstructionswithhumanfeedback
1.5.1动机
1.5.2方案简述
指令微调的过程分为三步(RLHF,ReinforcementLearningfromHumanFeedback),如下图:
2、使用微调后的模型,根据更多的prompt生成答案(一次prompt多次采样生成个答案),这时外包只要标注生成内容的相对顺序即可;用这份标注数据训练一个reward模型(RM模型),输入prompt和answer,模型输出一个打分(这里同样是使用GPT模型)。
3、采样更多的prompt,使用强化学习的方式,继续训练生成模型,强化学习的reward使用第2步的模型打分。
第2和3步是一个持续迭代的过程,即,第3步训练出的更好的生成模型(policy)可以用来收集更多具有相对顺序标签的数据,这些数据则用来训练新的RM模型(即步骤2),继而再训练新的生成模型(对应步骤3)。大多数的相对顺序标注数据来自于步骤1,一部分来自于步骤2和3的迭代。
1.5.3一些细节
1.5.4结论与讨论
论文没有,官方博客:
OpenAI没有开放ChatGPT的细节,只有两段大致方法描述,摘要一下包括:
读Anthropic之前,插一段OpenAI的系列工作总结,存个档。读了上面的论文,对于这张表的内容应该能够大致理解(参考):
可能确实如一些大佬所说,ChatGPT没有创新,只是一堆策略的叠加,凑出了一个强大的模型;也有人说ChatGPT更多的是工程和算法的结合。不管怎么样,方法是真work。
一些内测结论:Claude相比ChatGPT更能避免潜在harmful的问题,在代码生成略为逊色,通用Prompt不分伯仲。从效果上,可能ChatGPT功能性更强,而Claude更为“无害”(或者说,对社会的潜在负面影响更小),这点从参考论文的标题也有所体现。
引入偏好模型和RLHF(人类反馈强化学习)微调大语言模型(可能因为脱离OpenAI,不提GPT-3了),得到一个helpful和harmless的个人助理(类似ChatGPT);这种对齐(Alignment)微调,使预训练的语言模型在几乎所有的NLP任务中效果提升显著,并且可以完成特定的任务技能,如coding、摘要和翻译等。
目标冲突是指helpful和harmless的目标冲突,因为如果模型对所有问题都回答“不知道”,虽然harmless,但是完全不helpful。
事情发展到现在,有一个小问题,就是模型越来越大,开源越来越少(其实开源了大多数人也玩不了)。首先GPT-3系列模型就很大了,训练和inference模型都需要大量的显卡;其次,GPT-3所用的数据也未公开,有算力复现也稍困难,需要自己去盘数据;在GPT-3之后的ChatGPT的闭源程度更甚,可能要进一步考虑商业利益。
在这样的背景下,前调模型提效以及开放的工作越来越多,近期比较有影响里的当属MetaAI的LLama和斯坦福基于LLama的Alpaca。前者类似GPT的大语言模型,后者类似ChatGPT。
代码链接:
3.1.1动机
3.1.2方案简述
LLama的思想比较简单,在动机里已经大致包括。这项工作的其他特点可以简述为以下几点:
3.1.3一些细节
和GPT一样,同样是TransformerDecoder架构,沿用了各种工作被验证有效的小优化(如:Pre-Normalization、SwiGLU激活函数、RotaryEmbedding、AdamW优化器等)。同时也做了一些训练效率上的优化,包括模型实现上以及模型并行上的优化。
代码:
3.2.1动机
前面可以看到,GPT-3.5、ChatGPT、Claude以及BingChat等指令微调模型被验证效果拔群,但仍存在生存内容虚假、带偏见和恶意等问题。为了加快这些问题的解决,需要学术届(穷老师、学生、公司)的加入一起研究,但是GPT-3.5这些模型大且闭源。
前阵子LLama发布,给了希望。所以基于LLama做指令微调得到了Alpaca模型,效果和GPT-3.5差不多,而且简单、复现成本低。
3.2.2方案简述
3.2.3一些细节
3.2.4结论和讨论
目前开放了:测试Demo、训练数据集、训练数据的生成过程、训练代码;预训练的权重未来开放(可能考虑一些外因);
未来可能的方向(不包括优化推理能力,也许这些还是要留给有钱人):
LLama虽好,但更多的是使用英文数据集,但在中文上表现不佳。同样指令微调后在中文场景下上限应该也比较低。因此在中文上,有必要有自己的一条研究方向,当前影响力比较高的开源版本属清华的GLM和ChatGLM。
GLM:GeneralLanguageModelPretrainingwithAutoregressiveBlankInfilling
GLM-130B:ANOPENBILINGUALPRE-TRAINEDMODEL
4.1.1方案简述
GLM-130B是在GPT-3之后,清华的大语言模型方向的尝试。不同于BERT、GPT-3以及T5的架构,GLM-130B是一个包含多目标函数的自回归预训练模型。
4.1.2一些细节
GLM-130B在2022年8月开放,有一些独特的优势:
4.2.1方案简介
ChatGLM参考ChatGPT的设计思路,在千亿基座模型GLM-130B中注入了代码预训练,通过有监督微调(SupervisedFine-Tuning)等技术实现人类意图对齐。
4.2.2一些细节
ChatGLM-6B有如下特点:
因此,ChatGLM-6B具备了一定条件下较好的对话与问答能力。ChatGLM-6B也有相当多已知的局限和不足:
到这里还是低估了工作量,写吐了,谷歌系列的几个工作,还是得单独一篇才能完结。与OpenAI的工作类似,谷歌同样产出了对标GPT-3和InstructGPT之类的模型,也包括了T5系列的Encoder-Decoder结构的大语言模型,而且并不是简单的Follow。
另一方面3、4月份,广大的开源工作者们也是百花齐放,在类ChatGPT的应用方向做出了很多探索工作,包括训练数据、模型、以及训练方法的探索与开源。在训练效率方向上,也出现了ChatGLM+Lora、LLama+Lora等进一步降低训练成本的工作。
#投稿通道#
让你的文字被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。