深度学习——RNN网络结构和升级版LSTM

YouTube视频链接

深度学习——RNN网络结构和升级版LSTM
RNN——递归神经网络
中间在隐藏层做了相应的变换,不是像全连接网络一样,直接将得到的结果向前传递,而是需要在中间保存信息,在后续的计算中会利用到之前保存好的信息。
深度学习——RNN网络结构和升级版LSTM
比如现在我们有一句话:我出生在中国,所以我的母语是?x0代表我;xt代表说,那么现在我们要做的事情是用RNN网络实现预测“说”后面该接什么词。
当输入“我”时,在A处得到一个记忆单元,这个记忆单元除了向前传递到h0之外,还要向右传递,那么对于x1输入“出生”也是一样的,依此类推,最后当输入xt是“说"时,RNN网络会“记得”之前有个词是“中国”,因为预测?为汉语的概率就会大大增加。
深度学习——RNN网络结构和升级版LSTM
xt表示输入,如果是自然语言处理中类似于上面的例子,我们首先需要做的是分词,划分完词之后就可以将每一个分词作为每一步的输入值;
st表示网络的记忆单元,不仅包括第t步的输入,还要之前的t-1步的信息,两者共同作用于一个**函数上;
ot通常我们希望得到的是一个概率值,我们要对每一步的ot得到他的softmax形式,也就是将词的向量转换成概率的形式,表示这个词输入进来之后,下面接的词的概率是多少。
深度学习——RNN网络结构和升级版LSTM

假设现在我们得到了第4步的输出是E3,我们算反向传播的时候,可以看到E3链接的单元是s3,可以计算E3对s3的梯度;
到了s3之后,看到s3连接了两部分,一部分是x3输入值,如果更新x3到s3的权重w3时,可以再计算s3对x3的梯度;
另一部分是s3对s2的梯度,可以计算出s2对s3向前传播时的梯度。
以此类推,就可以得到各个连接线上不同的梯度。
深度学习——RNN网络结构和升级版LSTM
那么RNN有什么缺点呢?
1、如果句子很长,那么最后预测的单词的概率可能和第一个词的关联性不是很大,保留下来的信息可能大部分没有用,导致信息冗余,也会造成网络结构太庞大;
2、在反向传播的过程中,梯度很多,如果梯度很小,会造成梯度消失。
下面介绍LSTM对上面的缺点进行改进:深度学习——RNN网络结构和升级版LSTM深度学习——RNN网络结构和升级版LSTM
在LSTM中,当输入一个数据之后,并不会把所有的信息都保留下来,我们会指定一个控制参数C。假如C[0,0.5,1,0.8],对于某个信息来说,如果对应的C值是0,那就直接将这个信息舍弃,参数为0.5的保留部分信息。
深度学习——RNN网络结构和升级版LSTM
参数C是需要网络进行训练的,是通过一个门单元,利用sigmoid函数来进行设置的。
深度学习——RNN网络结构和升级版LSTM
深度学习——RNN网络结构和升级版LSTM
当输入xt和t-1层的记忆单元之后,通过sigmoid函数将输入结果转化到[0,1]之间,然后与C_t-1相乘共同决定丢弃什么信息。
深度学习——RNN网络结构和升级版LSTM
深度学习——RNN网络结构和升级版LSTM
将丢弃的门单元和保留的门单元共同作用得到了新的C_t值,这里的C_t是从始至终要更新的。
深度学习——RNN网络结构和升级版LSTM
深度学习——RNN网络结构和升级版LSTM