• 反向传播算法


    反向传播算法

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

    多层感知机的误差

    给定(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)很小)
    • 交叉熵函数场景
      • 二分类或者多分类场景
      • 相对于输出层的导数是线性的,不会出现学习速度过慢的问题
  • 相关阅读:
    union
    大端和小端
    迭代器
    STL
    动态内存管理2
    动态内存管理
    关于 FlexBox
    CSS的居中问题
    操作符
    JavaScript介绍
  • 原文地址:https://www.cnblogs.com/weilonghu/p/11922758.html
Copyright © 2020-2023  润新知