广告行业中那些趣事系列4:详解从配角到C位出道的Transformer

2022-05-05 12:58:45 浏览数 (1)

摘要:上一篇广告行业中那些趣事系列3:NLP中的巨星BERT,从理论的角度讲了下NLP中有里程碑意义的BERT模型。BERT具有效果好和通用性强两大优点,其中效果好最主要的原因就是使用了Transformer作为特征抽取器。本篇主要详解下这个从配角到C位出道的Transformer,主要从宏观和微观的角度分析Transformer,讲下它的核心注意力机制Attention,然后以翻译任务举例讲下Transformer是如何进行工作的。

对充满挑战的高薪行业NLP感兴趣的小伙伴可以多多关注。不仅仅是技术,大家也可以了解到身边的翻译任务、对话机器人是怎么做出来的。

目录

01 BERT和Transformer的关系

02 为什么要用Transformer

03 从宏观视角看Transformer

04 从微观视角看Transformer

01 BERT和Transformer的关系

图1 回顾Word Embedding的演化历史

这里作为引言回顾下NLP中预训练技术Word Embedding的演化历史:

Word2vec将文本映射到向量空间,从而实现了在低维向量空间表示文本。通过向量空间中距离的长短可以表示文本语义的相似度。但是因为一个词在向量空间中位置是唯一的,所以无法解决多义词的问题。比如”legend”既可以代表传奇,还可以代表图例。归根结底是静态的Word Embedding。

ELMO采用联系上下文的三层embedding来表示词,不仅包括词向量,还包括了句法特征向量和语义特征向量,很好的解决了多义词问题。

而目前项目中使用的BERT模型相比于ELMO,因为使用了Transformer作为特征抽取器,所以模型效果很好。

总结下,google推出的BERT模型在11项NLP任务中效果有很大提升。最重要的一个原因是使用Transformer作为特征抽取器。

02 为什么要用Transformer

图2 传统的特征抽取器RNN和CNN

NLP中传统的特征器主要是RNN和CNN。

RNN(或者变种LSTM、GRU等)由于本身的机制只能按顺序依次计算,这种机制存在两个问题:

  • 时间片t的计算依赖上一时间片t-1的计算结果,这样限制了模型的并行能力
  • 信息计算的过程中信息会丢失,虽然LSTM等通过门机制会一定程度缓解长期依赖的问题,但是对于特别长的依赖现象LSTM还是无能为力

CNN虽然可以并行化计算,但是不适合捕捉长距离特征。

因为RNN和CNN各自存在的问题,所以google团队在论文《Attention is All You Need》中提出了Transformer模型。中文的意思是变形金刚,听着就很霸气。

Transformer抛弃了传统的CNN和RNN,整个网络完全由Attention机制组成,同时具有可并行化计算和捕捉长距离特征的优点。

03 从宏观视角看Transformer

1. Transformer的组成

图3 从宏观视角看Transformer

拿翻译系统举例,我们输入一种语言,通过Transformer模型,输出是另外一种语言。

进一步剖析Transformer模型,主要有编码组件和解码组件组成。编码组件中包含很多个编码器,解码组件也包含很多个解码器。

2. 编码器和解码器结构

图4 编码器和解码器结构

编码器主要包含自注意力层(Self-Attention)和前馈神经网络层(Feed Forward Neural Network)。

解码器和编码器很相似,也包含自注意力层和前馈神经网络层,另外还有一层编码解码层(Encoder-Decoder Attention)。

小结下,我们从宏观视角了解了Transformer的结构。Transformer主要包含编码组件和解码组件,编码组件中又包含很多编码器,解码组件同理。编码器中主要有自注意力层和前向神经网络层,解码器相比于编码器多了编码解码层。总体来说还是比较容易理解。

04 从微观视角看Transformer

1. 从张量计算查看Transformer内部转化流程

大部分NLP任务首先需要将语料转化成词向量的表征形式x。

对于编码组件来说,底层的编码器作为整个Transformer的入口,接收词向量作为模型输入。

这里咱们通过具体输入输出的维度表示来方便小伙伴们更好的理解Transformer中的各个环节。我们假设词向量的维度为512维。这里的512是可以设置的参数,一般是训练集中最长句子的长度。

因为编码组件中所有编码器的输入维度是相同的,初始的词向量是1X512维,那么底层的编码器的输入是1X512维,所以其他的编码器的输入也是1X512维。编码器内部会依次经过自注意力层和前馈神经网络层。

低层编码器的输出会作为上一层编码器的输入,不断进行,直到穿过整个编码组件。比如图5中编码器1的输入是词向量,编码器2的输入是编码器1的输出。编码器内部转化流程和编码器之间的转化流程如下图所示:

图5 编码器内部以及之间的转化流程

2. 查看自注意力层的计算流程

Transformer中最重要的就是这个自注意力机制Self-Attention。Self-Attention主要用于计算当前词对所有词的注意力得分,整个流程如下:

图6 计算注意力得分整个流程

这里通过计算词"thinking"的注意力得分举例,详细分析步骤如下:

(1) 将编码器的输入x转化成三个向量

通过词向量x(1X512)和三个不同的权值矩阵

0 人点赞