反向传播算法

反向传播算法

  • 前向传播
    • 仿射变换+激活函数
    • 最终产生一个标量损失函数

多层感知机的误差

给定(m)样本的集合({ (x^{(1)}, y^{(1)}), cdots, (x^{(m)}, y^{(m)})})

平方误差损失函数

[J(W,b) = left[ dfrac{1}{m} sum limits_{i=1}^m J(W,b; x^{(i)}, y^{(i)}) ight] + dfrac{lambda}{2}||W||^2_2 \ = left[ dfrac{1}{m} sum limits_{i=1}^m dfrac{1}{2}||y^{(i)}-L_{w,b}(x^{(i)})||^2 ight] + dfrac{lambda}{2}||W||^2_2 ]

交叉熵损失函数

  • 二分类

    [J(W,b)=-left[ dfrac{1}{m} sum limits_{i=1}^m { y^{(i)}ln o^{(i)} + (1-y^{(i)})ln (1-o^{(i)}) } ight] + dfrac{lambda}{2}||W||^2_2 ]

    第一项衡量了预测(o^{(i)})与真实类别(y^{(i)})之间的交叉熵

    当两者相等时,熵最大,损失函数达到最小

  • 多分类

    [J(W,b)=-left[ dfrac{1}{m} sum limits_{i=1}^m sum limits_{k=1}^n { y_k^{(i)}ln o_k^{(i)} } ight] + dfrac{lambda}{2}||W||^2_2 ]

    其中(o^{(i)}_k)表示第(i)个样本属于类别(k)的概率

    (y_k^{(i)})为实际概率。如果第(i)个样本的真实类别为(k),则(y_k^{(i)}=1),否则为0

  • 交叉熵 = 相对熵 + 信息熵,信息熵是固定的,减小交叉熵意味着减小相对熵,使预测概率分布逼近真实概率分布

各层参数更新的梯度计算公式

平方损失和交叉熵损失适合场景

  • 平方损失函数场景
    • 输出为连续
    • 最后一层不含Sigmoid或Softmax激活函数的神经网络
      • 当激活函数为Sigmoid时,如果函数梯度趋于饱和,导致学习速率非常慢((delta)很小)
  • 交叉熵函数场景
    • 二分类或者多分类场景
    • 相对于输出层的导数是线性的,不会出现学习速度过慢的问题
原文地址:https://www.cnblogs.com/weilonghu/p/11922758.html