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

  • 相关阅读:
    s3c2440裸机-内存控制器(三-3、norflash编程之uboot中操作norflash)
    s3c2440裸机-内存控制器(三-2、norflash编程之适配访问时序)
    s3c2440裸机-异常中断(五. irq之定时器中断)
    s3c2440裸机-异常中断(四. irq之外部中断)
    s3c2440裸机-异常中断(三. swi软中断)
    s3c2440裸机-异常中断(二. und未定义指令异常)
    s3c2440裸机-异常中断(一. 异常、中断的原理与流程)
    s3c2440裸机-代码重定位、清bss的优化和位置无关码
    buildroot教程
    软件项目的目录结构
  • 原文地址:https://www.cnblogs.com/haifengbolgs/p/9374395.html
Copyright © 2011-2022 走看看