现代循环神经网络

9.1

门控循环单元

  • 门控循环单元与普通的循环神经网络之间的关键区别在于: 前者支持隐状态的门控。
  • 这意味着模型有专门的机制来确定应该何时更新隐状态, 以及应该何时重置隐状态。
  • 这些机制是可学习的:
    • 如果第一个词元非常重要, 模型将学会在第一次观测之后不更新隐状态。
    • 模型也可以学会跳过不相关的临时观测。
    • 模型还将学会在需要的时候重置隐状态。

重置门和更新门

  • 重置门允许我们控制“可能还想记住”的过去状态的数量.。
  • 更新门将允许我们控制新状态中有多少个是旧状态的副本。
  • 输入是由当前时间步的输入和前一时间步的隐状态给出。
  • 两个门的输出是由使用sigmoid激活函数的两个全连接层给出。
  • 总之,门控循环单元具有以下两个显著特征:
    • 重置门有助于捕获序列中的短期依赖关系;
    • 更新门有助于捕获序列中的长期依赖关系。

小结

  • 门控循环神经网络可以更好地捕获时间步距离很长的序列上的依赖关系。
  • 重置门打开时,门控循环单元包含基本循环神经网络;更新门打开时,门控循环单元可以跳过子序列。

9.2

为了控制记忆元,我们需要许多门。
其中一个门用来从单元中输出条目,我们将其称为输出门(output gate)。
另外一个门用来决定何时将数据读入单元,我们将其称为输入门(input gate)。
我们还需要一种机制来重置单元的内容,由遗忘门(forget gate)来管理。

输入门、忘记门和输出门

当前时间步的输入和前一个时间步的隐状态作为数据送入长短期记忆网络的门中。
它们由三个具有sigmoid激活函数的全连接层处理, 以计算输入门、遗忘门和输出门的值。 因此,这三个门的值都在(0, 1)的范围内。

小结

  • 长短期记忆网络的隐藏层输出包括“隐状态”和“记忆元”。只有隐状态会传递到输出层,而记忆元完全属于内部信息。
  • 长短期记忆网络可以缓解梯度消失和梯度爆炸。
  • 长短期记忆网络有三种类型的门:输入门、遗忘门和输出门。

9.3

小结

  • 在深度循环神经网络中,隐状态的信息被传递到当前层的下一时间步和下一层的当前时间步。
  • 深度循环神经网络需要大量的调参(如学习率和修剪) 来确保合适的收敛,模型的初始化也需要谨慎。

9.4

隐马尔可夫模型中的动态规划

  • 在任意时间步 t t t,假设存在某个隐变量 h t h_t ht, 通过概率
    P ( x t ∣ h t ) P(x_t|h_t) P(xtht)控制我们观测到的 x t x_t xt。 此外,任何 h t → h t + 1 h_t→h_{t+1} htht+1转移都是由一些状态转移概 P ( h t + 1 ∣ h t ) P(h_{t+1}|h_t) P(ht+1ht)给出。这个概率图模型就是一个隐马尔可夫模型(hidden Markov model,HMM)。

  • 双向循环神经网络(bidirectional RNNs) 添加了反向传递信息的隐藏层。

  • 双向循环神经网络的一个关键特性是:使用来自序列两端的信息来估计输出。 也就是说,我们使用来自过去和未来的观测信息来预测当前的观测。

  • 但是在对下一个词元进行预测的情况中,这样的模型并不是我们所需的。 因为在预测下一个词元时,我们终究无法知道下一个词元的下文是什么, 所以将不会得到很好的精度。

  • 具体地说,在训练期间,我们能够利用过去和未来的数据来估计现在空缺的词; 而在测试期间,我们只有过去的数据,因此精度将会很差。

  • 另一个严重问题是,双向循环神经网络的计算速度非常慢。 其主要原因是网络的前向传播需要在双向层中进行前向和后向递归, 并且网络的反向传播还依赖于前向传播的结果。 因此,梯度求解将有一个非常长的链。

  • 双向层的使用在实践中非常少,并且仅仅应用于部分场合。 例如:

    • 填充缺失的单词。
    • 词元注释(例如,用于命名实体识别)。
    • 作为序列处理流水线中的一个步骤对序列进行编码(例如,用于机器翻译)。
  • 该模型预测未来词元的能力可能存在严重缺陷。

