seq2seq与引入注意力机制的seq2seq

1、什么是 seq2seq?

就是字面意思,“句子 到 句子”。比如翻译。

2、seq2seq 有一些特点

seq2seq 的整体架构是 “编码器-解码器”。

其中,编码器是 RNN,并将 最后一个hidden state(隐藏状态)【即:包含了整个句子的所有特征】 作为编码器的输入;解码器使用另一个 RNN 去输出。

编码器-解码器:
输入 → Encoder → 中间状态 → Decoder(← 新输入) → 输出
与一般的模型不同的是,在 Decoder 可能会接受新的输入。
编码器相当于在“提取特征”。解码器相当于“从特征(中间态)还原出输出”

3、训练和预测

稍微看一下,便于更好的掌握seq2seq的工作原理。重点是注意力机制。

3.1 训练

训练的时候,因为知道翻译结果,所以直接使用正确的翻译作为输入(解码器底下一行)。所以即使预测错误(解码器上面那行)也不会影响到输入。
在这里插入图片描述

3.2 预测

可以看到,与“训练”不同的是:解码器的输入使用的是上一次预测的结果。
在这里插入图片描述

4、引入注意力机制的 seq2seq

4.1 为什么 seq2seq 要引入注意力机制?

因为在翻译中,比如:我们要翻译 “你好 世界” 成 “hello world” ,那么在翻译 “hello” 的时候,应该 针对性地去看 “你好” 相关的信息,而不是 把 “你好 世界” 所有的信息作为输入去处理

其中,针对性地去看 “你好” 相关的信息 就是注意力机制;
把 “你好 世界” 所有的信息作为输入去处理 就是seq2seq原本干的事:把最后一个hidden state作为解码器的输入。

4.2 如何引入的呢?

在这里插入图片描述

  • 编码器(左)对每次词的输出作为key和value(key=value)
  • 解码器(右)RNN对上一个词的输出是query(为什么是上一次词呢?就是说我现在要找“world”对应中文的相关信息,但是我现在只有hello,因为world还没有翻译出来呢!因为翻译需要输入,而world的输入从下面一点可以得知当前这一步才能拼出来。所以是“上一次词”的输出作为query)
  • 注意力的输出和下一个词的embedding 进行cat 作为输入

注意力和query、key、value:
key-value是输入,通过 query **偏向性地选出(即:注意力)**想要的输入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值