目录
- 一、 Vector set as 输入
- 二、 模型输出(三种)
- 1 **n-to-n**
- 2 n-to-1
- 3 n-to-m
- 三、self-attention
- 1、问题引入
- 2、self-attention
- 3 self-attention 原理介绍
一、 Vector set as 输入
一段声音讯号:
图结构(graph):输入向量(vector={性别,身高})
分子结构:vector={元素类别}
二、 模型输出(三种)
1 n-to-n
应用:文字处理
语音识别:
2 n-to-1
应用:正负评论分类、语音辨认
3 n-to-m
应用:翻译
三、self-attention
以n-to-n为例。
1、问题引入
不考虑上下文的情况下,模型认为两个"saw"是一样的,会输出相同的两个结果。
使用Window局部考虑上下文:
使用Windows考虑上下文,无法考虑整个序列的上下,如果想要考虑较长的上下文信息,需要大的Window,这样就增加计算复杂度。
————————————————————————————————————————
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
————————————————————————————————————————
2、self-attention
Transformer是一个经典的self-attention 论文,
3 self-attention 原理介绍
找出任意两个输入的相关性 α \alpha α:
计算 α \alpha α(两种方式:1 dot product, 2 additive):
有了 α \alpha α的计算方式,接下来计算输入之间的关联性:
获得 a 1 a_1 a1与其他输入向量的相关性: α 1 = [ α 1 , 1 ′ α 1 , 2 ′ α 1 , 3 ′ α 1 , 4 ′ ] \alpha_1=[\alpha' _{1,1} \alpha' _{1,2} \alpha' _{1,3} \alpha' _{1,4}] α1=[α1,1′α1,2′α1,3′α1,4′],接下来利用关系向量作为权重乘上输入向量 [ a 1 , a 2 , a 3 , a 4 ] [a^1,a^2,a^3,a^4] [a1,a2,a3,a4],得到考虑上下文的 a 1 a^1 a1,即 b 1 b^1 b1:
接下来,就能计算 [ b 1 , b 2 , b 3 , b 4 ] [b^1,b^2,b^3,b^4] [b1,b2,b3,b4]
[ b 1 , b 2 , b 3 , b 4 ] [b^1,b^2,b^3,b^4] [b1,b2,b3,b4]并不是串行计算,而是通过矩阵乘法进行并行计算:
对于 [ q 1 , q 2 , q 3 , q 4 ] [q^1,q^2,q^3,q^4] [q1,q2,q3,q4], K 1 , k 2 , k 3 , k 4 K^1,k^2,k^3,k^4 K1,k2,k3,k4, v 1 , v 2 , v 3 , v 4 v^1,v^2,v^3,v^4 v1,v2,v3,v4,可以通过矩阵乘法实现并行计算:
接下来我们就可以使用得到的Q,K,V计算相关性系数 α \alpha α。同样也可以使用矩阵乘法来实现并行计算,即 K T ∗ Q K^T*Q KT∗Q:
得到相关性矩阵 A A A之后,就可以计算考虑上下文的特征向量 b b b。
所以self-attention的计算过程被总结为如下的矩阵乘法: