hwyzw 发表于 2025-1-11 14:35:49

深入解析循环神经网络(RNN)的工作原理与应用场景

    我们为大家准备了现成的人工智能资料,点击→→腾讯文档←←即可获取

    介绍

    如今,关于机器学习、深度学习和人工神经网络的讨论越来越多。但程序员往往只想使用这些神奇的框架,而大多数人并不想知道它们在幕后是如何工作的。但如果我们能掌握这些背后的原理,我们使用它们不是更好吗?今天我们将讨论循环神经网络及其背后的基本数学原理。这些原理允许循环神经网络做其他神经网络做不到的事情。

    〄 RNN(循环神经网络)。

    本文的目的是提供对循环神经网络的功能和结构的直观理解。

    神经网络通常采用一个自变量(或一组自变量)和一个因变量,然后学习 和 之间的映射(我们称之为训练)。一旦训练完成,当给定一个新的自变量时,它就可以预测相应的因变量。

    但是如果数据的顺序很重要怎么办?想象一下所有自变量的顺序是否重要?

    让我直观地解释一下。

    假设每只蚂蚁都是一个自变量,如果一只蚂蚁朝不同的方向前进,对其他蚂蚁来说并不重要,对吗?但如果蚂蚁的顺序很重要怎么办?

    这时,如果一只蚂蚁错过或离开群体,就会影响到后面的蚂蚁。

    那么,在机器学习领域,数据的什么顺序很重要?

    那么 RNN 如何解决整体顺序很重要的数据呢?我们以自然文本数据为例来解释RNN。

    假设我正在对电影的用户评论进行情感分析。

    从这部电影很好 - 积极,到这部电影很糟糕 - 消极。

    我们可以使用简单的词袋模型对它们进行分类,我们可以预测(正面或负面),但是等等。

    如果评论说这部电影不好怎么办?

    BOW 模型可能会说这是一个积极的信号,但事实并非如此。 RNN 理解它并将其预测为负面信息。

    RNN 是如何做到的?各种RNN模型

    1.一对多

    RNN 接受输入(例如图像)并生成单词序列。

    2. 多对一

    https://img0.baidu.com/it/u=2579749908,2129786059&fm=253&fmt=JPEG&app=120&f=JPEG?w=800&h=500

    RNN 接受单词序列作为输入并产生输出。

    3. 多对多

    接下来我们重点关注第二种模式多对一。 RNN 的输入被视为时间步长。

    示例:Input(X) = [“这个”,“电影”,“是”,“好”]

    this 的时间戳是 x(0),movie 的时间戳是 x(1),is 的时间戳是 x(2),good 的时间戳是 x(3)。

    2网络架构和数学公式

    让我们深入了解 RNN 的数学世界。

    首先,我们来了解一下 RNN 单元包含什么!我希望并假设你们都知道前馈神经网络,它是 FFNN 的推广,

    〄 具有单个隐藏层神经元的前馈神经网络示例。

    〄 具有单个隐藏层的前馈神经网络。

    在前馈神经网络中,我们有 X(输入)、H(隐藏)和 Y(输出)。我们可以有任意多个隐藏层,但是每个隐藏层的权重W和每个神经元对应的输入权重是不同的。

    上面,我们有权重 Wy10 和 Wy11,分别对应两个不同层相对于输出 Y 的权重,而 Wh00、Wh01 等代表不同神经元相对于输入的不同权重。

    由于它出现的时间很短,神经网络单元由一组前馈神经网络组成。神经网络具有顺序输入、顺序输出、多时间步长和多个隐藏层的特点。

    与 FFNN 不同,这里我们不仅根据输入值计算隐藏层值,还根据前一个时间步值计算隐藏层值。每个时间步的隐藏层权重(W)相同。下图是RNN的全图以及其中涉及到的数学公式。

    图中,我们正在计算隐藏层的时间步t的值:

    〄 不同的激活函数。

    上面我们只计算了Ht,类似地我们可以计算所有其他时间步。

    步:

    需要注意的事项是:

    https://img2.baidu.com/it/u=3283825930,526367895&fm=253&fmt=JPEG&app=120&f=JPEG?w=865&h=500

    前馈输入完成后,我们需要计算误差并使用反向传播方法将误差传播回去。我们使用交叉熵作为成本函数。

    BPTT(时间反向传播)

    如果你知道正常的神经网络是如何工作的,那么剩下的就非常简单了。如果不确定,可以参考本期之前关于人工神经网络的文章。

    我们需要计算以下项目,

    由于 W 对于所有时间步长都是相同的,因此我们需要返回并更新它。

    〄 RNN 中的 BPTT。

    请记住,RNN 的反向传播与人工神经网络的反向传播相同,但这里当前的时间步是根据前一个时间步计算的,因此我们必须从头到尾来回遍历。

    如果我们应用链式法则,它看起来像这样

    〄 反向传播链式法则。

    W 在所有时间步长上都是相同的,因此根据链式法则,展开项越来越多。

    循环神经网络讲座幻灯片 中可以看到类似但不同的计算公式的方法。

    所以这里和我们一样。

    , , 可以使用任何优化算法进行更新,例如梯度下降。

    返回实例

    现在让我们回到我们的情感分析问题,这里我们有一个 RNN,

    我们为每个单词提供一个词向量或一个热编码向量作为输入,并执行前馈和 BPTT。训练完成后,我们可以给出新的文本进行预测。它会学习诸如“不”+积极的词=消极的东西。

    RNN 的问题 → 梯度消失/爆炸问题

    由于W对于所有时间步都是相同的,在反向传播过程中,当我们返回并调整权重时,信号会变得太弱或太强,导致消失或爆炸的问题。为了避免这种情况,我们使用GRU或LSTM,这将在后续文章中介绍。

    ⟳学习资料⟲

    我们为大家准备了现成的人工智能资料,点击→→腾讯文档←←即可获取
页: [1]
查看完整版本: 深入解析循环神经网络(RNN)的工作原理与应用场景