seq2seq中的attention机制

本文详细介绍了应用于seq2seq模型的Bahdanau Attention和Luong Attention两种注意力机制,包括它们的计算公式和模型框架。Bahdanau Attention利用Encoder的隐藏状态和Decoder的上一时刻状态来计算影响程度,而Luong Attention则使用当前时刻的状态。虽然两种机制有差异,但在实际应用中都有使用。
摘要由CSDN通过智能技术生成

博客已迁至知乎,本文链接:https://zhuanlan.zhihu.com/p/70905983

前言

本文来讲一讲应用于seq2seq模型的两种attention机制:Bahdanau Attention和Luong Attention。文中用公式+图清晰地展示了两种注意力机制的结构,最后对两者进行了对比。seq2seq传送门:click here.

文中为了简洁使用基础RNN进行讲解,当然现在一般都是用LSTM,这里并不影响,用法是一样的。另外同样为了简洁,公式中省略掉了偏差。


第一种attention结构:Bahdanau Attention

两种机制基于上篇博客第一种seq2seq结构。Encoder生成的语义向量 c {\color{Red} {c}} c 会传给Decoder的每一时刻,传给每一时刻的语义向量都是同一个 c {\color{Red} {c}} c,这是不合理的。比如翻译一句话,I like watching movie.翻译成:我喜欢看电影。,其中喜欢基本上是由like得来的,I like watching movie.中每个词对翻译成喜欢的影响是不同的。所以,在Decoder中,每个时刻的语义向量 c t {\color{Red} {c_t}} ct 都应该是不同的。

该模型来自于Bahdanau et.al(2014),模型框架如下图:

在这里插入图片描述
计算公式如下更方便理解。

Encoder:

h i = t a n h ( W [ h i − 1 , x i ] ) o i = s o f t m a x ( V h i ) \begin{aligned} h_i &=tanh(W[h_{i-1},x_i])\\ o_i &=softmax(Vh_i) \\ \end{aligned} hioi=tanh(W[hi1,xi])=softmax(Vhi)

Decoder:

分为两步:
第一步,生成该时刻语义向量:

c t = ∑ i = 1 T α t i h i α t i = e x p ( e t i ) ∑ k = 1 T e x p ( e t k ) e t i = v a ⊤ t a n h ( W a [ s i − 1 , h i ] ) \begin{aligned} {\color{Red} {c_t}} &=\sum ^T_{i=1} \alpha_{ti}h_i\\ \alpha_{ti} &=\frac{exp(e_{ti})}{\sum^T_{k=1}exp(e_{tk})}\\ e_{ti} &=v_a^{\top}tanh(W_a[s_{i-1},h_i])\\ \end{aligned} ct

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值