transformer学习笔记

Transformer 模型详解

这篇对transformer的self attention子层的机制有详细的图文并茂的解释,并且附上了作者对关键概念的诠释,非常启发性。但是整体和其他方面一笔带过。

Transformer模型详解(图解最完整版)

这篇梳理了transformer的整体过程,但是没有更多自己的理解。


自己的一些理解笔记,门外汉,如有错误请指正:

1.线性变换层

self attention里提到的线性变换层,和全连接层有点像。但是全连接层是把分布式特征representation映射到样本标记空间,也就是说,把feature map 整合成一个值,因此空间结构特性被忽略了。

而本文里的线性变换层只是对输入矩阵做行方向上的线性相关运算,因此只损失了一个维度上的空间相关性(本文的context是NLP,矩阵一行代表一个单词,一列是一句话里的多个单词,因此不会贸然弄乱掉单词间的独立性)。

线性变换的实质就是一个一维方向上的卷积,但没有bias和激活函数。

2.注意力计算机制

softmax(QK^{T})\cdot V=Z

例如假设[0,0,1]表示am,[0,1,0]表示student,在注意力权重计算得[0,0.2,0.8],相当于两个单词进行了某种融合。

①矩阵相乘X*Y=Z,X的宽度和Y的高度相同。把v矩阵看做元素为行向量(单词特征向量)的列向量,则z矩阵是v矩阵行向量(单词特征向量)的线性组合,也就是说z是v对单词向量之间进行某种相加和数乘的结果。因此z的宽度代表了特征向量的维度,这在线性变换中是不会改变的,必须和v相同。这里额外说一个线性代数的心得:分析矩阵相乘时,要回到线性代数,看成一个矩阵和一个向量相乘,也就是对该向量进行线性组合。例如本例中的v,可以把v看成单独的列向量。分别与注意力矩阵相乘后,再拼接起来,比较好理解。

QK^{T}矩阵(上图左)并不是对角阵,因此说明注意力是有方向的。也就是说在某句话中,student对am的注意力,和am对student的注意力,二者并不相同。

③左乘这样的操作,相当于是按注意力作为权重将各个单词相加。Z虽然不再是输入的单词特征向量矩阵,但单个单词特征向量内部之间没有进行加操作,因此单词特征的独立性得到了一定程度的保留。设想如果是右乘一个3X3的矩阵,则破坏了单词特征内部的构造。

但是,在如下图所示的计算Q,K,V阶段,是使用的右乘,也就是在单词向量内部进行破坏和重组,这又是为什么呢?

 这是因为目的不同,在计算Q,K,V阶段,从512维线性变换成了64维,相当于对单词向量进行了降维,提取了某种特征。这和CV里不一样,CV提特征是从低维度提到高维度,而NLP里,一个单词向量(简略来说)代表了它在词典里的位置,例如最基本的one-hot标注方式,因此特征提取反而是融合掉不必要的多余的维度。而在这里,右乘刚好起到这个作用。

3.输入输出整理

首先讨论训练时的情况,输入为英文“I am a students”,输出为其中文翻译,“我是一个学生”。其中decoder第一层会用到masked 多头注意力层。这里的mask在阅读博客时受误导,觉得因为在测试时(也就是inference时)是同声传译,说一个英文词,翻译一个中文词,要有时间先后,因此使用mask屏蔽掉后来的单词,避免在训练时引入了不该知道的信息。后面才知道自己理解错误,这里和时间无关,输入数据都是同时输入的,只不过输出时多次迭代机制,每次输出只有一个翻译词,并将该词加入已完成的句子参与迭代,也就是每次向右边挪一位,一个词一个词地完成句子(上面所说的shifted right)。具体见下图(动图):

 

 (动图见The Illustrated Transformer – Jay Alammar – Visualizing machine learning one concept at a time.)

原因猜测:

①按照本文的网络结构,如果不是一个词一个词的翻译,那么输出的结果应该是世界上所有词组成的句子的概率分布。而句子没有长度限制,可以是无限长,所以网络无法处理。而本文的方法每次处理的是世界上所有的词的概率分布,是一个虽然大、但是有限的集。如下图:

 

4.对整个算法的理解

在encoder阶段,相当于训练一个高抽象的词典,关键的三个矩阵Q、K、V中,词典key对应低抽象层级的输入,value是该key在高抽象层级的对应。Q和V形成了注意力机制,也保证了语义在不同单词向量中间的流动,同时还引入了一定的交互机制。

在decoder阶段,先进行一定程度的抽象(第一层),再将抽象出来的Q用来对encoder中的KV字典进行查询,可以说模拟了一个“不同语言都可以查询的高度抽象的语义字典”的使用逻辑。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
李宏毅是一位著名的机器学习深度学习专家,他在教学视频中也提到了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的一些主要笔记总结,希望对你有所帮助。注意,这些总结仅代表了我对李宏毅在其教学视频中所讲述内容的理解,如有误差请以李宏毅本人的观点为准。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值