Transformer学习笔记

1. 概述

transformer
不论从命名还是物理结构,都可以看出,Transformer是对Encoder-Decoder模型结构的继承与发展,用途上也依然以解决Seq2Seq问题为初衷。

2. 历史

2.1 Encoder-Decoder

Encoder-Decoder模型其实泛指一类用于解决Seq2Seq问题的模型结构。
encoder-decoder
编解码器都不是固定的,常用的有CNN/RNN/BiRNN/GRU/LSTM等,可以根据具体问题进行自由组合。

缺点

  1. Encoder和Decoder仅由定长语义编码c连接。当输入序列较长时,很难保证C充分表达了语义信息。
  2. 使用非双向的RNN及其衍生结构生成的语义编码中,新时间步的影响总会稀释旧时间步的信息,使越长的输入序列损失越多的旧时间步信息。
  3. 假设序列信息在编解码过程中无信息稀释问题,编解码过程仍然不够合理,无视了输入序列的语境、句式,不同情况下,对所有时间步关注程度相同。

2.2 Attention

Attention模型结构优化了Encoder-Decoder中编解码器间语义信息传递不充分的问题。
attention-matrix
如上图所示,当一个Attention Model将“Tom chase Jerry”翻译为“汤姆追逐杰瑞”时,attention机制通过一个对齐矩阵起作用。该对齐矩阵的形状为(|X|,|Y|),其中|X|为输入序列长度,|Y|为输出序列长度。矩阵的物理意义是输入序列与输出序列之间的对齐概率,抽象意义可以是输入序列中每一个时间步对输出序列中某个时间步的影响力权重分布
图中的f2()表示输入序列单个时间步的编码过程,比如RNN中某个时间步对应的隐层状态值;g()表示编码器输出的多个时间步的语义编码合成过程,比如加权求和。
经过对齐矩阵或attention机制的处理,输出序列的每个时间步,都有一个对应的C,向解码器传递注意力分配情况,即预测该时间步时,对输入序列各时间步的参考程度。

缺点

  1. 深度不够 :编解码器比较深时,不同层次的注意力没有被很好的表达,层次越多,丢失的信息越多。
  2. 广度不够 :编解码器进行语义表示时被限制只能有一种注意力分布,事实上注意力的分布应该有更多视角。

2.3 Transformer

Transformer可以说将注意力机制发扬光大了。multi-headed和self-attention两个新概念,同时解决了Attention Model中注意力广度不够和深度不够的两个问题。详见下文,不赘述。

3. 抽象意义

multi-headed self-attention
Transformer的抽象意义体现了其主要创新点,即 multi-headed self-attention
图中多种颜色的注意力分布,是指用多个“head”分别表达不同视角的注意力。编码的输入和输出是同一个序列,即编解码器的每一层都可以对当前层的输入序列有独特的注意力分布,可以产生更丰富的语义编码,让模型的表达能力更强。

4. 原理介绍

如前文所述,Transformer是Encoder-Decoder结构的发展。下面分别介绍Transformer的编解码器。

4.1 Encoder

encoder3
Encoder包含Self-Attention组件和前馈神经网络组件。两个组件分别构成一个残差块结构。
residual

4.1.1 Self-Attention

self-attention cal outline
从每个时间步看,Self-Attention计算过程如下:

  • 输入序列的每个时间步需要被转换为特征向量x
  • 每个x都有一个对应的向量q(由变换矩阵生成,对应不同的输入序列时间步)和n(输出序列长度)个向量k(由变换矩阵生成,对应不同的输出序列时间步)
  • q与每个k的转置的叉乘结果除以根号d(d为q、k、v的长度,即64)并经过softmax归一化,作为向量v的元素权重
  • n个v(由变换矩阵生成,对应不同的输出序列时间步)求加权和,得到z

