神经网络正在为不同行业的广泛的深度学习应用提供动力,其用例包括自然语言处理(NLP)、计算机视觉和药物探索。有不同类型的神经网络用于不同的应用,如:
- 前馈神经网络
- 卷积神经网络(CNNs)
- 递归神经网络(RNNs)
在这篇文章中,我们将探讨RNNs及其使用案例。
什么是递归神经网络(RNNs)?
递归神经网络(RNNs)是一类人工神经网络,它将以前的步骤的输出作为当前步骤的输入。在这个意义上,RNNs对之前的计算有一个 “记忆”。这使得这些算法适合于顺序问题,如自然语言处理(NLP)、语音识别或时间序列分析,其中当前的观察结果取决于以前的观察结果。
RNNs和其他神经网络算法的区别是什么?
RNNs与前馈和卷积神经网络(CNN)的区别在于其时间维度。在其他类型的神经网络算法中,模型的输入和输出被认为是相互独立的。在RNN中,输出取决于之前的元素。
假设你有一个包含 “现在是什么时候?”这句话的语音识别问题。这个问题中的部署算法需要考虑到具体的单词序列,以使输出有意义。如下图所示,RNN通过使用以前的单词作为输入来预测句子中的下一个单词。
由于在其他类型的神经网络中,输入和输出是相互独立的,所以它们更适合于不具有顺序性的问题,如图像识别或表格数据分析。
RNNs是如何工作的?
下面的图片展示了RNN的基本结构。右边的图是左边的图的完整(或展开)版本。
- 底层x是输入层。模型的输入用x(t)表示,其中t是时间步长。x(t)可以是一个单词及其在句子中的位置,或者是某一天的股票价格。
- h(t)表示网络在时间步骤t的隐藏状态。隐藏状态作为模型的 “存储器”,它们是根据当前输入x(t)和先前的状态h(t-1)计算出来的。
- 顶层o是输出层。o(t)代表模型在时间步骤t的输出。当前输出由当前输入x(t)和当前隐藏状态h(t)决定,而当前隐藏状态取决于以前的隐藏状态。这是RNN的显著特征,因为当前输出取决于当前输入和先前输入。
- 参数(U,V,W)代表输入、隐藏状态和输出之间的权重。它们控制这些之间的影响程度。
更多信息,你可以查看关于普通神经网络如何工作的文章。RNNs是这些常规神经网络的扩展。
什么是RNN的用例和应用?
RNNs及其变体LSTMs和GRU被用于输入数据具有顺序性的问题中。有顺序数据的应用包括:
RNNs的挑战是什么?
递归神经网络存在一个叫做梯度消失的问题,这也是其他神经网络算法的普遍问题。梯度消失问题是一种叫做反向传播的算法的结果,该算法允许神经网络优化学习过程。
简而言之,神经网络模型比较其输出和所需输出之间的差异,并将这一信息反馈给网络,使用一个称为梯度的值来调整参数,如权重。梯度值越大,意味着对参数的调整越大,反之亦然。这个过程一直持续到达到令人满意的精度水平。
RNNs利用通过时间的反向传播(BPTT)算法,其计算结果取决于以前的步骤。然而,如果在反向传播过程中某一步的梯度值太小,那么下一步的值就会更小。这导致梯度以指数形式减少,达到模型停止学习的程度。
这被称为梯度消失问题,并导致RNN有一个短期记忆:早期的输出对当前的输出影响越来越小或没有影响。这可以从上面的 “现在是什么时候?”问题中看出,随着模型在句子中的移动,早期单词的颜色会缩小。
梯度消失的问题可以通过不同的RNN变体来补救。其中两个被称为长短时记忆(LSTM)和门控循环单元(GRU)。这些算法使用被称为 “门 “的机制来控制保留和遗忘多少信息以及哪些信息。
原文地址:https://www.wbolt.com/rnn.html