2021 - 自注意力机制(Self-attention)(上)_哔哩哔哩_bilibili
2021 - 自注意力机制 (Self-attention) (下)_哔哩哔哩_bilibili
目录
三种输入输出间关系
3种类型的输出,只讲第一种类型
常规方法
但是句子长度有长有短,这种方法不合适
注意力机制原理
展开:
计算a1和后面所有输入之间的相关性α
计算α的两种方式,将两个输入分别乘wq和wk矩阵,结果再处理得到α,左边方法最常用。
具体流程,计算出自相关和互相关后经过softmax或者Relu都可以:
矩阵化计算
只需学习wq、wk、wv三个矩阵的参数
multi-head Self-attention
因为一个Q和V只负责了一个种类的相关性,需要多个Q和K,负责多个总类的相关性。
Q K V分别乘一个矩阵分成两个,分开相乘,最后的b1和b2拼起来作为最后的结果。
Self-attention的问题
没有对每个词向量的位置编码,少了位置信息。(没有距离远近之分,天涯若比邻)
拼接position encoding
当句子太长,会导致相关性矩阵太大,可以只考虑一部分不考虑全局。
CNN就是简化版的Self-attention,如果Self-attention 参数设置合适可以达到和CNN一样的效果。
每一个像素pixel是一个长度为3的向量。
和其他网络对比
数据量越大self-attention训练效果越好,数据量少了CNN效果好,因为弹性小。
和RNN对比,RNN容易忘记长的序列,并且不能平行处理, ST天涯若比邻。
RNN接近淘汰了快,可以被S-AT代替。
在Graph上的应用
在图上计算S-AT时,只需计算有edge相连的边就好,不用全部计算了。
没有关联相关性就不用SAT计算,直接是0。
把S-AT用在Grapu上是某一种类型的GNN。
更多
更多S-AT的变行可以看下面这两篇论文的介绍。