BERT学习笔记(2)——Transformer

16 篇文章 3 订阅
11 篇文章 0 订阅

由于我没有读过原论文,该博客写的内容几乎来自于李宏毅老师的Transformer课程,链接在这里:《台大李宏毅21年机器学习课程 self-attention和transformer》。该博客用于梳理笔记,以便后面复习的时候使用。如果后面读了相关论文或者有了新的理解会进行更改补充。

1 简介

Transformer是一个Seq2seq(sequence to sequence)模型,其实质上是一个Encoder和Decoder的结合。其简略结构图如下:
Transformer简略结构
其详细的框架图如下:
Transformer详细结构
下面就详细展开其中的内部构造。

2 Encoder

Encoder实质上就是一个输入是序列(sequence),输出也是序列的东西,对应的是上述详细图中左边的部分:
Encoder简略图
其中,可以将这个详细的Encoder图概述如下:
Encoder概述图
在这个图中,每一个Block代表了输入一个序列,经过一个Self-attention,输出一个序列,这个序列在经过一个fully-connected neural network,得到新的序列。而一共有N个这样的Block堆叠在一起,就是说上一个Block得到的序列会传入下一个Block中,重复N次,就能得到Encoder最终的输出结果。

而原论文图中还有个Add & Norm,这个Addresidual connection,而这个NormLayer Norm
Add & Norm
(这个图先看左边,左边最顶上省略号对应右边)residual connection实质上就是将一个向量输入到self-attention中得到的向量再与这个input vector相加(具体为什么有什么用我也没查过,如果后面有需要学习了再补充)。而Layer Norm就是一个向量减去其均值并除以其标准差。Layer Norm给我的感觉就是一个标准化(Standardization)的方法,主要是对特征进行缩放,方便梯度下降。

3 Decoder

Decoder对应的是第一节详细框架图中的右边部分。这一部分在我最开始理解的时候有点绕,因为有两个输入。以李宏毅老师的PPT来说,我们将Decoder看作是一个黑盒子,在语音识别领域,假设输入的是机器学习这四个字的语音,我们期望能够得到这四个字的文本,其运行流程简略版如下:
decoder运行流程1
decoder运行流程2
decoder运行流程3
decoder运行流程4
那么通过这四张图就可以简单理清Decoder的运行流程,尤其是为何Decoder有两个输入。简单来说步骤如下:

  • Encoder将语音信息进行编码,最终输出机器学习语音信息的4个向量,将其输入到Decoder中;
  • 输入一个特殊的字符BOS(begin of sequence),经过Decoder并与Encoder的输出进行运算,得出的向量中,最大概率值就是我们第一个输出的结果(在该例子中我们期望的目标是这个字的概率最大);
  • 接着我们将重新输入到Decoder中(i.e. 成为下一轮Decoder的输入),并与BOS结合(这里下面会提到Masked Multi-Head Attention),再与Encoder的输出做运算,得出第二个输出结果,这里我们期望最大概率为
  • 接着将输入到Decoder中,与BOS结合,与Encoder做运算,得出
  • 输入Decoder,与BOS结合,与Encoder运算,得出;
  • 当然,图上还少了一个步骤,就是将输入进Decoder,与BOS结合,再与Encoder运算,得出输出EOS(end of sequence),到此结束。

有了这个感性的认识后,我们再细看Decoder中的每个环节。首先是Decoder的输入后会进入一个Masked Multi-Head Attention,这个模块与Self-attention的区别就在于下图:
Masked self-attention
我们发现对于 b 1 b^1 b1 而言,它只由 a 1 a^1 a1 决定;对于 b 2 b^2 b2,只由 a 1 , a 2 a^1, a^2 a1,a2 决定;后面以此类推。就是说Self-attention中每个输出都由所有的输入决定,但是Masked Self-attention中每个输出只与其当前的输入与之前的输入决定。直觉上讲,这是因为我们的输出是一个个输出的(就比如上面语音的例子中机,器,学,习是逐个输出的),所以需要输出当前的内容,只能观测到当前与之前的东西(就是说当 a 2 a^2 a2 输入时,只有 a 1 , a 2 a^1, a^2 a1,a2,没有 a 3 , a 4 a^3, a^4 a3,a4)。

当然,采用这种方式的Decoder我们会发现一个很严重的问题,就是没法并行化处理。于是有学者就提出了采用Non-autoregressive的方法,即Decoder的输入从依次输入变为一起输入,如下图:
NAT
但是问题来了,NAT如何控制输入多少东西?NAT有两种做法,第一种就是重新训练个预测器,用于预测输入的长度;第二种就是人为设定一个超参数,用于衡量输出的最长长度,接着当输出序列中出现一个EOS后,EOS右边的内容全部不要。这样的优点就是可以并行化处理Decoder的输入了,但是缺点就是性能是差于AT的。

接着我们再来看Decoder中第二个block。这里Encoder会提供两个输入,还有一个输入是从Decoder的Maksed Multi-Head Attention中提供的。其中,Encoder提供的输入是自注意力机制中的 K , V K, V K,V 向量,而Decoder提供的输入是 Q Q Q 向量:
Encoder输入Decoder1
Encoder输入Decoder2
而对于其损失函数的构建来说,我们可以把这个看作是一个N分类问题(N为词表大小),那么就可以用交叉熵来作为损失函数。
loss
而训练的时候,输入的训练数据是Ground Truth,但是在测试的时候,则是用Decoder的输出作为输入。那么在这种情况下,极有可能出现只要Decoder输出一个错误后,后续的内容都错误。所以在这种情况下,解决方案是在训练的时候输入一些错误的内容给Decoder。

4 参考

[1] 爱学习的凉饭爷. 台大李宏毅21年机器学习课程 self-attention和transformer[EB/OL]. (2021-03-30)[2021-08-24]. https://www.bilibili.com/video/BV1Xp4y1b7ih?p=3
[2] Stink1995. 史上最小白之Transformer详解[EB/OL]. (2020-03-27)[2021-08-24]. https://blog.csdn.net/Tink1995/article/details/105080033?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162968343316780264074454%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=162968343316780264074454&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-105080033.ecpm_v1_rank_v29&utm_term=transformer&spm=1018.2226.3001.4187
[3] 李rumor. 【NLP】Transformer模型原理详解[EB/OL]. (2021-05-01)[2021-08-18]. https://zhuanlan.zhihu.com/p/44121378
[4] 龙心尘. 图解Transformer(完整版)[EB/OL]. (2019-01-17)[2021-08-18]. https://blog.csdn.net/longxinchen_ml/article/details/86533005
[5] 野指针小李. BERT学习笔记(1)——self-attention[EB/OL]. (2021-08-18)[2021-08-24]. https://blog.csdn.net/qq_35357274/article/details/119781979
[6] 野指针小李. 机器学习学习笔记(3)——量纲与无量纲,标准化、归一化、正则化[EB/OL]. (2020-10-30)[2021-08-24]. https://blog.csdn.net/qq_35357274/article/details/109371492

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值