• 初识机器学习——吴恩达《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、选择高级优化算法

  • 相关阅读:
    zoj 3593 One Person Game
    poj 2115 C Looooops
    hdu 1576 A/B
    hdu 2669 Romantic
    poj1006 Biorhythms
    中国剩余定理(孙子定理)
    Pseudoprime numbers---费马小定理
    青蛙的约会----POJ1061
    [POJ2942]:Knights of the Round Table(塔尖+二分图染色法)
    [BZOJ1718]:[Usaco2006 Jan] Redundant Paths 分离的路径(塔尖)
  • 原文地址:https://www.cnblogs.com/haifengbolgs/p/9374395.html
Copyright © 2020-2023  润新知