深入浅出Embedding:原理解析与应用实践
上QQ阅读APP看书,第一时间看更新

4.1 循环网络的基本结构

图4-1是循环神经网络的经典结构,从图中可以看到循环神经网络包括输入x、隐藏层s、输出层o等,这些与传统神经网络类似,此处还包含一个自循环W,这也是它的一大特色。这个自循环W直观理解就是神经元之间还有关联,这是传统神经网络、卷积神经网络所没有的。

081-1

图4-1 循环神经网络的结构

4.1.1 标准循环神经网络

上文的图4-1展示了一个简单的循环神经网络结构。其中U是输入层到隐藏层的权重矩阵,W是指将隐藏层上一次的值作为这次输入的权重矩阵,s为状态,V是隐藏层到输出层的权重矩阵。但图4-1比较抽象,可以将它展开成图4-2所示结构,便于理解。

082-1

图4-2 循环神经网络的展开结构

图4-2是一个典型的Elman循环神经网络,它的各个时间节点对应的WUV都是不变的,就像卷积神经网络的过滤器机制一样,可以实现参数共享,同时大大降低参数量。

对图4-2中的隐藏层继续细化,可以得到图4-3所示结构图。

082-2

图4-3 循环神经网络使用单层的全连接结构图

这个网络在时刻t有相同的网络结构,假设输入xn维向量,隐藏层的神经元个数为m,输出层的神经元个数为r,则U的大小为n×m维;W是上一次的a t-1作为这一次输入对应的权重矩阵,大小为m×m维;V是隐藏层到输出层的权重矩阵,大小为m×r维。而x ta to t都是向量,它们各自表示的含义如下:

  • x t是时刻t的输入;
  • a t是时刻t的隐层状态。它是网络的记忆状态。a t基于前一时刻的隐层状态和当前时刻的输入进行计算,即a t=fUx t+Wa t-1)。函数f通常是非线性的,如Tanh或者ReLU。a t-1为前一个时刻的隐藏状态,其初始化通常为0;
  • o t是时刻t的输出。例如,如想预测句子的下一个词,它将是一个词汇表中的概率向量,o t=Softmax(Va t);

a t认为是网络的记忆状态,a t可以捕获之前所有时刻发生的信息。输出o t的计算仅仅依赖于时刻t的记忆。

图4-2中每一步都有输出,但根据任务的不同,这不是必须的。例如,当预测一个句子的情感时,我们可能仅关注最后的输出,而不是每个词的情感。与此类似,在每一步中可能也不需要输入。循环神经网络最大的特点就是隐藏层状态,隐藏层状态可以捕获一个序列的一些信息。

4.1.2 深度循环神经网络

循环神经网络也可像卷积神经网络一样,除可以横向拓展(增加时间步或序列长度),也可纵向拓展成多层循环神经网络,如图4-4所示。

083-1

图4-4 深层循环神经网络

4.1.3 LSTM网络结构

循环神经网络善于处理序列相关的问题,其隐藏层状态带有一定的记忆功能,但如果序列比较长,在RNN的反向传播时,若按照时间步进行梯度推导,即按照RNN中的BPTT(Back Propagation Through Time,随时间反向传播)算法推导时,极易导致梯度消失或爆炸。这便说明,RNN不具备长期记忆,而只具备短期记忆。这个问题对循环神经网络来说比较致命。那么要如何解决这个问题呢?

目前最流行的一种解决方案是长短时记忆网络(Long Short-Term Memory,LSTM),还有几种基于LSTM的变种算法,如GRU(Gated Recurrent Unit,门控循环单元)算法等。接下来我们将介绍LSTM的有关架构及原理。

LSTM最早由Hochreiter&Schmidhuber(1997)提出,能够有效解决信息的长期依赖,避免梯度消失或爆炸。事实上,LSTM的设计就是用于解决长期依赖问题的。与传统RNN相比,它精巧地设计了循环体结构,用两个门来控制单元状态c的内容。一个是遗忘门(Forget Gate),决定上一时刻的单元状态c t-1有多少保留到当前时刻c t;另一个是输入门(Input Gate),决定当前时刻网络的输入x t有多少保存到单元状态c t。LSTM用输出门(Output Gate)来控制单元状态c t有多少输出到LSTM的当前输出值h t。LSTM的循环体结构如图4-5所示。

084-1

图4-5 LSTM架构图

为简明起见,图4-5所示架构图没有考虑偏移量,*表示Hadamard Product(即对应的元素相乘),其他为内积。

4.1.4 GRU网络结构

上节我们介绍了RNN的改进版LSTM,它有效克服了传统RNN的一些不足,比较好地解决了梯度消失、长期依赖等问题。不过,LSTM也有缺点,如结构比较复杂、计算复杂度较高。因此,人们在LSTM的基础上又推出了其他变种,如目前非常流行的GRU。如图4-6所示,GRU比LSTM少一个门,因此,计算效率更高,占用内存也相对较少,但在实际使用中,GRU和LSTM性能差异不大,但GRU比LSTM简单。因此,GRU最近变得越来越流行。

084-2

图4-6 GRU网络架构

GRU涉及的计算公式如下:

085-1

注:小圆圈表示向量的点积(后续排版为图注)。

GRU在LSTM的基础做了两个大改动。

  • 将输入门、遗忘门、输出门变为两个门:更新门(Update Gate)z t和重置门(Reset Gate)r t
  • 将单元状态与输出合并为一个状态h t

4.1.5 双向循环神经网络

循环网络是按输入的顺序来处理,因此,人们通常使用循环网络来处理自然语言方面的问题。不过使用一般的循环网络时只能利用前文,无法利用下文信息,这自然会导致下文部分信息丢失。而下文信息对理解当前词义也很重要,就像我们在做英文完形填空一样,往往需要仔细阅读填空项的上下文,然后再填空,很少只看空格前的文字就匆匆做题。利用上下文信息的这种思想,从机器学习的角度来说,就是集成算法的思想,即把多个角度(或模型)的信息综合在一起,其性能往往好于只考虑单个方向的性能。

双向循环神经网络就是集成算法思想的体现,它的结构图如图4-7所示。图左边的输入为正序序列,这样LSTM模型预测就可以利用上文信息,而图形右边的输入为反序列数据,这样LSTM模型就可以利用下文信息,把两个LSTM模型的输出进行合并,就可以得到整个模型的输出,这个模型就是双向循环网络的一个典型实例。

085-2

图4-7 双向LSTM层的工作原理