Seq2Seq的attention

Seq2Seq模型在处理长序列时存在梯度消失问题,以及context vector难以聚焦关键信息。为了解决这些问题,引入了注意力机制,通过计算输入序列中各词对翻译的贡献权重,增强了模型的可解释性和效果。Self-Attention作为注意力的一种形式,通过queries, keys, values三个向量计算每个单词的贡献度,实现对输入序列的动态关注,有助于提升生成每个单词时上下文信息的利用效率。" 111542703,10296328,Python QTableWidget 列设为只读,"['Qt编程', 'Python GUI', '桌面应用开发', 'PySide', 'PyQt']
摘要由CSDN通过智能技术生成

Seq2Seq模型存在的问题:

梯度问题,decoding只依赖于context vector,句子开始部分的信息容易丢失。(即梯度消失问题)

实际应用中,翻译某个词可能只需要关注C中的某一部分即可(如翻译weather时只需关注天气这个词),但seq2seq的C是整个句子的向量,所以在翻译weather时可能会出现副作用。

解决方法:引入attention

 

进入attention的好处:可解释性增强,更容易找bug。

attention原理:下文中汉语的每个词的向量与翻译的每个词进行相乘,得到各中文词在翻译成这个英文的贡献权重

组成一个向量C'(1)与生成的h向量一起与Why权重参数相乘,再经过softmax回归得到Yhat

贡献权重:可以用g*h向量内积,也可以加一个转移矩阵方法不一

</

引用[1]: Seq2seq,顾名思义,一个序列到另一个序列的转换。它是一种Encoder-Decoder协同训练的端到端网络。传统Seq2seq的Encoder以RNN为基础单元,把输入序列整合为一个content向量;Decoder同样以RNN为基础单元,把content向量拆解为输出序列。显然,content向量决定了Decoder可知的信息量,进而决定了输出序列的质量。由于RNN的时序串行结构,Encoder更关注位于输入序列末尾的元素,使得content向量“遗忘”了位于输入序列前端的元素。反之,如果把RNN的所有隐层输出一同送入Decoder,又显得过于臃肿(计算量大)。如今我们常把Seq2seqAttention联系在一起,也正是因为Attention帮助Seq2seq解决了上述问题。[1] 引用[3]:加入Attention后,content向量在任意时刻是变化的。那么如何计算第 i 时刻content向量? 先计算Decoder的RNN隐层状态 H i − 1 H_{i-1} Hi−1​ 和Encoder中所有RNN隐层状态 h 1 , h 2 , . . . , h j {h_1, h_2, ..., h_j} h1​,h2​,...,hj​ 的Attention得分;Attention得分是第 i i i 时刻的输出单词 y i y_i yi​ 与所有输入单词 x 1 , x 2 , . . . , x j {x_1, x_2, ..., x_j} x1​,x2​,...,xj​ 的对齐可能性;再以Attention得分为权重,对所有 h 1 , h 2 , . . . , h j {h_1, h_2, ..., h_j} h1​,h2​,...,hj​ 加权平均,得到第 i i i 时刻的content向量。[3] 问题: seq2seq attention时序 回答: 在Seq2seq中引入Attention后,content向量在任意时刻是变化的。计算第i时刻的content向量的过程是先计算Decoder的RNN隐层状态和Encoder中所有RNN隐层状态的Attention得分,Attention得分是第i时刻的输出单词与所有输入单词的对齐可能性;然后以Attention得分为权重,对所有Encoder中的隐层状态进行加权平均,得到第i时刻的content向量。[3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值