0
点赞
收藏
分享

微信扫一扫

Self-Attention #yyds干货盘点#

这篇文章是我的笔记分享,内容主要来自吴恩达老师的深度学习课程。^[AI中国官网-全球领先的线上AI教育、实践平台 (deeplearningai.net)]

之前我们已经在Attention Model #yyds干货盘点#讲过如何将注意力机制和RNN等序列模型结合起来,这需要计算自注意力,并且是理解transformer^[Vaswani et al. 2017, Attention Is All You Need]的核心。

计算自注意力需要为输入句子的每一个单词创建基于注意力的表达。

$A(q,K,V)$是attention-based vector representation of a word,结果使用$A^{<1>}...A^{<5>}$表示。

依旧是使用这个例子:

Jane visite l’Afrique en septembre

l’Afrique(非洲)为例。

  • 是世界第二大洲
  • 口第二大洲
  • 非洲是世界古人类和古文明的发源地之一
  • ...

假设我们现在已经获得word embedding向量,上边列表我们可以看出,提到非洲有很多角度,那我们如何得知在当前的句子里我们是要使用到非洲的哪个意象呢?我们需要看看周围的单词来弄清楚,当前句子中非洲最适合的表达。实际上计算表达式的过程与之前的attention没什么区别。

RNN Attention
$$
\alpha^{<t, t^{\prime}>}=\frac{\exp \left(e^{<t, t^{\prime}>}\right)}{\sum_{t^{\prime}=1}^{T x} \exp \left(e^{<t, t^{\prime}>}\right)}
$$

Transformers Attention:
$$
A(q, K, V)=\sum{i} \frac{\exp \left(q \cdot k^{<i>}\right)}{\sum{j} \exp \left(q \cdot k^{<j>}\right)} v^{<i>}
$$

具备自注意力的公式会从上边个变为下边这个。大体上看起来确实没什么区别,小的区别在于self-attention有三个直,query、key 和 value,这三个值是计算每个单词注意力的关键输入数据。

现在每个单词的输入$x^{<t>}$是该单词对应的词嵌入向量。

  • 比如l’Afrique的词嵌入向量输入为$x^{<3>}$。

首先将每个单词与其三个值q、k、v关联起来。

  • l’Afrique(非洲)为例
    $$
    q^{<3>} = W^{Q}x^{<3>} \
    k^{<3>} = W^{K}x^{<3>}\
    v^{<3>} = W^{V}x^{<3>}
    $$

    其中$W$都是需要学习的参数。
    最后得到:
    $$
    \begin{array}{ccc}
    \text { Query }(Q) & \text { Key }(K) & \text { Value }(V) \
    q^{<1>} & k^{<1>} & v^{<1>} \
    q^{<2>} & k^{<2>} & v^{<2>} \
    q^{<3>} & k^{<3>} & v^{<3>} \
    q^{<4>} & k^{<4>} & v^{<4>} \
    q^{<5>} & k^{<5>} & v^{<5>}
    \end{array}
    $$

接下来计算当前位置的$q$和周围位置的$k$的内积。

  • l’Afrique(非洲)为例,要计算$(q^{<3>},k^{<1>})$直到$(q^{<3>},k^{<5>})$。计算完五个内积之后要对其进行softmax计算。

经过计算visite与其乘积结果最大,这可以证明visite提供了与非洲发生的事情最有关的背景,即访问非洲。

这一步的主要目的是获得最需要的信息,以帮助我们计算出关于$A^{<3>}$最有用的值。

如果$q$是在问“非洲发生了什么事?”
那经过$q$和$k$的内积计算之后就会回答在那里发生了什么:“visite l’Afrique”(拜访非洲)。

之后将我们计算出的$(q^{<i>},k^{<j>})$内积乘以对应的$v^{<i>}$,最后将其求和。

  • l’Afrique(非洲)为例,要计算$(q^{<3>}·k^{<1>})\times v^{<1>}$直到$(q^{<3>}·k^{<5>})\times v^{<5>}$

这个算法可以确保模型中使用的不是一个固定的词嵌入,自注意力机智可以意识到l’Afrique是要访问的目的地,从而计算出这个单词更有用的表示。

当然可以不用一个单词一个单词计算,集成化的公式如下:

$$
\operatorname{Attention}(Q, K, V)=\operatorname{softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}}\right) V
$$

  • $\sqrt{d_{k}}$这一项是对点积的缩放,以免产生爆炸。也因此有个别称“缩放点积注意力”(the scaled dot-product attention)。
举报

相关推荐

0 条评论