GRU循环神经网络 - Python中预测序列的智能方法2025年1月5日 | 阅读6分钟 Cho 等人 (2014) 提出了门控循环单元 (GRU),一种循环神经网络 (RNN) 的类型,作为长短期记忆 (LSTM) 网络的更简单替代方案。GRU 能够处理序列数据,包括音频、文本和时间序列数据,正如 LSTM 一样。 GRU 的基本原理是使用门控方法仅在选定的时间步子集上更新网络的隐藏状态。进入和离开网络的信息由门控机制管理。重置门和更新门是 GRU 的两个门控机制。 更新门定义了应该使用多少新输入来更新隐藏状态,而重置门指示应该忽略多少先前的隐藏状态。更新后的隐藏状态作为计算 GRU 输出的基础。 以下公式用于确定 GRU 的重置门、更新门和隐藏状态 总而言之,GRU 网络是一种 RNN,它们通过使用门控技术在每个时间步选择性地更新隐藏状态,从而能够有效地表示序列数据。在许多自然语言处理任务中,包括语音识别、机器翻译和语言建模,都已证明其有效性。 许多改进被创建以解决在基本循环神经网络的运行过程中经常遇到的梯度消失-爆炸问题。长短期记忆网络 (LSTM) 是最著名的变体之一。门控循环单元网络是一个鲜为人知但同样有效的变体 (GRU)。 它只有三个门,并且不像 LSTM 那样保留内部单元状态。门控循环单元的隐藏状态包含了 LSTM 循环单元的内部单元状态中存储的信息。下面的门控循环单元接收此聚合数据。下面是 GRU 各个门的描述
当描绘时,门控循环单元网络和基本循环神经网络的基本工作流程是相似的。两者之间的主要区别在于每个循环单元内部的功能,因为门控循环单元网络由门组成,这些门调制当前输入和先前的隐藏状态。 ![]() 门控循环单元的工作原理
![]() 上述工作表述如下: ![]() 请注意,元素乘法由蓝色圆圈表示。向量减法 (负值向量加法) 由圆圈中的负号表示,而向量加法由圆圈中的正号表示。对于每个门,权重矩阵 W 为先前的隐藏状态和当前输入向量分配了不同的权重。 GRU 网络在每个时间步都会产生一个输出,就像循环神经网络一样,并使用梯度下降来训练网络。 ![]() 需要注意的是,与工作流程类似,GRU 网络的训练过程在图上与简单循环神经网络的训练过程相似,只是每个循环单元内部的功能有所不同。 门控循环单元网络与长短期记忆网络的时间反向传播算法之间的主要区别在于微分链的构建。 设每个时间步的实际输出为 y_{t} ,期望输出为 \overline{y}_{t} 。那么,每个时间步的误差由下式给出: ![]() 因此,所有时间步的误差之和即为总误差。 ![]() 同样,\frac{\partial E}{\partial W} 的值可以计算为每个时间步的梯度之和。 ![]() 利用链式法则,并利用 \overline{y}_{t} 是 h_{t} 的函数,而 h_{t} 又是 \overline{h}_{t} 的函数这一事实,得出以下表达式: ![]() 因此,总误差梯度如下:- ![]() 需要注意的是,尽管梯度方程的 \partial {h}_{t} 链与简单循环神经网络的相似,但由于 h_{t} 的导数内部结构方式不同,其功能也不同。 门控循环单元如何解决梯度消失问题?从 \frac{\partial h_{t}}{\partial h_{t-1}} 开始的导数链控制着梯度的值。请记住 h_{t} 的以下公式:- ![]() 使用上述表达式,\frac{\partial {h}_{t}}{\partial {h}_{t-1}} 的值为:- ![]() 请记住 \overline{h}_{t} 的以下公式:- ![]() 使用上述表达式计算 \frac{\partial \overline{h_{t}}}{\partial h_{t-1}} 的值:- ![]() 由于 Sigmoid 函数用作更新门和重置门的激活函数,因此它们的值只能是 0 或 1。 情况 1 (z = 1) 在这种情况下,无论 r 的值是多少,\frac{\partial \overline{h_{t}}}{\partial h_{t-1}} 项都等于 z,而 z 又等于 1。 情况 2A (z=0 且 r=0) 在这种情况下,\frac{\partial \overline{h_{t}}}{\partial h_{t-1}} 项等于 0。 情况 2B (z=0 且 r=1) 在这种情况下,(1-\overline{h}_{t}^{2})(W) 是 \frac{\partial \overline{h_{t}}}{\partial h_{t-1}} 表达式的值。网络学习修改权重以使 \frac{\partial \overline{h_{t}}}{\partial h_{t-1}} 项接近 1。该值由可训练的权重矩阵确定。 因此,时间反向传播算法修改相应权重以使导数链的值尽可能接近 1。 |
对于任何 Python 开发,都要仔细进行并考虑到异常处理,这一点很重要。有时可能会发生异常,您可能希望捕获它、处理它,然后再将其重新抛出给上一层。这种技术是...
5 分钟阅读
特征选择是消除冗余和不相关特征以提高算法性能的重要组成部分。机器学习算法会受到维度灾难的影响,尤其是在处理高维数据集时。降维技术有助于解决这个问题...
阅读27分钟
在这个问题中,我们将得到一个只包含 1 和 0 的二维矩阵。在这个二进制矩阵中,0 被认为是水,1 被认为是岛屿。一个岛屿被认为是一组 1,被水包围在所有 4 个方向上...
阅读 16 分钟
? 要在 Python 中使用 ChatGPT API,您需要向 API 端点发出 POST 请求。方法如下:如果您还没有安装 `requests` 库,请先安装它,方法是在终端运行 `pip install requests`。从...获取您的 API 密钥
阅读 8 分钟
介绍 布尔运算符是编程语言中的关键运算符之一,帮助研究人员做出逻辑决策并执行条件操作。在 Python 中,这些运算符是程序员组织控制流执行和构建复杂逻辑的基本工具...
阅读 4 分钟
人工智能 (AI) 这一计算机科学新学科旨在开发能够复制人类智能的机器,执行传统上涉及人类理解、学习和决策的任务。如果它们还具有处理能力,它们将在具有挑战性的环境中感知事物,并进行更改以适应...
阅读 15 分钟
?Pandas 是一个流行的 Python 数据操作库,它通过其 DataFrame 结构提供了一种方便的方式来处理表格数据。一项常见的任务是将这些 DataFrame 导出到 Excel 文件。有时,您可能拥有多个数据框,需要...
阅读 4 分钟
Weightipy:它是什么?在处理调查或普查数据时,Weightipy 库可用于对个人数据进行加权计算。它支持最新版本的 NumPy 和 Pandas,比 Quantipy 更有效地处理加权,并且运行速度更快。RIM...
7 分钟阅读
什么是 MediaPipe?MediaPipe 是 Google 提供的独立解决方案集,用于支持机器学习处理路径在跨平台应用程序中的应用。它为计算机视觉、音频信号处理和任何其他 ML 操作提供优化的模型解决方案。主要特点……
5 分钟阅读
Dijkstra 算法 Python 在给定的图和源顶点的情况下,找到源顶点与每个顶点之间的最短路径。Dijkstra 方法和 Prim 的最小生成树方法非常相似。我们创建一个 SPT(最短路径树)…阅读更多
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India