为什么需要注意力机制?
理解文本、图片信息,能记住的信息是有限的,模型要利用好每一刻有用的部分,把注意力放在某一个部分
seq2seq 存在1、长依赖的梯度消失问题;2、瓶颈问题,decoder前置依赖c的训练好坏,所以需要attention来动态生成c
虽然加入注意力机制会部分缓解长依赖关系,但不会完全解决。
注意力机制:是一个不断更新权重,再加权求和的过程
seq2seq+attn基本框架语料形式:[原文,译文]
训练过程:
encoder部分:f(x1) -> h1, ..., f(x_n,h_n-1) -> h_n
context向量是动态生成的(划重点!!!),也是连接 encoder 和 decoder 的桥梁和瓶颈
decoder部分:
输出序列 的第一个单词out_1= “<start>”,
- g1 = f(out_1)
- g1和输入序列每个元素都做内积:g1 * h_1~h_n -> 归一化softmax -> 得到上下文向量c1,即h_1~h_n的加权和:c1 = w1 h1 + w2 h2 +... + wn h_n (w为注意力权重)
- decoder部分,先算一个分布:y1 = W_hy·[c1 g1]
- 输出序列的下一个单词 out_2 = argmax(softmax(y1)) 找到概率最大的单词
网友评论