TensorFlow 中的 RNN 工作原理17 Mar 2025 | 5 分钟阅读 循环神经网络在图像分类和**视频识别、机器翻译**和**音乐创作**方面有广泛的应用。 考虑一个**图像分类**用例,我们已经**训练**了神经网络来**对**某些**动物**的图像进行**分类**。 因此,让我们输入一张猫或狗的图像;网络会提供一个输出,其中包含**猫或狗的图像的相应标签**。 请看下图 ![]() 在这里,第一个输出(即猫)不会影响之前的输出(即狗)。这意味着在时间“t”的输出与**时间“t-1”**的输出是独立的。 考虑一下我们需要使用上一个**获得的**输出的场景 ![]() 这个概念与阅读一本**书**相同。随着我们向前翻阅每一页,我们需要**理解**之前的页面才能完全理解**大多数情况下的信息**。 借助前馈网络,在**时间“t+1”**的新输出与时间 t、**t-1、t-2** 的输出没有任何关系。 因此,当预测句子中的一个单词时,不能使用前馈网络,因为它与之前的一组单词没有任何绝对关系。 但是,借助**循环神经网络,**可以克服这一挑战。 请看下图 ![]() 在上图中,我们在时间“t-1”处有特定输入,输入到网络中。这些输入也将导致在时间“t-1”处产生并行输出。 在下一个时间戳中,来自上一个输入“t-1”的信息与输入 at't' 一起提供,最终在“t”处提供输出。 这个过程会重复进行,以确保最新的输入可以感知并使用来自上一个时间戳的信息。 **循环神经网络**是一种旨在识别数据序列中模式的**人工神经网络**。例如,**文本、基因组、手写**、口语、来自**传感器**、股票市场和**政府机构**的数值时间序列数据。 为了更好地理解,请考虑以下比较 我们定期去健身房,而且教练给了我们锻炼计划 ![]() 请注意,所有练习都按正确的顺序每周重复一次。让我们使用一个前馈网络来尝试预测练习的类型。 ![]() 输入是**日期、月份**和**健康状况**。一个神经网络已使用这些输入进行训练,以提供练习的预测。 但是,考虑到输入,这将不太准确。要解决此问题,我们使用循环神经网络的概念,如下所示 ![]() 在这种情况下,将之前的锻炼作为输入。 因此,如果我们昨天进行了**肩部练习**,我们今天就可以进行**肱二头肌练习**,并且每周都会继续进行下去。 但是,如果我们碰巧有一天没有去健身房,则可以考虑上一个参加的时间戳中的数据。 ![]() 如果模型是基于从上一个练习中获得的数据体验的,则该模型的输出将是准确的。 总而言之,让我们将数据转换为向量。 其中向量是输入到**模型**的数字,用于**表示**我们是否已经完成了练习。 ![]() 因此,如果我们在进行肩部练习,则对应的节点将为“1”,其余的练习节点将映射为“0”。 我们必须检查神经网络工作原理背后的数学原理。 ![]() 将 'w' 设为权重矩阵,将 'b' 设为偏差 在 t=0 时,输入为 'x0,任务是找出 'h0' 是什么。将 t=0 代入方程,并获取函数 h(t) 的值。通过将先前计算的值应用于新公式,找到 'y0' 的下一个值。 相同的过程会通过模型中的所有时间戳重复,以训练模型。 训练循环神经网络循环神经网络使用**反向传播算法**进行训练,但它适用于每个时间戳。这通常被称为**按时间反向传播** (BTT)。 反向传播的一些问题,例如
梯度消失在梯度消失中,使用反向传播,目标是计算误差,误差是通过找出实际输出和模型输出之间的差值并将其提高到 2 次方而得出的。 ![]() 使用**计算出的误差**,将估算与权重差异相关的错误变化。但是,对于每个学习率,这可以与相同的模型相乘。 因此,学习率与**传递**给值的变化乘积,这是**权重**的确定变化。 在每次训练迭代中,**权重**的变化都会添加到旧的权重集中,如下图所示。这里的赋值是当权重变化相乘,然后**值**更**小**时。 梯度爆炸梯度爆炸的工作方式类似,但是这里的权重变化很大,而不是微不足道的变化。注意这里的较小 ![]() 我们必须克服这两者,这在开始时是一个挑战。
什么是长期依赖?很多时候,模型中只需要最近的数据即可执行操作。但是,可能需要从过去获得的信息片段中获得信息。 下一个主题RNN 中的时间序列 |
我们请求您订阅我们的新闻通讯以获取最新更新。