循环神经网络解释
今天,不同的机器学习技术用于处理不同类型的数据。最难处理和预测的数据类型之一是顺序数据。序列数据不同于其他类型的数据,因为虽然可以假设典型数据集的所有特征都是顺序无关的,但不能假设序列数据集的所有特征。为了处理此类数据,提出了循环神经网络的概念。它在结构上不同于其他人工神经网络。当其他网络在前馈过程或反向传播过程中沿线性方向“移动”时,循环网络遵循递归关系而不是前馈传递,并使用反向传播随着时间的推移进行学习。
循环神经网络由多个固定激活函数单元组成,每个时间步一个。每个单元都有一个内部状态,称为单元的隐藏状态。这种隐藏状态表示网络当前在给定时间步持有的过去知识。这种隐藏状态在每个时间步都会更新,以表示网络对过去的了解发生了变化。使用以下递归关系更新隐藏状态:-
[Tex]- 新的隐藏状态[/Tex] [Tex]- 旧的隐藏状态[/Tex] [Tex]- 当前输入[/Tex] [Tex]- 具有可训练权重的固定函数[/Tex]
注意:通常,为了理解循环神经网络的概念,它通常以展开的形式进行说明,本文将遵循这一规范。
在每个时间步,使用上面给出的递归关系计算新的隐藏状态。这个新生成的隐藏状态实际上是用来生成一个新的隐藏状态等等。
循环神经网络的基本工作流程如下:-
注意是网络的初始隐藏状态。通常,它是一个零向量,但它也可以有其他值。一种方法是将关于数据的假设编码为网络的初始隐藏状态。例如,对于确定知名人士讲话的语气的问题,可以将该人过去的讲话语气编码为初始隐藏状态。另一种技术是使初始隐藏状态成为可训练的参数。尽管这些技术给网络增加了一些细微差别,但将隐藏状态向量初始化为零通常是一种有效的选择。
每个循环单元的工作:
- 输入先前隐藏的状态向量和当前输入向量。
请注意,由于隐藏状态和当前输入被视为向量,因此向量中的每个元素都放置在与其他维度正交的不同维度中。因此,当所涉及的元素为非零且元素处于相同维度时,每个元素与另一个元素相乘时仅给出非零值。
- Element-wise 将隐藏状态向量乘以隐藏状态权重,并类似地执行当前输入向量和当前输入权重的元素乘法。这会生成参数化的隐藏状态向量和当前输入向量。
请注意,不同向量的权重存储在可训练的权重矩阵中。
- 执行两个参数化向量的向量加法,然后计算元素级双曲正切以生成新的隐藏状态向量。
在循环网络的训练过程中,网络也在每个时间步生成一个输出。该输出用于使用梯度下降训练网络。
所涉及的反向传播类似于典型的人工神经网络中使用的反向传播,但有一些细微的变化。这些变化被记录为:-
设网络在任意时间步的预测输出为实际输出为 .然后每个时间步的误差由下式给出:-
总误差由所有时间步的误差之和给出。
同样,值可以计算为每个时间步的梯度总和。
使用微积分的链式法则并利用时间步 t 的输出是循环单元当前隐藏状态的函数这一事实,出现以下表达式:-
请注意,上述表达式中使用的权重矩阵 W 对于输入向量和隐藏状态向量是不同的,并且仅以这种方式使用是为了记号方便。
因此出现以下表达式:-
因此,通过时间的反向传播与典型的反向传播的不同之处在于,每个时间步的误差被求和以计算总误差。
尽管基本的循环神经网络相当有效,但它可能会遇到一个严重的问题。对于深度网络,反向传播过程可能会导致以下问题:-
- 梯度消失:当梯度变得非常小并趋于零时,就会发生这种情况。
- 梯度爆炸:当梯度由于反向传播而变得太大时会发生这种情况。
梯度爆炸的问题可以通过使用 hack 来解决——通过设置一个阈值来及时传递梯度。但这种解决方案并不被视为问题的解决方案,还可能降低网络的效率。为了解决这些问题,开发了循环神经网络的两个主要变体——长短期记忆网络和门控循环单元网络。