教材选用《动手学深度学习》,李沐等著;
语言模型
语⾔模型(language model)是⾃然语⾔处理的重要技术,语言模型可用于提升语音识别和机器翻译的性能。
为了计算语言模型,我们需要计算词的概率,以及一个词在给定前几个词情况下的条件概率,即语言模型参数。但当序列长度增加时,计算和存储多个词共同出现的概率的复杂度会呈指数级增加,N元语法通过马尔可夫假设(虽然并不一定成立)简化了语言模型的计算,马尔可夫假设是指一个词的出现只与前面n个词相关,即n阶马尔可夫链(Markov chain of order n)。当n较小时,n元语法往往并不准确,然而当n较大时,n元语法需要计算并存储大量的词频和多词相邻频率。
循环神经网络
循环神经网络(Recurrent neural network)并非刚性地记忆所有固定长度的序列,而是通过隐藏状态来储存之前时间步的信息。隐藏状态捕捉了截至当前时间步的序列的历史信息,就像是神经网络当前时间步的状态或记忆一样。值得一提的是,即便在不同时间步,循环神经网络始终使用这些模型参数,因此循环神经网络模型参数的数量不随时间步的递增而增长。
通过时间反向传播
为了可视化循环神经网络中模型变量和参数之间在计算中的依赖关系,我们可以绘制模型计算图。如图,时间步3的隐藏状态h3的计算依赖模型参数Whx,Whh、上一时间步隐藏状态h2以及当前时间步输入x3 。
RNN模型计算图
门控循环神经网络
⻔控循环单元(GRU)
当时间步数较大或者时间步较小时,循环神经网络的梯度较容易出现衰减或爆炸。为了更好地捕捉时间序列中时间步距离较大的依赖关系,提出了门控循环神经网络(gated recurrent neural network),其中门控循环单元(gated recurrent unit,简称 GRU)是一种常用的门控循环神经网络。GRU引入了重置门和更新门的概念,从而修改了循环神经网络中隐藏状态的计算方式。
门控循环单元中的重置门(reset gate)和更新门(update gate)的输入均为当前时间步输入与上一时间步隐藏状态,输出由激活函数为sigmoid函数的全连接层计算得到。
重置门可以用来丢弃与预测无关的历史信息,有助于捕捉时间序列里短期的依赖关系。更新门可以应对循环神经网络中的梯度衰减问题,有助于捕捉时间序列里长期的依赖关系。
⻓短期记忆(LSTM)
另⼀种常⽤的⻔控循环神经⽹络:⻓短期记忆
(long short-term memory,简称 LSTM),⽐⻔控循环单元的结构稍微复杂⼀点。LSTM 中引入了三个门:输入门(input gate)、遗忘门(forget gate)和输出门(output gate),以及与隐藏状态形状相同的记忆细胞(某些文献把记忆细胞当成一种特殊的隐藏状态),从而记录额外的信息。
长短期记忆可以应对循环神经网络中的梯度衰减问题,并更好地捕捉时间序列中时间步距离较大的依赖关系。
深度循环神经⽹络
在深度学习应用里,我们通常会用到含有多个隐藏层的循环神经网络,称作深度循环神经网络。
在深度循环神经网络中,隐藏状态的信息不断传递至当前层的下一时间步和当前时间步的下一层。
双向循环神经网络
双向循环神经网络通过增加从后往前传递信息的隐藏层来更灵活地处理这类信息。
双向循环神经网络在每个时间步的隐藏状态同时取决于该时间步之前和之后的子序列(包括当前时间步的输入)。
网友评论