pytorch的损失函数理解

对于loss的定义和选择,是决定一个模型能否收敛甚至是针对特定问题是否能够进行灵活应用的基石,因而对于loss的理解和把握是炼丹师的基本数学修养。从pytorch的loss的使用来看,是对于loss的理解的一个很好的入口。

https://blog.csdn.net/jacke121/article/details/82812218

 

对于Loss的理解应该是无止境的,有如下的一些比较高阶的理解:

L1 loss,L2 loss 和 smoothL1loss

对于L1 loss,L2 loss 和 smoothL1loss的理解比较好的是如下一篇文章:

https://blog.csdn.net/ytusdc/article/details/86659696

pytorch的损失函数理解_第1张图片

 

NLLLoss和CrossEntropyLoss之间的差别

简单讲: crossentropyloss = softmax - log- Nlloss.

https://blog.csdn.net/qq_22210253/article/details/85229988

 

MAE 和MSE 的区别

MAE:mean absolute error; MSE: mean square error.

pytorch的损失函数理解_第2张图片 ; pytorch的损失函数理解_第3张图片

pytorch的损失函数理解_第4张图片

Smooth L1 loss 的进阶: Huber Loss

pytorch的损失函数理解_第5张图片

pytorch的损失函数理解_第6张图片

Huber损失函数克服了MAE和MSE的缺点,不仅可以保持损失函数具有连续的导数,同时可以利用MSE梯度随误差减小的特性来得到更精确的最小值,也对局外点具有更好的鲁棒性。

 

一些重要的loss

1. Dice loss

                                

2. Focal Loss

focal loss主要用于解决多分类任务中样本不平衡的现象,可以获得比softmax_cross_entropy更好的分类效果。

在Focal Loss中,它更关心难分类样本,不太关心易分类样本,

对于正类样本来说,如果预测结果为0.97那么肯定是易分类的样本,所以(1-0.97)^{\gamma }就会很小。

对于正类样本来说,如果预测结果为0.3的肯定是难分类的样本,所以(1-0.3)^{\gamma }就会很大;

对于负类样本来说,如果预测结果为0.8那么肯定是难分类的样本,0.8^{\gamma }就会很大;

对于负类样本来说,如果预测结果为0.1那么肯定是易分类的样本,0.1^{\gamma }就会很小。

 

3. Center Loss

中心损失主要主要用于减少类内距离,虽然只是减少了累内距离,效果上却可以表现出累内距离小了,类间距离就可以增大的效果。该损失不可以直接使用,需要配合传统的softmax loss一起使用。可以起到比单纯softmax loss更好的分类效果。

pytorch的损失函数理解_第7张图片

----------------------------------------------------------------------------------------------------------

----- Some new loss setup------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------

1. Housdroff Distance Loss

简单讲,就是两组点集之间的最小距离的平均值,用来衡量两组点集之间的间距。

pytorch的损失函数理解_第8张图片

to be continue....

P.s: 部分资料参考:

https://blog.csdn.net/qq_14845119/article/details/80787753

你可能感兴趣的:(#,深度学习)