做百度网站好吗,公众号运营总结,长春seo网站排名,电子商务平台建设内容有哪些李宏毅机器学习Transformer Self Attention学习笔记记录一下几个方面的内容 1、Self Attention解决了什么问题2、Self Attention 的实现方法以及网络结构Multi-head Self Attentionpositional encoding 3、Self Attention 方法的应用4、Self Attention 与CNN以及RNN对比 1、Se…李宏毅机器学习Transformer Self Attention学习笔记记录一下几个方面的内容 1、Self Attention解决了什么问题2、Self Attention 的实现方法以及网络结构Multi-head Self Attentionpositional encoding 3、Self Attention 方法的应用4、Self Attention 与CNN以及RNN对比 1、Self Attention解决了什么问题
机器翻译任务输入序列的长度与输出序列的长度可能相同也可能不相同 产品评价预测任务无论输入序列的长度为多少输出的序列长度都为固定大小 如果序列中每个词的标签为该次对应词性的任务重输出的序列长度与输入的序列长度相同。
1使用 Fully Connected网络来处理
如果每一个出入的向量对应一个Fully Connected网络每一个向量之间不考虑其他向量之间的上线文关联信息
2可以使用一个window来获取指定范围内向量的上下文信息。
当输入的序列长度不固定时会出现window长度无法确定的问题如果要获取整合序列的信息而整个序列很长window覆盖整个序列长度那么会出现Fully Connected网络中要处理的信息量很大网络参数多计算量大的问题。
要结合整个sequence 的信息需要使用了Self-Attention的方法。 使Self-Attention,实现每一个输出的向量都整合了所有输入向量的信息。 self attention可以使用多次在Fully Connected输出层还能再接self attention因此Self Attention 的输入可以使原始输入 或者 隐藏层。
2、Self Attention 的实现方法以及网络结构
self attention的实现通过计算每一个输入向量与其他所有输入向量的相关性α作为attention score与当前向量点乘操作得到输出向量。 计算两个向量相关性的方法为dot-product(点乘) Self Attention 的公式如下 A t t e n t i o n ( Q , K , V ) s o f t m a x ( Q ⋅ K T d k ) ⋅ V Attention(Q,K,V) softmax(\frac{Q·K^T}{\sqrt{d_k}} ) ·V Attention(Q,K,V)softmax(dk Q⋅KT)⋅V 其中 q表示Query,k表示Key。 需要计算每一个节点与其他节点的相关性这些计算是可以同时进行的。 以长度为4的序列 a1 ,a2 ,a3 ,a4为例 Q W q I QW^qI QWqI K W k I KW^kI KWkI V W v I VW^vI VWvI
对每一个输入向量分别乘以矩阵Wq、Wk、Wv得到对应向量q、k、v。 对于第i个向量,计算与其他向量的相关性则用qi 分别与其他向量的kj 做点乘。 ( k 1 k 2 k 2 k 4 ) ⋅ q 1 ( α 1 , 1 α 1 , 2 α 1 , 3 α 1 , 4 ) \begin{pmatrix} k_1 \\ k_2 \\k_2\\k_4 \end{pmatrix}·q^1\begin{pmatrix} α_{1,1} \\ α_{1,2}\\α_{1,3}\\α_{1,4} \end{pmatrix} k1k2k2k4 ⋅q1 α1,1α1,2α1,3α1,4 ( k 1 k 2 k 2 k 4 ) ⋅ q 2 ( α 2 , 1 α 2 , 2 α 2 , 3 α 2 , 4 ) \begin{pmatrix} k_1 \\ k_2 \\k_2\\k_4 \end{pmatrix}·q^2\begin{pmatrix} α_{2,1} \\ α_{2,2}\\α_{2,3}\\α_{2,4} \end{pmatrix} k1k2k2k4 ⋅q2 α2,1α2,2α2,3α2,4 ( k 1 k 2 k 2 k 4 ) ⋅ q 3 ( α 3 , 1 α 3 , 2 α 3 , 3 α 3 , 4 ) \begin{pmatrix} k_1 \\ k_2 \\k_2\\k_4 \end{pmatrix}·q^3\begin{pmatrix} α_{3,1} \\ α_{3,2}\\α_{3,3}\\α_{3,4} \end{pmatrix} k1k2k2k4 ⋅q3 α3,1α3,2α3,3α3,4 ( k 1 k 2 k 2 k 4 ) ⋅ q 4 ( α 4 , 1 α 4 , 2 α 4 , 3 α 4 , 4 ) \begin{pmatrix} k_1 \\ k_2 \\k_2\\k_4 \end{pmatrix}·q^4\begin{pmatrix} α_{4,1} \\ α_{4,2}\\α_{4,3}\\α_{4,4} \end{pmatrix} k1k2k2k4 ⋅q4 α4,1α4,2α4,3α4,4 ( k 1 k 2 k 2 k 4 ) ⋅ ( q 1 , q 2 , q 3 , q 4 ) ( α 1 , 1 , α 2 , 1 , α 3 , 1 , α 4 , 1 α 1 , 2 , α 2 , 2 , α 3 , 2 , α 4 , 2 α 1 , 3 , α 2 , 3 , α 3 , 3 , α 4 , 3 α 1 , 4 , α 2 , 4 , α 3 , 4 , α 4 , 4 ) \begin{pmatrix} k_1 \\ k_2 \\k_2\\k_4 \end{pmatrix}·\begin{pmatrix}q^1,q^2,q^3, q^4\end{pmatrix}\begin{pmatrix} α_{1,1},α_{2,1},α_{3,1},α_{4,1} \\ α_{1,2},α_{2,2},α_{3,2},α_{4,2}\\α_{1,3},α_{2,3},α_{3,3},α_{4,3}\\α_{1,4},α_{2,4},α_{3,4},α_{4,4} \end{pmatrix} k1k2k2k4 ⋅(q1,q2,q3,q4) α1,1,α2,1,α3,1,α4,1α1,2,α2,2,α3,2,α4,2α1,3,α2,3,α3,3,α4,3α1,4,α2,4,α3,4,α4,4 K T ⋅ Q A K^T ·QA KT⋅QA 将α值经过SoftMax,转化为0-1之间的值且α值之和等于1。 以第一个向量为例计算与每一个向量的相关系数α’ α 1 , i ′ e x p ( α 1 , i ) / ∑ j e x p ( α 1 , j ) α_{1,i}exp(α_{1,i})/\sum_{j}exp(α_{1,j}) α1,i′exp(α1,i)/j∑exp(α1,j)
以上计算的向量结果侧重提取向量与其他向量的attention score,再与向量V点乘V向量只包含输入向量的信息。 b i ∑ j α 1 , i ′ ⋅ v i b_i\sum_{j}α_{1,i}·v^i bij∑α1,i′⋅vi 最终得到输出向量b。 根据自己理解画了一张self attention 的结构图 用向量机算来表示self attention的过程如图所示 其中Wq 、Wk 、Wv 是可以训练的参数。 对于第一步由输入向量αi 分别与矩阵Wq 、Wk 、Wv做点乘可以将输入向量的矩阵合并计算 第二步将当前向量的query向量Q与其他所有向量的K点乘计算 可以将转置后的K向量合并后与合并后的Q做点乘运算 第三步得到α向量后经过softmax后的**α’**与合并后的向量V做点乘 Multi-head Self Attention
Multi-head Self Attention 多头注意力机制在原Self Attention上增加了不同的qQuery。 将第一步得到的qi分别与不同的向量点乘操作生成qi,1,qi,2 q i , 1 W q , 1 ⋅ q i q^{i,1}W^{q,1}·q^i qi,1Wq,1⋅qi q i , 2 W q , 2 ⋅ q i q^{i,2}W^{q,2}·q^i qi,2Wq,2⋅qi
不同的q负责不同的相关性问题中有几种不同的相关性就使用几个head。 那么生成了多个q,对应也要生成多个k和v;
计算时分别取每个q值与对应的第二个下标值相同的k向量做点乘; 经过softmax后与对应下标值相同的v向量做点乘得到输出向量结果。 positional encoding
在self attention中还需体现向量的位置信息。 在网络中输入向量加入了一个位置向量ei 向量ei 的值通过手动添加或者在网络中训练得到。
3、Self Attention 方法的应用 语音处理 对于输入的一段长度为L语音序列做self attention计算α得到的attention metrix的维度是L×L。当序列过长时考虑运算速度使用Truncated Self-attention只在一个设定的范围内使用Self-attention。 Self attention应用在图像处理 将一张图片看做是一系列向量对于一个三通道的图片将每一个像素点看做是一个三维的向量
4、Self Attention 与CNN以及RNN对比
Self Attention与CNN CNN对于固定的kernel对应在特征图上是固定大小的receiptive field而self attention 提取到的是整张图片的信息。self attention的receiptive field大小是通过学习得到的。 CNN是Self Attention特例情况Self Attention与RNN RNN网络只能够看到已经输入到网络中的信息Self Attention能够使用到所有输入向量的信息。 RNN计算当前时间点需要依赖于上一个时间点的计算结果当前向量之前的所有向量的信息都需要存放在内存中。Self Attention当前向量中包含了每一个输入向量的信息。 Self Attention可以实现并行处理。
对于K、Q、V向量的理解 是由原始输入向量分别与三个向量点乘后获得这三个向量又是可以学习的参数。 参数Q和K共同作用来决定两个向量的相关系数。 感谢 小白都能看懂的超详细Attention机制详解
https://www.bilibili.com/video/BV1v3411r78R/?p1vd_source91cfed371d5491e2973d221d250b54ae
https://www.bilibili.com/video/BV1Kq4y1H7FL/?spm_id_from333.999.0.0vd_source91cfed371d5491e2973d221d250b54ae