transformer---李宏毅

本文详细介绍了Transformer模型,一种在自然语言处理领域超越传统RNN和CNN的序列到序列模型。文章解释了Self-Attention机制如何通过并行计算提高效率,以及Multi-Head Self-Attention如何让模型关注不同层次的信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
什么是transformer?对于seq2seq模型,我们常用的是RNN,但我们所使用的RNN是按照时间步去计算的,缺少并行性,当我们的训练集很庞大时,我们的训练时间要很久,而李宏毅老师在视频里讲到,有人提出用CNN去替代RNN,如下图,左图为双向RNN,而右图为CNN去训练序列
在这里插入图片描述
我们看到右图中使用CNN对序列进行特征的提取,图中每一个三角形代表一个filter,我们第一层提取相邻的序列单词的特征,第二层则对特征进行更深入的提取,以此类推当我们想要提取到更多信息的联系的话,那么我们就要叠加多层的CNN,这种的好处是可以并行化,但是缺点是要叠很多层,这样我们才能获得丰富的信息。
在这里插入图片描述
对此google提出了Attention is all you need的论文,论文中使用了Self-Attention Layer去代替seq2seq的RNN,即使所有的RNN都可以用self-attention去代替,我们输入一个序列也可以输出一个序列,并且他的计算是并行的,极大地加快效率。

self-attention首先出现在attention is all you need
上图为self-attention的参数介绍,我们输入序列x1 — x4 通过inner product
获得输入a1 — a4,然后我们需要在self-attention层中输入三个参数q(query)、k(key)、v(value),我们可以通过a分别dot三个不同的权重矩阵获取每个输入的q、k、v。
在这里插入图片描述
上图为我们使用q、k、v三个参数进行运算了,我们的第一步是算出当前的词语与其他的词语的相似度,以上图为例,我们将一个输入的query分别于其他输入的key进行点积乘法,得到的α即为我们所说的词与词之间的相似度,我们要计算所有的输入的相似度,上图没有给出。为什么除以根号d?因为当我们输入的矩阵过大时,矩阵乘法产生的数据会非常大,我们要适当缩小。
在这里插入图片描述
我们获取到相似度后要怎么做呢?如上图,我们要将我们获取的相似度进行归一化,使用soft-max层获取到相似度的概率,这就是soft-max层的运用,得出当前词对其他词的注意力分布的概率。
在这里插入图片描述
获取到当前单词的注意力后,我们所需要做的就是整合注意力,使用获取到的注意力与每个词的value进行点乘,这时我们获取到的就是注意力机制对每个词的权重分布,相加后我们就可以得到当前的词对所有词的信息,并且这些信息是由着重点的。
在这里插入图片描述
上图为对x2进行self-attention。
在这里插入图片描述
上图为对序列输入的抽象。
那么我们是怎么对计算进行平行化的呢,请看下图
在这里插入图片描述
当我们的a1 - a4进行拼接与权重矩阵进行inner product时,我们可以同时获得所有输入的q、k、v的拼接,原理就是关于矩阵的乘法。
在这里插入图片描述
获取到q、k、v的拼接后怎么办呢,我们看上图,我们需要的是α,也就是相似度,那么我们可以用每个query,去product key的拼接矩阵的转置矩阵,这样我们就可以获得一个α的拼接矩阵。
在这里插入图片描述
那让我们再进一步,让我们使用key的转置拼接矩阵,去product q的拼接矩阵,那么我们就可以获得一个关于所有输入的相似度的拼接矩阵,每一列都为一个输入的相似度。然后,我们进行softmax归一化,就可以获得注意力的概率。
在这里插入图片描述
最后呢,我们就要使用我们的概率去与每个输入的value进行点乘,在这里我们使用v1 - v4的拼接矩阵与注意力分布矩阵进行矩阵乘法,最后我们就可以得到每个输入关于整个序列的输出了。
在这里插入图片描述
self-attention的流程。

multi-head self-attention
下面是muti-head self-attention
在这里插入图片描述
原理与上述的self-attention相同,只是每个输入的q、k、v参数可以是多个。
每个self-attention都只与相同层次的参数相乘,例如qi1只与ki1和kj1相乘,value也是如此。
在这里插入图片描述
而因为每个输入都可以得到多个的信息输出,我们可以使用dot将他们转化为一个输出。mult-head的优点是不同的head可以关注不同的信息,每个head各司其职。

顺序问题
对self-attention来说,输入的次序是不重要的
原paper中,使用人工设置的positional vector ei
也可以在xi上append一个one-hot的vector,但是实际的效果是一样的。
在这里插入图片描述

流程图
在这里插入图片描述
其中解码器的第一层为masked-muti-head-attention只是用于对已经输出了的词进行self-attention,因为后面的词还没有产生。
在这里插入图片描述
muti-head-attention
在这里插入图片描述
一个考虑远处,一个只考虑近处。

学习自:https://www.bilibili.com/video/BV1J441137V6?t=1463

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值