GPT
采用两阶段法,第一阶段无监督预训练,第二阶段针对不同的任务进行有监督地精调。预训练阶段GPT使用Transformer的decoder结构。
给定句子U={u1,u2,...,un},使用标准的语言建模目标,最大化似然概率
L1(U)=∑iP(ui∣ui−k,...,ui−1;Θ)
其中Θ是模型参数,k是滑动窗口
使用Transformer decoder,但是和原论文的decoder有所不同,只保留了一个masked multi-head attention,如下图

预训练阶段
设u=(u−k,...,u−1)表示输入的句子,n表示层数,Wp表示位置Embedding,We表示词向量权重矩阵,
h0=uWe+Wp
hi=transformer_block(hi−1) i∈[1,n]
P(u)=softmax(hnWeT)
精调阶段
输入句子x1,x2,...,xm,有label为y,预训练最后一个Transformer block输出的第m个向量hlm,加上输出预测层Wy
P(y∣x1,x2,...,xm)=softmax(hlmWy)
最大化概率函数
L2(C)=∑(x,y)P(y∣x1,x2,...,xm)
将语言模型损失作为一个辅助损失能有效帮助提升精调性能
L(C)=L1(C)+λL2(C)
模型参数配置
预训练:
Transformer层数=12
attention维度=768
head_num=12
FFN网络中中间层的维度=3072 (=768*4)
dropout_rate=0.1
激活函数=GELU
learning_rate 最大是2.5e-4,前面2000步从0逐渐增大,后面逐渐减小
精调:
dropout=0.1
learning_rate=6.25e-5
batchsize=32
lambda=0.5
