attention机制详解

a t t e n t i o n attention attention机制一般来说会用在深度学习中,在图像处理和自然语言处理方面都有所应用,在自然语言处理中一般会用在机器翻译中,如下图所示,假设我们要翻译“机器学习”四个字:
RNN
这是一个简易的 R N N RNN RNN模型, h 1 − h 4 h1-h4 h1h4 t 1 − t 4 t1-t4 t1t4 输出的向量,这四个时刻的输入分别是“机”、“器”、“学”、“习” 四个字,这个时候我们有一个初始的输入向量 z 0 z0 z0,这个 z 0 z0 z0 可以表示成搜索前面神经网络中的关键字,可以理解是 k e y w o r d keyword keyword。有了初始的 k e y w o r d keyword keyword i n p u t input input,我们有一个 m a t c h match match 的模块,输入是 h 1 h1 h1 z 0 z0 z0,输出为 α 0 1 \alpha _0^1 α01,公式表示为: f ( h , z ) = α f(h,z) = \alpha f(h,z)=α,示意图如下所示:
RNN
这里的 m a t c h match match 模块可以理解成一个相似度的计算模块,所以这个 α 0 1 \alpha _0^1 α01 表示 z 0 z0 z0 h 1 h1 h1 的相关度,可以用公式 α = h T ⋅ W ⋅ z \alpha = {h^T} \cdot W \cdot z α=hTWz 表示,中间的 W W W 表示一个权重矩阵。然后我们将 z 0 z0 z0 分别和 h 2 h2 h2 h 3 h3 h3 h 4 h4 h4 进行上述的操作,再加上一层 s o f t m a x softmax softmax 操作,可以得到如下图所示:
attention
得到上图的结果之后我们用公式 c 0 = ∑ α ^ 0 i h i c_0 = \sum {\hat \alpha _0^i{h_i}} c0=α^0ihi 来进行一个求和得到 c 0 c_0 c0,过程如图所示:
attention
这个时候,我们用 c 0 c0 c0 z 0 z0 z0 作为 d e c o d e r decoder decoder 的输入来翻译我们的 “机器学习”,这个时候假设我们的 α ^ 0 1  =  0.5 \hat \alpha _0^1{\text{ = }}0.5 α^01 = 0.5 α ^ 0 2  =  0.5 \hat \alpha _0^2{\text{ = }}0.5 α^02 = 0.5 α ^ 0 3  =  0 \hat \alpha _0^3{\text{ = }}0 α^03 = 0 α ^ 0 4  =  0 \hat \alpha _0^4{\text{ = }}0 α^04 = 0,那么这个时候的输入 c 0 c0 c0 a t t e n t i o n attention attention 就集中在前两个字 “机器” 的翻译上,后两个字 “学习” 的 a t t e n t i o n attention attention 就弱化,先不去翻译 “学习” 这两个字。那么示意图如下所示:
attention
然后我们将输出的 z 1 z1 z1 再分别和 h 1 h1 h1 h 2 h2 h2 h 3 h3 h3 h 4 h4 h4 作为输入,再输入到 m a t c h match match 模块中,分别输出 α 1 1 \alpha _1^1 α11 α 1 2 \alpha _1^2 α12 α 1 3 \alpha _1^3 α13 α 1 4 \alpha _1^4 α14,具体示意图如下所示:
attention
运用上述的思想,我们将 z 1 z1 z1 分别和 h 1 h1 h1 h 2 h2 h2 h 3 h3 h3 h 4 h4 h4 作为输入进入 m a t c h match match 模块,分别输出 α 1 1 \alpha _1^1 α11 α 1 2 \alpha _1^2 α12 α 1 3 \alpha _1^3 α13 α 1 4 \alpha _1^4 α14,然后经过 s o f t m a x softmax softmax 之后生成 α ^ 1 1 \hat \alpha _1^1 α^11 α ^ 1 2 \hat \alpha _1^2 α^12 α ^ 1 3 \hat \alpha _1^3 α^13 α ^ 1 4 \hat \alpha _1^4 α^14。分别表示这一次需要输出的 a t t e n t i o n attention attention ,假设这次输出分别是 0、0、0.5和0.5,那么我们就需要把翻译的注意力集中在 “学习” 二字上面。在 d e c o d e r decoder decoder 中,我们结合上一轮的输出 m a c h i n e machine machine 加上本轮的状态量 z 1 z1 z1 以及本轮的 a t t e n t i o n attention attention,输出下一轮的状态 z 2 z2 z2 和 翻译结果 l e a r n i n g learning learning,在 s e q u e n c e 2 s e q u e n c e sequence2sequence sequence2sequence 模型中,直到碰到结束标识,那么整个翻译过程就完成,这就是在深度学习中的 a t t e n t i o n attention attention 机制。同样的,不仅仅在自然语言处理中,在图像处理中同样会用到 a t t e n t i o n attention attention 机制,所以 a t t e n t i o n attention attention 机制在深度学习中的应用也是很广泛的。
希望这篇文章能够帮助大家理解深度学习中的 a t t e n t i o n attention attention 机制,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值