目录
全前馈神经网络,信息单向传递,网络易学习,但能力被减弱。网络输出只依赖于当前的输入。输入输出维数固定。
循环神经网络,具有短期记忆能力。其中的神经元可接收 其他神经元的信息和 本身的信息。输入输出可不固定。参数学习可通过随时间反向传播算法学习。输入序列较长时,错误信息向前传递过长,存在梯度爆炸和梯度消失问题,即长程依赖问题,一种有效的改进方式:门控机制。
循环神经网络易拓展到更广义的记忆网络模型: 递归神经网络、 图网络。
1. 给网络增加记忆能力
时序数据处理需要历史信息。前馈网络无记忆能力。
介绍三种方法给网络增加记忆能力:
1.1 延时神经网络
延时神经网络通过在前馈网络的非输出层中都添加一个延时器,记录神经元的最近几次活性值,增加前馈网络的短期记忆能力。在 t时刻,第 l 层神经元的活性值依赖于第 l − 1 层神经元的最近 K 个时刻的活性值:
1.2 有外部输入的非线性自回归模型
1.3 循环神经网络
循环神经网络 (Recurrent Neural Network,RNN)通过使用带自反馈的神经元处理任意长度的时序数据。
图 循环神经网络
2. 简单循环网络
简单循环网络(SRN)只有一个隐藏层。在一个两层的前馈神经网络中,连接存在相邻的层与层之间,隐藏层的节点之间无连接。简单循环网络增加了隐藏层到隐藏层的反馈连接。
若把每个时刻的状态都看做前馈神经网络的一层,循环神经网络可看做在时间维度上权值共享的神经网络。按时间展开的循环神经网络:
2.1 循环神经网络的计算能力
2.1.1 循环神经网络的通用近似定理
循环神经网络的拟合能力也十分强大。一个完全连接的循环网络是任何非线性动力系统的近似器。可用通用近似定理解释:
2.1.2 图灵完备
图灵完备(Turing Completeness)是指一种数据操作规则,比如一种编程语言,可以实现图灵机(Turing Machine)的所有功能,解决所有的可计算问题。
故一个完全连接的循环神经网络可以近似解决所有的可计算问题。
3. 应用到机器学习
循环神经网络可以应用到三种模式的机器学习任务::序列到类别模式、同步的序列到序列模式、异步的序列到序列模式。
3.1 序列到类别模式
序列到类别模式主要用于序列数据的分类问题。比如文本分类任务,输入为单词序列,输出为该文本类别。
两种图示:
运用场景:
3.2 同步的序列到序列模式
同步的序列到序列模式主要用于序列标注(Sequence Labeling)任务,即每一时刻都有输入输出,输入输出序列长度相同。比如在词性标注(Part-of-Speech Tagging)中,每一个单词需要标注其词性标签。
图示:
应用:
中文分词:(s-start、b-beginning、e-ending)
信息抽取:
3.3 异步的序列到序列模式
异步的序列到序列模式 又称编码器-解码器(Encoder-Decoder)模型,即输入序列和输出序列不需具有严格的对应关系,也不需相同长度。比如机器翻译任务中,输入为源语言单词序列,输出为目标语言单词序列。
异步的序列到序列模式示例如下图,其中〈𝐸𝑂𝑆〉 表示输入序列的结束,虚线表示将上一个时刻的输出作为下一个时刻的输入:
4. 参数学习
RNN中存在提个递归调用的 f(⋅) ,因此计算参数梯度的方式不同于计算前馈网络,主要有两种:随时间反向传播(BPTT)算法和实时循环学习(RTRL)算法。
4.1 随时间反向传播算法
随时间反向传播算法类似前馈网络的错误反向传播算法。
BPTT 算法将RNN看做展开的多层前馈网络,其中的“每一层”对应RNN中的“每个时刻”:
这样,RNN就可按照前馈网络中的反向传播算法计算参数梯度。在展开的前馈网络中,所有层参数共享,参数的真实梯度是所有“展开层”的参数梯度之和。
计算复杂度 在BPTT 算法中,参数的梯度需要在一个完整的“前向”计算和“反向”计算后才能得到并进行参数更新。
5. 长程依赖问题
RNN在学习过程中主要的问题是梯度消失或梯度爆炸。很难建模长时间间隔的状态之间的依赖关系。
将BPTT中的误差项展开:
得到:
再定义:
得到:
注意:
5.1 改进方案
梯度可能过大,存在梯度爆炸问题。
记忆容量:随着 h_t不断累积存储新的输入信息,会发生饱和。 假设 g(⋅) 为 Logistic 函数,则随着时间 t 的增长,h_t 会变得大,从而导致 h 变得饱和。即隐状态 h_t 可存储信息有限,随着记忆单元存储内容增多,其丢失信息也增多。
利用门控机制改进模型,解决这两个问题。
6. 基于门控的循环神经网络
为改善RNN的长程依赖问题,在公式:
上引入门控机制来控制信息积累速度,包括有选择地加入新的信息,并有选择地遗忘之前累积的信息。这类网络叫做 基于门控的循环神经网络 (Gated RNN)。
6.1 门控循环单元网络
门控循环单元(Gated Recurrent Unit,GRU)网络比LSTM更简单。
GRU网络引入门控机制控制信息更新方式,不同LSTM,GRU不引入额外的记忆单元,在公式:
上,引入一个更新门控制当前状态需从历史状态中保留多少信息,需从候选状态中接受多少新信息:
6.2 长短期记忆网络(LSTM)
长短期记忆网络(Long Short-Term Memory Network,LSTM)是RNN的一变体,可有效解决RNN的梯度爆炸或梯度消失问题。在以下公式上,进行两方面的改进:
LSTM的循环单元结构如图:
其计算过程为:
通过LSTM循环单元,整个网络可以建立较长距离的时序依赖关系。给出以上LSTM循环单元公式的简洁描述:
6.3 LSTM网络的各种变体
主流的LSTM用三个门动态控制内部状态,遗忘历史信息、输出信息、输入信息的数量。对门控机制修改,得到LSTM变体。
无遗忘门的LSTM 最早的LSTM是没有遗忘门的,内部状态的更新为:
记忆单元 c会不断增大。输入序列很长时,记忆单元容量饱和,大大降低LSTM的性能。
7. 深层循环神经网络
如果将深度定义为网络中中信息传递路径长度的话,RNN可以看作是既“深”又“浅”的网络。因为,把RNN按时间展开,长时间间隔的状态之间的路径很长,RNN可以看作是一个非常深的网络;而果同一时刻网络输入到输出之间的路径x_t →y_t ,这个RNN网络是非常浅的。
故,可增加RNN的深度来增强RNN的能力,即增加同一时刻网络输入到输出的路径x_t → y_t ,比如增加隐状态到输出的路径 h_t → y_t ,以及输入x_t → h_t到隐状态的路径深度。
7.1 堆叠循环神经网络
常见的简单做法,将多个RNN堆叠起来,称为堆叠循环神经网络(Stacked Recurrent Neural Network,SRNN)。一个堆叠的简单循环网络(Stacked SRN) 也称为循环多层感知器(Recurrent Multi-Layer Perceptron,RMLP)。按时间展开的SRNN如下:
7.2 双向循环神经网络
特定任务中,一个时刻的输出不但和过去时刻的信息有关,也和后续时刻的信息有关。比如给定句子,其中一个词的词性由它的上下文决定。因此,在这些任务中,可以增加一个按时间的逆序来传递信息的网络层,以增强网络的能力。
双向循环神经网络(Bidirectional Recurrent Neural Network,Bi-RNN)由两层循环神经网络组成,他们的输入相同,只是信息传递的方向不同。
其中⨁为向量拼接操作。
8. 拓展到图结构
如果将RNN按时间展开,每个时刻的隐状态h_t 看作一个节点,那么这些节点构成一个链式结构,每个节点 t 都收到其父节点的消息(Message),更新自己的状态,并传递给其子节点。而链式结构是一种特殊的图结构,我们可以比较容易地将这种消息传递(Message Passing)的思想扩展到任意的图结构上。
8.1 递归神经网络
递归神经网络(Recursive Neural Network,RecNN)是RNN在有向无循环图上的拓展,常为树桩层次结构:
当递归神经网络的结构退化为线性序列结构(图b),递归神经网络等价于简单RNN。
递归神经网络主要用来建模自然语言句子的语义。
同样,可用门控机制来改进递归神经网络中的长距离依赖问题,比如树结构的长短期记忆模型(Tree-Structured LSTM),就是将LSTM模型的思想应用到树结构的网络中,来实现更灵活的组合函数。
8.2 图神经网络
实际中很多数据是图结构的,比如知识图谱、社交网络、分子网络等。而前馈网络和反馈网络很难处理图结构的数据。图神经网络(Graph Neural Network,GNN)是将消息传递的思想扩展到图结构数据上的神经网络,可用来处理图数据。