DAY2--RNN神经网络学习笔记

全连接神经网络和卷积神经网络,他们都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的。但是,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。比如,当我们在理解一句话意思时,孤立的理解这句话的每个词是不够的,我们需要处理这些词连接起来的整个序列;当我们处理视频的时候,我们也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列。这时,就需要用到深度学习领域中另一类非常重要神经网络:循环神经网络(Recurrent
Neural Network)。

RNN经常用于处理语言序列,用于计算机理解一个语句的语义,并且根据前后文去理解语义达到我们想要的结果。

基本循环神经网络
下图是一个简单的循环神经网络如,它由输入层、一个隐藏层和一个输出层组成:
DAY2--RNN神经网络学习笔记_第1张图片
上图可以看做为一个全连接神经网络的实现,只不过在隐藏层输出的时候会取出输出值保存在一个节点中,并在下次训练时将此输出值与本次的输入值做运算形成本次隐藏层的输入,并且在本次输出时再将输出存到节点中提供下次使用。
DAY2--RNN神经网络学习笔记_第2张图片

上图为每一次训练的过程,每次训练都会将输出作为下一次输入的参数,由此可提取出公式:

在这里插入图片描述
式1是输出层的计算公式,输出层是一个全连接层,也就是它的每个节点都和隐藏层的每个节点相连。V是输出层的权重矩阵,g是激活函数。式2是隐藏层的计算公式,它是循环层。U是输入x的权重矩阵,W是上一次的值S(t-1)作为这一次的输入的权重矩阵,f是激活函数。

DAY2--RNN神经网络学习笔记_第3张图片

而仅仅是单向的RNN网络是不够的用的,因为一句话中的语义需要根据前后文来定义,而不是单单通过前文去定义,所以又有双向循环神经网络
DAY2--RNN神经网络学习笔记_第4张图片
其中需要储存两个节点输出信息,A和A`,一个用于正向推进,一个用于反向推进,最终的输出取决于两个储存节点,这就跟一句话里面的语义要遵循先后文一样。
DAY2--RNN神经网络学习笔记_第5张图片
DAY2--RNN神经网络学习笔记_第6张图片
DAY2--RNN神经网络学习笔记_第7张图片
DAY2--RNN神经网络学习笔记_第8张图片
前向传播过程(黑色箭头方向):

输入为x,

隐层:ly1 = sigmoid(x*W0)+ pre_ly1 * Wh,

由两部分组成,一部分是输入值乘以权重,再经过一个激活函数(这里暂时用sigmoid表示),另一部分是是隐藏层前一个状态保存的结果。

输出层:ly2= sigmoid (ly1*w1),

由隐层输出值和输出权重相乘,经过激活函数得到。

反向传播过程(红色箭头方向):

真实值为Y,输出层输出的预测值为ly2,两者差为:Y-ly2=err,计算得到总误差Err=1/2(Y-ly2)^2,也就是平方误差。接下来就要使用链式求导法则,反向传播误差,首先离误差最近的是输出ly2,则计算Err对ly2的偏导数,得到:

delta_ly2= (Y-ly2)*sigmoid’(ly2),

注意,这里sigmoid函数是对ly2求导。而Y-ly2=err,所以delta_ly2=errsigmoid(ly2),接下来计算隐层的误差,从图中可以看出,隐层反向传过来的误差有两项,一个是后一个状态的隐层误差(反向传播下一状态需要返回给上一状态):next_ly1Wh,另一个是输出层传下来的误差:delta_ly1=delta_ly2W1sigmoid’(ly1),

这个式子是由链式法则得出,每次计算当前步的误差需要乘上上一步的误差,因此有delta_ly2这一项,然后因为ly2=sigmoid(ly1W1),根据链式法则计算ly2对ly1的导数,得到W1singmoid’(ly1)。

与全连接反向传播类似,只是在隐藏层传播时引入了后一次的反向传播的影响。

同时,当序列过长时容易发生梯度爆炸或梯度消失,因为损失函数是指数函数,可能会导致参数的增长或减小值过大,则发生梯度爆炸或梯度消失。

词的向量化
神经网络的输入是词,我们可以用下面的步骤对输入进行向量化:

1、建立一个包含所有词的词典,每个词在词典里面有一个唯一的编号。
2、任意一个词都可以用一个N维的one-hot向量来表示。其中,N是词典中包含的词的个数。词的编号为在one-hot向量中,1所在的位置,其余的位置都是0
DAY2--RNN神经网络学习笔记_第9张图片使用这种向量化方法,我们就得到了一个高维、稀疏的向量(稀疏是指绝大部分元素的值都是0)。所以需要特殊的方法进行降维。
然后使用softmax函数计算出下一个词的概率,
DAY2--RNN神经网络学习笔记_第10张图片
模型的训练
模型的训练需要将语句分词然后放入训练模型中,输入前一个词,然后将后一个词作为标签进行学习

DAY2--RNN神经网络学习笔记_第11张图片

你可能感兴趣的:(Artificial,Neural,Networks)