GPT 系列使用 transformer 中的解码器,使用无标号的文本做预训练,再到相关的子任务上做 finetune。
transformer 中有更结构化的记忆,可以处理更长的文本信息,从而可以抽取到更好的句子层面和段落层面的信息。
NOTE:$\theta$表示模型参数,k 表示序列长度。最大似然估计 k 个词后一个词的出现概率。
解码器对第 i 个元素抽特征时,只能看到第 i 个元素前的元素(后面的元素被 mask 掉),而编码器可以看到序列中的所有元素。所以这里的标准语言模型中只能使用解码器。
\[L_3=L_2(C)+\lambda*L_1(C)\]NOTE:y 表示标签,h表示这个序列的最后一层的特征,W 表示一个分类的全连接层,通过 softmax 得到最后的预测概率。
C 表示要 finetune 的数据集,L2 loss 就是整个句子在 label 上的预测损失。
NOTE:把具体任务上的训练 loss 和文本预测 loss 放一起加权 finetune,可以得到更好的效果。
Zero-Shot:不在子任务上做 finetune。
模型上相对于 GPT 有少量的结构上的改动,和 Sparse Transformer 类似。
在单一任务的训练效果不如 Bert,这篇论文从另一个角度出发,训练一个更为通用的语言模型。在各方面达到还不错的效果,都不惊艳,但都可以做。
因为要训练更为通用的模型,则不能引入一些特殊的 token。作者通过利用模型的语言理解能力,使用类似语言提示的东西来迁移到下游任务。但也需要更大的数据来提升模型的语言理解能力。
few-shot:可以使用少量子任务数据。但不做微调和梯度更新(因为参数量非常大,微调成本也很高)。
模型和 GPT-2 相同。