从编解码和词嵌入开始,一步一步理解Transformer,注意力机制(Attention)的本质是卷积神经网络(CNN)(3)(注意力机制)

1.注意力机制
首先,请各位看官大老爷,看这个图。 在这个图上,最下面有输入和输出。这就相当于我们前面说的自然语言处理。左边输入中文,他会自动的翻译成英文 ,从右边输出。当然,这是在训练好的情况下。如果是为了训练,左边和右边都是一种输入。分别把中文和英文语义相同的语料输入到模型里面,最后输出的是图中最上面的那部分。一个是损失函数在上面,通过损失函数的值,在进行反向传播,去修改里面的参数。我们看一下最下方,输入和输出都有一个Embedding ,也就是说,输入,和输出都是先转换成词向量,然后再去进行后续的操作。也即是说,这一层已经有一个嵌入矩阵了。这个嵌入矩阵也不是死的,需要在训练时进行调整参数。这个过程就是相当于准备好词典。把单个token词义都查出来。词和词组合之后的语义,是需要在现在的基础之上,在进行分析和理解的。对词和词组合之后的语义理解,靠的就是注意力机制。就是图中橙色的部分。这就是transformer的核心。

在这里插入图片描述

2.什么是注意力?怎么理解注意力
理解注意力机制,最直接的方法,请看下面的这张图。

在这里插入图片描述
下面,解释一下这张图。作为一组词向量,经过三个矩阵相乘后,分别得到Q,K,V三个矩阵,然后他们再经过一顿运算,还是会输出一组词向量。我们前面已经描述了,注意力机制,解决的是语义之间的联系的问题。所以,我们后面描述的内容,都是一组词的情况。这种情况下,这组词向量就组成了一个数据矩阵,假如输入的是一个t行的矩阵,输出的也是一个t行的矩阵,输出的列数,也就是token维度的个数,我们把token变成词向量,就像把大象变成石头,方便后面的操作。和词向量有关的操作,就是和空间有关的操作。各种矩阵有关的运算了;输入的矩阵是t行,Din列,Wq,Wv,Wv三个矩阵是Din,Dout列。这个Dout就决定了输出的词向量是多少列了,也就是有多少个维度。自注意力机制,最值得注意的是得到Q,K,V的后续操作。

计算规则:
得到Q,K,V后,先把k进行转置,然后让Q和k的转置相乘。当然也可以是Q转置和K相乘。谁转置都可以,没有区别。乘完之后会得到一个t行t列的矩阵A,也叫做注意力得分。得到A之后,还要对A中的每一项进行一个缩放。如何缩放呢?就是除以Dout的平方跟。按行去计算softmax。为什么要缩放,为什么要除以根号下Dout,这里要用到概率论的知识。

在这里插入图片描述

假设X1,X2,XN这个向量,他是一个多元正态分布,这里头的X的每一项都遵循正态分布,而且是标准正态分布。期望是0。方差是1.Y向量也一样。

X和Y相乘,他们的期望是0。他们的方差是什么?因为X和Y互相独立,所以X和Y可以分开出来。
X和Y相乘,多元的高斯分布仍然是0。但是方差已经变了,成Dout了。就又变成了一个标准正态分布。除以根号Dout是从概率下考虑的。SoftMax计算,也是把问题放到概率框架下进行的。本质上就是把数据根据他们的相对关系进行归一。这里的SoftMax是逐行进行归一。也就是SoftMax之后,每一行加起来是1。这就得到了按行归一的注意力得分A’。再和v进行矩阵相乘。

1.2这些计算的意义是什么?
我们要想搞明白,需要再次明白我们的目标,我们可以看到注意力机制输入的是一组词向量,不是单个的。我们讲了,词向量是已经具备了一些基础语义的。但是语义还是受限的。这里的词义还仅仅是对应字典的词义,不具有主观性。不同的顺序,组合到一起后,就变成了表达不同语义的文章了。这是就具有了主观性。所以,词向量组织的上下文本身才给这段文字赋予了主观性的语义。这个主观语义是怎么来的呢?肯定是隐藏在上下文的。例如’:美女这个词。如果后面跟的是,可以加你一下微信吗。那么这个肯定是比较漂亮的。但是,后面如果是跟的是“请让让”。那么可能就会大幅调低了。

注意力机制需要搞定的就是需要他识别出那些,因为上下关联,而对词典中原本客观的语义进行调整和改变的幅度。这个时候再看Q,K,V就特别能理解,为什么要进行这样的计算了。尤其和A‘和V相乘,V就是在在词典里查出来的客观语义。A’就是因为这段文字上下文关联,而产生的修改系数。

那么Q和K矩阵到底是什么呢?
Q和K可以看成,Q向量的每一行和K向量的每一行点积后的结果得到一个新的矩阵,如果用代数表达的话,就是Q1,: * KT;,2=a12,Q的第一行的所有列,和K的转置的第二列的所有行相乘。

这个a12表示什么呢?
表示的就是q1和k1之间的这两组向量之间的关系,到底是大还是小。
在这里插入图片描述

  • 19
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值