从二次损失函数开始
回想线性回归的损失函数,使用的是二次损失函数quadratic loss function。
损失函数(cost function):
对应的梯度下降公式(Gradient Descent):
()
那么问题来了,为什么我们在逻辑回归中却使用这样的损失函数(log)【本文中Log都是指ln即以e为底的指数函数】
原因:我们在逻辑回归中使用了的函数
sigmoid的函数及导数特性
上图:sigmoid函数图像,下图:其导数的图像
从上图可以看出sigmoid在区间上函数基本趋于水平,也就是在这个区间它的导数趋近于0。。
如果逻辑回归代价函数还是采用二次损失函数会怎样?
进一步可以计算出的偏导数:
使用二次损失函数的逻辑回归将‘学习缓慢’
那么如果偏差较大的情况(>5 or <-5)在梯度下降的过程中,偏导数几乎为零。难以下降。
上图(4)部分的学习曲线可以看出来,使用二次损失函数的逻辑回归在前150个epoch左右的训练中Cost基本没有下降,出现‘‘学习缓慢’’的现象,后期偏差缩小后又快速下降。
引入交叉熵cross-entropy
先看看它的关于权重的偏导数:
直观上可以看到 不见了,梯度下降的速度受的影响,误差越大,梯度下降的越快。
再看看这样形式的代价函数具备的优点:
- 它是非负的(这样才能不断下降)
- 当实际输出接近目标值,那么交叉熵接近0,反之,接近1。
- 刚刚求导得出得结论:误差越大,学习速度也越快
交叉熵有以上三个优点,使其成为逻辑回归的代价函数。
交叉熵的定义
查查都能找到的定义:交叉熵,源至信息论,是“不确定性”的一种度量。如果输出我们期望的结果,不确定性小一些,反之,不确定性大一些。
逻辑回归是怎么勾搭上交叉熵的?
如果我们希望代价函数的偏导是(这个公式具备很好的特性)那么有:
对a进行积分可以得到:
constant是积分常量。至此反向推出了逻辑回归的交叉熵cost函数。这个交叉熵不是凭空产生的,而是推导出来的。
民谣与辟谣
民谣部分:
Square Loss那就是个最小二乘法
Hinge Loss那是帮你找最大间距(SVM)
exp Loss那就是很牛逼的boosting算法
log Loss那就是逻辑回归
辟谣
“奥卡姆剃刀原则”是经验主义,不是科学结论。即你不能拿着“奥卡姆剃刀原则”来证明你的公式是正确的。证明还是得拿数据说话,拿推导过程说话。
参考:【《Neural Networks and Deep Learning》By Michael Nielsen】