白话图解attention | 手动推导 | 恩,我居然手写的 #yyds干货盘点#
Posted LolitaAnn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了白话图解attention | 手动推导 | 恩,我居然手写的 #yyds干货盘点#相关的知识,希望对你有一定的参考价值。
为什么要手写呢,因为我看人家做的视频风格好可爱,我也想试试,虽然我写完以后感觉不怎么样。不过写都写了,就发出来吧。
什么是Attention?
既然要讲attention,那肯定得介绍一下attention。
深度学习里经常说的attention是什么呢?我就不讲那些能百度到概念了,就大白话简单给大家举个例子。
上边这一排块块,你肉眼去看,最先注意到哪一个?不出意外正常人最先看到的应该是●,而忽略掉■。
那我现在跟你说让你进去找最细长的长方形块块,那你肯定是找到倒数第二个■。
现在给几个专业术语:
- 上边那一排块块我们称之为环境(value)
- 随意扫过去一眼,不用特别注意哪一个,你直接能看到最显眼的那个称之为不随意线索(key)
- 告诉你要进去找最接近长方形的块块,你会有意地去看哪个是细长长方形,这种有意寻找的条件就叫随意线索(query)
注意: 比较拗口哦,名叫“随意”却并不随意,这里的随意指的是“跟随主观意志”。
Attention图解
画的不好,凑合看一下子下图。(我以后还是用软件画,不要搞这么些吃力不讨好的东西。)
环境和不随意线索是作为键值对key
-value
存在的。value
作为用户的输入。如果中间的attention池化层不存在的话,左边 $x_i$ 直接到右边的 $y_i$ ,挑选的肯定是特征最强的那个元素作为输出。
现在在其中加入一个query
。将其进行attention池化。受到query
的影响,选择 $y_i$ 的时候偏向可能会发生变化。
推导
-
从上边图我们可以找到一个范式。
$f(x) = \\sum_{i=1}^n \\alpha(x, x_i) y_i$
就是对$x$和$x_i$进行一顿$\\alpha$操作,然后再和输入$y_i$运算,得到最终的输出。 -
Nadaraya和Waston提出了一个好想法,根据输入的位置对输出 $y_i$ 进行加权:
$f(x) = \\sum_{i=1}^n \\frac{K(x - xi)}{\\sum{j=1}^n K(x - x_j)} y_i$- 其中 $K$ 是 核(kernel)。上边这个式子也被称为Nadaraya-Watson 核回归(Nadaraya-Watson kernel regression)。
- 在这里这个核函数用一下高斯核(Gaussian kernel),其定义为:
$K(u) = \\frac{1}{\\sqrt{2\\pi}} \\exp(-\\frac{u^2}{2})$
-
把高斯核带入Nadaraya-Watson 核回归可得:
$f(x)= \\sum_{i=1}^n \\frac{\\exp\\left(-\\frac{1}{2}(x - xi)^2\\right)}{\\sum{j=1}^n \\exp\\left(-\\frac{1}{2}(x - x_j)^2\\right)} y_i$- 看着中间这一块有没有眼熟?
- 没错,就是softmax
$\\hat{y}{i}=\\operatorname{softmax}\\left(O{i}\\right)$
$\\hat{y}{i}=\\frac{\\exp \\left(O{i}\\right)}{\\sum{j} \\exp \\left(O{j}\\right)}$
- 看着中间这一块有没有眼熟?
- 带入softmax回归之后:
$f(x)=\\sum_{i=1}^n \\mathrm{softmax}\\left(-\\frac{1}{2}(x - x_i)^2\\right) y_i$
总结
将上边三个式子归纳到一起:
$$\\begin{aligned} f(x) &=\\sum_{i=1}^n \\alpha(x, x_i) yi\\ &= \\sum{i=1}^n \\frac{\\exp\\left(-\\frac{1}{2}(x - xi)^2\\right)}{\\sum{j=1}^n \\exp\\left(-\\frac{1}{2}(x - x_j)^2\\right)} yi \\&= \\sum{i=1}^n \\mathrm{softmax}\\left(-\\frac{1}{2}(x - x_i)^2\\right) y_i. \\end{aligned}$$
使用高斯核来对查询和键之间的关系建模。可以将上式中的高斯核的指数部分视为注意力评分函数(attention scoring function),简称评分函数(scoring function),然后把这个函数的输出结果输入到 softmax 函数中进行运算。通过上述步骤,我们将得到与键对应的值的概率分布(即注意力权重)。最后,注意力汇聚的输出就是基于这些注意力权重的值的加权和。
最后附一个演算纸图吧。
以上是关于白话图解attention | 手动推导 | 恩,我居然手写的 #yyds干货盘点#的主要内容,如果未能解决你的问题,请参考以下文章
分享《白话大数据与机器学习》PDF+《图解机器学习》PDF+高杨 许永伟