Deep Learning学习笔记之循环神经网络(一)

基础循环神经网络,RNN

循环神经网络,Recurrent Neural Network,RNN
循环神经网络,多用于处理序列数据,如语音识别、音乐生成、情感分类、机器翻译等

Basic RNN(循环神经网络)与DNN(前馈神经网络)的区别

——前馈神经网络不考虑上下文的信息,对于一个特定的输入,会给出固定的输出;前一阶段的输出间并不会对后一阶段产生影响
——循环神经网络具有记忆功能,捕获(考虑)历史时刻的信息;t时刻的输出会重新输入到隐藏层中,作为t+1时刻的输入

对于不同的训练样本,RNN的输入输出的序列长度往往是非固定的
且RNN在文本序列的不同位置学习到的特征是不共享的,这是由于RNN网络的记忆功能使得在t时刻学习到的特征往往包含有t时刻前的一些信息

下图是DNN与RNN结构上区别的简单体现:

在这里插入图片描述


关于命名实体识别的问题

命名实体识别,即对于一句话中的主体(主语)进行识别。简单的说,将数据集中名字设为1,非名字设为0。放置进网络中训练,使得RNN能够将输入的语句中的实体识别出来

注意:在生成文本语料库的过程中,对于单词or单个汉字等无明显联系的元素,我们常常使用具有正交特性的独热码(one-hot)来对其进行编码

在这里插入图片描述

其实现特点有:从左到右扫描序列数据;每个时间步共享参数(为减少不必要的计算量,该网络设置有Whx,Whh,Wyh三套参数,每一个时间步下的参数权值共享)。
计算过程如下:
h < t > = g ( W h h h < t − 1 > + W h x x < t > + b h ) = g ( W h [ h < t − 1 > , x < t > ] + b h ) h^{<t>} = g(W_{hh}h^{<t-1>}+W_{hx}x^{<t>}+b_h)=g(W_{h}[h^{<t-1>},x^{<t>}]+b_h) h<t>=g(Whhh<t1>+Whxx<t>+bh)=g(Wh[h<t1>,x<t>]+bh)
y ^ < t > = g 2 ( W y h < t > + b y ) \hat{y}^{<t>} = g_2(W_yh^{<t>}+b_y) y^<t>=g2(Wyh<t>+by)
注 : W h = [ W h h ; W h x ] , [ h < t − 1 > + x < t > ] = [ h < t − 1 >    x < t > ] T 注:W_h = [W_{hh};W_{hx}],[h^{<t-1>}+x^{<t>}]=[h^{<t-1>} \ \ x^{<t>}]^T Wh=[Whh;Whx],[h<t1>+x<t>]=[h<t1>  x<t>]T

注意:两个过程的激活函数并不相同
在h的计算中,选取tanh作为激活函数;在输出的过程中,二分类中,选取sigmoid作为激活函数,在多分类中,选取softmax作为激活函数


关于其损失函数的计算,我们使用交叉熵损失函数,对每一步的预测值和真值分别计算,再作求和。
在这里插入图片描述

不同结构的RNN网络

Many to many

对于输入输出序列长度相等的情况,即时间步Tx = Ty,例如命名实体识别问题,我们使用前文中提到的网络结构。
在这里插入图片描述
对于输入输出的时间步不等的情况,即Tx != Ty,例如机器翻译问题,我们将输入与输出分隔开,类似于编码器和解码器的形式
在这里插入图片描述

Many to one

常见于情感分类问题
在这里插入图片描述

One to many

常见于音乐生成问题、图像加字幕问题

音乐生成:
在这里插入图片描述
图像加字幕:
在这里插入图片描述

双向循环神经网络——Bi-directional RNN

其优势在于,既能够获取历史数据的信息,也能够获取未来数据的信息
其缺陷在于,只有在获取完整的序列信息时才能进行预测,而不能进行实时的处理
在这里插入图片描述

深层循环神经网络——Deep RNN

类似于深层前馈神经网络,设置多个隐藏层
在这里插入图片描述

在长程RNN训练中出现的问题

在训练过程中,使用BPTT方法进行反向传播。所谓BPTT,即Back Propagation Through Time,随时间反向传播。当时间步过长时,会展现出一些问题。

RNN的训练过程中,损失函数取值的分布,要么极为平坦,要么极为陡峭,这导致训练过程比较困难
在这里插入图片描述
下面我们来看一下反向传播过程中,网络参数Wyh,Whh,Whx的更新情况。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
看长式子很累是吧,那我们化简一下~
在这里插入图片描述

可以看到,在较多的连乘中,若频繁出现较小(较大)的权值,则导致在长程循环神经网络中,极易产生梯度消失(爆炸)的问题。
需要注意的是,sigmoid和tanh两个激活函数的导数均是[0,1]区间内的值,故而激活函数仅会产生梯度消失的现象。当梯度消失出现,即参数层不再更新,这一层变为了单纯的映射层。
在这里插入图片描述
三个问题:
(1)梯度爆炸
(2)梯度消失
(3)记忆容量

解决措施:
(1)梯度爆炸:梯度削减
(2)梯度消失:
选取更好的激活函数
改变传播结构
(3)记忆容量:引入门控机制来控制信息的积累速度。这里是指净积累速度,即选择性吸取新信息、选择性遗忘已有信息。这部分的内容,我们会在后面的LSTM和GRU模块中涉及。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖虎干嘛了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值