4.0 自注意力机制(Self-attention)

一、输入和输出

输入

普通的神经网络输入是一个向量,自注意力机制的输入是向量的集合,每个向量代表序列的一个元素,并且输入长度可以不固定。
在这里插入图片描述
**一个输入的例子是句子,每个单词用一个向量表示。**单词用下图的Word Embedding(词嵌入)向量表示,词嵌入有现成的向量可以套用。之所以不用独热向量表示单词,是因为它没办法体现词汇间的关系,而词嵌入向量具备语义信息,比如同类词(苹果和梨)的向量距离会比较近。
其他的序列比如语音和图也可以作为输入。
在这里插入图片描述

输出

  • 每个向量输出一个标签,比如词性标注(POS tagging)、音素识别等
  • 整个序列输出一个标签,比如情感分析(sentiment analysis)、语者识别等
  • 模型自己决定输出的标签数量(seq2seq),比如机器翻译

二、Self-attention的计算过程

输入一定长度的向量序列,输出同样数量的向量,并且输出的向量包含了该位置上下文的语义信息。

单个输出向量的计算

先计算每个节点的q、k、v,然后再计算α、α’,最后算出b。
α(attention score)为k和q的内积,α’是该节点的所有α值对应的softmax值,b是所有节点v值的加权平均。
在这里插入图片描述

整体输入和输出的矩阵化表示

𝑊𝑞、𝑊k、𝑊v是需要学习的参数。
在这里插入图片描述

多头自注意力机制

通过多头可以发现不同的相关性类型,原理是下面三张图。
与单头相比每个输入向量产生q、k、v后,会分别进一步生成n组,然后每一组分别生成一个b;把n个b纵向拼接;用一个新的矩阵W0去乘以上一步拼接后的向量,得到一个输出向量。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

位置编码(Positional Encoding)

自注意力机制只体现了不同向量之间的关系,而没有先后顺序的信息。有一些人工设计的位置编码,每个向量加上该位置的位置编码,从而把位置的信息也包含进去。
在这里插入图片描述

三、自注意力机制与传统网络的对比

对比CNN

CNN可以看成自注意力机制的特例。
在CNN中,自注意力机制只在感受野内发挥作用,所以说CNN是简化版的Self-attention。
在这里插入图片描述

对比RNN

相对RNN来说,自注意力机制可以更好地捕捉输入向量之间的关系,特别是距离比较远的优势更加明显。同时,自注意机制的输出向量是并行计算的,不像RNN前后依赖,所以训练速度快。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值