论文总结
以下是我阅读完整篇论文做的个人总结,包含了ChatGPT-2文章的主要内容,可以仅看【论文总结】章节。
数据集
自制了一个网页爬虫,被抓取的网页部分来自于社交平台,这些网页由人工进行过滤。最终生成WebText数据集,包含45000000个链接。另一部分来自于新闻网站,数据截止2017年12月,数据总量达到8000000篇文章,总共有40GB的文本内容。文章还提到,包括wiki百科等文本也纳入训练数据集,由全世界各地数百万人参与来创建和清洗GPT-2训练所用的数据集。
输入表示
设计了一种结合单词级表示和字节级表示的混合输入表示。针对过去的单词级库去除大量重复单词,又引入字节级表示来提升泛化能力。
单词级表示具有先验优势,字节级表示具有泛化优势。
模型
针对GPT1进行了部分修改:
1.将层归一化移动到每个子块的输入。
2.在自注意块之后添加额外的层归一化。
3.改进了初始化方法(初始化时将残差层的权重按1/√N的倍数扩大,N是残差层数量)。
4.词典扩大,分词扩大,指令集扩大,批处理大小扩大。
5.GPT包含117000000参数,GPT-2包含1542000000参数。
实验
因为只训练一次,却想观察模型在各个细分领域的表现,因此所有实验都可归类为零次学习(zero-shot)。
测试项目 | 测试模型的哪方面能力 | 测试结果 |
---|---|---|
儿童书籍 | 识别不同类型的词汇 | ACC从85.7提升至93.3 |
LAMBADA测试 | 识别文本中长依赖的能力 | PPL99.8降低至8.63 |
Winograd Schema Challenge | 常识性推理 | 63.7%提升至70.7% |
阅读理解 | 需要模型具有一定记忆能力 | 4项测试3项刷新历史记录 |
摘要 | 对新闻文章提取摘要的能力 | 与历史成绩持平 |
翻译 | 大模型自动学习的翻译能力 | 英译法较差,法译英达到基准水平 |
问答 | 模型对于似是而非问题回答正确的能力 | 准确度提升5.3倍 |
总结
GPT-2论文的核心内容,可以用一句话进行总结:那就是在GPT模型的基础上,作者提升了模型大小和训练数据集大小,结果发现GPT-2可以自动适应并完成NLP不同领域的任务目标的学习。
举个例子来说,我们同时给一个固定的语言模型输入日常对话文本和新闻报道文本的数据集,并且这个数据集足够大、模型足够大、训练时间足够长。则最终产出的模型将会拥有区分日常对话和新闻报道的不同场景的能力,不仅如此模型还将自动拥有一些新的能力,例如编写新闻摘要的能力。
这意味着大型语言模型具有很强的泛化能力,同时也意味着大型语言模型将会具有潜在自主意识。随后本文针对作者列举的几个独立领域,陈述了实验结果。
相比于GPT论文中只提到Large Dataset,GPT-2论文中开始出现LLM(Large Language Model)的描述。
论文原文解读
原论文地址:https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf
一、介绍
过去的机器学习系统已经可以很好地实现特定的目标,只要使用合适的训练模型、提供海量的数据集并进行有监督的训练。但是这些系统往往高度依赖于训练模型的方法以及数据集,一旦这些部分发生变化,模型就会被破坏甚至彻底失效。因而过去的机器学习研究仅仅在特定领域和研究方向上取得很好成果,无法得到更通用和泛化的效果。本文尝试提出一种模型,可以解决更加通用和泛化的问题,并且不需要手工标注训练用的特定目标数据集。
我们怀疑导致传统机器学习方法泛化性弱的一个原因,是过去的机器学习系统都是用一个训练模型方法、基于一个数据集进行训练。因而我们会在训练时引入更大范围的数据集,并使用多种方法进行训练得出最终模型,这种方法可以显著提升模型的泛化能力。这种方法被称为多任务学习(Multitask Learning),并且部分研究人员已经对他做了一定的研究,但是多任务学习在NLP领域依然属于前沿领域,研究甚少。
当前的机器学习系统需要成百上千的数据输入才能归纳出泛化良好的模型函数,这表明多任务学习同样需要大量的数据进行训练。受制于现有的技术,我们很难继续扩充数据集,因此我们将在模型设置上进行优化。
当前最好的语言类模型训练架构就是结合深度学习预训练和二阶段的有监督调参(这里指的就是ChatGPT1中提出的架构)。第一,将文本词汇进行向量化,并将其用作特定学习模型的输入,然后循环网络的上下文表示就会根据数据进行训练产出。最近的研究表明,要想获得较好的模型效果,不再需要特定学习模型架构设计,只需要转移更多的自注意函数(self-attention blocks)就足够了。第二,这种架构在二阶段依然需要一部分的标注数据,但是当我们没有标注数据时,模型是否还可用?另一个方向的研究表明,在缺少标注数据的场景下,语言模型依然可以很好的处理常识推理和情绪分析类的问题。
本文将结合以上几点优化,设计一个更加通用的转化方法。我们将揭示在这种多任务学习的架构设计下,即使不做任何调参和架构调整的情况下,语言模型依然可以表现的很好。
二、实现方案
本方案的核心就是语言模型。语言模型往往被设计成无监督分布式的评估架构,其输入通常是一组组合集{x1,x2,x3…},每个元素是由不定长的符号集合(s1,s2,s3…)组成。正常的语言通常具有特定的语法顺序,因此可以计算符号之间的连接概率,来预测下一个出现的单词。近几年的研究成果大大提升了这种架构设计的模型准确度,例如Transformer模型当中的self-attention架构。
语言具有很高的易变性,因此对于单任务模型而言,不同语言需要非常定制的训练目标、输入、以及输出。近期的研究成果诸如encoder和decoder,提供了更好的思路来表示语言模型需要的输入和输出形式。
基于以上原理,原则上来说,所有语言模型都应该支持无监督的学习能力。相比于无监督训练数据集,有监督训练数据集仅仅多些标记结果,因此可以看做世界上可用的无标注数据集就是有标注数据集。前期的研究表明,超大型多任务语言模型在无监督训练下可以产出和有监督训练相似的效果,但是训练时间会更久。
当今互联网存在大量可用的文本信息。我们的推测就是,在输入大量无标注文本数据之后,超大型多任务语言模型将会逐渐学习到预测文本的能力,不管这个模型采用的是什么方法或流程。本文就测试了这种零次学习(zero-shot)设置下的模型训练效果。
零次学习(zero-shot)指模型可以根据分类描述,直接预测出未训练过的数据。举例来说,模型训练数据中出现过马、条纹、黑白,并且有一个分类描述“具有黑白条纹的马是斑马”,则模型可以直接识别出斑马。
2.1训练数据集
之前的语言模型通常是基于一个垂直领域的文本集进行训练,这个文本集可以是一个新闻报道集合、维基百科、小说。而我们的目标是在尽可能广的数据集范围内进行训练,并最终得到一个效果不错的通用语言模型。一个可靠的广泛且通用文本数据集是Common Crawl,这是一种标注数据集,很多研究者已经基于该数据集进行了有监督训练并得到对应的语言模型。
我们不希望受限于标注数据集,因此我们开发了一种特定的网页爬虫工具,将从互联网爬取高质量的文本,生成我们模型的通用数据集。我们的爬虫只爬取人工过滤过的网站,但是人工过滤网页内容是及其消耗时间的,因此我们选择从Reddit社交网站中进行文本爬取。
我们将爬取到的数据定义为WebText,该数据集最终包含4500万个网页链接(links),我们使用Dragnet和Newspaper content extractors两个工具将网页中的文本提取出来。本文中介绍的模型方案,使用了一个更小的文本数据集,该数据集包含800万个文档,总共包含40GB的文本内容。我们将维基百科的文本全部移出,因为这部分文本数据集的学习效果可以在其他研究模型中看到,我们不再做重复工作。
2.2输入表示
一个通用的语言模型(Language Model,LM)应该可以计算任何字符串出现的概率。现有的LM模型依赖于文本预处理,例如全部转为小写字母、分词(tokenization)等操作。过去的认知认为,在处理标准字符集UTF-8的时候,字节级别(byte-level)的模型不如单词级别(word-level)的模型,我们在研究过程中也复现了这一结论。
字节对编码(Byte Pair Encoding,BPE)是一种介于字符级别(character-level)和单词级别(word-level)之间的符号序列,BPE通常操作Unicode符号而不是直接处理字节。对于单词级别的实现方式要求模型将整个Unicode符号字典存入内存从而实现任意字符串匹配,这意味着在没有做任何事情之前,已经在内存里面放了一个13000单词的数据。而对于字符级别的实现,仅需要放入一个256大小的字典即可。如今BPE有多种实现方案,我们观察到许多BPE方案会包含重复单词,例如dog、dog?,我们做了特定的压缩优化方式,尽可能的减少这部分重复数据。最终设计出的BPE方案完美的结合了字符级别和单词级别语言模型的优点,他为我们后续的大型语言模型识别通用语言文本提供了能力。
2.3模型
我们设计的语言模型(Language Model,LM)基于Transformer模型。基于Transformer模型,我们做了些许优化,层归一化(Layer Normalization,LN)前移至输入的每个子块,在最终的self-attention块之后再增加一个层,用一个因子1/√N 加重了初始化剩余层的权重(其中N是剩余层的数量)。最终的单词量扩大至50257,上下文token大小从512扩大至1024。
三、实验
我们最终训练了四组大模型,训练结果见表2。最小的模型正如GPT,第二小的模型相当于一个BERT模型,最大的模型我们将其定义为GPT-2。每组模型的训练速度我们都进行了手动调参,虽然最终所有模型对于WebText依然欠拟合,但随着训练时间的增加,效果有着比较明显的提升。GPT-2是在通用数据下进行训练的,而后面的所有实验都是GPT-2未经过特定的监督学习训练的,因此以下的实验都被视作零次学习(zero-shot)。
3.1语言模型
作为开始零次学习(zero-shot)任务的第一步,我们首先观察了过去实验的一些结果和经验。我们的模型运行在字节级,因此不需要预处理和分词,我们可以在任何语言模型的基准上对他进行评价。表3展示了我们的模型在数据集上的表现。
结果显示我们的模型在总共8个数据集中,7个数据集的表现优于过去的模型。在小模型上,我们的模型取得了巨大的提升,例如PTB和WikiText2,这些数据集只有一至两百万的单词。长句子数据集的表现也提升很大,例如LAMBADA和CBT。我们的模型在1BW数据集上表现不如过去的模型,这可能是因为过去的模型在1BW上做了很多预处理。
3.2儿童书籍测试(CBT, Children’s Book Test)
CBT数据集测试用来检验模型对不同类型单词的识别能力:命名实体、名词、动词和介词。CBT使用结构完形填空模式,在10个可能的词中选择一个准确的,来评估语言模型的效果。我们根据CBT原论文的设计,对模型进行了测试和评估,结果显示随着模型大小的增加,识别效果稳步提升,并最终达到了接近人类的水平。最终得到99.3%的名词分数和89.1%的命名实体分数。
3.3LAMBADA
LAMBADA数据集测试了模型对文本中的长距离依赖关系进行建模的能力。测试任务将预测句子的结尾单词。GPT-2将该测试从PPL=99.8提升到PPL=8.63。我们进行了调查检验,发现在预测错误的句子结尾处,虽然预测错误了,但是GPT-2依然给出了一个可读性很强的连接单词。
3.4维诺格拉德模式挑战(Winograd Schema Challenge)
维诺格拉德模式挑战通过测量模型系统解决文本中的歧义的能力来衡量其进行常识性推理的能力。Trinh & Le近期的研究显著提升了语言模型(LM)在这个测试上的表现。我们按照先前的测试规范,发现GPT-2再次提升了7%的精确度,达到了70.7%。
3.5阅读理解
对话问答(Conversation Question Answering, CoQA)数据集由7个不同的领域文本组成CoQA不仅测试模型的阅读理解能力,还能检验模型的历史记忆能力(例如直接问模型Why?模型需要根据前文所述进行回答才行)。最终GPT-2在4项测试中的3项取得了更好的效果。我们在过程中发现,GPT-2模型经常会使用简单的推测来回答问题。诸如被问到Who类型的问题时,模型总是会随便取一个前文中的人名进行回答。
3.6摘要提取
我们测试了GPT-2在CNN和《每日邮报》数据集上进行总结的能力,为了让模型具备总结行为,我们在文章后面添加了特殊的文字,并通过Top-k随机抽样,生成标记,我们使用这些标记中的前3个生成的句子作为文段摘要。最终发现GPT-2侧重于总结和强调文段中最后的文本内容,并且在一些细节上会出现错误,诸如有多少辆车卷入了车祸。最终的实验结果显示GPT-2的表现在综合指标上下降了6.4,这意味着自然语言模型在特定任务下具备很高的行为能力。
3.7文本翻译
我们测试了GPT-2是否具备语言翻译的能力。为了让模型知道翻译是潜在任务,我们将文本进行了配对[English sentence]=[French sentence]。在一个英文翻译法语的测试集下,GPT-2仅得到5BLUE,表现弱于先前的其他无监督翻译模型。而在法语翻译英文的测试结果中,GPT-2得到了11.5BLUE的结果,这一成绩优于相当多的同类模型,但依然不如最近研究得出的最好模型成绩33.5BLUE。即使如此,该结果依然令我们感到欣喜若狂,因为我们在数据清洗中已经特地将所有非英文内容从WebText中去除,没想到GPT-2依然具有如此强大的翻译能力。
3.8问答类
测试语言模型包含哪些信息的一个方法,就是用似是而非的问题去提问。与翻译类似,语言模型的上下文就在问答对中,GPT-2在问答理解集SQUAD测试中达到4.1%,先前最好的测试结果没有超过1%。GPT-2相比于过去的模型,正确率提升了5.3倍。这说明模型的大小对于准确率来说是一个重要的影响因子,因为GPT-2模型相比于过去的模型更大。
四、泛化效果(Generalization)对比记忆效果(Memorization)
最近在机器视觉(Computer Vision)上的研究显示,图像数据集当中存在大量重复图像,例如CIFAR-10在训练集图像和测试集图像中有3.3%是相同的,这会导致过去实验汇报的一些模型性能和表现会偏高。当数据集不断增加时,相似的问题也会出现在语言模型中。所以有必要搞清楚有多少训练集文本重复出现在了测试训练集当中。
我们制作了一个过滤器,用来查看我们实验过程中重复出现的文段。在大部分文段中都发现了训练集和测试集中存在1-6%的数据重复。鉴于这些重复数据的存在,我们得到的语言模型的实验结果,也会有细微的偏高。这种情况就是归因于基因效果。
确定基于WebText训练的语言模型的表现是否归因于记忆的另一个方法是 检查他们在自己的保留集上的表现。我们模型在训练集和测试集上的表现是相似的,并且随着模型大小的增加而提高,这表明GPT-2 在依然是低度拟合的。
关于泛化能力,我们还发现GPT-2拥有撰写新文章的能力,例如《发现会说话的独角兽》的新闻报道。
五、其他相关工作
我们验证了用更大的模型,在更大的数据集上训练的效果。许多先前的研究已经证明,更大的模型会获得更好的语言理解效果,我们的实验运行在一个噪声更多的数据集上,更加复杂更加庞大,但同样得出相似的结论。这说明对于语言模型而言,持续增加训练数据和模型大小,可以不断提升模型的效果。
关于语音模型的预训练,先前也已经做过了广泛的研究。诸如词向量伸缩、文本深度表达学习、分类表示法、RNN调参等方式都可以提升模型的效果。大量的研究证实,预训练非常重要。
六、讨论
当前有大量研究在验证有监督训练和无监督训练的效果。我们的结果证明无监督学习是一个非常重要的过程,值得探索。我们的研究也证明了加入预训练之后的自然语言处理模型可以得到更好的效果,并且我们模型的预训练不需要依赖于有监督学习。
在阅读理解领域,GPT-2在零次学习设置下,效果接近于有监督学习模型。当然也毫无疑问,GPT-2模型在许多实际任务中的表现也不是很好,例如问答和翻译,GPT-2在这些方面的表现仅仅刚刚达到及格线水准。
在零次学习场景下,我们对GPT-2进行的参数调优似乎还没有达到天花板。我们将会在后续的研究中继续加强和精细化参数调优,以挖掘GPT模型还能提升的空间。
七、总结
当一个大型语言模型(LLM)在多样化的文本数据下训练后,得到的模型将能适应多种多样不同目标的任务和需要。GPT-2在8项测试中的7项取得了历史最好成绩。GPT-2在大量训练和学习中,自动实现了零次学习的能力,并且在无显式监督的情况下,完成了对各类语言理解功能的实现。
致谢
感谢参与科研的技术人员、文章编写者、处理训练数据的数百万参与者、帮助我们提供基础硬件设施的谷歌人员。