一份详细的LSTM和GRU图解(1)

本文详细介绍了RNN的工作原理,特别是LSTM和GRU如何通过控制门机制学习和忘记信息,以优化预测性能。重点突出了LSTM的单元状态和门操作,如遗忘门、输入门和输出门在信息处理中的关键作用。
摘要由CSDN通过智能技术生成

这就是LSTM或GRU的作用。它可以学习只保留相关信息来进行预测,忘记不相关的数据。在这种情况下,你记得的单词让你判断麦片是好的。

RNN的回顾

为了理解LSTM或GRU如何实现这一点,让我们回顾一下RNN。RNN的工作原理是:第一个词被转换成机器可读的向量。然后RNN逐个处理向量序列。

一份详细的LSTM和GRU图解

逐个处理序列

处理时,它将先前的隐藏状态传递给序列的下一步。隐藏状态充当神经网络的记忆。它保存着网络以前见过的数据信息。

一份详细的LSTM和GRU图解

将隐藏状态传递给下一个时间步

让我们观察RNN的一个单元格,看看如何计算隐藏状态。首先,将输入和先前隐藏状态组合成一个向量。这个向量现在含有当前输入和先前输入的信息。向量经过tanh激活,输出新的隐藏状态,或网络的记忆。

一份详细的LSTM和GRU图解

RNN细胞

TANH激活

tanh激活用于帮助调节流经网络的值。tanh函数将值压缩在-1和1之间。

一份详细的LSTM和GRU图解

Tanh将值压缩到-1和1之间

当向量流经神经网络时,由于各种数学运算,它经历了许多变换。假设一个值连续乘以3。你可以看到某些值如何爆炸增长的,导致其他值看起来微不足道。

一份详细的LSTM和GRU图解

没有tanh的矢量变换

tanh函数确保值在-1和1之间,从而调节神经网络的输出。你可以看到上面的相同值通过tanh函数保持界限之间。

一份详细的LSTM和GRU图解

使用tanh的矢量变换

这是一个RNN。它内部的操作很少,但在适当的情况下(如短序列)工作得很好。RNN使用的计算资源比它的进化变体LSTM和GRU要少得多。

LSTM

LSTM具有与RNN类似的控制流。它在前向传播时处理传递信息的数据。区别在于LSTM单元内的操作。

一份详细的LSTM和GRU图解

LSTM单元及其操作

这些操作用于允许LSTM保留或忘记信息。这些操作可能会有点难,所以我们将逐步介绍这些它们。

核心概念

LSTM的核心概念是单元状态(cell state),它是多种不同的门。单元状态充当传输的高速公路,在序列链中传递相关信息。你可以将其视为网络的记忆。理论上,单元状态可以在序列的整个处理过程中携带相关信息。因此,即使来自较早时间步的信息也可用于较晚时间步,从而减少短期记忆的影响。随着单元状态继续进行,信息通过门被添加或移除到单元状态。门是不同的神经网络,用来决定哪些信息可以允许进入单元状态。在训练中,门可以知道哪些信息是需要保存或忘记的。

SIGMOID

“门”包括sigmoid激活。它类似于tanh激活,但不是在-1和1之间压缩值,而是在0和1之间取值。这有助于更新或忘记数据,因为任何数字乘以0都是0,使值消失或者说被“遗忘”。任何数字乘以1都是相同的值,因此值保持相同”。网络可以了解哪些数据不重要可以被遗忘,或者哪些数据需要保存。

一份详细的LSTM和GRU图解

Sigmoid将值压缩至0和1之间

让我们深入了解不同的大门在做什么,不是吗?因此,我们有三个不同的门来调节LSTM单元中的信息流。忘记门,输入门和输出门。

遗忘门

首先,我们介绍遗忘门(forget gate)。此门决定应丢弃或保留哪些信息。来自先前隐藏状态和来自当前输入的信息通过sigmoid函数传递。值介于0和1之间。越接近0越容易遗忘,越接近1则意味着要保留。

一份详细的LSTM和GRU图解

遗忘门操作

输入门

要更新单元状态,我们需要输入门。首先,我们将先前的隐藏状态和当前输入传递给sigmoid函数。这决定了通过将值转换为0到1来更新哪些值。0表示不重要,1表示重要。你还将隐藏状态和当前输入传递给tanh函数,将它们压缩到-1和1之间以帮助调节网络。然后将tanh输出与sigmoid输出相乘。sigmoid输出将决定哪些信息很重要,需要tanh输出保存。

一份详细的LSTM和GRU图解

输入门操作

单元状态

现在我们有足够的信息来计算单元状态。首先,单元状态逐点乘以遗忘向量。如果它乘以接近0的值,则有可能在单元状态中丢弃值。然后我们从输入门获取输出并进行逐点加法,将单元状态更新为神经网络发现相关的新值。这就得到了新的单元状态。

一份详细的LSTM和GRU图解

计算细胞状态

输出门

最后我们有输出门。输出门决定下一个隐藏状态是什么。请记住,隐藏状态包含有关先前输入的信息。隐藏状态也用于预测。首先,我们将先前的隐藏状态和当前输入传递给sigmoid函数。然后我们将新的单元状态传递给tanh函数。将tanh输出与sigmoid输出相乘,以决定隐藏状态应携带的信息。它的输出是隐藏状态。然后将新的单元状态和新的隐藏状态传递到下一个时间步。

一份详细的LSTM和GRU图解

输出门操作

回顾一下,遗忘门决定了哪些内容与前面的时间步相关。输入门决定了从当前时间步添加哪些信息。输出门决定下一个隐藏状态应该是什么。

代码演示

通过查看代码有些人可以更好的理解,以下是一个使用python伪代码的例子。

一份详细的LSTM和GRU图解

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

n/img_convert/9f49b566129f47b8a67243c1008edf79.png)

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值