将单个时间步的Self-Attention计算过程推广到整个输入序列,即将计算过程的输入从特征向量推广到特征矩阵,则Self-Attention计算过程如下。
self-attention cal 1
特征矩阵X分别叉乘3个变换矩阵,获得矩阵Q、K、V。
self-attention cal 2
Q叉乘K的转置除以根号d再做softmax,其中softmax是对前置步骤输出矩阵行方向的softmax。上述计算结果就是V的权重矩阵,可以认为它就是传统Attention Model中的对齐矩阵。权重矩阵叉乘V即可获得Self-Attention的最终输出Z。

4.1.2 Multi-headed

multi-headed 1
Multi-Headed就是指在多个(8个)分支中计算Self-Attention,不共享参数。
multi-headed 2
多个分支的Self-Attention计算结果输出矩阵做行拼接,然后与一个变换矩阵求叉乘获得多分支综合结果。

4.1.3 Multi-headed Self-attention

Multi-Headed Self-Attention的计算过程概览如下图所示。
self-attention-summary
其中,每个Encoder的输入并不都是输入序列的特征矩阵。从第二层Encoder开始,输入为上一层Encoder的输出矩阵。Transformer原版中,Encoder有 6层。

4.2 Decoder

逻辑上,Decoder是逐时间步处理解码任务的。
transformer_decoding_1
transformer_decoding_2
物理上,每一层Decoder包含3个组件,除了Encoder中同样存在的Self-Attention组件和最后的前馈神经网络组件,还在两者之间增加了一个Encoder-Decoder-Attention组件。
transformer-encoder-decoder
Decoder的Self-Attention组件中,在softmax之前增加了一个mask,用于屏蔽来自时间序列中未来时间步的信息,如下图。
encoder-decoder-attention
此外,对输入序列的每一个时间步,顶层Encoder中获得的K和V在每层Decoder的Encoder-Decoder-Attention组件中复用,而该组件的Q来自上一个时间步的解码结果,经过了所有前序Decoder以及当前层Decoder的Self-Attention组件的处理。
transformer-encoder-decoder2
解码结果的获取很简单,用一个全连接层令解码器最终输出矩阵的最低维长度与词表长度对齐,然后就可以用一个softmax获得概率分布。
transformer_decoder_output_softmax
output_target_probability_distributions
output_trained_model_probability_distributions

5. 应用

Transformer在语义表示模型/语言模型中有出色的表现,其中,目前风头最盛的三个模型分别是BERT(谷歌)、XLNet(CMU+谷歌)和ERNIE(百度)。
此外,Transformer也可以单独作为一种比较强的语义表示组件,应用在各种标注数据充足的NLP任务中。(小数据集任务中,还是用LSTM/GRU更容易收敛)

李宏毅是一位著名的机器学习和深度学习专家,他在教学视频中也提到了Transformer模型。下面是一些关于李宏毅关于Transformer笔记总结: 1. Transformer 是一种基于注意力机制(attention mechanism)的序列到序列(sequence-to-sequence)模型。它在自然语言处理任务中取得了很大的成功。 2. Transformer 模型的核心思想是完全摒弃了传统的循环神经网络(RNN)结构,而是采用了自注意力机制(self-attention mechanism)来建模输入序列之间的依赖关系。 3. 自注意力机制能够将输入序列中的每个位置与其他位置建立联系,从而捕捉到全局上下文的信息。它能够解决传统的RNN模型在处理长序列时的梯度消失和梯度爆炸问题。 4. Transformer 模型由编码器(Encoder)和解码器(Decoder)两部分组成。编码器负责将输入序列表示为高维向量,解码器则根据编码器的输出生成目标序列。 5. 编码器和解码器由多个层堆叠而成,每一层都包含了多头自注意力机制和前馈神经网络。多头自注意力机制可以并行地学习输入序列中不同位置之间的关系。 6. Transformer 模型还引入了残差连接(residual connection)和层归一化(layer normalization)来帮助模型更好地进行训练和优化。 这些是李宏毅关于Transformer的一些主要笔记总结,希望对你有所帮助。注意,这些总结仅代表了我对李宏毅在其教学视频中所讲述内容的理解,如有误差请以李宏毅本人的观点为准。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值