目录
2.3 输入变换(Input transformation)
0 参考文献
原论文链接:https://www.mikecaptain.com/resources/pdf/GPT-1.pdf
今天给大家解读一下Improving Language Understanding by Generative Pre-Training这篇文章,也就是俗称的GPT-1,是GPT语言模型公诸于世的最初版本。
谈谈我的个人理解,如有疏漏,欢迎指正!
GPT这个名字,是后人给这个模型起的,原论文中并没有将他们的模型成为GPT。对于这个名字,我看网上主要有两种说法,一说取自Generative Pre-Training,即生成式预训练的首字母缩写,代表这个模型的主要特点,一说取自Generative Pre-trained Transformer。我个人倾向于后者,因为这不但体现出了模型“生成式”和“预训练”的特点,还表明了GPT本质上基于Transformer模型结构。
1 问题背景
众所周知,GPT是一个大语言模型,无论后续的诸多变体被应用在哪个领域,GPT最初都是为了应对自然语言处理(NLP)任务而诞生的,这一点从论文标题也可以看出来。
所有语言模型,都是用来执行特定的或是多种综合的NLP任务。常见的自然语言处理任务包括很多种,比如文本蕴涵、问题回答、语义相似度评估、文本分类、机器翻译等。

1.1 语料库资源
语言模型的训练需要语料库,目前语料库的分布如同下图所示。黄色部分是未标记的数据,指的是那些没有经过手动标注、分类的文本数据集合,这些数据通常来自各种各样的地方,比如新闻报道、网络上的文章等。红色部分是针对特定任务的带标记的数据。
绝大多数数据都是没有标记的,用于学习一些特定任务的标记数据数量很少。

1.2 方法的问题
1.2.1 监督学习
GPT之前大多数的深度学习方法都采用监督学习,需要使用大量的带标签的数据。如果现有的带标签数据不够,还需要对没有标签的数据大量的手工标记,人工成本很高,所以这种方法难以适用于哪些带标记数据不足的领域。
而且文章里也提到,即使是在那些有很多带标记数据的情况下,使用无监督的方式学习对文本的表示也可以更好地捕捉数据的特征,从而显著提高性能。
1.2.2 预训练词嵌入
预训练词嵌入方法就是一种无监督学习方法,它通过大规模的文本数据来训练词向量,目的是把一个单词,映射成一个向量。单词之间联系紧密的,在向量空间中的距离就比较靠近,比如“吃”和“苹果”之间的联系比“吃”和“墙壁”之间的联系更紧密,“吃”和“苹果”这两个词在向量空间就会更近。
这种方法的问题是,使用的都是单词级的信息,只能捕捉到单词之间的语义关系,不能捕捉到更高层的语义信息,比如短语级和句子级。而且这种方式难以适应训练数据与真实数据之间单词分布的差异。
1.3 面临的挑战
GPT的目标是使用文本中单词级别以上的级别的信息,但这存在两个需要解决的挑战。
第一个是无法确定使用哪种目标函数进行优化是最有效的。因为针对不同的任务,训练效果最好的时候使用的可能是不同的目标函数,比如A任务用第一种目标函数效果最好,B任务用第二种目标函数效果最好。
第二个是预训练结束之后,模型学到了一种文本的表示,但是这种表示不一定适用于下游的所有子任务,因为不同子任务可能需要关注的特征不同,那如何把学到的文本表示有效地传递给下游的子任务,让模型在这些任务上的性能比较好,这个方法是没有达成共识的。
2 GPT模型架构(训练方法)
为了解决上面提到的问题,GPT使用了一种预训练+微调的架构,如下图所示,中英文对应如下:
Unlabeled text:没有标记的大量原始数据
Specific labeled text:针对不同任务的有标记的
GPT-1:生成式预训练语言模型解析

本文解读了GPT-1模型,介绍了其基于Transformer的架构,强调了预训练和微调策略,以及如何通过无监督和有监督学习解决NLP任务中的挑战。模型通过大规模文本预训练,然后针对特定任务进行微调,展示了在多个NLP任务中的优秀性能。

最低0.47元/天 解锁文章
8645





