深度学习之循环神经网络

前言

卷积神经网络CNN在图象处理领域起到了重要的作用,在自然语言处理中还要看循环神经网络RNN,RNN对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息.

为什么要发明循环神经网络

我们先来看一个NLP很常见的问题,命名实体识别,举个例子,现在有两句话:

  • 第一句话:I like eating apple!(我喜欢吃苹果!)

  • 第二句话:The Apple is a great company!(苹果真是一家很棒的公司!)

现在的任务是要给apple打Label,我们都知道第一个apple是一种水果,第二个apple是苹果公司,假设我们现在有大量的已经标记好的数据以供训练模型,当我们使用全连接的神经网络时,我们做法是把apple这个单词的特征向量输入到我们的模型中(如下图),在输出结果时,让我们的label里,正确的label概率最大,来训练模型,但我们的语料库中,有的apple的label是水果,有的label是公司,这将导致,模型在训练的过程中,预测的准确程度,取决于训练集中哪个label多一些,这样的模型对于我们来说完全没有作用。

问题就出在了我们没有结合上下文去训练模型,而是单独的在训练apple这个单词的label,这也是全连接神经网络模型所不能做到的,于是就有了我们的循环神经网络。

序列特性

上下文即序列特性,就是符合时间顺序,逻辑顺序,或者其他顺序就叫序列特性,举几个例子:

  • 拿人类的某句话来说,也就是人类的自然语言,是不是符合某个逻辑或规则的字词拼凑排列起来的,这就是符合序列特性。
  • 语音,我们发出的声音,每一帧每一帧的衔接起来,才凑成了我们听到的话,这也具有序列特性、
  • 股票,随着时间的推移,会产生具有顺序的一系列数字,这些数字也是具有序列特性

循环神经网络

如下左图则为RNN,其中X是一个向量,也就是某个字或词的特征向量,作为输入层;U是输入层到隐藏层的参数矩阵;S是隐藏层的向量;V是隐藏层到输出层的参数矩阵;O是输出层的向量;不要管W,只看X,U,S,V,O就是我们的全连接神经网络结构.

W到底是什么?把左边的图按照时间线展开得到右边的图.

举个例子,有一句话是,I love you.上图中的

  1. x t − 1 x_{t-1} xt−1 代表的就是I这个单词的向量,
  2. x t x_{t} xt 代表的是love这个单词的向量,
  3. x t + 1 x_{t+1} xt+1 代表的是you这个单词的向量

W一直没有变,W其实是每个时间点之间的权重矩阵

RNN之所以可以解决序列问题,是因为它可以记住每一时刻的信息,每一时刻的隐藏层不仅由该时刻的输入层决定,还由上一时刻的隐藏层决定 .公式如下

其中 O t O_t Ot代表t时刻的输出, S t S_t St代表t时刻的隐藏层的值.值得注意的一点是,在整个训练过程中,每一时刻所用的都是同样的W.

举个例子,方便理解

假设现在我们已经训练好了一个RNN,如图,我们假设每个单词的特征向量是二维的,也就是输入层的维度是二维,且隐藏层也假设是二维,输出也假设是二维,所有权重的值都为1且没有偏差且所有激活函数都是线性函数,现在输入一个序列,到该模型中,我们来一步步求解出输出序列:

初始时 a 1 a_1 a1, a 2 a_2 a2是没有存值的,因此初始值为0





至此,一个完整的RNN结构我们已经经历了一遍,我们注意到,每一时刻的输出结果都与上一时刻的输入有着非常大的关系,如果我们将输入序列换个顺序,那么我们得到的结果也将是截然不同,这就是RNN的特性,可以处理序列数据,同时对序列也很敏感。

RNN梯度消失

假设在t=3时刻,损失函数为 L 3 = 1 2 ( Y 3 − O 3 ) 2 L_3={1 \over 2}(Y_3-O_3)^2 L3=21(Y3−O3)2

激活函数tanh导数小于1,即k时刻距离t时刻越远,则影响越小.对与"中华人民共和国"等长词的识别是很不利的

LSTM

残差网络的思路是一种解决梯度消失的方法.但在循环网络中有些词受前面影响,有些又不受前面影响.所以是一种动态残差.LSTM是RNN的一种变体,.有挑选的能力 的RNN.其结构如下

对比RNN的公式 y t = O t , w ′ = V , h t = S t y_t=O_t,w'=V,h^t=S_t yt=Ot,w′=V,ht=St你会发现LSTM主是相同的.区别在

其中 Z 是最为普通的输入,可以从上图中看到, Z 是通过该时刻的输入 X t X_t Xt 和上一时刻存的隐藏层信息 h t − 1 h_{t-1} ht−1 向量拼接,再与权重参数向量 W 点积,得到的值经过激活函数tanh最终会得到一个数值,也就是 Z ,注意只有 Z 的激活函数是tanh,因为 Z 是真正作为输入的,其他三个都是门控装置 Z i , Z f , Z o Z_i,Z_f,Z_o Zi,Zf,Zo都是在0到1之间的数值,1表示该门完全打开,0表示该门完全关闭.

主要参考

史上最详细循环神经网络讲解

从反向传播推导到梯度消失and爆炸的原因及解决方案

人人都能看懂的LSTM

相关推荐
智源社区2 小时前
PyTorch Day 首次登陆 2025 智源大会!论文征集开启
人工智能·pytorch·python·深度学习·机器学习
神经星星2 小时前
入选CVPR 2025!深圳大学团队等提出EchoONE,可精准分割多切面超声心动图
人工智能·深度学习·机器学习
小白狮ww4 小时前
支持视频检测, YOLOv12 目标检测刷新速度、精度双记录
人工智能·深度学习·机器学习
wgc2k4 小时前
吴恩达深度学习复盘(2)神经网络的基本原理轮廓
人工智能·深度学习
紫雾凌寒4 小时前
自然语言处理|人工智能如何革新作文批改:技术全解析
人工智能·深度学习·自然语言处理·easyui·长文本处理·语义理解·ai批改作文
0泡4 小时前
机器学习、深度学习和神经网络
深度学习·神经网络·机器学习·ai
WhyNot?5 小时前
深度学习入门(二):从感知机到神经网络
人工智能·深度学习·神经网络
豆芽8196 小时前
基于 Flask 的图像分类预测案例解读
人工智能·后端·python·深度学习·神经网络·分类·flask
小白的高手之路6 小时前
Pytorch中torch.nn的学习
人工智能·pytorch·python·深度学习·神经网络·学习·机器学习
Flash Bomb4227 小时前
自然语言处理(21:(第六章1.)基于RNN生成文本)
人工智能·rnn·深度学习·神经网络·自然语言处理