代价函数 交叉熵

来源:互联网 发布:蓝光 刻录 数据 编辑:程序博客网 时间:2024/06/08 06:05

1.简介

交叉熵, Cross Entropy.
一般用作 二分类/多分类 的代价函数, 而不用于回归问题.

2.公式

对于离散变量X的两个概率分布pq, 它们的交叉熵定义为:

3.二分类应用

3.1 输出层为一个节点

符号约定:
n : 样本个数.
y : 观测值.
y^ : 预测值.
针对一个batch, 损失函数就是:

C=1ni=1n[yilny^i+(1yi)ln(1y^i)],(2)

基本单元就是:

[ylny^+(1y)ln(1y^)](3)

式(2) 看上去并不直观, 那我们来分析一下分类问题中, 它作为损失函数的合理之处:
假设为二分类, y{0,1}, y^[0,1], y^ 由 logistic 或 softmax得到.
1. 考虑到对数值为负且系数为负, 所以总的值为正且最小值为0
2. 当 y^y=0 or y^y=1 , 损失函数 C0.


图2-1 神经网络

对图2-1 中的网络, 反向传播时求偏导,

Cwj=1nxxj(σ(z)y).(3)

式(3) 中可以看到, 权重的学习速率可以被 σ(z)−y 控制,也就是被输出结果的误差所控制。误差越大我们的神经元学习速率越大。这正是我们直觉上所期待的那样.

3.2 输出层为两个节点

同多分类应用.

4. 多分类应用

神经网络中, 多分类(类别数为n)问题的输出层就是n个节点, 激活函数一般选 softmax. target是one-hot形式, 所以使用交叉熵作损失函数, 跟二分类没什么差别, 针对一个样本, 损失函数为:

J=i=1n(yilny^i)(2.1)

只有一个yi=1.

5. 对比均方误差函数

均方误差函数, 英文中有个更通用的叫法: quadratic loss function, 即 二次损失函数.

CwCb==(ay)σ(z)x=aσ(z)(ay)σ(z)=aσ(z),(4)(5)

当神经元输出接近 1 时,曲线变得非常平坦,因此 σ′(z) 就会变得非常小, 导致尽管误差很大但学习速度很小, 不具有交叉熵函数的优点.

6.实验

实验摘自 参考文献[1] 中的web页面可视化训练控件.
这些图片应该这么看:
(1) 与 (2): 初始权重与偏置分别为0.6与0.9, 经过训练得到误差变化曲线
(3) 与 (4): 初始权重与偏置分别为2.0与02.0, 经过训练得到误差变化曲线

这里写图片描述
图 3-1 均方误差函数的表现

这里写图片描述
图 3-2 交叉熵函数的表现

对比图3-1-(4) 与 3-2-(4) , 可以看到交叉熵函数的下降速率优于均方差.

参考

  1. The cross-entropy cost function
  2. 交叉熵代价函数
原创粉丝点击