损失函数大总结
1.定义
损失函数指的是用来估算模型的预测值和真实值之间的不一致的程度,损失函数越小代表着模型的鲁棒性更好,损失函数一般分为分类问题和回归问题。
2.分类问题的损失函数:
2.1 0-1损失:
当标签和预测值相同时为1,否则为0,可以看出该损失函数无法对x进行求导,使其深度学习这种依赖反向传播的深度学习模型难以进行优化。
2.2 交叉熵损失函数:
定义:
交叉熵是信息论中的一个重要概念,主要用于度量两个概率分布间的差异性。
交叉熵的公式为
其中 -log(q)为一个单调递减函数,p指的是真实值,此值为0或者是1。只有当标签为1时,此标签才会对损失函数起到作用,同时又因为该函数为单调递减的函数,所以当该目标为真实值时,同时预测的概率较大时,该损失函数值较小,否则较大,正好符合损失函数进行优化的特点。
需要注意的是,该函数中包含的是概率值,所以该函数常常和softmax和logistic函数一起进行使用。
交叉熵函数的求导后的求导结果很漂亮。
平方差公式则不同,求导后的结果还包含**函数的导数值。
2.3 focal loss
https://zhuanlan.zhihu.com/p/80594704
2.4GHM loss
https://zhuanlan.zhihu.com/p/80594704
3.回归的损失函数
3.1 L1损失函数:MAE = |y-f(x)|
缺点:1.导数值为定值,当损失函数值已经很小时,倒数值仍为1,会发生震荡
2. 在0点处不可导。
3.2 L2损失函数:MSE = (y-f(x))2
缺点:1.当刚刚开始进行训练时,由于损失函数较大,所以该损失函数很大,使得训练过程
3.3 smooth l1
优点:克服了l1和l2的所有缺点
1.在0点出采用平方,使得在该点处可以进行求导;
2. 在训练的后期,真实值与预测值相差较小,此时采用平方函数,此时损失函数也变小,不会发生震荡现象;
3.在训练开始阶段,由于真实值与预测值相差较大,而此时的损失函数倒数值为1也不会发生震荡现象。