Paddle框架下常用的损失函数总结

  • Post author:
  • Post category:其他


概述:


Loss是深度学习算法中重要的一部分,它的主要功能是评价网络预测的准确性和指导权重更新。合适的Loss可以让网络收敛更快,预测更准。这个示例,主要介绍了损失函数的基本概念以及7种常用的损失函数的形式、性质、参数、区别及使用场景,并给出了paddle的实现。

主要内容包括:

  • L1(mean absolute error)平均绝对误差
  • L2(mean square error)均方误差
  • Huber Loss
  • LogCosh Loss
  • Cross Entropy(Log Loss)
  • Focal Loss
  • Hinge Loss

概念:

在深度学习算法中,需要使用一个函数来量化模型给出的预测和训练数据中的真实值之间的差异,我们把这个函数叫做Loss.形式化的,可以将Loss定义为网络预测值p和实际值y的函数L(p,y).

Loss的性质:

Loss需要满足一些性质,首先就是预测值接近真实值时Loss应该小,反之Loss应该大。其次,深度学习使用的梯度下降优化方法需要让模型权重沿着Loss导数的反向更新,所以这个函数是可导的,而且不能导数处处为0(这样权重动不了)。此外,比如MSE(均方误差)的梯度正比于Loss值,因此用MSE做训练收敛速度比一般MAE(绝对值误差)快。

Loss的分类和选择:

不同的深度学习任务输出形式不同,Loss因此也有很多种不同的选择,大致可以分为两类:回归Loss和分类Loss.回归预测的结果是连续的(比如房价),而分类预测的结果是离散的(比如手写数字识别输出是几)。在为深度学习任务选择Loss时首先要考虑的就是这个任务属于回归还是分类,虽然一些分类任务也能使用回归的Loss作为训练,但通常效果不好。确定了任务类别之后在一类Loss中选择具体的一个或几个需要结合任务中的数据和目标。

符号:

  • x:训练数据集中的一个输入
  • y:训练数据集中的一个输出
  • p:网络针对一个输入给出的预测值
  • M:分类问题中的类别数量
  • N:输入loss的数据条数,可以理解为Batch Size
  • i:第i条数据
  • j:第j个输出



回归Loss:


Mean Absolute Error(L1 Loss)平均绝对误差和Mean Squa



版权声明:本文为weixin_43468161原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。