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

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

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

代价函数(Cost function)

神经网络用于分类网络

 

Cost Functiondom

反向传播算法(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)。展开参数:将矩阵转化成向量,便于训练。双侧差分ui

学习算法编码

梯度检测(Gradient checking)

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

梯度数值估计3d

 

参数向量

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

注意,一旦经过检测后,需关掉梯度检测,否则,会致使程序运行得很慢!

 随机初始化(Random initialization)

若是一开始θ都为零,那么迭代后,每层全部节点单元都会相等。这就是为何要随机初始化。

 

组合到一块儿(Putting it together)

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

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

二、执行前向传播算法

三、经过代码计算代价函数

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

 

五、梯度检测

六、选择高级优化算法

相关文章
相关标签/搜索