万字长文看懂自然言语处理GPT-2模型

图灵汇官网

在过去的一年中,各种大型自然语言处理模型相继刷新了多项记录。其中,GPT-2凭借其出色的性能引起了广泛关注。GPT-2在文本生成方面表现优异,尤其是在上下文连贯性和情感表达方面,超出了人们的预期。尽管GPT-2的架构并不复杂,但它是一个基于transformer架构的大规模模型。

GPT-2拥有巨大的规模,是基于transformer架构,在大规模数据集上训练出来的。本文将探讨GPT-2的模型架构,并重点介绍其关键的自注意力机制。此外,还将讨论GPT-2如何利用只包含解码器的transformer架构,在语言建模之外的应用。

第一部分:GPT-2与语言建模

首先,什么是语言模型?

什么是语言模型

语言模型的基本功能是预测下一个单词。最常见的语言模型是手机上的输入法,它可以根据当前输入内容推荐下一个单词。GPT-2的功能类似于输入法的联想功能,但其规模更大、更复杂。GPT-2使用了一个名为“WebText”的40GB数据集进行训练。

如果从存储大小角度比较,手机输入法“SwiftKey”大约需要50MB的存储空间,而GPT-2的最小版本至少需要500MB的存储空间,最大版本甚至需要超过6.5GB的存储空间。

用户可以通过“AllenAI GPT-2 Explorer”来体验GPT-2模型,该工具可以展示下一个单词的概率,并通过选择一个单词,逐步生成完整的文本。

运用Transformers进行语言建模

原始的transformer模型由编码器和解码器组成,二者都由称为“transformer模块”的部分堆叠而成。这种架构在机器翻译任务中取得了成功。后来的研究尝试去掉编码器或解码器,只使用堆叠的transformer模块进行训练。

变换器模块的堆叠深度

GPT-2有多个版本,每个版本的堆叠层数不同:“小号”版本有12层,“中号”版本有24层,“大号”版本有36层,而“特大号”版本则有48层。

与BERT的区别

GPT-2使用的是transformer解码器模块,而BERT使用的是transformer编码器模块。两者的主要区别在于:GPT-2每次只处理一个单词,而BERT可以同时处理多个单词。

Transformer模块的演变

原始的transformer论文引入了两种类型的transformer模块:编码器模块和解码器模块。GPT-2使用的是解码器模块,只包含解码器,而BERT使用的是编码器模块。

GPT-2的内部机制

GPT-2可以处理最长1024个单词的序列。每个单词都会和它的前续路径一起通过所有解码器模块。模型运行时有两种模式:随机生成无条件样本,或者给定提示生成特定主题的文本。

深入理解内部原理

输入编码

GPT-2从嵌入矩阵中查找单词对应的嵌入向量,并加上位置编码,以便指示单词的顺序。每个单词的嵌入向量和位置编码向量相加后输入到第一个transformer模块。

自注意力机制

自注意力机制是transformer的核心组成部分,它允许模型在处理每个单词时,融合上下文信息。具体来说,它为每个单词计算查询、键和值向量,然后计算每个单词与其他单词之间的注意力得分,最后将这些值向量加权求和。

探索语言建模之外的应用

只包含解码器的transformer模型不仅在语言建模中表现出色,还在其他领域取得了成功,如机器翻译、自动摘要生成、音乐生成等。

通过以上内容,我们希望读者能对GPT-2及其背后的transformer架构有更深刻的理解。

本文来源: 图灵汇 文章作者: 丁伯洋