赞
踩
在AIGC大火的今天,很多人都听过和用过ChatGPT和New Bing等聊天交互软件,GPT-4出来后,人们更对它的强大能力感到震惊,决定把相关论文都读一读
GPT-1模型来源于论文《Improving Language Understanding by Generative Pre-Training》,GPT是Generative Pre-Training的简写。从18年GPT-1提出预训练模型+fine-tune的思路后,到后来居上的Bert的大火,这些年NLP领域有好多的故事可讲。
论文摘要翻译:自然语言理解包括一系列不同的任务,如文本蕴涵、问答、语义相似度评估和文本分类。虽然大型的未标记文本语料库丰富,但用于学习这些特定任务的已标注数据很少,这使得分别训练的模型难以达到效果。我们证明,通过在不同的未标记文本语料库上先训练一个预训练生成语言模型,然后对每个特定任务进行微调(fine-tune),可以在这些任务中实现较大的收益。与以前的方法不同,我们在微调期间利用任务相关的输入转换来实现有效的传输,仅需要对模型架构进行最少的更改。我们在一系列自然语言理解基准上展示了我们方法的有效性。我们的通用任务无关模型比使用专门为每个任务单独定制的模型性能更好,在试验的12个任务中有9个显著提高了最新水平。例如,我们在常识推理(Stories Cloze Test)、问答(RACE)和文本蕴涵(MultiNLI)任务上的绝对改进分别为8.9%、5.7%和1.5%。
在论文中,作者把GPT称为一种半监督(semi-supervised)方法, 它分为两个阶段:首先,在未标注数据上使用语言模型的目标函数训练一个神经网络;接着,使用相应的有监督目标函数来使模型的参数适应特定的任务。
模型使用Transformer的decoder,因为当时transfomer不如现在那样为人们所熟知,所以作者解释了下说,使用Transformer可以在处理文本中的长依赖时提供更多的结构内存(more structured memory)。
对于给定的无监督语料的tokens 集合,使用标准的语言模型目标函数,即最大化下面的似然函数(实际训练为最小化时,就在前面添加负号),式中的k是上下文窗口,条件概率P是由神经网络的参数 得到的:
对于语言模型,使用的是多层的原始Transformer 的解码器(decoder) (下面图1中的左半部分), 用公式表示如下:
上式中,是tokens的上下文向量, n是模型层数, 是token的embedding 矩阵,是位置embedding 矩阵。
根据目标函数1训练得到模型之后,就到了对特定任务进行微调以调整模型参数的阶段了。假设有一个已标注数据集C,数据集中每一个实例包含一个输入tokens序列, 以及标签y。 我们把tokens序列输入到已经训练好的模型并得到transformer块最后一层的输出, 将它输入一个新增的参数为的线性输出层来预测y。
此时我们最大化如下目标函数:
作者发现如果在fine-tune时将语言模型的目标函数作为辅助目标函数加入有助于学习,因为两个原因:(a): 有助于提升有监督模型的泛化性; (b):加速模型收敛。 添加一个权重 后,目标函数变为:
所以在微调阶段,只需要添加额外参数和分隔tokens的embedding (具体下一节会提到)
图1 GPT模型示意(论文中的Figure 1)
因为模型预训练时的输入是连续的文本序列,所以对不同的NLP要对任务的输入做一些转换, 如图1右侧所示。在所有输入转换后都将包括embedding 随机初始化的开始和结束token
使用BooksCorpus 数据集来训练语言模型,BooksCorpus 数据集包含7000本不同种类的未出版书籍,题材广泛包含如冒险、浪漫、玄幻等题材。因为这个数据集包含很长的文本,很适合生成模型来学习从很长的信息中获取前提条件。
ELMO模型使用的1B大小的数据集Word Benchmark, 因为是句子级别的文本,文本的长结构被破坏了。
1. 论文下载地址:language_understanding_paper.pdf (openai.com)
4. Generalized Language Models | Lil'Log (lilianweng.github.io)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。