NPL实践系列:8、循环神经网络

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/suifeng2018/article/details/88606933

1. RNN介绍

1.1 RNN结构

RNN(Recurrent Neural Network),即是循环神经网络,是一类用于处理序列数据的神经网络。
从基础的神经网络中知道,神经网络包含输入层、隐层、输出层,通过激活函数控制输出,层与层之间通过权值连接。激活函数是事先确定好的,那么神经网络模型通过训练“学“到的东西就蕴含在“权值“中。
基础的神经网络只在层与层之间建立了权连接,RNN最大的不同之处就是在层之间的神经元之间也建立的权连接。
如图:
在这里插入图片描述
这是一个标准的RNN结构图,图中每个箭头代表做一次变换,也就是说箭头连接带有权值。左侧是折叠起来的样子,右侧是展开的样子,左侧中h旁边的箭头代表此结构中的“循环“体现在隐层。
在展开结构中我们可以观察到,在标准的RNN结构中,隐层的神经元之间也是带有权值的。也就是说,随着序列的不断推进,前面的隐层将会影响后面的隐层。图中O代表输出,y代表样本给出的确定值,L代表损失函数,我们可以看到,“损失“也是随着序列的推荐而不断积累的。
除上述特点之外,标准RNN的还有以下特点:
1、权值共享,图中的W全是相同的,U和V也一样。
2、每一个输入值都只与它本身的那条路线建立权连接,不会和别的神经元连接。
以上就是RNN的标准结构。RNN还有很多种结构,用于应对不同的需求和解决不同的问题。

1.2RNN的训练方法——BPTT

BPTT(back-propagation through time)算法是常用的训练RNN的方法,其实本质还是BP算法,只不过RNN处理时间序列数据,所以要基于时间反向传播,故叫随时间反向传播。BPTT的中心思想和BP算法相同,沿着需要优化的参数的负梯度方向不断寻找更优的点直至收敛。综上所述,BPTT算法本质还是BP算法,BP算法本质还是梯度下降法,那么求各个参数的梯度便成了此算法的核心。

2. 双向RNN

双向RNN是一种常见的结构。常用于自然语言处理中。
双向RNN是先正向一次,再反向一次,将两者的store混合,再扔入NN中在来一次,好处是看的内容比较广,即考虑了句子的前部分,也考虑了句子的后部分。

3. 递归神经网络

4. LSTM、GRU

5、针对梯度消失(LSTM等其他门控RNN)、梯度爆炸(梯度截断)的解决方案。

6. Text-RNN的原理。

7. 利用Text-RNN模型来进行文本分类。

8. Recurrent Convolutional Neural Networks(RCNN)原理。

参考文章:https://blog.csdn.net/zhaojc1995/article/details/80572098
https://www.jianshu.com/p/30b253561337

猜你喜欢

转载自blog.csdn.net/suifeng2018/article/details/88606933