DeepLearning-NLP-NN&RNN&LSTM正向传播和反向传播

神经网络NN结构、传播及修正

神经网络结构图

数学公式描述经典网络中每一个神经元的工作

(1)输入x ;
(2)计算z=w*x +b (其中b一般为0向量);
(3)输出new_x = f(z),这里的f是一个函数,可以是sigmoid、tanh、relu等,f就是上文所说到的激励函数。

如何反向传播(BP(Backpropagation)神经网络)

反向传播的目标是对权重进行优化,使得神经网络能够学习到从任意的输入到输出的准确映射。
第一步:结合BP神经网络,误差由输出层展开之输入层的过程如下:
在这里插入图片描述
第二步:通过误差E求偏导来调节权重,使权重得到最优权重(SGD或者梯度下降)
在这里插入图片描述

神经网路反向传播工作例子

神经网络有2个输入神经元,2个隐层神经元以及2个输出神经元。此外,隐层和输出神经元会包含一个偏置(b1、b2,即为wx+b中的b),下面是基本的网络结构:
在这里插入图片描述
1、初始化:我们对该网络设置一些初始的权重、偏置以及输入和输出:在这里插入图片描述
2、前向传播:

计算各个神经元的净输入和激活值,其中net表示净输入(激活前的值),out表示激活后的值,下标h表示隐藏层相关,下标o表示输出层相关。
在这里插入图片描述
3、计算误差(损失):

可以自己设计或者使用现在已有的损失函数计算误差(损失),本例使用方差。
在这里插入图片描述

4、反向传播:
用损失E对所有矩阵权重和偏置求导,其中对w5的求导过程如下:
在这里插入图片描述

5、梯度下降更新所有的权重和偏置:
本次网络调整后w5的新值应该为:
在这里插入图片描述
6、误差E对w1求偏导:
注意:w1对两个输出的误差都有影响,所以反向传播需要加和Eo1和Eo2对w1的偏导:
在这里插入图片描述

通过以上过程可以更新所有权重,再次迭代更新,直到满足条件。
参考博文:
https://blog.csdn.net/leiting_imecas/article/details/60463897
https://yq.aliyun.com/ziliao/282825?spm=a2c4e.11155472.blogcont.20.5bf35f18lpWK4a
https://blog.csdn.net/a819825294/article/details/53393837

RNN结构、传播及修正:

RNN网络结构

右图为RNN的缩略图,每个黑圈代表一个网络层,表示网络每次能处理的单元(比如一个word表示为的n维的vector),每条黑线表示各个层之间的权重矩阵。

左图为右图的展开,将右图所表示的每个层细化到神经网络的最小单元-神经元。左图中Input Layer的神经元表示一个元素(数字),Hidden Layer和Output Layer的神经元中有f符号代表激活函数,它们激活的也是一个元素(数字),每条连接的线上有权重,表示每个神经元之间的权重系数,权重系数为一个元素(数字)。Input Layer的所有元素和Hidden Layer的第i个神经元相关的权重做运算得出第i神经元的净输入,通过激活函数之后得到第i个神经元的净输出,Hidden Layer的所有神经元都做类似的运算,只是各个神经元的权重系数不相同。Hidden Layer到 Output Layer的计算过程同理。和NN的不同之处在于,RNN的Hidden Layer的输出会作为下一时间步的输入,所以有了左图中hidden Layer输出作为hidden layer的输入。
在这里插入图片描述

将RNN按时间步展开:

前向传播时,RNN的每个时间步共享所有的权重矩阵(每个时间步的权重矩阵都是相同的),在时间步到达T(最长时间步)时,计算所有时间步的累积误差(损失),然后反向传播调整网路的权重矩阵。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

LSTM

参考博文:
http://lib.csdn.net/article/deeplearning/45510
https://yq.aliyun.com/ziliao/282827?spm=a2c4e.11155472.blogcont.23.572b43f7vr81fe
https://wugh.github.io/posts/2016/03/cs224d-notes4-recurrent-neural-networks-continue/

猜你喜欢

转载自blog.csdn.net/u011523796/article/details/83627454
今日推荐