初识机器学习——吴恩达《Machine Learning》学习笔记(九)

神经网络参数的反向传播算法

  反向传播(英语:Backpropagation,缩写为BP)是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。反向传播要求有对每个输入值想得到的已知输出,来计算损失函数梯度。因此,它通常被认为是一种监督式学习方法,虽然它也用在一些无监督网络(如自动编码器)中。它是多层前馈网络的Delta规则的推广,可以用链式法则对每层迭代计算梯度。反向传播要求人工神经元(或“节点”)的激励函数可微。                                                                                                                                                                                                                                                  ------来自维基百科

代价函数(Cost function)

神经网络用于分类

 

Cost Function

反向传播算法(Backpropagation algorithm)

梯度计算:计算第l层第j个单元的误差

偏导数的计算过程,bp算法

理解反向传播(Backpropagation intuition)

使用注意:展开参数(Implementation note:Unrolling parameters)

高级算法选择

 

例子,thetaVec=[Theta1(:);Theta2(:);Theta3(:)];把三个Theta矩阵变成一个向量。例如,Theta1为10*11矩阵。
变回,Theta1=reshape(thetaVec(1:110),10,11)。展开参数:将矩阵转化成向量,便于训练。双侧差分

学习算法

梯度检测(Gradient checking)

反向传播算法很容易产生微妙的bug。所以用梯度检测来保证反向传播算法的正确性。

梯度数值估计

 

参数向量

Octave实现,几位小数的差距0.0001

注意,一旦通过检测后,需关掉梯度检测,不然,会导致程序运行得很慢!

 随机初始化(Random initialization)

如果一开始θ都为零,那么迭代后,每层所有节点单元都会相等。这就是为什么要随机初始化。

 

组合到一起(Putting it together)

训练一个神经网络的步骤:

1、构建一个神经网络,随机初始化权重。

2、执行前向传播算法

3、通过代码计算代价函数

4、执行反向传播算法,求出偏导数项

 

5、梯度检测

6、选择高级优化算法

posted @ 2018-07-27 20:50  Ta来自江湖  阅读(281)  评论(0编辑  收藏  举报