umich cv-6-2 注意力机制
  Ly5WKgqR6znz 2023年11月02日 52 0

这节课中介绍了循环神经网络的第二部分,主要引入了注意力机制,介绍了注意力机制的应用以及如何理解,在此基础上建立了注意力层以及transformer架构

注意力机制

上次我们没有提到sequence to sequence的RNN结构:
img
以文字翻译应用为例,我们可以看到它由编码器与解码器组成,先是将我们要翻译的句子拆分成一个个输入向量,和之前vanilla架构做的事情一样,经过权重矩阵不断生成新的隐藏层,最终得到最初的解码状态与一个上下文向量,相当于把原始的信息都编码到这两个结果之中,然后解码器再利用上下文向量与s,不断生成新的s,同时将输出的y作为新输入向量。
但是这种结构的问题在于解码器使用的是同一个固定大小的上下文向量,当我们这个输入向量很长很长,比如有1000或者10000时,那么此时一个上下文向量很难去存储所有的编码信息。
我们可以想到,如果,我们为解码器的每一层都创建一个上下文向量,就可以解决上述问题,这就引入了注意力机制:
img
我们使用一个全连接网络计算s与不同隐藏层之间的匹配程度,得到e11,e12......,然后再经过一个softmax,得到一个概率分布a11,a12.....,我们可以用这个概率分布去对隐藏层进行线性组合,这样就产生了第一个上下文向量,这些权重就被称为注意力权重
这里的直觉是不同的上下文向量可以去关注输入向量最匹配的部分,从而去理解不同部分的信息
然后我们将上述部分扩大成循环形式即可,之前是用s0生成c1,然后我们用s1生成c2,再用c2计算s2与y2:
img

我们将上述结构引用到语言翻译中,并且可视化注意力权重的结果:
img
可以看到对角线上重合的说明这些英语单词与法语单词是按照顺序相对应的,中间有一部分虽然英语与法语单词不是按照顺序对应,但是注意力机制也还是发现了它们之间的关系,红色部分就是对应出现错误的部分

应用与理解

我们其实可以发现注意力机制并不关心输入向量以及隐藏层是否按照顺序,这种性质可以使它应用到更广泛的领域:
img
我们可以将隐藏层替换为使用cnn从图像中提取的特征图,应该注意力机制,我们可以关注图像的不同区域,并且将不同区域翻译为对应的语言:
img
这里的理解是注意力机制很像人的眼睛,因为人眼只有在某些方向上才能看清,所以我们的眼睛看东西的时候经常处于运动扫视的状态,和注意力机制关注在不同的step关注不同的区域很像:
img

注意力层

引入了注意力机制,我们自然想能够把其抽象为更模块化的注意力层,这样我们就能够将其嵌入到不同的神经网络之中
我们先理解一下注意力层中的三个重要概念:查询,键,与值(下图来自沐神ai):
img

注意力层相较于我们之前的结构主要有三个变化:
首先是我们要将之前的全连接层判断相似性换成点积,并且是控制大小的点积,回忆softmax函数的性质,显然过大的数字会导致梯度消失:
img

其次是我们要引入多个查询向量:
img

最后由于之前输入向量组X有两个作用,一个是计算key,一个是计算最终输出结果的value,我们可以将其分开,通过引入两个可学习的矩阵,分别计算key vector与value vector:
img

更进一步地,我们可以定义查询向量组也由x得到,这样我们就有了key matrix value matrix与query matrix三个可学习矩阵
img

同时我们也可以发现,交换输入向量的顺序,输出向量顺序也会改变:
img

注意力层还有很多变体,比如masked attention layer,把相似矩阵中的某些值设置为无穷小,这样能够屏蔽掉某些输入向量的影响,使得我们的输出值只与之前的某些输入有关:
img

多头注意力层,我们可以使用不同的可学习的权重矩阵得到不同的注意力对应的输出,再将它们拼接在一起,这样可以帮助我们关注输入的不同部分,同时也有利于并行计算
img

卷积神经网络与注意力层结合:
img

transformer

利用注意力层我们就可以去构建transformer结构:
img
输入向量先经过注意力层,经过layer normalization,每个标准化的向量经过不同的mlp,再经过layer normalization输出,同时在适当的地方加入残差连接

将上述的transformer block多个拼接起来,我们就得到了仅仅使用注意力机制的transformer架构(常常使用多头注意力):
img

使用迁移学习,我们可以训练transformer架构,并且将其应用到nlp领域的任务:
img

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
Ly5WKgqR6znz