这篇文章也将以问答的形式介绍GPT1和GPT2模型的相关技术,欢迎读者提出问题、意见和建议。
问题1:GPT模型的全称是什么,用来做什么?
回答:GPT模型的全称是”Generative Pre-trained Transformer”,是一种NLP领域里的生成式模型,其中Pre-trained的意思是在基于大量的无标记的语料库的基础上进行的无监督训练(样本没有label),训练的任务是基于当前的输入的序列预测下一个最大可能出现的token。GPT模型可以用来做文本生成,对话系统以及文本补全等,通过不断生成下一个token,就可以连续生成较长token的文本序列。
问题2:GPT模型具体怎么达到生成下一个token,并生成长文本的目标的?请介绍一下模型的大体结构和训练细节。
回答:GPT模型的结构采用的Transformer的解码器结构,但和Transformer的编码器解码器结构不同,GPT的解码器结构是独立的,其不依赖于编码器的输出和W^K和W^V参数矩阵进行计算所得K,V和Q进行交叉自注意力机制的实现,即GPT的解码器采用的是自注意力结构(单独解码器架构)。GPT和Bert不同的地方在于GPT依赖序列去预测下一个token,因此其是单向的关系建模,而Bert通过随机遮掩的机制去进行token的embedding的学习,会学习到token的前后的上下文关系。
问题3:GPT中输入的token序列长度一般是不同的,特征embedding怎么通过线性层输出并计算softmax的?
回答:在处理不同长度的输入序列时,和Bert类似,都根据最大长度做了填充,并通过attention mask对填充的位置进行了定义,在输出时也类似做了稀疏化处理,只对实际长度位置的token的特征通过线性层输出(输出为词汇量大小的输出向量)并计算softmax和loss。
问题2:GPT1和GPT2有哪些不同?第2版本有哪些改进?
回答:具体的不同有:1、参数量不同,表现在层数不同,隐藏层维度不同,注意力头数量不同。GPT2在这些方面都做了较大的提升,整体的参数量从GPT1的1.1亿提升到GPT2的最大版本的15亿参数量;2、训练数据来源和数据量不同,GPT1采用的时Bookcorpus的数据集,GTP2采用的时WebText(40GB文本数据)。
References
Leave a Reply