注意力机制

注意力机制:编码器 和 解码器

编码器

编码器如下所示,输入 先经过 嵌入层 转化为输入向量,然后在每个时间步产生一个隐藏状态,最后将每个时间步生成的向量,组合成一个矩阵 H H H,传入解码器
在这里插入图片描述

解码器

对于每个时间步,需要计算出 注意力语境向量(Context Vector),步骤如下:

第一步,计算 Score,输入 编码器中得到的 隐藏状态矩阵 H H H(假设维度为 m * 3),输出 对应每个隐藏状态的得分向量,则得分向量的维度为 1 * 3

第二步,将得到的 Score 经过 softmax 转化,得到新的向量,维度为 1 * 3

第三步,将第二步中得到的向量(1 * 3)与 转置后的隐藏矩阵 H T H^T HT执行点积运算,最终得到注意力语境向量,维度为 1 * 3 ⋅ \cdot 3 * m = 1 * m,其中 m 表示每个隐藏状态的向量长度

上面过程如下图所示:
m=3

Score 函数

在解码器中,计算注意力语境向量时,需要计算 编码器每个隐藏状态的评分,即 Score函数。有两种计算 Score 的算法,分别是 加法注意力 和 乘法注意力,公式如下:

加法注意力 Score 函数
e i j = v a T t a n h ( W a s i − 1 + U a h j ) e_{ij}=v_a^Ttanh(W_as_{i-1}+U_ah_j) eij=vaTtanh(Wasi1+Uahj)
其中 h j h_j hj 表示编码器的第 j j j 个隐藏状态向量, s i − 1 s_{i-1} si1表示解码器的上一个时间步的隐藏状态。 v a v_a va W a W_a Wa U a U_a Ua是需要训练的权重矩阵。

乘法注意力 Score 函数
在这里插入图片描述
有三个函数可供选择,第一个称为点乘评分函数,是编码器隐藏状态和解码器 t t t 时间步的隐藏状态的点积。第二个是通用评分函数,用于平衡编码器隐藏状态 和 解码器隐藏状态之间维度不对应的问题。第三个与加法注意力很相似,将 两个隐藏状态相加后,乘以权重矩阵,然后双曲正切,最后再乘以另一个权重矩阵。

得到隐藏状态的评分后

应用 softmax 函数进行软化
在这里插入图片描述
最后计算 语境向量
在这里插入图片描述
这一步相当于将 软化后的向量 与 隐藏状态矩阵 H H H 的转置 H T H^T HT 执行点击运算

最后

h t ^ = t a n h ( W c [ c t ; h t ] ) \hat{h_t}=tanh(W_c[c_t;h_t]) ht^=tanh(Wc[ct;ht])
将语境向量 和 解码器在 t t t 时间步的隐藏状态拼接,作为输入传入一个拥有一个隐藏层的神经网络,最后经过双曲正切函数后,得到该时间步的输出。 W c W_c Wc 表示神经网络隐藏层的权重矩阵。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值