精华内容
下载资源
问答
  • 常见损失函数 & 损失函数选择方法

    千次阅读 2019-09-24 17:12:13
    文章目录0. 定义1. 均方误差2. 交叉熵误差3....如上介绍,神经网络损失函数(loss function)也叫目标函数(objective function)的作用:衡量神经网络的输出与预期值之间的距离,以便控制、调节参...

    神经网络的学习通过某个指标表示现在的状态,然后以这个指标为基准,寻找最优权重参数,这个指标就是损失函数(loss function)。

    如上介绍,神经网络损失函数(loss function)也叫目标函数(objective function)的作用:衡量神经网络的输出与预期值之间的距离,以便控制、调节参数。这个损失函数可以使用任意函数,但一般使用均方误差交叉熵误差

    0. 定义

    后续公式中需要使用到的定义:

    • y k y_k yk 表示神经网络的输出,即 output
    • t k t_k tk 表示监督数据,也就是label
    • k k k 表示数据的维数

    1. 均方误差

    • 均方误差公式:
      E = 1 2 ∑ k ( y k − t k ) 2 E=\frac{1}{2} \sum_{k}\left(y_{k}-t_{k}\right)^{2} E=21k(yktk)2

    • 代码实现:

      import numpy as np
      def mean_squared_error(y, t):
          return 0.5 * np.sum((y-t) ** 2)
      
    • 举例
      MNIST手写数字识别程序中中,一张图片的label为2,进行one-hot编码后,可以获得t,其中t = [0, 0, 1, 0, 0, 0, 0, 0, 0, 0],假设该图像经过cnn的输出为y:y = [0.1, 0.05, 0.6, 0.0, 0.05, 0.1, 0.0, 0.1, 0.0, 0.0]

      使用mean_squared_error(np.array(y), np.array(t)),经过计算,可以获得:loss = 0.09750000000000003。

    2. 交叉熵误差

    • 公式
      E = − ∑ k t k log ⁡ y k E=-\sum_{k} t_{k} \log y_{k} E=ktklogyk
      其中log表示以e为底数的自然对数( l o g e log_e loge, 即 l n ln ln), l n x ln x lnx函数图像为:
      在这里插入图片描述
      • 通过上图可以看出来:当x介于0 ~ 1时,对应的函数值为负数。在神经网络中,输出值 y k y_k yk介于 0 ~ 1之间,所以公式中有一个负号,使得loss为正。
    def cross_entropy_error(y, t):
        delta = 1e-7 
        return -np.sum(t * np.log(y + delta))
    

    上面实现代码,加上了一个微小的delta,是因为当出现np.log(0)时,np.log(0)会变为负无穷大,添加一个微小值可以防止负无穷大的发生。

    使用「均方误差」中的y、t作为参数,调用 cross_entropy_error(np.array(y), np.array(t)),获得结果 0.510825457099338。

    3. mini-batch中的损失函数

    为了提高训练效率一般都会在每次迭代中使用小批量进行训练,因此计算损失函数时必须将所有的训练数据作为对象。即,如果训练数据有100个,我们就需要将这100个损失函数的总和作为学习的指标

    计算公式为: E = − 1 N ∑ n ∑ k t n k log ⁡ y n k E=-\frac{1}{N} \sum_{n} \sum_{k} t_{n k} \log y_{n k} E=N1nktnklogynk,也就是把每一个输出loss进行加总求和。

    4. 损失函数选择方法

    Python深度学习-u3.1:神经网络入门-理论 已经介绍了常见问题中损失函数的选择方法,现摘录如下:

    • 对于二分类问题,可以使用二元交叉熵(binary crossentropy)损失函数;
    • 对于多分类问题,可以用分类交叉熵(categorical crossentropy)损失函数;
    • 对于回归问题, 可以用均方误差(mean-squared error)损失函数;
    • 对于序列学习问题,可以用联结主义时序分类(CTC,connectionist temporal classification)损失函数,等等。
    • eg:imdb电影评论二分类问题
      面对的是一个二分类问题, 网络输出是一个概率值(网络最后一层使用 sigmoid 激活函数, 仅包含一个单元),那么最好使用 binary_ crossentropy(二元交叉熵)损失。 这并不是唯一可行的选择, 比如你还可以使用 mean_ squared_error(均方误差)。但对于输出概率值的模型,交叉熵(crossentropy)往往是最好的选择。
    • 对于分类、回归、序列预测等常见问题,你可以遵循一些简单的指导原则来选择正确的损失函数。参考方案如下:
      在这里插入图片描述
      注:
      • 具有多个输出的神经网络可能具有多个损失函数(每个输出对应一个损失函数)。但是,梯度下降过程必须基于单个标量损失值。因此,对于具有多个损失函数的网络,需要将所有损失函数取平均,变为一个标量值
      • 只有在面对真正全新的研究问题时,你才需要自主开发目标函数。
    展开全文
  • 线性回归损失函数为什么要用平方形式 : 对于训练数据样本(xi,yi),我们有如下的拟合直线: yˆi=θ0+θ1∙xi 我们构建了一个损失函数: C=∑i=1n(yi−yˆi)2 表示每个训练数据点(xi,yi)到拟合直线yˆi=θ0+...

    线性回归损失函数为什么要用平方形式 :

    对于训练数据样本 (xi,yi) ,我们有如下的拟合直线:

    yˆi=θ0+θ1xi

    我们构建了一个损失函数:
    C=i=1n(yiyˆi)2

    表示每个训练数据点 (xi,yi) 到拟合直线 yˆi=θ0+θ1xi 的竖直距离的平方和,通过最小化这个损失函数来求得拟合直线的最佳参数 θ ,实际上就是求损失函数C在取得最小值情况下 θ 的值。那么损失函数为什么要用平方差形式呢,而不是绝对值形式,一次方,三次方,或四次方形式?

    简单的说,是因为使用平方形式的时候,使用的是“最小二乘法”的思想,这里的“二乘”指的是用平方来度量观测点与估计点的距离(远近),“最小”指的是参数值要保证各个观测点与估计点的距离的平方和达到最小。

    最小二乘法以估计值与观测值的平方和作为损失函数,在误差服从正态分布的前提下,与极大似然估计的思想在本质上是相同。对于极大似然估计,可以参考下前期文章《极大似然估计》。
    我们设观测输出与预估数据之间的误差为:

    εi=yiyˆi


    我们通常认为 ε 服从正态分布,即:
    f(εi;u,σ2)=1σ2πexp[(εiu)22σ2]


    我们求的参数 ε 的极大似然估计 (u,σ2) ,即是说,在某个 (u,σ2) 下,使得服从正态分布的 ε 取得现有样本 εi 的概率最大。那么根

    据极大似然估计函数的定义,令:
    L(u,σ2)=i=1n12πσexp((εiu)22σ2)


    取对数似然函数:
    logL(u,σ2)=n2logσ2n2log2πi=1n(εiu)22σ2



    分别求 (u,σ2) 的偏导数,然后置0,最后求得参数 (u,σ2) 的极大似然估计为:



    u=1ni=1nεi



    σ2=1ni=1n(εiu)2


    我们在线性回归中要求得最佳拟合直线 yˆi=θ0+θ1xi ,实质上是求预估值 yˆi 与观测值 yi 之间的误差 εi 最小(最好是没有误

    差)的情况下 θ 的值。而前面提到过, ε 是服从参数 (u,σ2) 的正态分布,那最好是均值 u 和方差 σ 趋近于0或越小越好。即:


    u=1ni=1nεi=1ni=1n(yiyˆi) 趋近于0或越小越好


    σ2=1ni=1n(εiu)2=1ni=1n(yiyˆiu)21ni=1n(yiyˆi)2 趋近于0或越小越好。


    而这与最前面构建的平方形式损失函数本质上是等价的。


    逻辑回归为什么使用对数损失函数

    逻辑回归模型是: 


    P(y=1|x;θ)=11+eθTx


    在模型的数学形式确定后,剩下的就是如何去求解模型中的参数 θ 。而在已知模型和一定样本的情况下,估计模型的参数,在统计学中常用的是极大似然估计方法。即找到一组参数 θ ,使得在这组参数下,样本数据的似然度(概率)最大。对于极大似然估计,可以参考下前期文章《极大似然估计》。

    对于逻辑回归模型,假定的概率分布是伯努利分布,根据伯努利分布的定义,其概率质量函数PMF为:



    P(X=n)={1pn=0pn=1

    所以,似然函数可以写成:

    L(θ)=i=1mP(y=1|xi)yiP(y=0|xi)1yi

    对数似然函数则为:


    lnL(θ)=i=1m[yilnP(y=1|xi)+(1yi)lnP(y=0|xi)]



    lnL(θ)=i=1m[yilnP(y=1|xi)+(1yi)ln(1P(y=1|xi))]


    而在机器学习领域,我们经常使用损失函数(loss function,或称为代价函数,cost function)来衡量模型预测的好坏。常用的有0-1损失,平方损失,绝对损失,对数损失等。其中对数损失在单个数据点上的定义为:


    cost(y,p(y|x))=ylnp(y|x)(1y)ln(1p(y|x))

    全体样本的损失函数则可表达为:


    cost(y,p(y|x))=i=1m[yilnp(yi|xi)+(1yi)ln(1p(yi|xi))]

    可以看到,这个对数损失函数与上面的极大似然估计的对数似然函数本质上是等价的。所以逻辑回归直接采用对数损失函数来求参数,实际上与采用极大似然估计来求参数是一致的。


    原博文地址:http://blog.csdn.net/saltriver/article/details/57544704

                            http://blog.csdn.net/saltriver/article/details/63683092




    展开全文
  • 损失函数是指用于计算标签值和预测值之间差异的函数,在机器学习过程中,有多种损失函数可供选择,典型的有距离向量,绝对值向量等。 损失Loss必须是标量,因为向量无法比较大小(向量本身需要通过范数等标量来比较...
  • 损失函数选择

    千次阅读 2018-05-22 11:08:46
    神经网络需要选择的有:1 网络结构模型 2 激活函数 3 损失函数学习训练设计到:1 优化,训练集训练参数 2 泛化,测试集优化参数-----------------------------------------------------------------------不同场景...

    神经网络需要选择的有:1 网络结构模型  2 激活函数  3 损失函数

    学习训练设计到:1 优化,训练集训练参数  2 泛化,测试集优化参数

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

    不同场景不同损失函数,需求不一样损失函数就不一样,例如分类一般使用交叉熵,回归一般使用均方根误差。各个场景一般都会有常用的损失函数,记住对号入座。损失函数是用来评价模型的预测值Y^=f(X)与真实值Y的不一致程度,它是一个非负实值函数。通常使用L(Y,f(x))来表示,损失函数越小,模型的性能就越好。

    常见的损失函数

    1.    0-1损失函数 (0-1 loss function)

    它是一种较为简单的损失函数,如果预测值与目标值不相等,那么为1,否则为0,

        (yi,yi^)={1,0,yiyi^yi=yi^

    2.    Perceptron Loss即为感知损失

    (yi,yi^)={1,0,|yiyi^|>t|yiyi^|tℓ(yi,yi^)={1,|yi−yi^|>t0,|yi−yi^|≤t
    其中 tt 是一个超参数阈值,如在PLA([Perceptron Learning Algorithm,感知机算法]

    3.     Hinge Loss Hinge损失

    用来解决间隔最大化问题,如在SVM中解决几何间隔最大化问题,其定义如下:

    ℓ(yi,yi^)=max{0,1−yi⋅yi^}

    yi

    4.    平方损失函数(quadratic loss function)常用于回归中    

         L(Y,f(X))=(Y−f(x))2

    5.    绝对值损失函数(absolute loss function)常用于回归中

        L(Y,f(x))=|Y−f(X)|
    6.    对数损失函数(logarithmic loss function) 或对数似然损失函数(log-likehood loss function)

        L(Y,P(Y|X))=−logP(Y|X)    

    逻辑回归中,采用的则是对数损失函数。如果损失函数越小,表示模型越好。

    7.    交叉熵(Cross Entropy)作为其损失函数

    即:ℓ(yi,yi^)=yi⋅logyi^+(1−yi)⋅log(1−yi^)





    参考:

    1 https://www.cnblogs.com/brainstorm/p/8819731.html

    2 https://blog.csdn.net/heyongluoyao8/article/details/52462400

    展开全文
  • 如何选择合适的损失函数

    千次阅读 2019-05-10 19:30:36
    【AI科技大本营导读】机器学习中的所有算法都依赖于最小化或最大化某一个函数,我们称之为“目标函数”。最小化的这组函数被称为“损失函数”。...损失函数选择取决于许多因素,包括是否有离群点,...

    【AI科技大本营导读】机器学习中的所有算法都依赖于最小化或最大化某一个函数,我们称之为“目标函数”。最小化的这组函数被称为“损失函数”。损失函数是衡量预测模型预测期望结果表现的指标。寻找函数最小值的最常用方法是“梯度下降”。把损失函数想象成起伏的山脉,梯度下降就像从山顶滑下,目的是到达山脉的最低点。

     

    没有一个损失函数可以适用于所有类型的数据。损失函数的选择取决于许多因素,包括是否有离群点,机器学习算法的选择,运行梯度下降的时间效率,是否易于找到函数的导数,以及预测结果的置信度。这个博客的目的是帮助你了解不同的损失函数。

     

    损失函数可以大致分为两类:分类损失(Classification Loss)和回归损失(Regression Loss)。下面这篇博文,就将重点介绍5种回归损失。

     

    

    回归函数预测实数值,分类函数预测标签

     

     

     

    回归损失

     

    1、均方误差,二次损失,L2损失(Mean Square Error, Quadratic Loss, L2 Loss)

     

    均方误差(MSE)是最常用的回归损失函数。MSE是目标变量与预测值之间距离平方之和。

    

    下面是一个MSE函数的图,其中真实目标值为100,预测值在-10,000至10,000之间。预测值(X轴)= 100时,MSE损失(Y轴)达到其最小值。损失范围为0至∞。

     

    

    MSE损失(Y轴)与预测值(X轴)关系图

     

    2、平均绝对误差,L1损失(Mean Absolute Error, L1 Loss)

     

    平均绝对误差(MAE)是另一种用于回归模型的损失函数。MAE是目标变量和预测变量之间差异绝对值之和。因此,它在一组预测中衡量误差的平均大小,而不考虑误差的方向。(如果我们也考虑方向,那将被称为平均偏差(Mean Bias Error, MBE),它是残差或误差之和)。损失范围也是0到∞。

    

    

    MAE损失(Y轴)与预测值(X轴)关系图

     

    3、MSE vs MAE (L2损失 vs L1损失)

     

    简而言之, 使用平方误差更容易求解,但使用绝对误差对离群点更加鲁棒。但是,知其然更要知其所以然!

     

    每当我们训练机器学习模型时,我们的目标就是找到最小化损失函数的点。当然,当预测值正好等于真实值时,这两个损失函数都达到最小值。

     

    下面让我们快速过一遍两个损失函数的Python代码。我们可以编写自己的函数或使用sklearn的内置度量函数:

     


    #true:真正的目标变量数组

    #pred:预测数组

     

    def mse(true, pred):

       return np.sum(((true – pred)**2))

       

    def mae(true, pred):

       return np.sum(np.abs(true – pred))

     

    #也可以在sklearn中使用

     

    from sklearn.metrics import mean_squared_error

    from sklearn.metrics import mean_absolute_error


     

     

    让我们来看看两个例子的MAE值和RMSE值(RMSE,Root Mean Square Error,均方根误差,它只是MSE的平方根,使其与MAE的数值范围相同)。在第一个例子中,预测值接近真实值,观测值之间误差的方差较小。第二个例子中,有一个异常观测值,误差很高。

     

    

    左:误差彼此接近  右:有一个误差和其他误差相差很远

     

    我们从中观察到什么?我们该如何选择使用哪种损失函数?

    

    由于MSE对误差(e)进行平方操作(y - y_predicted = e),如果e> 1,误差的值会增加很多。如果我们的数据中有一个离群点,e的值将会很高,将会远远大于|e|。这将使得和以MAE为损失的模型相比,以MSE为损失的模型会赋予更高的权重给离群点。在上面的第二个例子中,以RMSE为损失的模型将被调整以最小化这个离群数据点,但是却是以牺牲其他正常数据点的预测效果为代价,这最终会降低模型的整体性能。

     

    MAE损失适用于训练数据被离群点损坏的时候(即,在训练数据而非测试数据中,我们错误地获得了不切实际的过大正值或负值)。

     

    直观来说,我们可以像这样考虑:对所有的观测数据,如果我们只给一个预测结果来最小化MSE,那么该预测值应该是所有目标值的均值。但是如果我们试图最小化MAE,那么这个预测就是所有目标值的中位数。我们知道中位数对于离群点比平均值更鲁棒,这使得MAE比MSE更加鲁棒。

     

    使用MAE损失(特别是对于神经网络)的一个大问题是它的梯度始终是相同的,这意味着即使对于小的损失值,其梯度也是大的。这对模型的学习可不好。为了解决这个问题,我们可以使用随着接近最小值而减小的动态学习率。MSE在这种情况下的表现很好,即使采用固定的学习率也会收敛。MSE损失的梯度在损失值较高时会比较大,随着损失接近0时而下降,从而使其在训练结束时更加精确(参见下图)。

     

    

     

    决定使用哪种损失函数?

     

    如果离群点是会影响业务、而且是应该被检测到的异常值,那么我们应该使用MSE。另一方面,如果我们认为离群点仅仅代表数据损坏,那么我们应该选择MAE作为损失。

     

    我建议阅读下面这篇文章,其中有一项很好的研究,比较了在存在和不存在离群点的情况下使用L1损失和L2损失的回归模型的性能。请记住,L1和L2损失分别是MAE和MSE的另一个名称而已。

     

    地址:

    http://rishy.github.io/ml/2015/07/28/l1-vs-l2-loss/

     

    L1损失对异常值更加稳健,但其导数并不连续,因此求解效率很低。L2损失对异常值敏感,但给出了更稳定的闭式解(closed form solution)(通过将其导数设置为0)

     

    两种损失函数的问题:可能会出现这样的情况,即任何一种损失函数都不能给出理想的预测。例如,如果我们数据中90%的观测数据的真实目标值是150,其余10%的真实目标值在0-30之间。那么,一个以MAE为损失的模型可能对所有观测数据都预测为150,而忽略10%的离群情况,因为它会尝试去接近中值。同样地,以MSE为损失的模型会给出许多范围在0到30的预测,因为它被离群点弄糊涂了。这两种结果在许多业务中都是不可取的。

     

    在这种情况下怎么做?一个简单的解决办法是转换目标变量。另一种方法是尝试不同的损失函数。这是我们的第三个损失函数——Huber Loss——被提出的动机。

     

    3、Huber Loss,平滑的平均绝对误差

     

    Huber Loss对数据离群点的敏感度低于平方误差损失。它在0处也可导。基本上它是绝对误差,当误差很小时,误差是二次形式的。误差何时需要变成二次形式取决于一个超参数,(delta),该超参数可以进行微调。当  ? ~ 0时, Huber Loss接近MAE,当  ? ~ ∞(很大的数)时,Huber Loss接近MSE。

    

    

    Huber Loss(Y轴)与预测值(X轴)关系图。真值= 0

     

    delta的选择非常重要,因为它决定了你认为什么数据是离群点。大于delta的残差用L1最小化(对较大的离群点较不敏感),而小于delta的残差则可以“很合适地”用L2最小化。

     

    为什么使用Huber Loss?

     

    使用MAE训练神经网络的一个大问题是经常会遇到很大的梯度,使用梯度下降时可能导致训练结束时错过最小值。对于MSE,梯度会随着损失接近最小值而降低,从而使其更加精确。

     

    在这种情况下,Huber Loss可能会非常有用,因为它会使最小值附近弯曲,从而降低梯度。另外它比MSE对异常值更鲁棒。因此,它结合了MSE和MAE的优良特性。但是,Huber Loss的问题是我们可能需要迭代地训练超参数delta。

     

    4、Log-Cosh Loss

     

    Log-cosh是用于回归任务的另一种损失函数,它比L2更加平滑。Log-cosh是预测误差的双曲余弦的对数。

    

    

    Log-cosh Loss(Y轴)与预测值(X轴)关系图。真值= 0

     

    优点: log(cosh(x))对于小的x来说,其大约等于 (x ** 2) / 2,而对于大的x来说,其大约等于 abs(x) - log(2)。这意味着'logcosh'的作用大部分与均方误差一样,但不会受到偶尔出现的极端不正确预测的强烈影响。它具有Huber Loss的所有优点,和Huber Loss不同之处在于,其处处二次可导。

     

    为什么我们需要二阶导数?许多机器学习模型的实现(如XGBoost)使用牛顿方法来寻找最优解,这就是为什么需要二阶导数(Hessian)的原因。对于像XGBoost这样的机器学习框架,二阶可导函数更有利。

    

    XGBoost中使用的目标函数。注意其对一阶和二阶导数的依赖性。

     

    但Log-chsh Loss并不完美。它仍然存在梯度和Hessian问题,对于误差很大的预测,其梯度和hessian是恒定的。因此会导致XGBoost中没有分裂。

     

    Huber和Log-cosh损失函数的Python代码:


    def sm_mae(true, pred, delta):

       """

       true: array of true values    

       pred: array of predicted values

       

       returns: smoothed mean absolute error loss

       """

       loss = np.where(np.abs(true-pred) < delta , 0.5*((true-pred)**2), delta*np.abs(true - pred) - 0.5*(delta**2))

       return np.sum(loss)

     

    def logcosh(true, pred):

       loss = np.log(np.cosh(pred - true))

       return np.sum(loss)


     

     

    5、Quantile Loss(分位数损失)

     

    在大多数真实预测问题中,我们通常想了解我们预测的不确定性。了解预测值的范围而不仅仅是单一的预测点可以显着改善许多业务问题的决策过程。

     

    当我们有兴趣预测一个区间而不仅仅是预测一个点时,Quantile Loss函数就很有用。最小二乘回归的预测区间是基于这样一个假设:残差(y - y_hat)在独立变量的值之间具有不变的方差。我们不能相信线性回归模型,因为它违反了这一假设。当然,我们也不能仅仅认为这种情况一般使用非线性函数或基于树的模型就可以更好地建模,而简单地抛弃拟合线性回归模型作为基线的想法。这时,Quantile Loss就派上用场了。因为基于Quantile Loss的回归模型可以提供合理的预测区间,即使是对于具有非常数方差或非正态分布的残差亦是如此。

     

    让我们看一个有效的例子,以更好地理解为什么基于Quantile Loss的回归模型对异方差数据表现良好。

     

    Quantile 回归 vs 普通最小二乘(Ordinary Least Square, OLS)回归

     

    

     

    

     

    如上所示的Quantile回归代码在下面这个notebook中。

     

    地址:

    https://github.com/groverpr/Machine-Learning/blob/master/notebooks/09_Quantile_Regression.ipynb

     

    了解Quantile Loss函数

     

    基于Quantile回归的目的是,在给定预测变量的某些值时,估计因变量的条件“分位数”。Quantile Loss实际上只是MAE的扩展形式(当分位数是第50个百分位时,Quantile Loss退化为MAE)。

     

    Quantile Loss的思想是根据我们是打算给正误差还是负误差更多的值来选择分位数数值。损失函数根据所选quantile (γ)的值对高估和低估的预测值给予不同的惩罚值。举个例子,γ= 0.25的Quantile Loss函数给高估的预测值更多的惩罚,并试图使预测值略低于中位数。

     

    

    γ 是给定的分位数,其值介于0和1之间。

     

     

    Quantile Loss(Y轴)与预测值(X轴)关系图。真值为Y= 0

     

    我们也可以使用这个损失函数来计算神经网络或基于树的模型的预测区间。下图是sklearn实现的梯度提升树回归。

    

    使用Quantile Loss的预测区间(梯度提升回归)

     

    上图显示的是sklearn库的GradientBoostingRegression中的quantile loss函数计算的90%预测区间。上限的计算使用了γ = 0.95,下限则是使用了γ = 0.05。

     

     

    比较研究

     

    “Gradient boosting machines, a tutorial”中提供了一个很好的比较研究。为了演示上述所有的损失函数的性质,研究人员创造了一个人工数据集,数据集从sinc(x)函数中采样,其中加入了两种人造模拟噪声:高斯噪声分量和脉冲噪声分量。脉冲噪声项是用来展示结果的鲁棒效果的。以下是使用不同损失函数来拟合GBM(Gradient Boosting Machine, 梯度提升回归)的结果。

     

    

     

    连续损失函数:(A)MSE损失函数; (B)MAE损失函数; (C)Huber损失函数; (D)Quantile损失函数。用有噪声的sinc(x)数据来拟合平滑GBM的示例:(E)原始sinc(x)函数; (F)以MSE和MAE为损失拟合的平滑GBM; (G)以Huber Loss拟合的平滑GBM, = {4,2,1}; (H)以Quantile Loss拟合的平滑GBM。

     

    模拟实验中的一些观察结果:

     

    • 以MAE为损失的模型预测较少受到脉冲噪声的影响,而以MSE为损失的模型的预测由于脉冲噪声造成的数据偏离而略有偏差。

    • 以Huber Loss为损失函数的模型,其预测对所选的超参数不太敏感。

    • Quantile Loss对相应的置信水平给出了很好的估计。

     

    一张图画出所有损失函数

    

     

     

    原文链接:
    https://heartbeat.fritz.ai/5-regression-loss-functions-all-machine-learners-should-know-4fb140e9d4b0

    展开全文
  • 解决多标签多分类中损失函数选择及样本不均衡问题的2个帖子 https://cloud.tencent.com/developer/ask/226097 https://discuss.pytorch.org/t/multi-label-multi-class-class-imbalance/37573 主要弄明白 nn....
  • 当我们初学深度学习时,对于激活函数和损失函数选择并不了解,这里提出一些建议 问题类型 最后一层激活 损失函数 二分类问题 sigmoid binary_crossentropy 多分类、单标签问题 softmax categorical_...
  • 如何选择回归损失函数

    千次阅读 2018-09-07 10:21:13
    无论在机器学习还是深度领域中,损失函数都是一个非常重要的知识点。...损失函数有许多不同的类型,没有哪种损失函数适合所有的问题,需根据具体模型和问题进行选择。一般来说,损失函数大致可以分成两类:回归(...
  • 损失函数 回归 identity MES/ SQUARED_LOSS 分类 二分类 单标签输出 sigmoid XENT 二标签输出 softmax MCXENT/ NEGATIVELOGLIKELIHOOD 多分类 softmax...
  •   前言 在深度神经网络(DNN)反向传播算法(BP)中,我们对DNN的前向反向传播算法的使用做了总结。其中使用的损失函数是均方差,而激活函数...这些损失函数和激活函数如何选择呢?以下是本文的内容。   MSE损...
  • 损失函数

    千次阅读 2018-04-28 20:08:37
    损失函数介绍损失函数用于描述模型预测值与真实值的差距大小。一般有有两种常见的算法——均值平方差(MSE)和交叉熵。下面来分别介绍每个算法的具体内容。1 均值平方差均值平方差(Mean Squared Error,MSE),...
  • 二分类、多分类与多标签问题及对应损失函数选择 之前只是了解了一些图像分类的知识,知道它大概的意思,因为笔者的研究最终也可以叫做分类,所以今天有时间来一起整理下图像分类以及对应的损失函数。开始学习~????...
  • 1. 回归的损失函数:均方误差损失,平均平方对数误差损失,平均绝对误差损失; 2. 二值分类损失函数:二叉熵、Hinge损失、Squared Hinge损失; 3. 多类分类损失函数:多类交叉熵损失、稀疏多类交叉熵损失、Kullback ...
  • 深刻理解交叉熵损失函数

    千次阅读 2019-02-21 00:33:16
    说起交叉熵损失函数「Cross Entropy Loss」,脑海中立马浮现出它的公式: 我们已经对这个交叉熵函数非常熟悉,大多数情况下都是直接拿来使用就好。但是它是怎么来的?为什么它能表征真实样本标签和预测概率之间的...
  • 深度神经网络中损失函数选择

    千次阅读 2018-03-11 22:17:54
    损失函数是设计神经网络中很重要的一个关键因素,面对特定的问题,我们要设计不同的损失函数,比如我们参数kaggle比赛时,一般赛事举办者都会给出来一个损失函数损失函数是模型对数据拟合程度的反映,拟合的越差,...
  • 对网络的权值按某种分步进行初始化时,并不能保证其处于一个合适的状态,是损失函数陷入局部最小值,momentum动量可在一定程度解决此问题。 首先来看动量算法 pytorch内置了动量法的实现 torch.optim.SGD(momentum=...
  • 常用的损失函数

    千次阅读 2018-11-19 13:30:50
    然后又分别对这两类进行了细分和讲解,其中回归中包含了一种不太常见的损失函数:平均偏差误差,可以用来确定模型中存在正偏差还是负偏差。 从学习任务的类型出发,可以从广义上将损失函数分为两大类——回归损失和...
  • 我的类别数是6(含背景),模型的输出端的激活函数为softmax,损失函数定义为sparse_categorical_crossentropy,模型训练的时候,却会报维度不兼容的错误: Incompatible shape: [262144] vs [4, 256,256] (而4 * ...
  • 如何选择 损失函数 Loss Function

    千次阅读 2017-05-09 17:35:56
    如何选择损失函数 1.交叉熵 CrossEntropy 交叉熵与熵相对, 如同协方差与方差 熵考察的是单个的信息(分布)的期望: H ( p ) = − ∑ i = 1 n p ( x i ) log p ( x i ) H(p) = - \sum_{i=1}^n p...
  • 使用ReLU作为激活函数还有必要用交叉熵计算损失函数吗? https://blog.csdn.net/u010976453/article/details/78488279
  • TensorFlow损失函数专题

    万次阅读 多人点赞 2017-05-22 21:09:59
    一、分类问题损失函数——交叉熵(crossentropy) 交叉熵刻画了两个概率分布之间的距离,是分类问题中使用广泛的损失函数。给定两个概率分布p和q,交叉熵刻画的是两个概率分布之间的距离: 我们可以通过Softmax...
  • 损失函数 二分类问题 sigmoid binary_crossentropy 多分类、单标签问题 softmax categorical_crossentropy 多分类、多标签问题 sigmoid binary_crossentropy 回归到任意值 无 ...
  • 翻译 | 张建军编辑 | 阿司匹林机器学习中的所有算法都依赖于最小化或最大化某一个函数,我们称之为“目标函数”。最小化的这组函数被称为“损失函数”。损失函数是衡量预测模型...
  • 回归问题中5种常用损失函数

    万次阅读 2018-11-25 23:37:16
    机器学习的所有算法都需要最大化或者最小化目标函数,在最小化场景下,目标函数又称损失函数。 实际应用中,选取损失函数需要从多个角度考虑,如是否有异常值、算法、求导难度、预测值的置信度等等。 损失函数可分为...
  • xgboost的原理,损失函数,优化,

    万次阅读 多人点赞 2019-07-25 23:35:37
    子树cart树,并且叶子节点为分数,不是类别,所有多棵树损失和容易优化,速度快 分步提升,先优化一棵树,后面逐渐加入子树损失f,逐步优化 目录 2、xgboost 3、训练xgboost 4、加法训练 5、模型正则化项 6...
  • 图像分割中的损失函数分类和汇总

    千次阅读 2020-08-26 01:42:07
    因此,如何选择一个损失函数,以让他和最优化目标更为接近显得极为重要。 更多文献综述及文献回顾,请参阅: https://github.com/senbinyu/Computer_Vision_Literatures 1. Review paper,综述文献推荐 Ma et al., ...
  • L1 损失函数和 L2 损失函数

    千次阅读 2019-11-28 17:03:48
    L1 和 L2 是机器学习中的两个损失函数,用于最小化误差。 L1 损失函数代表最小绝对偏差,也称为 LAD L2 损失函数代表最小二乘误差,也称为 LS 文章目录一、L1 损失函数二、L2 损失函数三、如何确定L1 和 L2 损失函数...
  • 平方损失函数与交叉熵损失函数

    万次阅读 2018-05-07 15:21:43
    对于机器学习中常见的损失函数有:平方损失函数与交叉熵损失函数。在本文中将讲述两者含义与响应的运用区别。 2. 平方损失函数 平方损失函数较为容易理解,它直接测量机器学习模型的输出与实际结果之间的距离。...
  • 交叉熵损失函数原理详解

    万次阅读 多人点赞 2019-08-30 10:28:42
    之前在代码中经常看见交叉熵损失函数(CrossEntropy Loss),只知道它是分类问题中经常使用的一种损失函数,对于其内部的原理总是模模糊糊,而且一般使用交叉熵作为损失函数时,在模型的输出层总会接一个softmax函数,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 270,333
精华内容 108,133
关键字:

损失函数的选择