CS224N-7中Transformer笔记,如何理解的原理?
摘要:模型回顾 问题:RNN需要经过k步才能对远距离的单词进行交互,例如 这里的was是chef的谓语,二者的关系十分紧密,但是使用线性顺序分析句子会导致如果was和chef的距离较远,它们会难以交互(因为梯度问题) Self Attention
模型回顾
问题:RNN需要经过k步才能对远距离的单词进行交互,例如
这里的was是chef的谓语,二者的关系十分紧密,但是使用线性顺序分析句子会导致如果was和chef的距离较远,它们会难以交互(因为梯度问题)
Self Attention
键值对注意力
(1)我们可以将注意力视为在键值存储中执行模糊查找,在一个key-value查找表中,查询会对所有keys进行软匹配,然后相应的value将乘以权重并求和
(左边是强匹配,右边是软匹配)
(2)理解
①键值对Attention最核心的公式如下$$Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}}V)$$
如果这个公式很难理解,那么我们先从self-attention的原始形态入手,原始形态为 \(softmax(XX^T)X\)
②下面解读这个原始形态的公式:
\(XX^T\) 是输入矩阵\(X\)中每一个词向量与自己的内积,我们已经知道向量的内积表示向量的相关性,所以\(XX^T\)相当于一个类共现矩阵,再用softmax归一化成权重,那么便得到了一个输入矩阵\(X\)的相关度矩阵,可以将其理解为一个键值对表。将这个键值对表再\(X\)乘积,就实现了软匹配键值对表注意力
③接下来解释一下 \(softmax(\frac{QK^T}{\sqrt{d_k}}V)\) :
\(Q,K,V\) 是什么? \(XW^Q=Q,XW^K=K,XW^V=V\) ,可以看到它们其实就是调整后的\(X\),为什么我们不直接使用\(X\),因为调整矩阵\(W\)是可以训练的,起到一个缓冲的效果
\(\sqrt{d_k}\) 的意义在于,假设 \(Q,K\) 里的元素的均值为0,方差为1,那么 \(A^T=Q^TK\) 中元素的均值为0,方差为d。当d变得很大时,\(A\)中的元素的方差也会变得很大,如果\(A\)中的元素方差很大,那么 \(softmax(A)\) 的分布会趋于陡峭(分布的方差大,分布集中在绝对值大的区域)。因此\(A\)中每一个元素除以 \(\sqrt{d_k}\) 后,方差又变为1。
