精华内容
下载资源
问答
  • **代价函数(Cost Function):**定义在整个训练集上,是所有样本误差的平均,也就是所有损失函数值的平均 **目标函数(Object Function):**指最终需要优化的函数,一般来说是经验风险+结构风险(代价函数+正则化...
    • **损失函数(Loss Function):**定义在单个样本上的,指一个样本的误差
    • **代价函数(Cost Function):**定义在整个训练集上,是所有样本误差的平均,也就是所有损失函数值的平均
    • **目标函数(Object Function):**指最终需要优化的函数,一般来说是经验风险+结构风险(代价函数+正则化项)。

    损失函数

    分类问题

    0-1损失函数

    预测正确时,损失函数值为0;预测错误时,损失函数值为1。该损失函数不考虑预测值与真实值的误差程度。

    Hinge损失函数(SVM)

    L ( w , b ) = m a x { 0 , 1 − y f ( x ) } L(w,b)=max\{0,1-yf(x)\} L(w,b)=max{0,1yf(x)}

    其中y∈{+1,-1},f(x)=wx+b,当为SVM的线性核时。

    Logistic损失函数

    L ( y , p ( y ∣ x ) ) = − l o g   p ( y ∣ x ) L(y,p(y|x))=-log\ p(y|x) L(y,p(yx))=log p(yx)

    该损失函数用到了极大似然估计的思想。

    P(Y|X)通俗的解释就是:在当前模型的基础上,对于样本X,其预测值为Y,也就是预测正确的概率。

    由于概率之间的同时满足需要使用乘法,为了将其转化为加法,我们将其取对数。

    最后由于是损失函数,所以预测正确的概率越高,其损失值应该是越小,因此再加个负号取个反。

    交叉熵损失函数(Cross Entry)

    H ( p , q ) = − ∑ i = 1 N p ( x ( i ) ) l o g   q ( x ( i ) ) H(p,q)=-\sum_{i=1}^Np(x^{(i)})log\ q(x^{(i)}) H(p,q)=i=1Np(x(i))log q(x(i))

    交叉熵是用来评估当前训练得到的概率分布与真实分布的差异情况,减少交叉熵损失就是在提高模型的预测准确率。其中 p(x) 是指真实分布的概率,q(x) 是模型通过数据计算出来的概率估计。

    Exponential损失函数(AdaBoost)

    L ( y , f ( x ) ) = e x p ( − y f ( x ) ) L(y,f(x))=exp(-yf(x)) L(y,f(x))=exp(yf(x))

    指数损失函数是AdaBoost里使用的损失函数,同样地,它对异常点较为敏感,鲁棒性不够

    Log损失函数(LR)

    L ( y , P ( y ∣ x ) ) = − l o g P ( y ∣ x ) L(y,P(y|x))=-logP(y|x) L(y,P(yx))=logP(yx)

    详见

    1558963289779

    回归问题

    平方损失函数(Least Squares)

    L ( y , f ( x ) ) = ( y − f ( x ) ) 2 L(y,f(x))=(y-f(x))^2 L(y,f(x))=(yf(x))2

    预测值与实际值的误差的平方。

    绝对值损失函数(Least Absolute)

    L ( y , f ( x ) ) = ∣ y − f ( x ) ∣ L(y,f(x))=|y-f(x)| L(y,f(x))=yf(x)

    预测值与实际值的误差的绝对值。

    Log-cosh损失函数

    L l o g ( − c o s h ( y , f ( x ) ) ) = l o g ( c o s h ( f ( x ) − y ) ) c o s h ( x ) = ( e x + e − x ) 2 L_{log(-cosh(y,f(x)))}=log(cosh(f(x)-y)) \\ cosh(x)=\frac {(e^x+e^{-x})}2 Llog(cosh(y,f(x)))=log(cosh(f(x)y))cosh(x)=2(ex+ex)

    log-cosh损失函数比均方损失函数更加光滑,具有huber损失函数的所有优点,且二阶可导。因此可以使用牛顿法来优化计算,但是在误差很大情况下,一阶梯度和Hessian会变成定值,导致牛顿法失效。

    分位数损失函数

    L γ ( y , f ( x ) ) = ∑ i : y i &lt; f i ( x ) ( 1 − γ ) ∣ y i − f i ( x ) ∣ + ∑ i : y i ≥ f i ( x ) γ ∣ y i − f i ( x ) ∣ 预 测 的 是 目 标 的 取 值 范 围 而 不 是 值 。 γ 是 所 需 的 分 位 数 , 其 值 介 于 0 和 1 之 间 , γ 等 于 0.5 时 , 相 当 于 M A E 。 设 置 多 个 γ 值 , 得 到 多 个 预 测 模 型 , 然 后 绘 制 成 图 表 , 即 可 知 道 预 测 范 围 及 对 应 概 率 ( 两 个 γ 值 相 减 ) L_\gamma(y,f(x))=\sum_{i:y_i&lt;f_i(x)}(1-\gamma)|y_i-f_i(x)|+\sum_{i:y_i\ge f_i(x)}\gamma|y_i-f_i(x)| \\ 预测的是目标的取值范围而不是值。γ 是所需的分位数,其值介于0和1之间,γ等于0.5时,相当于MAE。 \\ 设置多个 γ 值,得到多个预测模型,然后绘制成图表,即可知道预测范围及对应概率(两个 γ 值相减) Lγ(y,f(x))=i:yi<fi(x)(1γ)yifi(x)+i:yifi(x)γyifi(x)γ01γ0.5MAEγ(γ)

    1558962525717

    代价函数

    均方误差(Mean Squared Error)

    M S E = 1 N ∑ i = 1 N ( y ( i ) − f ( x ( i ) ) ) MSE=\frac 1N\sum_{i=1}^N(y^{(i)}-f(x^{(i)})) MSE=N1i=1N(y(i)f(x(i)))

    均方误差是指参数估计值与参数真值之差平方的期望值;

    MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。

    通常用来做回归问题的代价函数

    均方根误差(Root Mean Squared Error)

    R M S E = 1 N ∑ i = 1 N ( y ( i ) − f ( x ( i ) ) ) 2 RMSE=\sqrt[2] {\frac 1N\sum_{i=1}^N(y^{(i)}-f(x^{(i)}))} RMSE=2N1i=1N(y(i)f(x(i)))

    均方根误差是均方误差的算术平方根,能够直观观测预测值与实际值的离散程度。

    通常用来作为回归算法的性能指标

    平均绝对误差(Mean Absolute Error)

    M A E = 1 N ∑ i = 1 N ∣ y ( i ) − f ( x ( i ) ) ∣ MAE=\frac 1N\sum_{i=1}^N|y^{(i)}-f(x^{(i)})| MAE=N1i=1Ny(i)f(x(i))

    平均绝对误差是绝对误差的平均值 ,平均绝对误差能更好地反映预测值误差的实际情况。

    通常用来作为回归算法的性能指标

    借鉴来源

    https://www.cnblogs.com/lliuye/p/9549881.html

    https://blog.csdn.net/zuolixiangfisher/article/details/88649110

    展开全文
  • SLAM中的很多状态估计都是以最小化误差平方和作为代价函数,一个偏离较大的外点会对估计结果产生巨大的影响。而M估计的主要思想便是 将原先误差的平方项替换为一个增长没那么快的函数,同时保证自己的光滑性质 (能...

    前言

    本博客主要为学习《视觉SLAM十四讲》、《计算机视觉-算法与应用》第6章基于特征的配准 《机器人学中的状态估计》第5章偏差、匹配和外点 等其他相关SLAM内容的总结与整理。

    外点

    传感器测量值可能会受多种因素干扰而不可靠,同时特征匹配也会存在误匹配的情况,如果不正确地检测并剔除他们,视觉SLAM中的很多算法(如计算本质矩阵、三角测量、PNP等)将会失败。

    我们将非常不可能的测量值(根据测量模型)称为外点(outlier)
    对外点的一种常用判断标准是(一维数据中)将超出平均值三个标准差的测量值作为外点。

    处理外点的两种最常用方案为:
    1、随机采样一致性
    2、M估计

    RANSAC

    随机采样一致性(random sample consensus,RANSAC)是一种对带有外点的数据拟合参数模型的迭代方法。

    RANSAC基础版本的每次迭代包括5个步骤:

    1. 在原始数据中随机选取一个(最小)子集作为假设内点;
    2. 根据假设的内点拟合一个模型;
    3. 判断剩余的原始数据是否符合拟合的模型,将其分为内点和外点。如果内点过少则标记为无效迭代;
    4. 根据假设的内点和上一步划分的内点重新拟合模型;
    5. 计算所有内点的残差,根据残差和或者错误率重新评估模型。

    迭代以上步骤,把具有最小残差和的或是最多内点数的模型作为最佳模型。

    RANSAC是一种概率算法,为了能确保有更好的概率找到真正的内点集合,必须实验足够多的次数。以下为试验次数的计算过程:
    1、假设每次选取测量点都是相互独立的,且每个测量点为内点的概率均为w,p为经过k次试验后成功的总体概率;
    2、那么在某次实验中,n个随机样本都是内点的可能性是wn(这里n表示为拟合该模型需要的最少数据个数);
    3、因此经过了p次试验,失败的概率是:
    1 − p = ( 1 − w n ) k 1-p=(1-w^n)^k 1p=(1wn)k
    得到最少需要的试验次数为:
    k = l o g ( 1 − p ) l o g ( 1 − w n ) k=\frac {log(1-p)}{log(1-w^n)} k=log(1wn)log(1p)

    事实上,这个k值被看作是选取不重复点的上限,因为这个结果假设n个点都是独立选择的,也就是说,某个点被选定之后,它可能会被后续的迭代过程重复选定到。而数据点通常是顺序选择的。

    RANSAC与最小二乘的区别:
    最小二乘法尽量去适应包括外点在内的所有点。而RANSAC得出一个仅仅用内点计算出模型,并且概率还足够高。但是,RANSAC不能保证结果一定正确(只有一定的概率得到可信的模型),为了保证算法有足够高的合理概率,必须小心选择算法的参数。对于外点数量较多的数据集,RANSAC的效果远优于直接的最小二乘法。

    M-估计

    SLAM中的很多状态估计都是以最小化误差平方和作为代价函数,一个偏离较大的外点会对估计结果产生巨大的影响。而M估计的主要思想便是将原先误差的平方项替换为一个增长没那么快的函数,同时保证自己的光滑性质(能求导),获得更加鲁棒的最小二乘,这个函数又称为鲁棒核函数。

    例如SLAM十四讲中提到的Huber核:
    H ( e ) = { 1 2 e 2 当 ∣ e ∣ ≤ δ , δ ( ∣ e ∣ − 1 2 δ ) 其 他 H(e)={\begin{cases} \frac{1}{2}e^2&amp;当|e|\le\delta,\\ \delta(|e|-\frac{1}{2}\delta)&amp;其他 \end{cases} } H(e)={21e2δ(e21δ)eδ,

    其具体过程其等价于迭代加权最小二乘估计,即根据前一次代价函数的残差大小来确定之后各样本的权重变化。

    下图为集中常用的鲁棒核函数

    在这里插入图片描述

    展开全文
  • 本篇主要介绍机器学习经常遇到的代价函数、损失函数、风险函数、目标函数。损失函数主要介绍0-1损失函数、 平方损失函数、绝对值损失函数、对数损失函数、Hinge损失函数;风险函数包括期望风险、经验风险、结构风险...

    1 损失函数、代价函数和目标函数

            本部分参考自——机器学习中的目标函数、损失函数、代价函数有什么区别?

    • 损失函数(Loss Function )是定义在单个样本上的,算的是一个样本的误差。
    • 代价函数(Cost Function )是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。(也被称作经验风险)
    • 目标函数(Object Function)定义为:最终需要优化的函数。等于经验风险+结构风险(也就是代价函数 + 正则化项)。代价函数最小化,降低经验风险,正则化项最小化降低。

    1.1 损失函数与代价函数

    The loss function computes the error for a single training example; the cost function is the average of the loss funcitons of the entire training set. — — Andrew NG

            根据NG的解释可以得出结论:损失函数(loss function)是单个样本的训练误差,而代价函数(cost function)是所有样本损失函数的期望。

    1.2 常见的损失函数

            损失函数是一个非负实数函数,用来量化模型预测和真实标签之间的差异。下面介绍几种常用的损失函数。

    1. 0-1 损失函数(0-1 Loss Function)
            最直观的损失函数是模型在训练集上的错误率,即0-1 损失函数:
    L ( y , f ( x ) ) = { 1 , y ≠ f ( x ) 0 , y = f ( x ) = I ( y ≠ f ( x ) ) (1-1) \begin{aligned} L(y, f(x)) &= \begin{cases} 1, & {y \neq f(x) } \\ 0, & {y = f(x)} \end{cases} \\&= I(y\not=f(x)) \end{aligned}\tag{1-1} L(y,f(x))={1,0,y=f(x)y=f(x)=I(y=f(x))(1-1)
            其中 I ( ⋅ ) I(\cdot) I()指示函数即当预测错误时,损失函数为1,当预测正确时,损失函数值为0。该损失函数不考虑预测值和真实值的误差程度。只要错误,就是1。

            虽然 0-1 损失函数能够客观地评价模型的好坏,但其缺点是数学性质不是很好:不连续且导数为0,难以优化.。因此经常用连续可微的损失函数替代。

    2. 平方损失函数(Quadratic Loss Function)
            平方损失函数经常用在预测标签 𝑦 𝑦 y 为实数值的任务中,定义为
    L ( y , f ( x ) ) = ( y − f ( x ) ) 2 (1-2) L(y, f(x)) = (y - f(x))^2 \tag{1-2} L(y,f(x))=(yf(x))2(1-2)
            是指预测值与实际值差的平方。

            平方损失函数一般不适用于分类问题。

    3. 绝对值损失函数(Absolute Loss Function)
    L ( y , f ( x ) ) = ∣ y − f ( x ) ∣ (1-3) L(y, f(x)) = | y -f(x) | \tag{1-3} L(y,f(x))=yf(x)(1-3)
            该损失函数的意义和上面差不多,只不过是取了绝对值而不是求绝对值,差距不会被平方放大。

    4. 对数损失函数(logarithmic loss function)
    L ( y , p ( y ∣ x ) ) = − log ⁡ p ( y ∣ x ) (1-4) L(y, p(y|x)) = - \log p(y|x) \tag{1-4} L(y,p(yx))=logp(yx)(1-4)
            这个损失函数就比较难理解了。事实上,该损失函数用到了极大似然估计的思想。 P ( Y ∣ X ) P(Y|X) P(YX) 通俗的解释就是:在当前模型的基础上,对于样本 X X X,其预测值为 Y Y Y,也就是预测正确的概率。由于概率之间的同时满足需要使用乘法,为了将其转化为加法,我们将其取对数。最后由于是损失函数,所以预测正确的概率越高,其损失值应该是越小,因此再加个负号取个反。

    5. Hinge损失函数(Hinge Loss Function)
            Hinge loss一般分类算法中的损失函数,尤其是SVM,其定义为:
    L ( w , b ) = m a x { 0 , 1 − y f ( x ) } (1-5) L(w,b) = max \{0, 1-yf(x) \} \tag{1-5} L(w,b)=max{0,1yf(x)}(1-5)

            其中 y = + 1 y=+1 y=+1 y = − 1 y=−1 y=1 f ( x ) = w x + b f(x)=wx+b f(x)=wx+b,当为SVM的线性核时。

            了解更多,请阅读:机器学习中的损失函数 (着重比较:hinge loss vs softmax loss)损失函数 、代价函数、目标函数


    2 风险函数

            这部分内容参考自——西伯尔——机器学习,评估——风险函数Traco——经验风险VS风险函数

    2.1 定义

            风险函数(risk function)= 期望风险(Expected Risk)= 期望损失(Expected Loss),可以认为是平均意义下的损失。

            风险函数有两种,不考虑正则项的是经验风险(Empirical Risk),考虑过拟合问题,加上正则项的是结构风险(Structural Risk)。

            监督学习的两种基本策略:经验风险最小化(ERM)和结构风险最小化(SRM)。

            这样,监督学习问题就变成了经验风险或结构风险函数的最优化问题,即经验或结构风险函数是最优化的目标函数。

    2.2 三种风险的关系

            期望风险是理想,是白月光,是可望不可求的,只能用经验风险去近似,而结构风险是经验风险的升级版。

            为什么可以用经验风险估计期望风险呢?

            根据大数定律,当样本容量 N N N 趋于无穷时,经验风险 R e m p ( f ) R_{emp}(f) Remp(f) 趋于期望风险 R e x p ( f ) R_{exp}(f) Rexp(f)。所以一个很自然的想法是用经验风险估计期望风险,即局部最优代替全局最优。

            但是,由于现实中的训练样本数目有限,甚至很小,所以用经验风险估计期望风险常常并不理想,要对经验风险进行一定的矫正。这就关系到监督学习的两个基本策略:经验风险最小化和结构风险最小化。

    1. 期望风险(Expected Risk)【全局,理想】

            期望风险对所有样本预测错误程度的均值,基于所有样本点损失函数最小化。期望风险是全局最优,是理想化的不可求的。

            期望风险、期望损失、风险函数三者是等价的,也就是损失 L ( Y , f ( X ) ) L(Y,f(X)) L(Y,f(X)) 的数学期望,在理论上,可以代入期望公式 E X = ∑ x i ⋅ P i = ∫ x ⋅ f ( x ) d x EX=\sum x_i\cdot P_i=\int x\cdot f(x)dx EX=xiPi=xf(x)dx,也就是
    R e x p = E p [ L ( Y , f ( X ) ] = ∬ L ( y , f ( x ) ) ⋅ f ( x , y ) d x d y (2-1) R_{exp} = E_p[L(Y, f(X)] = \iint L(y, f(x))\cdot f(x, y) dxdy\tag{2-1} Rexp=Ep[L(Y,f(X)]=L(y,f(x))f(x,y)dxdy(2-1)
            但是由于联合概率密度函数 f ( x , y ) f(x,y) f(x,y) 不知道,所以此路不通,只能另寻他路,也就是根据经验找近似。

    2. 经验风险(Empirical Risk)【局部,现实】

            经验风险(Empirical Risk)也称为经验错误(Empirical Error),损失函数度量了单个样本的预测结果,要想衡量整个训练集的预测值与真实值的差异,将整个训练集所有记录均进行一次预测,求取损失函数,将所有值累加,即为经验风险。经验风险是局部最优,是现实的可求的。

            就是已知的数据按照现有的模型,测试预测值和真实值偏离的程度叫经验风险。

            经验风险越小说明模型 f ( x ) f(x) f(x) 对训练集的拟合程度越好。

            经验风险 = 经验损失 = 代价函数

            给定一个数据集,模型 f ( x ) f(x) f(x) 关于训练集的平均损失被称为经验风险(empirical risk)或经验损失(empirical loss)。
    R e m p ( f ) = 1 N 1 N ∑ i = 1 N L ( y i , f ( x i ) ) (2-2) R_{emp}(f) = \frac{1}{N}\frac{1}{N}\sum_{i=1}^{N}L(y_i, f(x_i)) \tag{2-2} Remp(f)=N1N1i=1NL(yi,f(xi))(2-2)
            这个公式的用意很明显,就是模型关于训练集的平均损失(每个样本的损失加起来,然后平均一下)。在实际中用的时候,我们也就很自然的这么用了。

    3. 结构风险(Structural Risk)
            结构风险,就是在经验风险上加上一个正则化项(regularizer)或者叫做罚项(penalty term),即
    R s r m ( f ) = 1 N 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) (2-3) R_{srm}(f) = \frac{1}{N}\frac{1}{N}\sum_{i=1}^{N}L(y_i, f(x_i)) + \lambda J(f) \tag{2-3} Rsrm(f)=N1N1i=1NL(yi,f(xi))+λJ(f)(2-3)

    经验风险 vs 期望风险∶

    • 期望风险是模型对全局(所有数据集)的效果;经验风险是模型对局部(训练集)的效果
    • 期望风险往往无法计算,即联合分布 f ( X , Y ) f(X, Y) f(X,Y) 通常是未知的;而经验风险可以计算
    • 当训练集足够大时,经验风险可以替代期望风险,即局部最优代替全局最优

    2.3 经验风险最小化和结构风险最小化

    1. 经验风险最小化&结构风险最小化
            经验风险最小化(empirical risk minimization,ERM),就是认为经验风险最小的模型是最优的模型,用公式表示:
    min ⁡ f ∈ F 1 N ∑ i = 1 N L ( y i , f ( x i ) ) (2-4) \min_{f\in\mathcal{F}}\frac{1}{N}\sum_{i=1}^{N}L(y_i, f(x_i)) \tag{2-4} fFminN1i=1NL(yi,f(xi))(2-4)

            这个理论很符合人的直观理解。因为在训练集上面的经验风险最小,也就是平均损失越小,意味着模型得到结果和“真实值”尽可能接近,表明模型越好。
            当样本容量不大的时候,经验风险最小化模型容易产生“过拟合”的问题。为了“减缓”过拟合问题,就提出了结构风险最小的理论。

            结构风险最小化(structural risk minimization,SRM),就是认为,结构风险最小的模型是最优模型,公式表示
    min ⁡ f ∈ F 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) (2-5) \min_{f\in\mathcal{F}}\frac{1}{N}\sum_{i=1}^{N}L(y_i, f(x_i)) + \lambda J(f) \tag{2-5} fFminN1i=1NL(yi,f(xi))+λJ(f)(2-5)

    2. 经验风险最小化的例子:极大似然估计(maximum likelihood estimation)

    • 模型——条件概率分布;
    • 损失函数——对数损失函数;
    • 经验风险最小化等价于极大似然估计。

    3. 结构风险最小化的例子:贝叶斯最大后验概率估计

    • 模型——条件概率分布;
    • 损失函数——对数损失函数;
    • 模型复杂度——由先验概率表示;
    • 结构风险=经验风险+正则项=后验概率+先验概率;
    • 先验概率不变,结构风险最小化,等价于最大后验概率估计。

    结构风险 vs 经验风险︰

    • 经验风险越小,模型决策函数越复杂,其包含的参数越多
    • 当经验风险函数小到一定程度就出现了过拟合现象
    • 防止过拟合现象的方式,就要降低决策函数的复杂度,让惩罚项 J ( f ) J(f) J(f) 最小化
    • 需要同时保证经验风险函数和模型决策函数的复杂度都达到最小化
    • 把两个式子融合成一个式子得到结构风险函数然后对这个结构风险函数进行最小化

    2.4 风险函数与对数损失函数


    3 常用的代价函数

            这部分内容参考自——【机器学习】代价函数(cost function)

    3.1.1 均方误差(Mean Squared Error)

    M S E = 1 N ∑ i = 1 N ( y i − y ^ ) 2 (2-6) MSE={\frac{1}{N}{\sum_{i=1}^N(y_i-\widehat{y})^2} } \tag{2-6} MSE=N1i=1N(yiy )2(2-6)

            均方误差是指参数估计值与参数真值之差平方的期望值; MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。( i i i 表示第 i i i 个样本, N N N 表示样本总数)
    通常用来做回归问题的代价函数。

    3.1.2 均方根误差(RMSE)

    R M S E = M S E RMSE=\sqrt{MSE} RMSE=MSE
            均方根误差是均方误差的算术平方根,能够直观观测预测值与实际值的离散程度。
    通常用来作为回归算法的性能指标。

    3.1.3 平均绝对误差(Mean Absolute Error)

    M A E = ∑ i = 1 n ∣ y i − y ^ ∣ n (2-7) MAE={{\sum_{i=1}^n|y_i-\widehat{y}|} \over n}\tag{2-7} MAE=ni=1nyiy (2-7)

            平均绝对误差是绝对误差的平均值 ,平均绝对误差能更好地反映预测值误差的实际情况。
            MSE误差函数对噪声点比较敏感,因为噪声的误差一般比较大,经过平方后放大的倍数会影响模型的效果,此时可以选择对噪声不是非常敏感的’MAE’损失函数。

    3.1.4 交叉熵代价函数(Cross Entry)

    H ( p , q ) = − ∑ i = 1 N p ( x ( i ) ) log ⁡ q ( x ( − i ) ) (2-8) H(p,q) = - \sum_{i=1}^{N} p(x^{(i)}) \log {q(x^{(-i)})} \tag{2-8} H(p,q)=i=1Np(x(i))logq(x(i))(2-8)

            交叉熵是用来评估当前训练得到的概率分布与真实分布的差异情况,减少交叉熵损失就是在提高模型的预测准确率。其中 p ( x ) p(x) p(x) 是指真实分布的概率, q ( x ) q(x) q(x) 是模型通过数据计算出来的概率估计。通常用做分类问题的代价函数。对于二分类模型的交叉熵代价函数(可参考下一小节——逻辑回归)。

    3.1.5 Huber损失函数

    L δ ( y , y ^ ) = { 1 2 ( y − y ^ ) 2 ∣ y − y ^ ∣ ≤ δ δ ∣ y − y ^ ∣ − 1 2 δ 2 o t h e r w i s e (2-9) L_\delta(y,\widehat{y})=\begin{cases} {1\over2}(y-\widehat{y})^2 & |y-\widehat{y}|\le \delta \\ \delta|y-\widehat{y}|-{1 \over2}\delta^2 & otherwise \end{cases}\tag{2-9} Lδ(y,y )={21(yy )2δyy 21δ2yy δotherwise(2-9)

    • δ \delta δ 是超参数,可调
    • δ \delta δ 接近于0时,Huber loss接近MAE δ \delta δ 接近于
    • ∞ \infty 时,Huber loss接近MSE

    3.1.6 Log-Cosh Loss

    L ( y , y ^ ) = ∑ i = 1 n l o g ( c o s h ( y − y ^ ) ) (2-10) L(y,\widehat{y})=\sum_{i=1}^nlog(cosh(y-\widehat{y})) \tag{2-10} L(y,y )=i=1nlog(cosh(yy ))(2-10)

    3.1.7 分位数损失函数

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

    3.2 各常见代价函数的优缺点

    • 使用平方误差更容易求解, 但使用绝对误差对离群点更加鲁棒;
    • 当数据存在离群点时,以MSE为损失的模型会赋予更高的权重给离群点;
    • MAE损失适用于训练数据被离群点损坏的时候(即,在训练数据而非测试数据中,我们错误地获得了不切实际的过大正值或负值);
    • 对所有的观测数据,如果我们只给一个预测结果来最小化MSE,那么该预测值应该是所有目标值的均值。但是如果我们试图最小化MAE,那么这个预测就是所有目标值的中位数。我们知道中位数对于离群点比平均值更鲁棒,这使得MAEMSE更加鲁棒;
    • 使用MAE损失(特别是对于神经网络)的一个大问题是它的梯度始终是相同的,这意味着即使对于小的损失值,其梯度也是大的。这对模型的学习可不好。为了解决这个问题,我们可以使用随着接近最小值而减小的动态学习率。MSE在这种情况下的表现很好, 即使采用固定的学习率也会收敛。 MSE损失的梯度在损失值较高时会比较大, 随着损失接近0时而下降,从而使其在训练结束时更加精确。
    • 如果离群点是会影响业务、而且是应该被检测到的异常值,那么我们应该使用MSE。如果我们认为离群点仅仅代表数据损坏,那么我们应该选择MAE作为损失。
    • L1损失对异常值更加稳健,但其导数并不连续,因此求解效率很低。L2损失对异常值敏感,但给出了更稳定的闭式解(closed form solution)(通过将其导数设置为0);
    • 两种损失函数的问题:可能会出现这样的情况,即任何一种损失函数都不能给出理想的预测。例如,如果我们数据中90%的观测数据的真实目标值是150,其余10%的真实目标值在0-30之间。那么,一个以MAE为损失的模型可能对所有观测数据都预测为150,而忽略10%的离群情况,因为它会尝试去接近中值。同样地,以MSE为损失的模型会给出许多范围在0到30的预测,因为它被离群点弄糊涂了。这两种结果在许多业务中都是不可取的。
    • Huber Loss对数据离群点的敏感度低于平方误差损失。它在0处也可导。基本上它是绝对误差,当误差很小时,误差是二次形式的。误差何时需要变成二次形式取决于一个超参数,该超参数可以进行微调。 δ \delta δ 的选择非常重要,因为它决定了你认为什么数据是离群点。
    • 使用MAE训练神经网络的一个大问题是经常会遇到很大的梯度,使用梯度下降时可能导致训练结束时错过最小值。对于MSE,梯度会随着损失接近最小值而降低,从而使其更加精确。在这种情况下,Huber Loss可能会非常有用,因为它会使最小值附近弯曲,从而降低梯度。另外它比MSE对异常值更鲁棒。因此,它结合了MSEMAE的优良特性。但是,Huber Loss的问题是我们可能需要迭代地训练超参数 δ \delta δ
    • 优点:log(cosh(x))对于小的 x x x 来说,其大约等于 ( x ∗ ∗ 2 ) / 2 (x**2)/2 (x2)/2,而对于大的 x x x 来说,其大约等于 a b s ( x ) − l o g ( 2 ) abs(x) - log(2) abs(x)log(2)。这意味着log(cosh(x))的作用大部分与均方误差一样,但不会受到偶尔出现的极端不正确预测的强烈影响。它具有Huber Loss的所有优点,和Huber Loss不同之处在于,其处处二次可导。

    4 各种算法的损失函数

            这部分内容参考自——机器学习-损失函数课程总结04 - 损失函数、代价函数与目标函数 的整理。

    4.1 逻辑回归模型

            虽然名字里包含“回归”,但是实际上却是一种分类学习方法。
    优点:

    1. 直接对分类可能性进行建模,无需事先假设数据分布,避免了假设分布不准确的问题;
    2. 不是仅预测出“类别”,而是得到近似概率预测,对于需要利用概率辅助预测的任务很有用;
    3. 对率函数任意阶可到的凸函数,很多数值化优化算法都可以直接用于求解最优解。

    4.1.1 代价函数

    4.1.2 模型参数求解

            模型参数的求解方法之一:采用最大似然估计的对数形式(对数是单调函数,求解参数的最大值,函数的对数和函数求出的最大值是一样的)构建函数,再利用梯度下降来求解:

    4.1.3 逻辑回归多分类模型

    4.2 决策树

    4.2.1 决策树-整体损失函数

    4.2.2 CART二叉树-最小二乘回归树

    4.3 朴素贝叶斯

    4.3.1 朴素贝叶斯代价函数

    4.3.2 朴素贝叶斯参数估计-极大似然估计

    4.4 KNN损失函数

    4.5 SVM损失函数-hinge损失

    4.6 提升方法损失函数

    4.6.1 Adaboost

    4.6.2 GBDT-梯度提升树模型


            以上就是对机器学习中损失函数、风险函数、代价函数、目标函数的整理,由于水平有限,可能部分地方有误,欢迎大家指出,后续也会随着学习继续完善,祝学习愉快!


    参考

    展开全文
  • 机器学习常见的代价函数 (1)二次代价函数(quadratic cost): J=12n∑x∥y(x)−aL(x)∥2 J = \frac{1}{2n}\sum_x\Vert y(x)-a^L(x)\Vert^2 J=2n1​x∑​∥y(x)−aL(x)∥2 ​ 其中,JJJ表示代价函数,xxx表示...

    机器学习常见的代价函数

    代价函数也被称为平方误差函数,有时也被称为平方误差代价函数,之所以要出误差的平方和,是因为误差平方代价函数对于大多数问题,特别是回归问题,都是一个合理的选择。
    (1)二次代价函数(quadratic cost)
    J = 1 2 n ∑ x ∥ y ( x ) − a L ( x ) ∥ 2 J = \frac{1}{2n}\sum_x\Vert y(x)-a^L(x)\Vert^2 J=2n1xy(x)aL(x)2
    ​ 其中, J J J表示代价函数, x x x表示样本, y y y表示实际值, a a a表示输出值, n n n表示样本的总数。使用一个样本为例简单说明,此时二次代价函数为:
    J = ( y − a ) 2 2 J = \frac{(y-a)^2}{2} J=2(ya)2
    ​ 假如使用梯度下降法(Gradient descent)来调整权值参数的大小,权值 w w w和偏置 b b b的梯度推导如下:
    ∂ J ∂ b = ( a − y ) σ ′ ( z ) \frac{\partial J}{\partial b}=(a-y)\sigma&#x27;(z) bJ=(ay)σ(z)
    其中, z z z表示神经元的输入, σ \sigma σ表示激活函数。权值 w w w和偏置 b b b的梯度跟激活函数的梯度成正比,激活函数的梯度越大,权值 w w w和偏置 b b b的大小调整得越快,训练收敛得就越快。

    (2)交叉熵代价函数(cross-entropy)
    J = − 1 n ∑ x [ y ln ⁡ a + ( 1 − y ) ln ⁡ ( 1 − a ) ] J = -\frac{1}{n}\sum_x[y\ln a + (1-y)\ln{(1-a)}] J=n1x[ylna+(1y)ln(1a)]
    其中, J J J表示代价函数, x x x表示样本, y y y表示实际值, a a a表示输出值, n n n表示样本的总数。
    权值 w w w和偏置 b b b的梯度推导如下:
    ∂ J ∂ w j = 1 n ∑ x x j ( σ ( z ) − y ) &ThickSpace; , ∂ J ∂ b = 1 n ∑ x ( σ ( z ) − y ) \frac{\partial J}{\partial w_j}=\frac{1}{n}\sum_{x}x_j(\sigma{(z)}-y)\;, \frac{\partial J}{\partial b}=\frac{1}{n}\sum_{x}(\sigma{(z)}-y) wjJ=n1xxj(σ(z)y)bJ=n1x(σ(z)y)
    当误差越大时,梯度就越大,权值 w w w和偏置 b b b调整就越快,训练的速度也就越快。
    二次代价函数适合输出神经元是线性的情况,交叉熵代价函数适合输出神经元是S型函数的情况。

    (3)对数似然代价函数(log-likelihood cost)
    对数似然函数常用来作为softmax回归的代价函数。深度学习中普遍的做法是将softmax作为最后一层,此时常用的代价函数是对数似然代价函数。
    对数似然代价函数与softmax的组合和交叉熵与sigmoid函数的组合非常相似。对数似然代价函数在二分类时可以化简为交叉熵代价函数的形式。
    在tensorflow中:
    与sigmoid搭配使用的交叉熵函数:tf.nn.sigmoid_cross_entropy_with_logits()
    与softmax搭配使用的交叉熵函数:tf.nn.softmax_cross_entropy_with_logits()
    在pytorch中:
    与sigmoid搭配使用的交叉熵函数:torch.nn.BCEWithLogitsLoss()
    与softmax搭配使用的交叉熵函数:torch.nn.CrossEntropyLoss()
    ### 用交叉熵代替二次代价函数

    (1)为什么不用二次方代价函数
    由上一节可知,权值 w w w和偏置 b b b的偏导数为 ∂ J ∂ w = ( a − y ) σ ′ ( z ) x \frac{\partial J}{\partial w}=(a-y)\sigma&#x27;(z)x wJ=(ay)σ(z)x ∂ J ∂ b = ( a − y ) σ ′ ( z ) \frac{\partial J}{\partial b}=(a-y)\sigma&#x27;(z) bJ=(ay)σ(z), 偏导数受激活函数的导数影响,sigmoid函数导数在输出接近0和1时非常小,会导致一些实例在刚开始训练时学习得非常慢。

    (2)为什么要用交叉熵
    交叉熵函数权值 w w w和偏置 b b b的梯度推导为:
    ∂ J ∂ w j = 1 n ∑ x x j ( σ ( z ) − y ) &ThickSpace; , ∂ J ∂ b = 1 n ∑ x ( σ ( z ) − y ) \frac{\partial J}{\partial w_j}=\frac{1}{n}\sum_{x}x_j(\sigma{(z)}-y)\;, \frac{\partial J}{\partial b}=\frac{1}{n}\sum_{x}(\sigma{(z)}-y) wjJ=n1xxj(σ(z)y)bJ=n1x(σ(z)y)
    由以上公式可知,权重学习的速度受到 σ ( z ) − y \sigma{(z)}-y σ(z)y影响,更大的误差,就有更快的学习速度,避免了二次代价函数方程中因 σ ′ ( z ) \sigma&#x27;{(z)} σ(z)导致的学习缓慢的情况。

    2. 损失函数

    2.1 什么是损失函数

    ​ 损失函数(Loss Function)又叫做误差函数,用来衡量算法的运行情况,估量模型的预测值与真实值的不一致程度,是一个非负实值函数,通常使用$
    L(Y, f(x))$来表示。损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。

    2.2 常见的损失函数

    ​ 机器学习通过对算法中的目标函数进行不断求解优化,得到最终想要的结果。分类和回归问题中,通常使用损失函数或代价函数作为目标函数。
    ​ 损失函数用来评价预测值和真实值不一样的程度。通常损失函数越好,模型的性能也越好。
    ​ 损失函数可分为经验风险损失函数和结构风险损失函数。经验风险损失函数指预测结果和实际结果的差别,结构风险损失函数是在经验风险损失函数上加上正则项。
    ​ 下面介绍常用的损失函数:

    (1)0-1损失函数
    如果预测值和目标值相等,值为0,如果不相等,值为1。
    L ( Y , f ( x ) ) = { 1 , Y ≠ f ( x ) 0 , Y = f ( x ) L(Y, f(x)) = \begin{cases} 1,&amp; Y\ne f(x)\\ 0,&amp; Y = f(x) \end{cases} L(Y,f(x))={1,0,Y̸=f(x)Y=f(x)
    一般的在实际使用中,相等的条件过于严格,可适当放宽条件:
    L ( Y , f ( x ) ) = { 1 , ∣ Y − f ( x ) ∣ ⩾ T 0 , ∣ Y − f ( x ) ∣ &lt; T L(Y, f(x)) = \begin{cases} 1,&amp; |Y-f(x)|\geqslant T\\ 0,&amp; |Y-f(x)|&lt; T \end{cases} L(Y,f(x))={1,0,Yf(x)TYf(x)<T
    (2)绝对值损失函数
    和0-1损失函数相似,绝对值损失函数表示为:
    L ( Y , f ( x ) ) = ∣ Y − f ( x ) ∣ ​ L(Y, f(x)) = |Y-f(x)|​ L(Y,f(x))=Yf(x)
    (3)平方损失函数
    L ( Y , f ( x ) ) = ∑ N ( Y − f ( x ) ) 2 L(Y, f(x)) = \sum_N{(Y-f(x))}^2 L(Y,f(x))=N(Yf(x))2
    这点可从最小二乘法和欧几里得距离角度理解。最小二乘法的原理是,最优拟合曲线应该使所有点到回归直线的距离和最小。

    (4)对数损失函数
    L ( Y , P ( Y ∣ X ) ) = − log ⁡ P ( Y ∣ X ) L(Y, P(Y|X)) = -\log{P(Y|X)} L(Y,P(YX))=logP(YX)
    ​ 常见的逻辑回归使用的就是对数损失函数,有很多人认为逻辑回归的损失函数是平方损失,其实不然。逻辑回归它假设样本服从伯努利分布(0-1分布),进而求得满足该分布的似然函数,接着取对数求极值等。逻辑回归推导出的经验风险函数是最小化负的似然函数,从损失函数的角度看,就是对数损失函数。

    (6)指数损失函数
    指数损失函数的标准形式为:
    L ( Y , f ( x ) ) = exp ⁡ ( − Y f ( x ) ) L(Y, f(x)) = \exp(-Yf(x)) L(Y,f(x))=exp(Yf(x))
    例如AdaBoost就是以指数损失函数为损失函数。

    (7)Hinge损失函数
    Hinge损失函数的标准形式如下:
    L ( y ) = max ⁡ ( 0 , 1 − t y ) L(y) = \max{(0, 1-ty)} L(y)=max(0,1ty)
    统一的形式:
    L ( Y , f ( x ) ) = max ⁡ ( 0 , Y f ( x ) ) L(Y, f(x)) = \max{(0, Yf(x))} L(Y,f(x))=max(0,Yf(x))
    其中y是预测值,范围为(-1,1),t为目标值,其为-1或1。

    在线性支持向量机中,最优化问题可等价于
    w , b min ⁡ ∑ i = 1 N ( 1 − y i ( w x i + b ) ) + λ ∥ w ∥ 2 \underset{\min}{w,b}\sum_{i=1}^N (1-y_i(wx_i+b))+\lambda\Vert w\Vert ^2 minw,bi=1N(1yi(wxi+b))+λw2
    上式相似于下式
    1 m ∑ i = 1 N l ( w x i + b y i ) + ∥ w ∥ 2 \frac{1}{m}\sum_{i=1}^{N}l(wx_i+by_i) + \Vert w\Vert ^2 m1i=1Nl(wxi+byi)+w2
    其中 l ( w x i + b y i ) l(wx_i+by_i) l(wxi+byi)是Hinge损失函数, ∥ w ∥ 2 \Vert w\Vert ^2 w2可看做为正则化项。

    展开全文
  • 损失函数 (loss function) 是用来估量在一个样本点上模型的预测值 h(x) 与真实值 y 的不一致程度。它是一个非负实值函数,通常使用 L(y, h(x)) 来表示。 损失函数可由 y 的类型来分类,而第三章提升树的梯度...
  • RANSAC和鲁棒函数

    2021-03-25 17:43:30
    SLAM中的很多状态估计都是以最小化误差平方和作为代价函数,一个偏离较大的外点会对估计结果产生巨大的影响。而M估计的主要思想便是将原先误差的平方项替换为一个增长没那么快的函数,同时保证自己的光滑性质(能...
  • 一种方法是选择那些正确的匹配进行估计(RANSAC),另一种是降低那些错误匹配的权重(鲁棒函数),下面分别介绍。 1. RANSAC随机采样一致算法 这种方法的目的是,从所有数据中选择正确的数据,用于估计。为了方便....
  • 论文阅读+代价函数+激活函数

    千次阅读 2018-04-02 16:43:21
    =================第一部分 代价函数====================代价函数=损失函数 在机器学习中的每一种算法中,训练模型的过程就是优化代价函数的过程。代价函数对每个参数的偏导数就是梯度下降中提到的梯度,防止过...
  • 目录1. RANSAC 随机采样一致算法1.1 相关定义1.2 完整的RANSAC算法1.2.1 ... 鲁棒函数 在V-SLAM中,我们首先构造3D-3D、3D-2D、2D-2D匹配,然后据此去估计相机的运动。完美估计需要完美的匹配,但实际的匹配中往往...
  • 损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度的一类函数,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好 原文: ... ...
  • 代价函数与损失函数

    2021-03-15 18:13:57
    代价函数(cost function) 为了得到训练逻辑回归模型的参数,需要一个代价函数,通过训练代价函数来得到参数。 在回归问题中,通过代价函数来求解最优解,常用的是平方误差代价函数。 常见代价函数 (1)二次代价函数...
  • 容许的不确定性, 保证闭环系统的稳定性, 并在非劣(Pareto 最优) 的意义下, 优化多目标代价函数的上界. 通过加权 因子的选择来解决不同目标之间的竞争问题. 采用线性矩阵不等式方法, 将问题转化为一个线性凸优化...
  • 1. 定义 转载来自 几种常见的损失函数 ...那么损失函数的值越小,模型的鲁棒性也就越好,对新数据的预测能力也就越强 损失函数(Loss Function) :直接作用于单个样本,用来表达样本的误差 风险函数(R
  • 目标函数,损失函数和代价函数 基本概念: 损失函数:计算的是一个样本的误差 代价函数:是整个训练集上所有样本误差的平均 目标函数:代价函数 + 正则化项 通常机器学习每一个算法中都会有一个目标函数,算法...
  • 机器学习中的目标函数、损失函数、代价函数有什么区别? 首先给出结论:损失函数和代价函数是同一个东西, 目标函数是一个与他们相关但更广的概念,对于目标函数来说在有约束条件下的最小化就是损失函数(loss ...
  • logistic回归代价函数的凸性分析

    千次阅读 2019-05-03 00:40:45
    logistic回归的代价函数为:J(θ)=−1m∑i=1m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]J(\theta)=-\frac{1}{m}\sum_{i=1}^m[y^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)}))]J(θ)=−m1...
  • 首先需要明确损失函数与代价函数的区别与联系。在 Coursera:Neural Networks and Deep Learning 课程中,Andrew Ng 给出的解释如下: The loss function computes the error for a single training example; the ...
  • 摘要:持续更新,罗列部分常用的代价函数,以及论文中性能优越的代价函数,方便遇到不同问题时代价函数的选择。第一部分介绍最常见的几个代价函数,第二部分介绍论文中看到的不错的代价函数
  • 所设计的状态反馈控制器对所有容许的不确定性,保证闭环系统的稳定性,并在非劣(Pareto最优)的意义下,优化多目标代价函数的上界。通过加权因子的选择来解决不同目标之间的竞争问题。采用线性矩阵不等式方法,将...
  • 目标函数(损失函数,代价函数

    千次阅读 2019-01-06 11:47:17
    深度网络中的目标函数通过样本的预测结果与真实标记产生的误差反向传播指导网络参数学习与表示学习。...坡道损失函数——非凸损失函数,也常被称为“鲁棒损失函数” 特点:抗噪 这类损失函数的共同特点是...
  • 梯度本意是一个向量(矢量)当某一函数在某点处沿着该方向的方向导数取得该点处的最大值,即函数在该点处沿方向变化最快,变化率最大(为该梯度的模)。 在二元函数的情形,设函数z=f(x,y)在平面区域D内...
  • 常见方法有通过建模噪声转移矩阵修改损失函数,在神经网络上添加线性层增强校正结构,引导原始标签和预测标签组合,定义鲁棒损失函数,平滑标签正则化等。 精细化训练策略依赖于对训练过程的高度干预或者对训练过程...
  • 代价函数简介   代价函数(Cost Function),通常也被称为损失函数(Loss Function)。这类函数是机器学习乃至整个数据科学学科中最为重要的一类函数模型,它直观的将数据的拟合程度呈现在我们面前。对于机器学习的目标...
  • 目标函数4.1 为什么要使用目标函数4.2 目标函数的作用原理4.3 为什么目标函数是负的4.4 常见的目标函数4.4.1 **二次代价函数(quadratic cost)**:4.4.2 **交叉熵代价函数(cross-entropy)**:4.4.3**对数似然...
  •  假设现在使用的激活函数是sigmoid,并且代价函数是二次代价函数,我们收敛得目标是1,那么A点的梯度比较大,B点由于离目标比较近梯度小,所以是合理的;但是如果我们的收敛目标是0,那么A点离目标比较近,所以梯度...
  • 它仅在线性回归的基础上,在特征到结果的映射中加入了一层sigmoid函数(非线性)映射,即先把特征线性求和,然后使用sigmoid函数来预测。 sigmoid函数   当sigmoid函数作为神经元的激活函数时,有两种较好的...
  • 前言 上篇笔记我们利用MNIST数据集训练了一个手写数字识别的...代价函数 拟合 什么是激活函数?激活函数是干嘛的? 想了解什么是激活函数,就要先了解神经网络的基本模型,下图所示为一单一人工神经网络的基本模型...
  • 传统动态多目标优化问题(Dynamic multi-objective ...基于提出的两类新型性能评价测度,针对8个典型动态测试函数的仿真实验,结果表明该方法得到满足决策者精度要求,且具有较长平均生存时间的动态鲁棒Pareto最优解.
  • 在此代码中,量子粒子群优化 (QPSO) 用于解决多目标组合经济排放调度 (CEED) 问题,该问题使用三次准则函数制定,并考虑单向最大/最大价格惩罚因子。 QPSO 在 6 单元发电系统上实现,并与拉格朗日松弛、粒子群优化 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,371
精华内容 3,348
关键字:

鲁棒代价函数