循环神经网络(RNN)常用于深度学习和开发模拟人工神经网络模型,与其他类型的人工神经网络不同的是,循环神经网络会使用反馈循环来处理数据。这些反馈循环允许信息持续存在,这种情况被描述为记忆,这一过程是循环神经网络借助隐藏层来实现的。因此,循环神经网络还是一种能处理时序数据的神经网络。
接下来,我们来看看循环神经网络是如何工作,是怎么训练的。
循环神经网络工作原理和训练方法
循环神经网络工作原理
循环神经网络是具有循环连接的神经元组成,这意味着神经元的输出被反馈到同一神经元的输入中,这会创建一个隐藏状态,可以将其视为循环神经网络的记忆。隐藏状态在每个时间节点更新,更新后的隐藏状态用作下一个时间节点的输入。
讲完概念,我们可以借助下面这个例子更好地理解循环神经网络的工作原理,例子:
假设有这么一个人工神经网络,它具有一个输入层、三个隐藏层和一个输出层。然后像其他神经网络一样,每个隐藏层都有自己的一组权重和偏差,这意味着这些层中的每一层都相互独立,即它们不会记住之前的输出。
现在将这个人工神经网络将执行以下操作:
人工神经网络通过为所有层提供相同的权重和偏差,将独立激活转换为依赖激活,从而降低增加参数的复杂性,并通过将每个输出作为下一个隐藏层的输入来记忆每个先前的输出。
因此,这三层可以连接在一起,使得所有隐藏层的权重和偏差在单个循环层中相同。
当前状态的计算公式:ht=f(ht-1,xt)
其中ht表示当前状态;ht-1表示之前的状态;xt表示输入状态。
应用激活函数的公式:ht=tanh(whh+wxh)
其中whh表示循环神经元的权重;wxh表示输入神经元的权重。
计算输出公式:Yt=Whyht
其中Yt表示输出;Why表示输出层的权重。
训练循环神经网络
根据上述示例,我们可以这样来训练循环神经网络:
1.输入的单时间步长被提供给网络。
2.然后使用一组当前输入和先前状态计算其当前状态。
3.对于下一个时间步,当前的ht变为ht-1。
4.可以根据问题进行尽可能多的时间步长,并加入所有先前状态的信息。
5.一旦完成所有时间步长,最终的当前状态将用于计算输出。
6.然后将输出与实际输出(即目标输出)进行比较,并生成错误。
7.然后将错误反向传播到网络以更新权重,从而训练循环神经网络。
循环神经网络的优势
循环神经网络会随着时间记住每条信息,它在时序预测中很有用,这也有助于建模数据点之间的依赖关系。循环神经网络可以展开形成深度神经网络,进一步提高对复杂依赖关系进行建模的能力。
循环神经网络的缺点
- 存在梯度消失和爆炸问题。
- 训练循环神经网络是一项非常困难的任务。