序列模型
简单来说就是跟时间先后有关系的数据。
举例来说:
比如我们讲话,“我是一只猪“,不是瞬间蹦出来一句话吧,是随着时间先后而说出来的吧,这段声音是个序列模型。
比如你看一段话,是从第一个字看到最后一个字,不是瞬间就完成了吧,这个文章也是序列模型。
比如一段视频,你一般是从最开始往后看的,有个时间顺序吧。
循环神经网络
为什么要提出这个网络呢,普通的神经网络或者卷积神经网络为什么不行呢,因为序列模型里的数据大部分是有关联的,而普通的神经网络数据之间没什么关系,一旦涉及到关系,必定会涉及到记忆,要根据记忆来判断很多东西。
举个例子,如果我说,我喜欢吃汉堡,那我现在饿了,我问你,我们去吃什么,你肯定会说去吃汉堡,如果你没有记得我喜欢吃汉堡,那你可能会说我也不知道,你喜欢什么就去吃什么好了。
因此,涉及到有数据之间关联,就提出循环神经网络,循环指的是上一次的输出可以不断的循环到后面,作为下一个数据的输入参数,因此可以根据前面的数据来判断后面要做的事,大致是这个思路。
看下他的简单结构图和基本运行图:
不需裂解具体的字母,只要明白他的每个时间点上都有输入和上一次处理后的输出,然后经过处理后有个两个输出,一个给后面的输入,一个进行预测,比如语音识别,说了一句话‘我是一只猪’,输入则为五个字的音频信息,从第一个字开始进行处理,如果没有相互关联,则可能给出的结果:
我是抑制住
我是一蜘蛛
我是一植株
我是一只猪
显然最后一个是对的,每个单词的识别都会根据前面的信息进行考虑,判断下一个最有可能是什么单词。
典型的结构
LSTM
可以选择性保留或者遗忘某些信息,会保留前一次的记忆信息和隐藏状态,用来决定后一层是否要继续保留信息或者遗忘信息,即将以前的信息和现在的输入信息关联起来了。主要分为遗忘门(遗忘权重),输入门(记忆权重),输出门(新隐藏状态)。
遗忘门能决定需要保留先前步长中哪些相关信息,输入门决定在当前输入中哪些重要信息需要被添加,输出门决定了下一个隐藏状态。
具体看动图和解释:
上图描述的就是老的隐藏信息和现在的输入信息进行处理,产生一个遗忘权重。
同理上图描述了,记忆权重和候选数据的产生。
上图描述了,新的记忆信息产生的过程,具体为:
上图描述为新的隐藏状态的产生。
GRU
与LSTM类似,但是更简洁,去除了老的记忆信息,用隐藏层状态来传递信息。更新门(决定新的记忆状态和输出)和重置门(决定是否要忘记老的记忆状态)。
好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵,图片均来自网络,侵删。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深度学习之感性理解-循环神经网络RNN - Python技术站