首页 > 编程语言 > 详细

反向传播算法

时间:2019-11-24 17:18:16      阅读:75      评论:0      收藏:0      [点我收藏+]

反向传播算法

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

多层感知机的误差

给定\(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)}) \right] + \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 \right] + \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)}) \} \right] + \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)} \} \right] + \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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!