0


循环神经网络

循环神经网络(Recurrent Neural Network,RNN)与卷积神经网络一样,都是深度学习中的重要部分。循环神经网络可以看作一类具有短期记忆能力的神经网络。在循环神经网络中,神经元不但可以接收其他神经元的信息,也可以接收自身的信息,形成具有环路的网络结构,正因为能够接收自身神经元信息的特点,让循环神经网络具有更强的记忆能力。
卷积神经网络和全连接网络的数据表示能力已经非常强了,为什么还需要RNN呢?这是因为现实世界中面临的问题更加复杂,而且很多数据的输入顺序对结果有重要影响。如文本数据,其是字母和文字的组合,先后顺序具有非常重要的意义。语音数据、视频数据,这些数据如果打乱了原始的时间顺序,就会无法正确表示原始的信息。针对这种情况,与其他神经网络相比,循环神经网络因其具有记忆能力,所以更加有效。循环神经网络已经被广泛应用在语音识别、语言模型以及自然语言生成、文本情感分类等任务上。
最常见、最基本的循环神经网络有RNN、LSTM(长短期记忆)和GRU等。下面我们逐个简单讲解一下这三个循环神经网络。

1.RNN

首先看一下RNN简单网络结构示意图

上图中展示了RNN中基础的链接结构,针对t时刻的隐状态h_{t},可以由下面的公式进行计算:

式中,h_{t}是t时刻的隐藏状态;x_{t}是t时刻的输入;h_{t-1}是t-1时刻的隐藏状态;w_{ih}是输入到隐藏层的权重;w_{hh}是隐藏层到隐藏层的权重;b_{ih}是输人到隐藏层的偏置;b_{hh}是隐藏层到隐藏层的偏置;\sigma表示激活函数,在PyTorch中可以使用Tanh或者ReLU激活函数。

虽然在对序列数据进行建模时,RNN对信息有一定的记忆能力,但是单纯的RNN会随着递归次数的增加,出现权重指数级爆炸或消失的问题,从而难以捕捉长时间的关联,并且导致RNN训练时收敛困难,而LSTM网络则通过引入门的机制,使网络具有更强的记忆能力,弥补了RNN网络的一些缺点。

2、LSTM

LSTM ( Long Short-Term Memory)网络又叫作长短期记忆网络,是一种特殊的RNN,主要用于解决长序列训练过程中的梯度消失和梯度爆炸问题,相比普通的RNN网络,LSTM能够在更长的序列中获得更好的分析效果。其简单的网络结构如下图所示:

在LSTM网络中,每个LSTM单元针对输入进行下面函数的计算:

上式中,h_{t}是t时刻的隐藏状态( hidden state ) ;c_{t}是t时刻的元组状态( cellstate); x_{t}是t时刻的输入;h_{t-1}是t-1时刻的隐藏状态,初始时刻的隐藏状态为0;i_{t}f_{t}g_{t}o_{t}分别是输入门、遗忘门、选择门和输出门;\sigma表示sigmoid激活函数。在每个单元的传递过程中,通常c_{t}是上一个状态传过来的 c_{t-1}加上一些数值,其改变的速度较慢,而h_{t}的取值变化则较大,不同的节点往往会有很大的区别。LSTM在信息处理方面主要分为三个阶段:
(1)遗忘阶段。这个阶段主要是对上一个节点传进来的输人进行选择性忘记,会“忘记不重要的,记住重要的”。即通过f_{t}的值来控制上一状态c_{t-1}中哪些需要记住,哪些需要遗忘。
(2)选择记忆阶段。这个阶段将输人X_{t}有选择性地进行“记忆”。哪些重要则着重记录,哪些不重要则少记录。当前单元的输入内容是计算得到的i_{t},可以通过g_{t}对其进行有选择地输出。
(3)输出阶段。这个阶段将决定哪些会被当成当前状态的输出。主要通过o_{t}进行控制,并且要对c_{t}使用tanh激活函数进行缩放。
LSTM网络输出y_{t}通常可以通过h_{t}变化得到。

3、GRU

虽然LSTM通过门控状态来控制传输状态,记住需要长时间记忆的,忘记不重要的信息,而不像普通的RNN那样只能够有一种记忆叠加,这对很多需要“长期记忆”的任务来说效果显著,但是也因多个门控状态的引入,导致需要训练更多的参数,使得训练难度大大增加。针对这种情况,循环门控单元(Gate Recurrent Unit,GRU)网络被提出,GRU通过将遗忘门和输入门组合在一起,从而减少了门的数量,并且做了一些其他的改变,在保证记忆能力的同时,提升了网络的训练效率。在网络中每个GRU单元的示意图如下图所示。

在该网络中,每个GRU单元针对输入进行下面函数的计算:

式中,h_{t}是t时刻的隐藏状态( hidden state );x_{t}是t时刻的输入;h_{t-1}是t-1时刻的隐藏状态,初始时刻的隐藏状态为0;r_{t}z_{t}n_{t} 分别是重置门、更新门和计算候选隐藏层;\sigma 表示sigmoid激活函数。在每个单元的传递过程中,r_{t} 用来控制需要保留之前的记忆。如果 r_{t} 为0,则n_{t}=tanh(W_{in}x_{t}+b_{in}) 只包含当前输入状态的信息,而 z_{t} 则控制前一时刻的隐藏层忘记的信息量。循环神经网络根据循环单元的输入和输出数量之间的对应关系,可以将其分为多种应用方式。下图给出了循环神经网络常用的应用方式:

图中显示了5种循环神经网络的输入输出对应情况。其中,一对多的网络结构可以用于图像描述,即根据输入的一张图像,自动使用文字描述图像的内容;多对一的网络结构可用于文本分类,即根据一段描述文字,自动对文本内容归类;多对多的网络结构可用于语言翻译,即针对输入的一种语言,自动翻译为另一种语言。


本文转载自: https://blog.csdn.net/qq_42681787/article/details/129796902
版权归原作者 城南皮卡丘 所有, 如有侵权,请联系我们删除。

“循环神经网络”的评论:

还没有评论