1.引言
前面我们介绍了ELMo算法的思想,通过在大量的语料上预训练语言模型,然后再将预训练好的模型迁移到具体的下游NLP任务,从而提高模型的能力。但是ELMo预训练的语言模型结构和下游的NLP任务的模型经常会不一致,因此,做迁移学习时经常没法将两者的模型直接进行融合,因此,本文将介绍OpenAI在2018年提出来的一个方法——GPT,该模型在预训练语言模型的基础上,只需要做一些微改即可直接迁移到各种NLP任务中,因此,其迁移能力更强。
2.GPT原理介绍
GPT模型主要包含两个阶段,第一个阶段,先利用大量未标注的语料预训练一个语言模型,接着,在第二个阶段对预训练好的语言模型进行微改,将其迁移到各种有监督的NLP任务,并对参数进行fine-tuning。
2.1 预训练模型(无监督)
给定一个没有标注的大语料,记每一个序列为 U = { u 1 , … , u n } \mathcal{U}=\left\{u_{1}, \dots, u_{n}\right\} U={
u1,…,un},GPT通过最大化以下似然函数来训练语言模型:
L 1 ( U ) = ∑ i log P ( u i ∣ u i − k , … , u i − 1 ; Θ ) L_{1}(\mathcal{U})=\sum_{i} \log P\left(u_{i} | u_{i-k}, \ldots, u_{i-1} ; \Theta\right) L1(U)=i∑logP(ui∣ui−k,…,ui−1;Θ)
其中, k k k表示上下文窗口的大小,这里计算每个单词的预测概率时,只考虑左侧窗口大小的词汇信息,在GPT中,作者采用的是一个12层的