神经网络中的常用算法-BP算法

目录

一、概述

 二、前向传播算法

 三、链式法则

四、BP算法

1、损失函数

2、输出层的梯度

 3、隐藏层梯度

 五、BP算法流程

1、输入参数

2、算法流程


一、概述

        反向传播(back propagation, BP)算法是 "误差反向传播" 的简称,也称为backprop,允许来自代价函数的信息通过网络向后流动,以便计算梯度。

        反向传播是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。

        反向传播这个术语经常被误解为用于多层神经网络的整个学习算法。实际上,反向传播仅指用于计算梯度的方法。而另一种算法,例如随机梯度下降法,才是使用该梯度来进行学习。另外,反向传播还经常被误解为仅适用于多层神经网络,但是原则上它可以计算任何函数的到导数(对于一些函数,正确的响应是报告函数的导数是未定义的)。

           一般分为3种层次,有输入层(input layer),隐藏层(hidden layer),输出层(output layer)。其中输入层,输出层一般只有1层,而隐藏层取决于具体实例的学习进程,可以设置多层次。

神经网络中的常用算法-BP算法_第1张图片

 二、前向传播算法

        所谓的前向传播算法就是:将上一层的输出作为下一层的输入,并计算下一层的输出,一直到运算到输出层为止。

神经网络中的常用算法-BP算法_第2张图片

其中\sigma为激活函数。

 三、链式法则

        微积分中的链式法则用于计复合函数的导数。反向传播是一种计算链式法则的算法。Z=f(g(x)),y=g(x),dz/dx=dz/dy *dy/dx。需要深入理解这个链式法则,反向传播算法则是这个链式法则的运用。BP网络中的各层就如同函数对输入进行不断变换z=fn(fn-1(fn-2(...f1(x))))。

四、BP算法

1、损失函数

        在进行反向传播算法前,我们需要选择一个损失函数,来度量训练样本计算出的输出和真实的训练样本输出之间的损失。我们使用最常见的均方误差(MSE)来作为损失函数,

C(W,b)=\frac{1}{2}(a^{(l)}-y)^2

        其中 a(l) 为训练样本计算出的输出,y为训练样本的真实值。加入系数 1/2 是为了抵消微分出来的指数。

2、输出层的梯度

神经网络中的常用算法-BP算法_第3张图片

神经网络中的常用算法-BP算法_第4张图片

 3、隐藏层梯度

神经网络中的常用算法-BP算法_第5张图片

神经网络中的常用算法-BP算法_第6张图片

神经网络中的常用算法-BP算法_第7张图片

神经网络中的常用算法-BP算法_第8张图片

 五、BP算法流程

1、输入参数

        总层数L,以及各隐藏层与输出层的神经元个数,激活函数,损失函数,迭代步长 α ,最大迭代次数MAX与停止迭代阈值 ϵ ,输入的m个训练样本 ((x1,y1),(x2,y2),...(xm,ym))

2、算法流程

(1)、初始化参数W,b

(2)、进行前向传播算法计算,for l=2 to L

神经网络中的常用算法-BP算法_第9张图片

 (3)、通过损失函数计算输出层的梯度,for l=L to L,这里只循环一次

神经网络中的常用算法-BP算法_第10张图片

神经网络中的常用算法-BP算法_第11张图片

(4)、计算其它各层梯度

        进行反向传播算法计算其它各层梯度,for l=L−1 to 2

神经网络中的常用算法-BP算法_第12张图片

神经网络中的常用算法-BP算法_第13张图片

(5)、更新各层的W,b

        通过梯度下降算法更新权重w和偏置b的值,α为学习率其中α∈(0,1]。

神经网络中的常用算法-BP算法_第14张图片

(6)、如果各层所有W,b的变化值都小于停止迭代阈值ϵ,则跳出迭代循环

(7)、 输出各层的线性关系系数矩阵W和偏置b

你可能感兴趣的:(神经网络中的算法,算法,神经网络)