RNN的基本内容

RNN的基本介绍

这里写目录标题

  • 一RNN的基本内容
    • RNN的变体--LSTM
      • GRU

一RNN的基本内容

RNN的基本概念: 即循环神经网络,是一种神经网络结构模型。这种网络的本质特征是在处理单元之间既有内部的反馈连接又有前馈连接,即像人一样拥有记忆的能力。可以借此解决卷积神经网络,还是人工神经网络的前提假设:元素之间是相互独立的,输入与输出也是独立的问题。我们可以借此解决语义识别,语义分割等问题(RNN的主要用途是处理和预测序列数据)。

RNN的基本内容_第1张图片
(x:输入(向量)
s:是一个向量,它表示隐藏层的值(这里隐藏层面画了一个节点,你也可以 想象这一层其实是多个节点,节点数与向量s的维度相同)
U:权重矩阵
o:输出(向量)
V:是隐藏层到输出层的权重矩阵。
w:权重矩阵)

如果上图带有W的那个带箭头的圈去掉,它就变成了最普通的全连接神经网络。
CNN简单的结构:
RNN的基本内容_第2张图片
从上面两幅图我们可以发现CNN只有前馈连接而没有反馈连接,而RNN既有前馈连接也有反馈连接
两者的不同:
CNN:借助卷积核(kernel)提取特征后,送入后续网络(如全连接网络Dense)进行分类、目标检测等操作。CNN借助卷积核从空间维度提取信息,卷积核参数空间共享。

RNN:借助循环核(cell)提取特征后,送入后续网络进行预测等操作。RNN借助循环核从时间维度提取信息,循环核参数时间共享。( 循环核具有记忆力,通过不同时刻的参数共享,实现了对时间序列的信息提取。)
RNN的基本内容_第3张图片
在这里,我们可以把左右两个隐藏层s给当成数字逻辑里面的现态次态,次态的状态由现态和输入决定。
RNN的基本内容_第4张图片
Xt:表示t时刻的输入
ot:表示t时刻的输出
St:表示t时刻的记忆

由上图可知,循环神经网络就是借助循环核实现时间特征提取后把提取到的信息送入全连接网络,从而实现连续数据的预测和处理。
RNN的基本内容_第5张图片
从图中可以发现,在RNN中,每个循环核构成一层循环计算层,循环计算层的层数是向输出方向增长的,也就是说,你的循环核越多,那么你的循环计算也就越多.但是循环核的上限我们是可以自己决定的。
RNN的基础:
**1、**St=f(U∗Xt+W∗St−1)
St表达式里面的f()是神经网络中的激活函数,也就是RNN的记忆功能。可以捕捉到之前时间点的信息,至于是多少个时间点的信息我们是可以自己设定的,如果我们把记忆的时间点的个数给限定了,输入和输出的xt,ot也指定的话,那么周围的带训练参数的维度就会被固定。
**2、*Ot=g(VSt)
两个重要函数中的权重矩阵(U、V、W)的计算:
前向连接时:记忆体内存储的状态信息ht在每个时刻都被刷新,而三个参数矩阵W、U、V是固定不变的。
反向连接时:三个参数矩阵W、U、V由梯度下降法(下降的比较快)更新(整个结构共享一组U,V,W)。
RNN的基本内容_第6张图片
假设现在我们有一个词输入,我们需要先将它转化成一个计算机可读的一个向量,然后RNN在逐个处理向量序列。毕竟我们的语言计算机是不能直接识别的。
RNN的基本内容_第7张图片
处理时,RNN 将先前隐藏状态传递给序列的下一步。 而隐藏状态充当了神经网络记忆,它包含相关网络之前所见过的数据的信息。
RNN的基本内容_第8张图片
将输入和先前隐藏状态组合成向量, 该向量包含当前输入和先前输入的信息。 向量经过激活函数 tanh之后,输出的是新的隐藏状态或网络记忆。
RNN的基本内容_第9张图片
激活函数 Tanh 用于帮助调节流经网络的值,并且 tanh 函数将数值始终限制在 -1 和 1 之间,从而调节了神经网络的输出。选用这个tanh函数可以有利于我们计算,反之我们过早的梯度爆炸。
RNN的基本内容_第10张图片
由图可知,RNN在短跨度下的预测是比较准确的,但是一但跨度过长,我们的预测便会失真。因为在多向的反向传播会导致梯度消失和梯度爆炸的情况。我们可以使用梯度截断去解决梯度爆炸问题,但是无法轻易解决梯度消失问题。所以我们出现了RNN的变体LSTM和GRU。

