1 概念辨析
损失函数
是定义在单个样本上的,计算一个样本预测值与真实值之间的误差;
代价函数
是定义在整个训练集上的,是所有损失函数的平均值。
目标函数
最终需要优化的函数。
经验风险(cost function)+ 结构风险(正则化)。
2 0-1损失函数
主要用于感知机。
不可导,有时不存在唯一解。
3 平方损失函数
预测值与真实值差的平方。
优点:导数连续。
缺点:容易受异常点的影响,因为误差大的时候平方根达,不利于参数的更新。。
4 绝对值损失函数
预测值与真实值差的绝对值。
又名L1 loss;
优点:不受异常值的影响;
不足:对于loss比较小的,希望下降速度小,但是MAE的梯度始终为1,也就说明无论loss大还是loss小,前中更新的补偿是相同的。这有可能会在最优值处震荡。
5 Huber损失函数
结合MSE和MAE的最佳特性,对于较小的误差,是二次的,这样更新少。对于较大的误差,就是线性的,更新大。
6 二元交叉熵
概率分布的熵越小,说明分布越确定,也因此可以作为损失函数。
为了求得概率,可以用sigmoid函数,输出在[0,1]之间,作为概率。
p指输入x经过sigmoid后输出的值。
7 Hinge损失函数
主要用于标签为1和-1的SVM。
不仅惩罚错误的预测,还要惩罚不自信的预测。
当只想要做实时决策而不高度关注准确性的时候,可以使用。
8 多分类交叉熵损失函数
预测值经过softmax后作为概率,乘以one-hot编码后的标签。
交叉熵是信息论领域的一种度量方法,它建立在熵的基础上,通常计算两种概率分布之间的差异。
交叉熵损失函数经常用于分类问题中,特别是神经网络分类问题。交叉熵是用来描述两个分布的距离的,神经网络训练的目的就是使 g(x) 逼近 p(x)。
交叉熵的优势
相对于sigmoid求损失函数,在梯度计算层面上,交叉熵对参数的偏导不含对sigmoid函数的求导,而均方误差(MSE)等其他则含有sigmoid函数的偏导项。Sigmoid的值很小或者很大时梯度几乎为零,这会使得梯度下降算法无法取得有效进展,交叉熵则避免了这一问题。
为什么使用softmax求概率?
为了弥补 sigmoid 型函数的导数形式易发生饱和(saturate,梯度更新的较慢)的缺陷,可以引入Softmax作为预测结果,计算交叉熵损失。
由于交叉熵涉及到计算每个类别的概率,所以在神经网络中,交叉熵与softmax函数紧密相关。
真实标签中只有一项是1,其余皆为0,因此softmax求导进行反向更新的梯度始终等于yi-1.
yi指softmax所求的值。