GPT笔记

112 阅读1分钟

GPT

采用两阶段法,第一阶段无监督预训练,第二阶段针对不同的任务进行有监督地精调。预训练阶段GPT使用Transformer的decoder结构。 给定句子U={u1,u2,...,un}U=\{u_1, u_2, ..., u_n\},使用标准的语言建模目标,最大化似然概率 L1(U)=iP(uiuik,...,ui1;Θ)L_1(U) = \sum_i P(u_i | u_{i-k},..., u_{i-1}; \Theta) 其中Θ\Theta是模型参数,kk是滑动窗口 使用Transformer decoder,但是和原论文的decoder有所不同,只保留了一个masked multi-head attention,如下图 在这里插入图片描述

预训练阶段

u=(uk,...,u1)\mathbf u=(u_{-k}, ..., u_{-1})表示输入的句子,nn表示层数,WpW_p表示位置Embedding,WeW_e表示词向量权重矩阵, h0=uWe+Wp\mathbf h_0 = \mathbf uW_e + W_p hi=transformer_block(hi1)     i[1,n]\mathbf h_i = \mathrm {transformer\_block}(h_{i-1}) \ \ \ \ \ i\in [1,n] P(u)=softmax(hnWeT)P(\mathbf u) = \mathrm {softmax}(\mathbf h_nW^T_e)

精调阶段

输入句子x1,x2,...,xmx_1, x_2,...,x_m,有label为yy,预训练最后一个Transformer block输出的第mm个向量hlmh_l^m,加上输出预测层WyW_y P(yx1,x2,...,xm)=softmax(hlmWy)P(y|x_1,x_2,...,x_m) = \mathrm {softmax}(h^m_l W_y) 最大化概率函数 L2(C)=(x,y)P(yx1,x2,...,xm)L_2(C) = \sum_{(x,y)} P(y|x_1,x_2,...,x_m) 将语言模型损失作为一个辅助损失能有效帮助提升精调性能 L(C)=L1(C)+λL2(C)L(C) = L_1(C) + \lambda L_2(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 在这里插入图片描述