RNN的变体–LSTM

****LSTM:长短时记忆神经网络
LSTM与RNN有啥不一样呢?
对于特定时刻t,隐藏层输出St的计算方式不同。LSTM网络的训练的思路与RNN类似,仅前向传播关系式不同而已。并且在对LSTM网络进行训练时,cell state c[0]和hidden state s[0]都是随机初始化得到的。
RNN的基本内容_第11张图片
上面是LSTM的原理图
LSTM 的核心概念在于细胞状态以及“门”结构。细胞状态相当于信息传输的路径,让信息能在序列连中传递下去。可以将其看作网络的“记忆”。理论上讲,细胞状态能够将序列处理过程中的相关信息一直传递下去。因此,即使是较早时间步长的信息也能携带到较后时间步长的细胞中来,这克服了短时记忆的影响。信息的添加和移除我们通过“门”结构来实现,“门”结构在训练过程中会去学习该保存或遗忘哪些信息。
遗忘门:
RNN的基本内容_第12张图片
功能:决定应丢弃或保留哪些信息。(准确说是确定前一个步长中哪些相关的信息需要被保留)
前一个隐藏状态的信息和当前输入的信息同时传递到 sigmoid 函数中去,输出值介于 0 和 1 之间,越接近 0 意味着越应该丢弃,越接近 1 意味着越应该保留。
sigmoid函数
RNN的基本内容_第13张图片
由图可知sigmoid函数的值为[0,1],则我们把上一个隐藏状态和现在的输入信息相互结合传递到sigmoid函数中,我们根据sigmoid函数的输出值来确定这些信息是否应该保留。
输入门:
RNN的基本内容_第14张图片
作用:输入门用于更新细胞状态。首先将前一层隐藏状态的信息和当前输入的信息传递到 sigmoid 函数中去。将值调整到 0~1 之间来决定要更新哪些信息。0 表示不重要,1 表示重要,在将前一层隐藏状态的信息和当前输入的信息传递到 tanh 函数中去,创造一个新的侯选值向量。最后将 sigmoid 的输出值与 tanh 的输出值相乘,sigmoid 的输出值将决定 tanh 的输出值中哪些信息是重要且需要保留下来的。(sigmoid和tanh函数具体在上面有所解释)
细胞状态:
RNN的基本内容_第15张图片
首先将前一层的细胞状态与遗忘向量逐点相乘。如果它乘以接近 0 的值,意味着在新的细胞状态中,这些信息是需要丢弃掉的。然后再将该值与输入门的输出值逐点相加,将神经网络发现的新信息更新到细胞状态中去。至此,就得到了更新后的细胞状态。
并且我们从这里可以看出输入门决定了多少信息会存进细胞状态之中进行计算。
输出门:
RNN的基本内容_第16张图片
用来确定下一个隐藏状态的值,隐藏状态包含了先前输入的信息。首先,我们将前一个隐藏状态和当前输入传递到 sigmoid 函数中,然后将新得到的细胞状态传递给 tanh 函数。最后将 tanh 的输出与 sigmoid 的输出相乘,以确定隐藏状态应携带的信息。再将隐藏状态作为当前细胞的输出,把新的细胞状态和新的隐藏状态传递到下一个时间步长中去。
上述就是LSTM的简单说明。

GRU

RNN的基本内容_第17张图片
首先计算更新门和重置门的门值, 分别是z(t)和r(t), 计算方法就是使用X(t)与h(t-1)拼接进行线性变换, 再经过sigmoid激活. 之后重置门门值作用在了h(t-1)上, 代表控制上一时间步传来的信息有多少可以被利用. 接着就是使用这个重置后的h(t-1)进行基本的RNN计算, 即与x(t)拼接进行线性变化, 经过tanh激活, 得到新的h(t). 最后更新门的门值会作用在新的h(t),而1-门值会作用在h(t-1)上, 随后将两者的结果相加, 得到最终的隐含状态输出h(t), 这个过程意味着更新门有能力保留之前的结果, 当门值趋于1时, 输出就是新的h(t), 而当门值趋于0时, 输出就是上一时间步的h(t-1).
综上,LSTM和GRU两个是RNN的两个变体,他们分别采取了一些新的包装和函数的应用来增强了原始RNN的记忆功能,但是他们对数据的处理各有千秋,我们在应用时我们可以根据自己数据所需来进行选择。
(以上图片来自于知乎上的一篇文章和一些CSDN大佬的文章!)

你可能感兴趣的:(深度学习)