目标
1.能够解释循环神经网络的概念和功能。
2. 能够描述循环神经网络的类型和应用场景
3.能够解释LSTM的功能和原理。
4.能够解释GRU的功能和原理。
1. 循环神经网络的介绍
既然有了神经网络,为什么还需要循环神经网络?
在典型的神经网络中,信息传播是单向的,这种限制虽然使网络更容易学习,但也在一定程度上削弱了神经网络模型的威力。特别是在许多现实世界的任务中,网络的输出不仅与当前的输入有关,还与过去时期的输出有关。此外,常规网络难以处理视频、音频和文本等时间序列数据。一般来说,时间序列数据的长度不固定,但前馈神经网络需要固定的输入和输出维度。不能随意更改。因此,在处理此类与时序相关的问题时,需要一个更强大的模型。
循环神经网络(RNN)是一种具有短期记忆能力的神经网络。在循环神经网络中,神经元不仅可以接收来自其他神经元的信息,还可以接收有关自身的信息,形成循环网络结构。换句话说,神经元的输出可以在下一个时间步直接应用(作为输入)到神经元本身。
简化该图,我们可以看到RNN比传统神经网络多了一个周期。此循环表示将作为下一个时间步的输入的一部分返回的内容。展开后,图表将如下所示:
或:
在不同的时间步,RNN的输入与网络在时间t~n~的输出结果相关到该时刻的输入和所有历史。它适用于时间序列建模。
RNN的各种表示形式和功能如下图所示。
图1:固定长度I/O(例如图像分类) 图2:序列输出(例如图像到文本) 图3:序列输入(例如文本分类) 图4:异步序列I/O(例如:文本翻译) ) ) 图5:同步序列输入/输出(例如根据视频的每一帧对视频进行分类)
2. LSTM和GRU
2.1 LSTM 基本概述
如果您有这样的需求,请根据现有文本预测下一个单词。例如,“天空中的云位于____”这句话可以从不远的地方预测出来。对于句子来说,单词在前100个单词之前,所以此时间距非常大,因此随着间距的增加,实际预测值对结果的影响会变得很小。预测得不太好(RNN 问题中的长期依赖性)
因此需要LSTM(长短期记忆网络)来解决这个问题。
LSTM 是一种特殊类型的RNN,可以学习长期依赖信息。 LSTM 在许多问题上取得了巨大成功,并得到了广泛的应用。
LSTM单元就是下图中绿色框中的内容:
其中代表sigmoid函数等符号。
2.2 LSTM 核心
LSTM 的核心在于上图中最上面一行所示的单元(单元)内的状态。
然而,由于仅上述几行无法添加或删除信息,因此LSTM 是通过称为门的结构来实现的,门可以选择是否允许信息通过。
这个门主要是通过sigmoid和逐点乘法来实现的。
sigmoid值的范围在(0,1)之间,意思是如果接近0则表示不传递任何信息,如果接近1则表示传递所有信息。
2.3 逐步理解LSTM
2.3.1 遗忘之门
遗忘门使用sigmoid 函数来确定哪些信息被遗忘。
下图中,h_t-1和x_t通过sigmoid函数串联起来输出0到1之间的值。该值将与之前的单元状态(C_t-1)相同,以确定是否忘记或保留它。
遗忘门:通过sigmoid 识别哪些信息被遗忘
权重和偏差通过sigmoid 函数输出一个0 到1 之间的值,并将该值与之前的单元状态(C_t-1)进行点乘来确定是忘记还是保留。
遗忘门:通过sigmoid 识别哪些信息被遗忘
2.3.2 输入门
下一步是决定保留哪些新信息。这个过程有两个步骤。
1. 称为输入门的sigmoid 层决定更新哪些信息
2. Tanh 创建一个新的候选向量C_t。稍后可以将其添加到单元状态中。
例如:
昨天我吃了一个苹果,所以今天我想吃一个菠萝这句话中,苹果可以通过遗忘之门被遗忘,新的主题更新为菠萝。
现在您可以将旧的单元状态C_t-1 更新为C_t。
更新配置非常简单。
1. 将旧单元状态乘以忘记门结果。
2. 接下来,将输入门乘以tanh 的结果相加。
输入门:确定输入什么信息
sigmoid:决定输入信息的比率Tanh:决定输入信息2.3.3 输出门
最后,您需要决定要输出哪些信息。同样,输出经过变换后,sigmoid函数的结果决定输出哪种细胞状态。
步骤为:
1、将之前的输出与当前时间步的输入相结合的结果通过sigmoid函数处理得到O_t。
2.更新后的细胞状态C_t经过Tanh层处理,并将数据转换为区间(-1,1)。
3. 将Tanh处理后的结果乘以O_t,同时将结果输出发送到下一个LSTM单元。
输出门:
打印当前结果和hide_statehidden_state==h_t 的LSTM 的快速摘要:
1.输入:h_t-1,x_t,c_t-1
2、首先h_t-1和x_t通过遗忘门更新记忆单元c_t-1,以确定哪些信息被遗忘。
3. 接下来,h_t-1和x_t通过输入门来确定将哪些信息添加到存储单元以及以什么比例添加。此时,内存单元更新为c_t。
4、最后h_t-1和x_t通过输出门,根据当前记忆c_t确定下一时刻的输出h_t。
5.输出:h_t(输出)、h_t(隐藏状态)、c_t
2.4 GRU,LSTM 变体
GRU(门控循环单元)是LSTM 的修改版本,它将忘记门和输入门组合成“更新门”。它还合并单元状态和隐藏状态,并进行其他更改。它的模型变得越来越流行,因为它比标准LSTM 模型更简单。
GRU 概述:
1. GRU(Gated Recurrent Unit)是LSTM的修改版本。没有什么比LSTM 更好或更坏了。
2. 两个门:更新门和输出门
3、输入输出:
两个输出:hidden_state、hidden_state 两个输入:x_t、hidden_state_t-1LSTM 内容参考地址:https://colah.github.io/posts/2015-08-Understanding-LSTMs/
3. 双向LSTM
单向RNN 根据先前的信息预测下一个单词,但有时仅查看前一个单词是不够的,并且您需要预测的单词与下一个内容相关。在某些情况下,这就是。案例,所以我们有一个系统。目前,我们希望模型不仅需要从前到后的内存,还需要从后到前的内存。目前,双向LSTM有助于解决这个问题。
由于是双向LSTM,每个方向的LSTM都有一个输出,最终的输出有两部分,所以经常需要进行concat操作。
双向LSTM、GRU
1.前向LSTM
2.逆LSTM
3. 两个输出的串联
4、用途:输出具有正向和反向记忆。
版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。