GPT-1利用一个可扩展、与任务无关的系统,在一系列多样化的语言任务上取得了最先进的结果。GPT-1的方法结合了两种现有思想:Transformer和无监督预训练。这些结果表明,将监督学习方法与无监督预训练相结合效果非常好;这是许多人过去已经探索过的思想,GPT-1将这一思想应用于更大、更多样化的数据集上。
接下来分为四部分:摘要、引言、框架、实验,一起来精读论文:GPT-1:Improving Language Understanding by Generative Pre-Training(通过生成式预训练提升语言理解能力)
GPT-1:通过生成式预训练提升语言理解能力
一、摘要
在计算机视觉领域,预训练通常依赖于像ImageNet这样的标注数据集。而GPT在自然语言处理领域带来了创新,它通过无监督预训练使得大量无标签数据能够被有效利用。此外,预训练好的模型还可以进行微调,以适应各种下游任务。
二、引言
为什么要使用无标签数据?能够从未标注数据中利用语言信息的模型为收集更多标注数据提供了一种有价值的替代方案,因为收集标注数据既耗时又昂贵。
一文彻底搞懂大模型 - 开源数据标注平台Label Studio
损失函数设计困难:不清楚什么样的优化目标对文本有效。
特征迁移困难:怎么样把学习到的问题表示,传递到下游的子任务上;没有一种表示,能够迁移到所有子任务上。
如何解决这两个挑战?探索了一种结合无监督预训练和监督微调的语言理解任务半监督方法。我们的目标是学习一种通用表示,该表示能够经过少量调整就迁移到各种任务中。
提出一个半监督的方法(无监督预训练+有监督微调),即在无标签的数据上,先训练一个比较大的语言模型,然后根据子任务进行微调。
基于预训练模型进行微调的时代来临了,后续的BERT、GPT-2、GPT-3、GPT-4继续沿着这条路线探索,只是后来不再称为半监督学习,而是叫做自监督学习。-- 架构师带你玩转AI
三、框架
𝐿1(𝑈)=∑log𝑃(𝑢𝑖∣𝑢𝑖−𝑘,…,𝑢𝑖−1;Θ)
其中k是上下文窗口的大小,条件概率P使用带有参数Θ的神经网络进行建模。
使用最大似然估计(Maximum Likelihood Estimation,MLE),根据上文的k个单词,预测下一个最大概率的单词𝑢𝑖。
如何实现根据上文预测下一个单词?在我们的实验中,我们使用多层Transformer解码器作为语言模型。该模型对输入上下文令牌执行多头自注意力操作,然后应用位置全连接层来产生目标令牌上的输出分布。
其中,𝑈=(𝑢−𝑘,…,𝑢−1)为上下文tokens向量,𝑛为transformer的层数,𝑊𝑒为词嵌入矩阵,𝑊𝑝为位置编码矩阵。
L3(C) = L2(C) + λ * L1(C) (5),除了考虑微调损失,还考虑了预训练部分的损失,并用λ加权。
总的来说,在微调期间我们需要的唯一额外参数是Wy和分隔符令牌的嵌入。
如何针对特定任务进行输入转换?对于某些任务,如文本分类,我们可以直接按照上述描述对模型进行微调。然而,其他一些任务,如问答或文本蕴含,其输入具有特定的结构,例如有序的句子对,或者文档、问题和答案的三元组。
文本分类:一段文本,在前面加入开始词元[Start],在后面加入抽取词元[Extract],模型对最后一个词抽取的特征[Extract]放入线性层进行分类。
文本蕴含:给一段话,再给一个假设,判断前面一段话是否蕴含提出的假设。即两段文本做三分类问题(支持,不支持,既不支持也不反对)。将两段问题串成一个序列,使用开始符[Start],分隔符[Delim],抽取符[Extract]。
相似性:判断两段文字是不是相似。相似是对称的,a和b相似,则b和a也相似。生成两个序列,两个序列的文字顺序不同,再使用开始符[Start],分隔符[Delim],抽取符[Extract]。得到两段输出后,经过Transformer相加,最后经过线性层进行二分类。
多选题(问答和常识推理):如果有n个答案,构造n个序列,前面是问题,每一个答案作为第二个序列;每个序列进入Transformer块,最后经过线性层,输出答案的置信度;最后做一个softmax。
复用预训练的Transformer解码器结构,加一个线性层,不同的任务需要不同的输入。
四、实验
参考资料
https://openai.com/index/language-unsupervised/ https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf
https://www.bilibili.com/video/BV1AF411b7xQ/