TensorFlow RNN的工作原理详细图解

本文概述

  • 训练递归神经网络
  • 什么是长期依赖关系?
递归神经网络在图像分类和视频识别, 机器翻译和音乐创作中具有广泛的应用。
考虑一个图像分类用例, 其中我们训练了神经网络对一些动物的图像进行分类。
因此, 让我们提供猫或狗的图像;网络为猫或狗的图片提供带有相应标签的输出。
参见下图:
TensorFlow RNN的工作原理详细图解

文章图片
在这里, 第一个输出为猫不会影响之前的输出, 即狗。这意味着在时间” t” 处的输出是在时间” t-1″ 处的自治。
考虑以下情况, 我们将需要使用最后获得的输出:
TensorFlow RNN的工作原理详细图解

文章图片
这个概念和看书一样。随着我们前进的每一页, 在大多数情况下, 我们需要了解前几页才能完全理解这些信息。
借助于前馈网络, 在时间” t + 1″ 处的新输出是多少?与时间t, t-1, t-2的输出都不相关。
因此, 在预测句子中的单词时不能使用前馈网络, 因为它与上一组单词没有绝对关系。
但是, 借助递归神经网络, 可以克服这一挑战。
请参见下图:
TensorFlow RNN的工作原理详细图解

文章图片
在上图中, 我们将特定输入设为-1?馈入网络。这些输入也将在时间” t-1″ 处导致并行输出。
在下一个时间戳中, 来自先前输入” t-1″ 的信息。与输入一起提供吗?以最终提供” t” 的输出。
此过程会重复进行, 以确保了解最新的输入并可以使用从前一个时间戳获取的信息。
递归网络是一种人工神经网络, 旨在识别数据序列中的模式。像是文本, 基因组, 手写体, 口语单词, 来自传感器, 股票市场和政府机构的数字时间序列数据。
为了更好地理解, 请考虑以下比较:
我们会定期去健身房, 而教练已经为我们提供了锻炼的时间表:
TensorFlow RNN的工作原理详细图解

文章图片
请注意, 每周都要以适当的顺序重复所有练习。让我们使用前馈网络尝试和预测练习的类型。
TensorFlow RNN的工作原理详细图解

文章图片
输入是日期, 月份和健康状况。使用这些输入对神经网络进行了训练, 以提供运动预测。
但是, 考虑到输入, 这将不是很准确。为了解决这个问题, 我们利用递归神经网络的概念, 如下所示:
TensorFlow RNN的工作原理详细图解

文章图片
在这种情况下, 找到前一天要进行锻炼的输入。
因此, 如果我们昨天进行了肩部锻炼, 那么今天我们可以进行二头肌锻炼, 这个过程将持续一周的剩余时间。
但是, 如果我们碰巧错过了在健身房锻炼的一天, 则可以考虑以下先前参加的时间戳记中的数据。
TensorFlow RNN的工作原理详细图解

文章图片
如果根据从上次练习中获得的数据来体验模型, 则该模型的输出将是准确的。
总而言之, 让我们将数据转换为向量。
向量是输入模型的数字, 以表示我们是否进行了练习。
TensorFlow RNN的工作原理详细图解

文章图片
因此, 如果我们进行肩部锻炼, 则相应的节点将为” 1″ , 其余的锻炼节点将被映射为” 0″ 。
我们必须检查神经网络工作背后的数学原理。
TensorFlow RNN的工作原理详细图解

文章图片
检查” w” 为权重矩阵, 并检查” b” 为偏差:
在时间t = 0时, 输入为’ x0, 任务是弄清楚什么是’ h0’ 。将t = 0代入方程式, 并获得函数h(t)值。当应用于新公式时, 将使用先前计算的值找出下一个’ y0’ 值。
对模型中的所有时间戳重复相同的过程以训练模型。
训练递归神经网络 递归神经网络使用反向传播算法进行训练, 但是它适用于每个时间戳。通常称为按时间反向传播(BTT)。
反向传播的一些问题, 例如:
  • 消失梯度
  • 爆炸梯度
消失梯度
在Vanishing Gradient使用反向传播的过程中, 目标是计算误差, 方法是通过找出实际值与实际输出值之间的差值, 并找出实际输出值与模型输出值之间的差值并将其提高到2的幂来找出误差。 。
TensorFlow RNN的工作原理详细图解

文章图片
利用计算出的误差, 可以估算出与重量差异有关的误差变化。但是对于每个学习率, 这可以与相同的模型相乘。
因此, 学习率随变化的乘积传递到该值, 这是权重的确定变化。
每次训练迭代时, 权重的变化将添加到旧的权重集中, 如下图所示。这里的赋值是重量变化乘以乘积, 然后该值较小。
爆炸梯度
塌陷梯度的工作原理类似, 但是此处的权重变化很大, 而不是可以忽略不计的变化。注意这里的小:
TensorFlow RNN的工作原理详细图解

文章图片
我们必须克服这两个方面, 首先是一些挑战。
爆炸梯度 消失的渐变
截断的BTT我们可以选择更小的时间戳, 例如10, 而不是在最后一个时间戳开始反向传播 ReLU激活函数我们可以使用像ReLU这样的激活, 它在计算梯度时会输出一个
在阈值处剪切渐变在超过阈值时剪切渐变 RMSprop在高于阈值时剪切渐变
RMSprop调整学习率 LSTM, GRU可以使用专门设计的不同网络体系结构来解决此问题
什么是长期依赖关系? 【TensorFlow RNN的工作原理详细图解】很多时候, 模型中只需要最近的数据即可执行操作。但是可能需要过去获得的一些信息。

    推荐阅读