小结

  • 在双向循环神经网络中,每个时间步的隐状态由当前时间步的前后数据同时决定。
  • 双向循环神经网络主要用于序列编码和给定双向上下文的观测估计。
  • 双向循环神经网络与概率图模型中的“前向-后向”算法具有相似性。
  • 由于梯度链更长,因此双向循环神经网络的训练代价非常高。

9.5

  • 语言模型是自然语言处理的关键, 而机器翻译是语言模型最成功的基准测试。 因为机器翻译正是将输入序列转换成输出序列的 序列转换模型(sequence transduction)的核心问题。
  • 统计机器翻译(statistical machine translation)涉及了 翻译模型和语言模型等组成部分的统计分析。
  • 基于神经网络的方法通常被称为 神经机器翻译(neural machine translation), 用于将两种翻译模型区分开来。

小结

  • 机器翻译指的是将文本序列从一种语言自动翻译成另一种语言。
  • 通过截断和填充文本序列,可以保证所有的文本序列都具有相同的长度,以便以小批量的方式加载。
  • 使用单词级词元化时的词表大小,将明显大于使用字符级词元化时的词表大小。为了缓解这一问题,我们可以将低频词元视为相同的未知词元。

9.6

  • 编码器(encoder): 它接受一个长度可变的序列作为输入, 并将其转换为具有固定形状的编码状态。
  • 解码器(decoder): 它将固定形状的编码状态映射到长度可变的序列。
  • “编码器-解码器”架构包含了一个编码器和一个解码器, 并且还拥有可选的额外的参数。 在前向传播中,编码器的输出用于生成编码状态, 这个状态又被解码器作为其输入的一部分。

9.7

  • 序列到序列(sequence to sequence,seq2seq)类的学习任务。
  • 输入序列的信息被编码到循环神经网络编码器的隐状态中。为了连续生成输出序列的词元,独立的循环神经网络解码器是基于输入序列的编码信息 和输出序列已经看见的或者生成的词元来预测下一个词元。
  • 特定的“<bos>”表示序列开始词元,特定的“<eos>”表示序列结束词元。

小结

  • 根据“编码器-解码器”架构的设计, 我们可以使用两个循环神经网络来设计一个序列到序列学习的模型。
  • 我们可以使用遮蔽来过滤不相关的计算,例如在计算损失时。
  • BLEU是一种常用的评估方法,它通过测量预测序列和标签序列之间的(n)元语法的匹配度来评估预测。

9.8

贪心搜索

  • 对于输出序列的每一时间步 t ′ t^{'} t, 我们都将基于贪心搜索从 Y Y Y中找到具有最高条件概率的词元,即: y t ′ = a r g m a x y ∈ Y P ( y ∣ y 1 , . . . , y t ′ − 1 , c ) y_t^{'} = \underset {y∈Y}{argmax} P(y|y_1, ..., y_{t^{'}-1}, c) yt=yYargmaxP(yy1,...,yt1,c)
    • 一旦输出序列包含了“”或者达到其最大长度 T ′ T^{'} T,则输出完成。
    • 在每个时间步,贪心搜索选择具有最高条件概率的词元。
  • 贪心搜索无法保证得到最优序列。

穷举搜索

  • 如果目标是获得最优序列, 我们可以考虑使用穷举搜索(exhaustive search): 穷举地列举所有可能的输出序列及其条件概率, 然后计算输出条件概率最高的一个。

束搜索

  • 如果精度最重要,则显然是穷举搜索。 如果计算成本最重要,则显然是贪心搜索。 而束搜索的实际应用则介于这两个极端之间。
  • 束搜索(beam search)是贪心搜索的一个改进版本。
    • 它有一个超参数,名为束宽(beam size)k。
    • 在时间步1,我们选择具有最高条件概率的k个词元。
    • 这k个词元将分别是k个候选输出序列的第一个词元。
    • 在随后的每个时间步,基于上一时间步的k个候选输出序列.
    • 我们将继续从k|Y|个可能的选择中挑出具有最高条件概率的k个候选输出序列。
    • 贪心搜索可以看作一种束宽为1的特殊类型的束搜索。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值