RNN到lstm的学习之路

1. 什么是rnn,它是用来解决什么样的问题的?

rnn的中文名称叫循环神经网络,顾名思义它每一层的神经网络结构都是一样的。下面我们通过一些图例来了解rnn网络的构造。

a. 序列型数据,x1,x2,x3,x4是存在依赖关系的序列型数据。例如:在自然语言处理问题中, x1可以看作是第一个单词,x2可以看作是第二个单;语言处理中, X1 、X2 … …是每帧的声音信号;时间序列问题中, 可以每天的股票价格等

b. h1的计算。h1其实就是一个神经元,它会对输入的数据进行计算,在经过激活函数处理之后输出。图中的 U、 W是参数矩阵 ,b 是偏置顶参数 。 f是激活函数,在经典的rnn结构中,通常使用 tanh作为激活函数 。
 

c. h2,h3,h4的计算和 h1是类似的。要注意的是,在计算时,每一步使用的参数 U、 W、 b 都是一样的,即每个步骤的参数都是共享的,这是 RNN的重要特点,一定要牢记。

d. h层计算出来的值并不是真正要输出的值,还必须要经过一层转换得到y值才可以输出。那么其实,h相当于是个隐层,y才是最输出层。V,C都是新的参数,因为通常处理的是分类问题,所以在最后会用一个softmax函数进行转换。

总结一下:

设输入为 x1 ,x2... xT ,对应的隐状态为 h1 ,h2...ht输出为 y1 ,y2 ,yt,则经典 RNN 的运算过程可以表示为

其中,U, V,W,b, c 均为参数,而 f 表示激活函数,一般为 tanh 函数。
 

rnn的其他网络结构

a. 有的时候,问题的输入是一个序列,输出是一个单独的值而不是序列,这种结构通常用来处理序列分类问题 。 如输入一段文字判别其所属的类别,输入一个句子判断其情感倾向,输入一段视频并判断它的类别等等。
 

b. 输入是单独的值输出是一个序列

这种 l vs N 的结构可以处理的问题有:从图像生成文字 ,此时输入的 X是图像的特征,而输出的 y 序列是一段句子 ;从类别生成语言或音乐等 。

c. 双向rnn

d. 双向多层神经网络

如何解决rnn循环过程中出现的梯度消失或者是梯度爆炸的问题:

梯度消失问题可以使用lstm来解决;gradient clipping方法,当梯度大于阀值的时候设成一个值小于阀值的时候设成一个值的方式,来解决梯度爆炸问题。

什么是LSTM网络呢?

LSTM,长短期记忆网络是rnn的进化版。他们两个的整体的网络结构是相似的,但是lstm的神经元会复杂许多。下图是两者的结构图对比。

下面将详细解释一下lstm的神经元结构。

lstm有三个门,也就是通过这3个门来实现长短期记忆的效果的。

发布了23 篇原创文章 · 获赞 1 · 访问量 1372

猜你喜欢

转载自blog.csdn.net/langsiming/article/details/102835798