66 使用注意力机制的seq2seq【动手学深度学习v2】

66 使用注意力机制的seq2seq【动手学深度学习v2】

深度学习学习笔记
学习视频:https://www.bilibili.com/video/BV1v44y1C7Tg/?spm_id_from=…top_right_bar_window_history.content.click&vd_source=75dce036dc8244310435eaf03de4e330

在机器翻译时,每个生成的词可能源自句子中的不同词,将所有东西压在一起,翻译时可能不清楚来自哪一块的内容,seq2seq只用了最后一层隐藏层的输出,看不到前面的内容,还原不出对应词的位置。想要翻译对应词时找到原句子中的对应位置,于是加入注意力机制
在这里插入图片描述

加入注意力
在解码器RNN输入时,(先前讲的使用最后一个时刻的隐藏层输出作为上下文+输入的embedding concat作为解码器的输出)应该根据现在要预测值的不一样选择不是最后一个时刻的词而可能是前面几个时刻的对应的隐藏状态作为输入。

attention将编码器对应每个词的输出作为key-value,key-value 是 第 i 个词的RNN的输出。
key-value放入attention中。query是解码器的RNN在对上一个词的预测输出作为query,去attention中match下一个词需要的key-value。
于是将上下文的向量合并embedding一起进去解码器的RNN。

Seq2Seq的改进就是之前进入解码器的RNN只拿到的是最后一个时刻的隐藏层输出,现在的是允许拿出所有的词做一个加权平均,一开始用前面的那些输出,越到后面用后面那些输出。
在这里插入图片描述

在这里插入图片描述

QA:

  1. attention搜索是在当前句子搜索。
  2. BERT是在encoder中加入注意力机制,bert没有decoder
  3. enc_valid_lens 为原句子的长度,在RNN时会把每个词都padding为一样长度,enc_valid_lens就是给出原始长度,不要padding的长度
  4. 图像attention:抠很多子图,一个子图就是一个key-value
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值