Seq2seq进阶,双向GRU

本文详细介绍了Seq2Seq模型中的Attention机制,强调了如何通过AttentionEncoder避免信息过度压缩。文章首先概述了基本的seq2seq模型,然后重点讲解了Attention层的工作原理,包括如何计算注意力权重和能量,以及如何通过softmax使其归一化。同时,展示了Encoder和Decoder的实现细节,特别是如何结合前向和后向RNN的隐藏状态生成解码器的初始隐藏状态。

一般编码器中得到的向量包含所有的上下文信息, 是高度压缩的信息, 怎么样来避免这种压缩呢?

在这里插入图片描述

  • 这是原来的seq2seq, 当然有些小的改进在此不做介绍了。

主要使用attention

attention 向量a, 长度是源向量的长度, ai在0~1之间, 总和为1, 可以得到加权后的向量w
在这里插入图片描述
在解码的每个时间步计算一个加权向量, 把它作为解码器和线性层的输入来进行预测

Encoder

使用双向GRU构建编码器

在这里插入图片描述

  • 此时output的大小为src_len, batch_size, hid_dim*num_directions , 其中第三轴的hidden的元素是两个分开的, 一个是前向的一个是后向的, 如下图
    在这里插入图片描述
    可以把所有的hidden前向和后向串联表示, 如下图:
    在这里插入图片描述

  • 此时hidden的大小是n_layers*num directions, batch_size, hid_dim
    其中[-2, :, :]给出顶层RNN在最后一个时间步长后的隐藏状态(即在它看到句子中的最后一个单词后),[-1, :, :]给出顶层RNN在最后一个时间步长后的隐藏状态(即在它看到句子中的第一个单词后)。

  • 由于解码器不是双向的,它只需要一个上下文向量z来作为它的初始隐藏状态s0,而我们目前有两个,一个向前的,一个向后的( z → = h → T \overrightarrow z=\overrightarrow h_T z =h T

评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

live_for_myself

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值