反向传播算法
- 前向传播
- 仿射变换+激活函数
- 最终产生一个标量损失函数
多层感知机的误差
给定(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)很小)
- 交叉熵函数场景
- 二分类或者多分类场景
- 相对于输出层的导数是线性的,不会出现学习速度过慢的问题