【weekly-sharing】反向传播算法在神经网络的应用

来源:互联网 发布:微信下单系统源码 编辑:程序博客网 时间:2024/05/22 15:01

反向传播算法在神经网络的应用

当通过神经网络输入x,得到输出y^时,这些信息通过神经网络向前流动,这称之为前向传播(forward propagation)。

在网络得到输出时会得到一个代价函数,允许来自代价函数的信息通过网络向后流动,来计算梯度的过程叫反向传播(back propagation)

反向传播算法主要用于计算梯度

基础

  1. 导数
    描述函数变化率

  2. 方向导数
    某个方向上的导数

  3. 梯度
    梯度的方向是方向导数中取最大值的方向,值是方向导数的最大值。如在二维中,梯度计算:

    θ=(θx,θx)

    对矩阵的梯度计算如下图:
    这里写图片描述

  4. 代价函数(损失函数)
    代价函数(cost function)即损失函数(loss function)。如在机器学习中,真实值为y,而预测值为y^。代价函数就是来度量预测错误的程度。常写作CL

  5. 链式法则
    链式法则(chain rule) 求复合函数导数的一个法则,如:

    (f(g(x)))=f(g(x))g(x)

    dydx=dydzdzdx

    • 假设xRm,yRng是从RmRn的映射,f是从RnR的映射。如果y=g(x)z=f(y),那么有如下:
      zxi=jzyjyixi
  6. 计算图
    计算图(computational graph)。将计算形式化为图形,形式有很多如下图:
    这里写图片描述

描述

最终目标

通过调节神经网络中的参数,使得代价函数达到最小。

方法

使用梯度下降法来获取参数的最优解,梯度下降法迭代表达如下:

θ:=θ+αθC(θ)

θ为所求参数,α为步长,C为代价函数。

问题

  • 需要一个θ的初始值

  • 需要求出改点的梯度

求梯度

在神经网络中,反向传播的四个方程:

δL=aCσ(zL)

δl=((wl+1)Tδl+1)σ(zl)

Cblj=δlj

Cwljk=al1kδlj

梯度的计算看如下图中推导:

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述
通过反向传播算法计算偏导数CwjklCblj

引入误差δlj,反向传播将计算误差,再关联到CwjklCblj

参考

  • 《Deep Learning》 by Ian Goodfellow, Yoshua Bengio, Aaron Courville
  • 《Neural Networks and Deep Learning》