精华内容
下载资源
问答
  • 损失函数

    2016-10-23 13:11:25
    比如:Ranking 经常用的最大间隔损失函数  分类一般以交叉熵作为损失函数 http://blog.csdn.net/heyongluoyao8/article/details/52462400 http://blog.csdn.net/google19890102/article/deta

    1. 机器学习中都有哪些损失函数

    2, 这些损失函数的应用场景

    比如:Ranking 经常用的最大间隔损失函数

                分类一般以交叉熵作为损失函数


    http://blog.csdn.net/heyongluoyao8/article/details/52462400

    http://blog.csdn.net/google19890102/article/details/50522945

    http://www.ics.uci.edu/~dramanan/teaching/ics273a_winter08/lectures/lecture14.pdf


    待续,待总结

    展开全文
  • 损失函数loss

    万次阅读 2014-04-12 16:43:39
    损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。 损失函数是经验风险函数的核心部分,也是...

    http://blog.csdn.net/pipisorry/article/details/23538535

    监督学习及其目标函数

          损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。

    损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。

    模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子(一般来说,监督学习可以看做最小化下面的目标函数):

    式子左边表示经验风险函数,损失函数是其核心部分;式子右边是正则项。式子整体是结构风险函数,其由经验风险函数和正则项组成。

    其中,第一项L(yi,f(xi;w)) 衡量我们的模型(分类或者回归)对第i个样本的预测值f(xi;w)和真实的标签yi之前的误差。因为我们的模型是要拟合我们的训练样本的,所以我们要求这一项最小。即前面的均值函数表示的是经验风险函数,L代表的是损失函数;

    但正如上面说言,我们不仅要保证训练误差最小,我们更希望我们的模型测试误差小,所以我们需要加上第二项,也就是对参数w的规则化函数Ω(w)去约束我们的模型尽量的简单。即后面的Φ是正则化项(regularizer)或者叫惩罚项(penalty term),它可以是L1,也可以是L2,或者其他的正则函数。

    整个式子表示的意思是找到使目标函数最小时的θ值。机器学习的大部分带参模型都和这个不但形似,而且神似,其实大部分无非就是变换这两项而已。

    损失函数/loss函数

          对于第一项Loss函数,如果是Square loss,那就是最小二乘;如果是Hinge Loss,那就是著名的SVM;如果是exp-Loss,那就是 Boosting;如果是log-Loss,那就是Logistic Regression;还有等等。不同的loss函数,具有不同的拟合特性,这个也得就具体问题具体分析的。

    loss函数一般都是通过mle推导出来的。使用最大似然来导出代价函数的方法的一个优势是,它减轻了为每个模型设计代价函数的负担。明确一个模型p(y | x)则自动地确定了一个代价函数log p(y | x)。[深度学习]

    下面主要列出几种常见的损失函数:

    • 平方损失
    • 0-1损失
    • Log损失
    • Hinge损失
    • 指数损失
    • 感知损失

    规则项参考[最优化方法:范数和规则化regularization]。

    Note: lz: Loss functions一般指一个样本的;而cost functions指N个样本的。但是有时是混用的。

    皮皮blog

    平方损失函数(最小二乘法, Ordinary Least Squares )

    最小二乘法是线性回归的一种,OLS将问题转化成了一个凸优化问题。在线性回归中,它假设样本和噪声都服从高斯分布(为什么假设成高斯分布呢?中心极限定理),最后通过极大似然估计MLE可以推导出最小二乘式子,即平方损失函数可以通过线性回归在假设样本是高斯分布的条件下推导得到。

    最小二乘的基本原则是:最优拟合直线应该是使各点到回归直线的距离和最小的直线,即平方和最小。换言之,OLS是基于距离的,而这个距离就是我们用的最多的欧几里得距离。为什么它会选择使用欧式距离作为误差度量呢(即Mean squared error, MSE),主要有以下几个原因:

    • 简单,计算方便;
    • 欧氏距离是一种很好的相似性度量标准;
    • 在不同的表示域变换后特征性质不变。

    平方损失(Square loss)的标准形式

    L(Y,f(X))=(Yf(X))^2
    当样本个数为n时,此时的损失函数变为:
    $$L(Y, f(X)) = \sum _{i=1}^{n}(Y - f(X))^2$$
    Y-f(X)表示的是残差,而我们的目的就是最小化目标函数值,也就是最小化残差的平方和(residual sum of squares,RSS)。

    而在实际应用中,通常会使用均方差(MSE)作为一项衡量指标,即MSE=1/n*L。

    上面提到了线性回归,这里额外补充一句,我们通常说的线性有两种情况,一种是因变量y是自变量x的线性函数,一种是因变量y是参数α的线性函数。在机器学习中,通常指的都是后一种情况。

    最小二乘法解线性回归

    解上面的纯属回归也有解析方法,直接通过数学求解参数值。

    首先构建Design matrix

    Note: 用这种方法时不需要feature scaling。

    [Linear Regression with Multiple Variables多变量线性规划 (Week 2) ]

    最小二乘解

    [矩阵分析与应用-张]

    皮皮blog

    log对数损失函数(逻辑回归)

    在逻辑回归的推导中,它假设样本服从伯努利分布(0-1分布),然后求得满足该分布的似然函数,接着取对数求极值等。

    但是逻辑回归并没有求似然函数的极值,而是把极大化当做是一种思想,进而推导出它的经验风险函数为:最小化负的似然函数(即max F(y, f(x)) —-> min -F(y, f(x)))。从损失函数的视角来看,它就成了log损失函数了。Log损失log(1+exp(−m))  是0-1损失函数的一种代理函数。

    log损失函数的标准形式:交叉熵

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

    取对数是为了方便计算极大似然估计,因为在MLE中直接求导比较困难,所以通常都是先取对数再求导找极值点。损失函数L(Y, P(Y|X))表达的是样本X在分类Y的情况下,使概率P(Y|X)达到最大值(换言之,就是利用已知的样本分布,找到最有可能(即最大概率)导致这种分布的参数值)。因为log函数是单调递增的,所以logP(Y|X)也会达到最大值,因此在前面加上负号之后,最大化P(Y|X)就等价于最小化L了。

    对于Logistic回归分类器(二分类)p(y|x;w)可以表示为:

    p(yx;w)=σ(wTx)^y * (1−σ(wTx))^(1−y)

    为了求解其中的参数w,通常使用极大似然估计的方法,具体的过程如下:

    1、似然函数

    L\left ( \mathbf{w} \right )=\prod_{i=1}^{n}\sigma \left ( \mathbf{w}^T\mathbf{x}^{\left ( i \right )} \right )^{y^{\left ( i \right )}}\left ( 1-\sigma \left ( \mathbf{w}^T\mathbf{x}^{\left ( i \right )} \right ) \right )^{\left ( 1-y^{\left ( i \right )} \right )}

    其中,σ(x)=1/(1+exp(−x)

    2、log似然

    logL\left ( \mathbf{w} \right )=\sum_{i=1}^{n}y^{\left ( i \right )}log\left ( \sigma \left ( \mathbf{w}^T\mathbf{x}^{\left ( i \right )} \right ) \right )+\left ( 1-y^{\left ( i \right )} \right )log\left ( 1-\sigma \left ( \mathbf{w}^T\mathbf{x}^{\left ( i \right )} \right )\right )

    3、需要求解的是使得log似然取得最大值的w

    将其改变为最小值,可以得到如下的形式:

    J(θ)=-logL\left ( \mathbf{w} \right )=-\sum_{i=1}^{n}y^{\left ( i \right )}log\left ( \sigma \left ( \mathbf{w}^T\mathbf{x}^{\left ( i \right )} \right ) \right )+\left ( 1-y^{\left ( i \right )} \right )log\left ( 1-\sigma \left ( \mathbf{w}^T\mathbf{x}^{\left ( i \right )} \right )\right )

    或者

    \underset{\mathbf{w}}{min}\sum_{i=1}^{n}log\left \{ 1+exp\left ( -y^{\left ( i \right )}\mathbf{w}^T\mathbf{x}^{\left ( i \right )} \right ) \right \}

    [log损失与交叉熵的等价性]

    logistic的损失函数表达式

    蓝色线代表logistic regression, 紫洋红色线代表SVM;

    PDF参考一下:Lecture 6: logistic regression.pdf

    多分类就不能使用上面的sigmoid_cross_entropy。

    Softmax loss

    什么是logits?

            logits就是神经网络模型中的 W * X矩阵,注意不需要经过sigmoid,即为未通过激活函数的原始输出。Tensorflow "with logit": The input_vector/logit is not normalized and can scale from [-inf, inf]. 

    [What is the meaning of the word logits in TensorFlow?]

    [如何理解深度学习源码里经常出现的logits?]

    softmax归一化计算

    Softmax loss

    Softmax loss是由softmax和交叉熵(cross-entropy loss)loss组合而成,所以全称是softmax with cross-entropy loss。

    在caffe,tensorflow等开源框架的实现中,直接将两者放在一个层中,而不是分开不同层,可以让数值计算更加稳定,因为正指数概率可能会有非常大的值。

    当cross entropy的输入P是softmax的输出时,cross entropy等于softmax loss。即假如log loss中的p的表现形式是softmax概率的形式,那么交叉熵loss就是softmax loss,所以说softmax loss只是交叉熵的一个特例。

    令z是softmax层的输入,f(z)是softmax的输出,则

    单个像素i的softmax loss等于cross-entropy error如下

    [softmax loss和交叉熵有什么关系?]

    softmax loss的变种和改进

    soft softmax

    当T=1时,就是softmax的定义,当T>1,就称之为soft softmax,T越大,因为Zk产生的概率差异就会越小。文【2】中提出这个是为了迁移学习,生成软标签,然后将软标签和硬标签同时用于新网络的学习。

    Large-Margin Softmax Loss

    softmax loss擅长于学习类间的信息,因为它采用了类间竞争机制,它只关心对于正确标签预测概率的准确性,忽略了其他非正确标签的差异,导致学习到的特征比较散。

    举个例子吧。假设一个5分类问题,然后一个样本I的标签y=[0,0,0,1,0],也就是说样本I的真实标签是4,假设模型预测的结果概率(softmax的输出)p=[0.1,0.15,0.05,0.6,0.1],可以看出这个预测是对的,那么对应的损失L=-log(0.6),也就是当这个样本经过这样的网络参数产生这样的预测p时,它的损失是-log(0.6)。那么假设p=[0.15,0.2,0.4,0.1,0.15],这个预测结果就很离谱了,因为真实标签是4,而你觉得这个样本是4的概率只有0.1(远不如其他概率高,如果是在测试阶段,那么模型就会预测该样本属于类别3),对应损失L=-log(0.1)。那么假设p=[0.05,0.15,0.4,0.3,0.1],这个预测结果虽然也错了,但是没有前面那个那么离谱,对应的损失L=-log(0.3)。

    [https://blog.csdn.net/u014380165/article/details/77284921]

    作者的实现是通过一个LargeMargin全连接层+softmax loss来共同实现,可参考代码。

    [【技术综述】一文道尽softmax loss及其变种]

    softmax loss的实现

    [TensorFlow:交叉熵损失函数]

    同样,multi-label是一定不能使用交叉熵作为loss函数的。因为如果是多目标问题,经过softmax就不会得到多个和为1的概率,而且label有多个1也无法计算交叉熵,因此这个函数只适合单目标的二分类或者多分类问题。并且它只计算了某个类别标签为1时的loss及梯度,而忽略了为0时的loss,而每个输出又相互独立,不像softmax函数那样有归一化的限制。[TensorFlow:交叉熵损失函数]

    皮皮blog

    合页损失函数Hinge Loss(SVM)

    SVM的损失函数是hinge损失函数。

    线性支持向量机中,最优化问题可以等价于下列式子:

    下面来对式子做个变形,令:,于是,原式就变成了:

    如若取λ=12C,式子就可以表示成:


    可以看出,该式子与下式非常相似:
    $$\frac{1}{m} \sum_{i=1}^{m} l(w \cdot  x_i + b, y_i) + ||w||^2$$

    前半部分中的l就是hinge损失函数,而后面相当于L2正则项。

    Hinge 损失函数的标准形式

    L(y)=max(0,1−yỹ ),y=±1

    或者表示为[ 1 - t(wx + b) ]+

    这里写图片描述

    可以看出,当|y|>=1时,L(y)=0。[Hinge-loss]

    核函数

    在libsvm中一共有4中核函数可以选择,对应的是-t参数分别是:

    • 0-线性核;
    • 1-多项式核;
    • 2-RBF核;
    • 3-sigmoid核。

    [http://math.stackexchange.com/questions/782586/how-do-you-minimize-hinge-loss]

    皮皮blog

    感知损失(感知机算法)

    感知损失是Hinge损失的一个变种,感知损失的具体形式如下:max(0,−m) 。运用感知损失的典型分类器是感知机算法。

    感知机算法的损失函数

    感知机算法只需要对每个样本判断其是否分类正确,只记录分类错误的样本,其损失函数为:

    minw,b[−∑i=1ny(i)(wTx(i)+b)]

    两者的等价

    对于感知损失:max(0,−m)

    或者表示为[ - t(wx + b) ]+

    优化的目标为:

    minw[∑i=1nmax(0,−fw(x(i))y(i))]

    在上述的函数fw(x(i))中引入截距b,即:

    fw,γ(x(i))=wTx(i)+b

    上述的形式转变为:

    minw,b[∑i=1nmax(0,−(wTx(i)+b)y(i))]

    对于max函数中的内容,可知:

    max(0,−(wTx(i)+b)y(i))⩾0

    对于错误的样本,有:

    max(0,−(wTx(i)+b)y(i))=−(wTx(i)+b)y(i)

    类似于Hinge损失,令下式成立:

    max(0,−fw,b(x)y)=minξξ

    约束条件为:

    ξ⩾−fw,b(x)y

    则感知损失变成:

    minξ[∑i=1nξi]

    即为:

    minw,b[−∑i=1ny(i)(wTx(i)+b)]

    Hinge损失对于判定边界附近的点的惩罚力度较高,而感知损失只要样本的类别判定正确即可,而不需要其离判定边界的距离,这样的变化使得其比Hinge损失简单,但是泛化能力没有Hinge损失强。

    皮皮blog

    指数损失函数(Adaboost)

    学过Adaboost算法的人都知道,它是前向分步加法算法的特例,是一个加和模型,损失函数就是指数函数。

    在Adaboost中,经过m此迭代之后,可以得到 fm(x) : 

    Adaboost每次迭代时的目的是为了找到最小化下列式子时的参数α和G:

    指数损失函数(exp-loss)的标准形式

    $$L(y, f(x)) = \exp[-yf(x)]$$

    这里写图片描述

    (lz感觉就像是soft版本的hinge loss)

    可以看出,Adaboost的目标式子就是指数损失,在给定n个样本的情况下,Adaboost的损失函数为:

    L(y, f(x)) = \frac{1}{n}\sum_{i=1}^{n}\exp[-y_if(x_i)]

    Note: 为什么adaboost的loss是指数损失?假设是指数损失,最小化f^t+1(第一个公式),求alpha_m的值刚好就是adaboost中alpha_m更新方式。

    在AdaBoost中,数据权重的更新方式为:

    u(t+1)nu(t+1)nu(T+1)nn=1Nu(T+1)n=u(t)n◊−yngt(xn)=u(t)nexp(−ynαtgt(xn))=1Nexp(−ynt=1Tαtgt(xn))=1Nn=1Nexp(−ynt=1Tαtgt(xn))

    AdaBoost的训练的目标就是减少∑Nn=1u(T+1)n,因此其风险函数为:

    1Nn=1Nexp(−ynt=1Tαtgt(xn))

    关于Adaboost的推导,可以参考Wikipedia:AdaBoost或者《统计学习方法》P145。

    皮皮blog

    其它损失函数

    除了以上这几种损失函数,常用的还有:

    0-1损失函数

    01 loss是最本质的分类损失函数,但是这个函数不易求导,在模型的训练不常用,通常用于模型的评价。0-1损失是一个非凸的函数,在求解的过程中,存在很多的不足,通常在实际的使用中将0-1损失函数作为一个标准,选择0-1损失函数的代理函数(如log损失函数,hinge损失函数(0-1损失函数的上界))作为损失函数。the zero-one loss is what you actually want in classification. Unfortunately it is non-convex and thus not practical since the optimization problem becomes more or less intractable。

    L(Y, f(X)) = \left\{\begin{matrix}1 ,& Y \neq f(X)\\ 0 ,& y = f(X)    \end{matrix}\right.

    在分类问题中,可以使用函数的正负号来进行模式判断,函数值本身的大小并不是很重要,0-1损失函数比较的是预测值fw(x(i))与真实值y(i)的符号是否相同,0-1损失的具体形式如下:

    L01(m)={01 if m⩾0 if m<0

    以上的函数等价于下述的函数:

    12(1−sign(m))
    0-1损失并不依赖m值的大小,只取决于m的正负号。

    绝对值损失函数

    $$L(Y, f(X)) = |Y-f(X)|$$

    皮皮blog

    带权重交叉熵损失函数

    对于准确率要求有限的情况下,如何定向的提升模型的召回率。

    业务场景:业务部门对于假阴性和假阳性的容忍度是不同的,对于假阴性更为敏感,可以容忍一部分假阳性的存在。如果所有的阳性都可以检测出来,可以容忍准确率低一些。

    recall = tp/(tp+fn),要使recall变大,假阳性fn要变小,所以fn惩罚要变更大。

    从损失函数下手,让假阴性的惩罚比假阳性的惩罚更大,在binary crossentropy 两项前面加上不同的权重(下面的loss中w1增大为w0的5倍左右)。

    loss变成以下形式:

    其中w1 和 w0 分别代表了当前数据的实际标签为1或 0时候的损失函数权重。

    相反的,如果模型想要增大精度,可以设置loss中w0增大为w1的5倍左右。

    [【算法实验】使用带权重交叉熵损失函数定向提升模型的召回率]

    Loss函数总结

    • squared loss方便求导,缺点是当分类正确的时候随着ys的增大损失函数也增大。
    • cross entropy方便求导,逼近01 loss。
    • Hinge Loss当ys≥1,损失为0,对应分类正确的情况;当ys<1时,损失与ys成正比,对应分类不正确的情况(软间隔中的松弛变量)。
    • exponential loss方便求导,逼近01 loss。
    • squared loss, cross entropy,exponential loss以及hinge loss的左侧都是凸函数,方便求导有利于优化问题的求解;同时这些loss函数都是01 error的上界,可以通过减少loss来实现01问题的求解,即求解分类问题。
    • the zero-one loss is what you actually want in classification. Unfortunately it is non-convex and thus not practical since the optimization problem becomes more or less intractable
    • the hinge loss (used in support-vector classification) results in solutions which are sparse in the data (due to it being zero for f(x)>1
    • ) and is relatively robust to outliers (it grows only linearly for f(x)→−∞
    • ) . It doesn't provide well-calibrated probabilities.
    • the log-loss (used, e.g., in logistic regression) results in well calibrated probabilities. It is thus the loss of choice if you don't want only binary predictions but also probabilities for the outcomes. On the downside, it's solutions are not sparse in the data space and it is more influenced by outliers than the hinge loss.
    • the exponential loss (used in AdaBoost) is very susceptible to outliers (due to its rapid increase when f(x)→−∞
    • ). It is primarily used in AdaBoost since it results there in a simple and efficient boosting algorithm.
    • the perceptron loss is basically a shifted version of the hinge loss. The hinge loss also penalizes points which are on the correct side of the boundary but very close to it (maximum-margin principle). The perceptron loss, on the other hand, is happy as long as a datapoint is on the correct side of the boundary, which leaves the boundary under-determined if the data is truly linearly separable and results in worse generalization than a maximum-margin boundary.

    [Advice for applying Machine Learning]

    几种损失函数的可视化图像

    Note: 横轴表示函数间隔ty = t*(wx + b),纵轴表示损失。

    [https://github.com/JohnLangford/vowpal_wabbit/wiki/Loss-functions]

    from: http://blog.csdn.net/pipisorry/article/details/23538535

    ref: [library_design/losses]

    [http://www.cs.cmu.edu/~yandongl/loss.html]

    [《统计学习方法》 李航]

    [机器学习中的常见问题——损失函数]*

    [机器学习的损失函数 ]

    [机器学习-损失函数]*

    展开全文
  • 机器学习中的目标函数、损失函数、代价函数有什么区别? 首先给出结论:损失函数和代价函数是同一个东西, 目标函数是一个与他们相关但更广的概念,对于目标函数来说在有约束条件下的最小化就是损失函数(loss ...

    机器学习中的目标函数、损失函数、代价函数有什么区别?

    首先给出结论:损失函数和代价函数是同一个东西, 目标函数是一个与他们相关但更广的概念,对于目标函数来说在有约束条件下的最小化就是损失函数(loss function)。

    举个例子解释一下:(图片来自Andrew Ng Machine Learning公开课视频)

     

    上面三个图的函数依次为 f1(x), f2(x), f3(x)。我们是想用这三个函数分别来拟合Price,Price的真实值记为 Y。

    我们给定f(x) ,这三个函数都会输出一个f(x),这个输出的f(x) 与真实值 Y 可能是相同的,也可能是不同的,也可能是不同的,为了表示我们拟合的好坏,我们就用一个函数来度量拟合的程度,比如:

     

    ,这个函数就称为损失函数(loss function),或者叫代价函数(cost function)。损失函数越小,就代表模型拟合的越好。

    那是不是我们的目标就只是让loss function越小越好呢?还不是。

    这个时候还有一个概念叫风险函数(risk function)。风险函数是损失函数的期望,这是由于我们输入输出的(X,Y)遵循一个联合分布,但是这个联合分布是未知的,所以无法计算。但是我们是有历史数据的,就是我们的训练集, f(x)关于训练集的平均损失称作经验风险(empirical risk),

    ,即所以我们的目标就是最小化

    称为经验风险最小化。

    到这里完了吗?还没有。
    如果到这一步就完了的话,那我们看上面的图,那肯定是最右面的f3(x)的经验风险函数最小了,因为它对历史的数据拟合的最好嘛。但是我们从图上来看 f3(x)肯定不是最好的,因为它过度学习历史数据,导致它在真正预测时效果会很不好,这种情况称为过拟合(over-fitting)。

    为什么会造成这种结果?大白话说就是它的函数太复杂了,都有四次方了,这就引出了下面的概念,我们不仅要让经验风险最小化,还要让结构风险最小化。这个时候就定义了一个函数 J(f),这个函数专门用来度量模型的复杂度,在机器学习中也叫正则化(regularization)。常用的有L1,L2 范数。

    到这一步我们就可以说我们最终的优化函数是:

    即最优化经验风险和结构风险,而这个函数就被称为目标函数。

    结合上面的例子来分析:最左面的 f1(x)结构风险最小(模型结构最简单),但是经验风险最大(对历史数据拟合的最差);最右面的 f3(x)经验风险最小(对历史数据拟合的最好),但是结构风险最大(模型结构最复杂);而 f2(x)达到了二者的良好平衡,最适合用来预测未知数据集。

    以上的理解基于Coursera上Andrew Ng的公开课和李航的《统计学习方法》,如有理解错误,欢迎大家指正。




    1. 综述

    损失函数(Loss Function)是用来评估模型好坏程度,即预测值f(x)与真实值的不一致程度,通常表示为L(Y, f(x))的一个非负的浮点数。比如你要做一个线性回归,你拟合出来的曲线不会和原始的数据分布是完全吻合(完全吻合的话,很可能会出现过拟合的情况),这个差距就是用损失函数来衡量。那么损失函数的值越小,模型的鲁棒性也就越好,对新数据的预测能力也就越强。

    通常提到损失函数,我们不得不提到代价函数(Cost Function)及目标函数(Object Function)。

    损失函数(Loss Function) 直接作用于单个样本,用来表达样本的误差

    代价函数(Cost Function)作用于整个训练集,是整个样本集的平均误差,对所有损失函数值的平均

    目标函数(Object Function)是我们最终要优化的函数,也就是代价函数+正则化函数(经验风险+结构风险)

     minJ(\theta )=\frac{1}{n}\sum_{i=1}^{n}L(y_{i}, f(x_{i};\theta)) + \lambda \Phi (\theta )

    其中,第一部分是代价函数,L代表损失函数;第二部分是正则化函数(也可以称为惩罚项),可以试L1,也可以试L2或者其他正则函数。整个表达式是要找到是目标函数最好的值。

    2. 损失函数

    0-1损失函数(0-1 Loss Function)主要用于感知机

    平方损失函数(Quadratic Loss Function)主要用于最小二乘法(OLS)

    绝对值损失函数(Absolute Loss Function)

    对数损失函数(Logarithmic Loss Function,Cross Entropy Loss Function, Softmax Loss Loss Function)主要用于Logistic回归与Softmax分类

    指数损失函数(Exponential Loss Function)主要用于Adaboost集成学习算法

    铰链损失函数(Hinge Loss Function)主要用于支持向量机(SVM)

    2.1 0-1损失函数(0-1 Loss Function)

    L(y,f(x))=\left\{\begin{matrix} 1, y \neq f(x)\\ 0, y = f(x) \end{matrix}\right.

    当预测错误时,损失函数结果为1;当预测正确时,损失函数为0。该预测并不考虑具体的误差程度,直接进行二值化。

    优点:稳定的分类面,不连续,所以不可导,但是次梯度可导

    缺点:二阶不可导,有时候不存在唯一解

    2.2 平方损失函数(Quadratic Loss Function)

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

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

    优点:容易优化(一阶导数连续)

    缺点:对outlier点敏感,得不到最优的分类面

    2.3 绝对值损失函数(Absolute Loss Function)

    L(y, f(x))=|y-f(x)|

    与平方损失函数类似,去实际值与测试值的差值的绝对值,但是不会被放大。

    2.4 对数损失函数(Logarithmic Loss Function)

    L(y, p(y|x)) = -log\ p(y|x)

    对数损失函数用到了极大似然估计的思想。P(Y|X)表示在当前模型上,样本X的预测值为Y的概率,也就是说对于样本X预测正确的概率。由于统计极大似然估计用到概率乘法,为了将其转为假发,对其取对数即可方便展开为加法;由于是损失函数,预测正确的概率应该与损失值成反比,这里对概率取反得到log(\frac{1}{p(y|x)}),转化一下可以得到-log\ p(y|x)

    优点:稳定的分类面,严格凸,且二阶导数连续。

    2.5 指数损失函数(Exponential Loss Function

    L(y,f(x))=e^{-yf(x)}

    学过Adaboost的知道它是前向分步加法算法的特例,是一个加和模型,损失函数就是指数函数。

    2.6 铰链损失函数(Hinge Loss Function)

    L(w, b)=max\begin{Bmatrix} 0,1-yf(x) \end{Bmatrix},其中y=\pm 1f(x)=wx+b

    Hinge Loss function 一般在分类算法使用的分类函数,尤其使用于SVM。

    优点:稳定的分类面,凸函数。可以极大化分类间隔。

    3. 代价函数

    3.1 均方误差(Mean Square Error)

    MSE=\frac{1}{n}\sum_{i=1}^{n}(y_{i}-f(x_{i}))^2

    均方误差是指参数估计值与参数真值之差平方的期望值,MSE用来评估模型的好坏程度,MSE越小说明预测模型精确度越高。

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

    3.2 均方根误差(Root Mean Square Error)

    RMSE=\sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_{i}-f(x_{i}))^2}

    均方根误差是均方的算术平方根,能够直观的观察预测值与真实值直接的差距。

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

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

    MAE=\frac{1}{n}\sum_{i=1}^{n}|y_{i}-f(x_{i})|

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

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

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

    H(p,q)=-\sum_{i=1}^{n}p(x_{i})log\ q(x_{i})

    其中p(x)是真实分布的概率,q(x)是模型通过数据计算出来的概率估计。

    交叉熵是用来评估当前训练得到的概率分布于真实分布的差异情况,减少交叉熵损失就是在提高模型的预测的准确率。

    通常用来作为分类问题的代价函数。

    4. 正则化

    4.1 L1正则化

    L1正则化假设模型的先验概率分布服从拉普拉斯分布;

    \min_{w}E=H(x, w) + \lambda \left \| W \right \|_{2}^{2}

    --求解略复杂;

    --能够得到稀疏解

    4.2 L2正则化

    L2正则化假设模型的先验概率分布服从高斯分布;

    \min_{w}E=H(x,w)+\lambda \left | w \right |

    --简单有效

    --便于求解

    -- 最常用

    5. 选择好的损失函数

    什么样的损失函数时好的损失函数,那么多的损失函数,有没有一定的选择准则?

     minJ(\theta )=\frac{1}{n}\sum_{i=1}^{n}L(y_{i}, f(x_{i};\theta)) + \lambda \Phi (\theta )

    还是需要考虑你的具体要解决的问题及样本情况。可以简单遵循几个准则:

    • L梯度需要有界,鲁棒性要有保障
    • 将L1作为L的渐近线,稳定的分类边界
    • 大分类间隔,保证泛化能力
    • 选择正确的正则化方法(一般选择L2)

    6. 参考文献

    [1] https://www.cnblogs.com/lliuye/p/9549881.html

    [2] https://blog.csdn.net/leo_xu06/article/details/79010218

    [3] https://blog.csdn.net/weixin_37136725/article/details/79291818

     

     

     




    梯度下降实现案例(含python代码)

    2016年02月16日 23:42:07 骆驼算法学习笔记 阅读数:7383

     版权声明:本文为博主原创文章,转载请备注出处,谢谢。 https://blog.csdn.net/l18930738887/article/details/50670370

     

    基础:损失函数的定义,参考http://blog.csdn.net/l18930738887/article/details/50615029

    目标:已知学习样本,求解预测函数的系数,希望损失函数取到最小值。

    一、原理介绍:

    假设我们已知门店销量为

     

    门店数X

    实际销量Y

    1

    13

    2

    14

    3

    20

    4

    21

    5

    25

    6

    30

    我们如何预测门店数X与Y的关系式呢?假设我们设定为线性:Y=a0+a1X

    接下来我们如何使用已知数据预测参数a0和a1呢?这里就是用了梯度下降法:

    左侧就是梯度下降法的核心内容,右侧第一个公式为假设函数,第二个公式为损失函数。

    其中 表示假设函数的系数,为学习率。

    对我们之前的线性回归问题运用梯度下降法,关键在于求出代价函数的导数,即:

    直观的表示,如下:

    (取自斯坦福大学机器学习)

    二、python代码实现:(以下代码是鲁棒性不高,可以看神经网络的梯度下降http://blog.csdn.net/l18930738887/article/details/50724478。)

    
    import sys
    #Training data set
    #each element in x represents (x1)
    x = [1,2,3,4,5,6]
    #y[i] is the output of y = theta0+ theta1 * x[1]
    y = [13,14,20,21,25,30]
    #设置允许误差值
    epsilon = 1
    #学习率
    alpha = 0.01
    diff = [0,0]
    max_itor = 20
    error1 = 0
    error0 =0
    cnt = 0
    m = len(x)
    #init the parameters to zero
    theta0 = 0
    theta1 = 0
    while 1:
    	cnt=cnt+1
    	diff = [0,0]
    	for i in range(m):
    		diff[0]+=theta0+ theta1 * x[i]-y[i]
    		diff[1]+=(theta0+theta1*x[i]-y[i])*x[i]
    	theta0=theta0-alpha/m*diff[0]
    	theta1=theta1-alpha/m*diff[1]
    	error1=0
    	for i in range(m):
    		error1+=(theta0+theta1*x[i]-y[i])**2
    	if abs(error1-error0)< epsilon:
    		break
    	print'theta0 :%f,theta1 :%f,error:%f'%(theta0,theta1,error1)
    	if cnt>20:
    		print 'cnt>20'
    		break
    print'theta0 :%f,theta1 :%f,error:%f'%(theta0,theta1,error1)
    --------------------- 
    作者:骆驼算法学习笔记 
    来源:CSDN 
    原文:https://blog.csdn.net/l18930738887/article/details/50670370 
    版权声明:本文为博主原创文章,转载请附上博文链接!

     

     

     

     

    结果现实:

    <pre style="box-sizing: border-box; overflow: auto; font-size: 14px; padding: 0px; margin-top: 0px; margin-bottom: 0px; line-height: 17.0001px; word-break: break-all; word-wrap: break-word; border: 0px; border-radius: 0px; white-space: pre-wrap; vertical-align: baseline; background-color: rgb(255, 255, 255);"><pre name="code" class="plain">theta0 :0.205000,theta1 :0.816667,error:1948.212261
    theta0 :0.379367,theta1 :1.502297,error:1395.602361
    theta0 :0.527993,theta1 :2.077838,error:1005.467313
    theta0 :0.654988,theta1 :2.560886,error:730.017909
    theta0 :0.763807,theta1 :2.966227,error:535.521394
    theta0 :0.857351,theta1 :3.306283,error:398.166976
    theta0 :0.938058,theta1 :3.591489,error:301.147437
    theta0 :1.007975,theta1 :3.830615,error:232.599138
    theta0 :1.068824,theta1 :4.031026,error:184.147948
    theta0 :1.122050,theta1 :4.198911,error:149.882851
    theta0 :1.168868,theta1 :4.339471,error:125.631467
    theta0 :1.210297,theta1 :4.457074,error:108.448654
    theta0 :1.247197,theta1 :4.555391,error:96.255537
    theta0 :1.280286,theta1 :4.637505,error:87.584709
    theta0 :1.310171,theta1 :4.706007,error:81.400378
    theta0 :1.337359,theta1 :4.763073,error:76.971413
    theta0 :1.362278,theta1 :4.810533,error:73.781731
    theta0 :1.385286,theta1 :4.849922,error:71.467048
    theta0 :1.406686,theta1 :4.882532,error:69.770228
    theta0 :1.426731,theta1 :4.909448,error:68.509764
    theta0 :1.445633,theta1 :4.931579,error:67.557539
    cnt>20
    theta0 :1.445633,theta1 :4.931579,error:67.557539

     

     

     
     


    可以看到学习率在0.01时,error会正常下降。图形如下:(第一张图是学习率小的时候,第二张图就是学习率较大的时候)

     


     

    所以我们再调整一下新的学习率看看是否能看到第二张图:

    我们将学习率调整成了0.3的时候得到以下结果:

     

    theta0 :6.150000,theta1 :24.500000,error:38386.135000
    theta0 :-15.270000,theta1 :-68.932500,error:552053.226569
    theta0 :67.840125,theta1 :285.243875,error:7950988.401277
    theta0 :-245.867981,theta1 :-1059.347887,error:114525223.507401
    theta0 :946.357695,theta1 :4043.346381,error:1649619133.261223
    theta0 :-3576.913313,theta1 :-15323.055232,error:23761091159.680252
    theta0 :13591.518674,theta1 :58177.105053,error:342254436006.869995
    theta0 :-51565.747234,theta1 :-220775.317546,error:4929828278909.234375
    theta0 :195724.210360,theta1 :837920.911885,error:71009180027939.656250
    theta0 :-742803.860227,theta1 :-3180105.158068,error:1022815271242165.875000
    theta0 :2819153.863813,theta1 :12069341.864380,error:14732617369683060.000000
    theta0 :-10699395.102930,theta1 :-45806250.675551,error:212208421856953728.000000
    theta0 :40606992.787278,theta1 :173846579.256281,error:3056647245837464576.000000
    theta0 :-154114007.118001,theta1 :-659792674.286440,error:44027905696333684736.000000
    theta0 :584902509.168162,theta1 :2504083725.690765,error:634177359734604038144.000000
    theta0 :-2219856149.407590,theta1 :-9503644836.328783,error:9134682134868024885248.000000
    theta0 :8424927779.709908,theta1 :36068788150.345154,error:131575838248146814631936.000000
    theta0 :-31974778105.915466,theta1 :-136890372077.920685,error:1895216599231190653730816.000000
    theta0 :121352546013.825867,theta1 :519534337912.329712,error:27298674329760760684609536.000000
    theta0 :-460564272592.117981,theta1 :-1971767072878.787598,error:393209736799816196514906112.000000
    theta0 :1747960435714.394287,theta1 :7483365594965.919922,error:5663787744653302294061776896.000000
    cnt>20
    theta0 :1747960435714.394287,theta1 :7483365594965.919922,error:5663787744653302294061776896.000000

    可以看到theta0和theta1都在跳跃,与预期相符。

     

    上文使用的是批量梯度下降法,如遇到大型数据集的时候这种算法非常缓慢,因为每次迭代都需要学习全部数据集,后续推出了随机梯度下降,其实也就是抽样学习的概念。

     




    机器学习经典损失函数比较

    胡薇 发表于 2018-06-13 17:53:53

    将门创投

    +关注

    所有的机器学习算法都或多或少的依赖于对目标函数最大化或者最小化的过程。我们常常将最小化的函数称为损失函数,它主要用于衡量模型的预测能力。在寻找最小值的过程中,我们最常用的方法是梯度下降法,这种方法很像从山顶下降到山谷最低点的过程。

    虽然损失函数描述了模型的优劣为我们提供了优化的方向,但却不存在一个放之四海皆准的损失函数。损失函数的选取依赖于参数的数量、局外点、机器学习算法、梯度下降的效率、导数求取的难易和预测的置信度等方面。这篇文章将介绍各种不同的损失函数,并帮助我们理解每种函数的优劣和适用范围。

    由于机器学习的任务不同,损失函数一般分为分类和回归两类,回归会预测给出一个数值结果而分类则会给出一个标签。这篇文章主要集中于回归损失函数的分析。

    1.均方误差、平方损失——L2损失

    均方误差(MSE)是回归损失函数中最常用的误差,它是预测值与目标值之间差值的平方和,其公式如下所示:

    下图是均方根误差值的曲线分布,其中最小值为预测值为目标值的位置。我们可以看到随着误差的增加损失函数增加的更为迅猛。

    2.平均绝对误差——L1损失函数

    平均绝对误差(MAE)也是一种常用的回归损失函数,它是目标值与预测值之差绝对值的和,表示了预测值的平均误差幅度,而不需要考虑误差的方向(注:平均偏差误差MBE则是考虑的方向的误差,是残差的和),其公式如下所示:

    平均绝对误差和均方误差(L1&L2)比较

    通常来说,利用均方差更容易求解,但平方绝对误差则对于局外点更鲁棒,下面让我们对这两种损失函数进行具体的分析。

    无论哪一种机器学习模型,目标都是找到能使目标函数最小的点。在最小值处每一种损失函数都会得到最小值。但哪种是更好的指标呢?让我们用具体例子看一下,下图是均方根误差和平均绝对误差的比较(其中均方根误差的目的是与平均绝对误差在量级上统一):

    左边的图中预测值与目标值很接近,误差与方差都很小,而右边的图中由于局外点的存在使得误差变得很大。

    由于均方误差(MSE)在误差较大点时的损失远大于平均绝对误差(MAE),它会给局外点赋予更大的权重,模型会致力减小局外点造成的误差,从而使得模型的整体表现下降。

    所以当训练数据中含有较多的局外点时,平均绝对误差(MAE)更为有效。当我们对所有观测值进行处理时,如果利用MSE进行优化则我们会得到所有观测的均值,而使用MAE则能得到所有观测的中值。与均值相比,中值对于局外点的鲁棒性更好,这就意味着平均绝对误差对于局外点有着比均方误差更好的鲁棒性。

    但MAE也存在一个问题,特别是对于神经网络来说,它的梯度在极值点处会有很大的跃变,及时很小的损失值也会长生很大的误差,这不利于学习过程。为了解决这个问题,需要在解决极值点的过程中动态减小学习率。MSE在极值点却有着良好的特性,及时在固定学习率下也能收敛。MSE的梯度随着损失函数的减小而减小,这一特性使得它在最后的训练过程中能得到更精确的结果。

    在实际训练过程中,如果局外点对于实际业务十分重要需要进行检测,MSE是更好的选择,而如果在局外点极有可能是坏点的情况下MAE则会带来更好的结果。(注:L1和L2一般情况下与MAE和MSE性质相同)

    总结:L1损失对于局外点更鲁棒,但它的导数不连续使得寻找最优解的过程低效;L2损失对于局外点敏感,但在优化过程中更为稳定和准确。

    但现实中还存在两种损失都很难处理的问题。例如某个任务中90%的数据都符合目标值——150,而其余的10%数据取值则在0-30之间。那么利用MAE优化的模型将会得到150的预测值而忽略的剩下的10%(倾向于中值);而对于MSE来说由于局外点会带来很大的损失,将使得模型倾向于在0-30的方向取值。这两种结果在实际的业务场景中都是我们不希望看到的。

    那怎么办呢?

    让我们来看看其他的损失函数吧!

    3.Huber损失——平滑平均绝对误差

    Huber损失相比于平方损失来说对于局外点不敏感,但它同样保持了可微的特性。它基于绝对误差但在误差很小的时候变成了平方误差。我们可以使用超参数δ来调节这一误差的阈值。当δ趋向于0时它就退化成了MAE,而当δ趋向于无穷时则退化为了MSE,其表达式如下,是一个连续可微的分段函数:

    对于Huber损失来说,δ的选择十分重要,它决定了模型处理局外点的行为。当残差大于δ时使用L1损失,很小时则使用更为合适的L2损失来进行优化。

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

    但Huber损失函数的良好表现得益于精心训练的超参数δ。

    4.Log-Cosh损失函数

    对数双曲余弦是一种比L2更为平滑的损失函数,利用双曲余弦来计算预测误差:

    其优点在于对于很小的误差来说log(cosh(x))与(x**2)/2很相近,而对于很大的误差则与abs(x)-log2很相近。这意味着logcosh损失函数可以在拥有MSE优点的同时也不会受到局外点的太多影响。它拥有Huber的所有优点,并且在每一个点都是二次可导的。二次可导在很多机器学习模型中是十分必要的,例如使用牛顿法的XGBoost优化模型(Hessian矩阵)。

    但是Log-cosh损失并不是完美无缺的,它还是会在很大误差的情况下梯度和hessian变成了常数。

    5.分位数损失(Quantile Loss)

    在大多数真实世界的预测问题中,我们常常希望得到我们预测结果的不确定度。通过预测出一个取值区间而不是一个个具体的取值点对于具体业务流程中的决策至关重要。

    分位数损失函数在我们需要预测结果的取值区间时是一个特别有用的工具。通常情况下我们利用最小二乘回归来预测取值区间主要基于这样的假设:取值残差的方差是常数。但很多时候对于线性模型是不满足的。这时候就需要分位数损失函数和分位数回归来拯救回归模型了。它对于预测的区间十分敏感,即使在非常数非均匀分布的残差下也能保持良好的性能。下面让我们用两个例子看看分位数损失在异方差数据下的回归表现。

    上图是两种不同的数据分布,其中左图是残差的方差为常数的情况,而右图则是残差的方差变化的情况。我们利用正常的最小二乘对上述两种情况进行了估计,其中橙色线为建模的结果。但是我们却无法得到取值的区间范围,这时候就需要分位数损失函数来提供。

    上图中上下两条虚线基于0.05和0.95的分位数损失得到的取值区间。从图中可以清晰地看到建模后预测值得取值范围。分位数回归的目标在于估计给定预测值的条件分位数。实际上分位数回归就是平均绝对误差的一种拓展(当分位数为第50个百分位时其值就是平均绝对误差)

    分位数值得选择在于我们是否希望让正的或者负的误差发挥更大的价值。损失函数会基于分位数γ对过拟合和欠拟合的施加不同的惩罚。例如选取γ为0.25时意味着将要惩罚更多的过拟合而尽量保持稍小于中值的预测值。γ的取值通常在0-1之间,图中描述了不同分位数下的损失函数情况,明显可以看到对于正负误差不平衡的状态。

    我们可以利用分位数损失函数来计算出神经网络或者树状模型的区间。下图是计算出基于梯度提升树回归器的取值区间。90%的预测值起上下边界分别是用γ值为0.95和0.05计算得到的。

    在文章的最后,我们利用sinc(x)模拟的数据来对不同损失函数的性能进行了比较。在原始数据的基础上加入而高斯噪声和脉冲噪声(为了描述鲁棒性)。下图是GBM回归器利用不同的损失函数得到的结果,其中ABCD图分别是MSE,MAE,Huber,Quantile损失函数的结果:

    我们可以看到MAE损失函数的预测值受到冲击噪声的影响更小,而MSE则有一定的偏差;Huber损失函数对于超参数的选取不敏感,同时分位数损失在对应的置信区间内给出了较好的估计结果。

    希望小伙伴们能从这篇文章中更深入地理解损失函数,并在未来的工作中选择合适的函数来更好更快地完成工作任务。

    最后,附上本文中几种损失函数的简图,回味一番:

    展开全文
  • 损失函数综述

    千次阅读 2018-05-06 20:04:59
    损失函数(loss function)又叫做代价函数(cost function),是用来评估模型的预测值与真实值不一致的程度,也是神经网络中优化的目标函数,神经网络训练或者优化的过程就是最小化损失函数的过程,损失函数越小,...

    损失函数(loss function)又叫做代价函数(cost function),是用来评估模型的预测值与真实值不一致的程度,也是神经网络中优化的目标函数,神经网络训练或者优化的过程就是最小化损失函数的过程,损失函数越小,说明模型的预测值就越接近真是值,模型的健壮性也就越好。

    常见的损失函数有以下几种:

    (1) 0-1损失函数(0-1 lossfunction):

    0-1损失函数是最为简单的一种损失函数,多适用于分类问题中,如果预测值与目标值不相等,说明预测错误,输出值为1;如果预测值与目标值相同,说明预测正确,输出为0,言外之意没有损失。其数学公式可表示为:

    由于0-1损失函数过于理想化、严格化,且数学性质不是很好,难以优化,所以在实际问题中,我们经常会用以下的损失函数进行代替。

    (2)感知损失函数(Perceptron Loss):
    感知损失函数是对0-1损失函数的改进,它并不会像0-1损失函数那样严格,哪怕预测值为0.99,真实值为1,都会认为是错误的;而是给一个误差区间,只要在误差区间内,就认为是正确的。其数学公式可表示为:

    (3)平方损失函数(quadratic loss function):

    顾名思义,平方损失函数是指预测值与真实值差值的平方。损失越大,说明预测值与真实值的差值越大。平方损失函数多用于线性回归任务中,其数学公式为:

    接下来,我们延伸到样本个数为N的情况,此时的平方损失函数为:

    (4)Hinge损失函数(hinge loss function):

    Hinge损失函数通常适用于二分类的场景中,可以用来解决间隔最大化的问题,常应用于著名的SVM算法中。其数学公式为:

    其中在上式中,t是目标值{-1,+1},y为预测值的输出,取值范围在(-1,1)之间。

    (5)对数损失函数(Log Loss):

    对数损失函数也是常见的一种损失函数,常用于逻辑回归问题中,其标准形式为:

    上式中,y为已知分类的类别,x为样本值,我们需要让概率p(y|x)达到最大值,也就是说我们要求一个参数值,使得输出的目前这组数据的概率值最大。因为概率P(Y|X)的取值范围为[0,1],log(x)函数在区间[0,1]的取值为负数,所以为了保证损失值为正数要在log函数前加负号。

    (6)交叉熵损失函数(cross-entropy loss function):

    交叉熵损失函数本质上也是一种对数损失函数,常用于多分类问题中。其数学公式为:

    注意:公式中的x表示样本,y代表预测的输出,a为实际输出,n表示样本总数量。交叉熵损失函数常用于当sigmoid函数作为激活函数的情景,因为它可以完美解决平方损失函数权重更新过慢的问题。

    以上为大家介绍了较为常见的一些损失函数以及使用场景。接下来的文章中会结合经典的实例——MNIST手写数字识别,为大家讲解如何在深度学习实际的项目中运用激活函数、损失函数。

     

     

    展开全文
  • 常见的损失函数

    2019-04-20 10:46:54
    1 损失函数的一般形式    通常机器学习每一个算法中都会有一个目标函数,算法的求解过程是通过对这个目标函数优化的过程。在分类或者回归问题中,通常使用损失函数(代价函数)作为其目标函数。损失函数用来评价...
  • 理解Hinge Loss (折页损失函数、...Hinge Loss是机器学习领域中的一种损失函数,可用于“最大间隔(max-margin)”分类,其最著名的应用是作为SVM的目标函数。 在二分类情况下,公式如下: L(y) =max(0 , 1 –t⋅...
  • SVM损失函数

    2019-11-11 19:45:50
    损失函数 最大间隔最大间隔作为衡量一条决策边界的好还的原因是,如果一条决策边界有最大间隔,那么这条决策边界就具有很好的鲁棒性,相当于增加了一个缓冲地带,再来一个数据集我可以很从容的包容你进行分类不...
  • 文章目录1 激活函数1.1 线性函数1.2 Sigmoid函数1.3 双曲正切函数1.4 ReLU函数1.5 Softmax函数1.6 激活函数的选择2 损失函数2.1 损失函数定义2.2 回归损失函数(1) 均方误差损失函数2.3 分类损失函数2.4...
  • 损失函数分类

    2020-06-17 19:54:59
    损失函数 机器学习模型关于单个样本的预测值与真实值的差称为损失。损失越小,模型越好,如果预测值与真实值相等,就是没有损失。 损失函数(Loss function)是用来估量模型的预测值 f(x) 与真实值 Y 的不一致程度...
  • 一、摘要本文主要总结一下常见的损失函数,包括:MSE均方误差损失函数、SVM合页损失函数、Cross Entropy交叉熵损失函数、目标检测中常用的Smooth L1损失函数。其中还会涉及到梯度消失、梯度爆炸等问题:ESM均方误差+...
  • sklearn 损失函数

    千次阅读 2018-07-22 17:16:33
    各种损失函数 损失函数或代价函数来度量给定的模型(一次)预测不一致的程度 损失函数的一般形式: 风险函数:度量平均意义下模型预测结果的好坏 损失函数分类: Zero-one Loss,Square Loss,Hinge Loss,...
  • 目标函数,损失函数和代价函数 基本概念: 损失函数:计算的是一个样本的误差 代价函数:是整个训练集上所有样本误差的平均 目标函数:代价函数 + 正则化项 通常机器学习每一个算法中都会有一个目标函数,算法...
  • 常用的损失函数

    千次阅读 2018-11-19 13:30:50
    然后又分别对这两类进行了细分和讲解,其中回归中包含了一种不太常见的损失函数:平均偏差误差,可以用来确定模型中存在正偏差还是负偏差。 从学习任务的类型出发,可以从广义上将损失函数分为两大类——回归损失和...
  • 机器学习中的损失函数

    千次阅读 2017-03-01 23:40:38
    平方损失函数 对数损失函数 Hinge损失函数
  • 损失函数的选择

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

    万次阅读 多人点赞 2018-05-27 11:01:58
    一、摘要本文主要总结一下常见的损失函数,包括:MSE均方误差损失函数、SVM合页损失函数、Cross Entropy交叉熵损失函数、目标检测中常用的Smooth L1损失函数。其中还会涉及到梯度消失、梯度爆炸等问题:ESM均方误差+...
  • 回归模型常见的损失函数

    千次阅读 2019-05-21 01:17:44
    最小化的函数组称为“损失函数”。损失函数是衡量预测模型在能够预测预期结果方面的表现有多好的指标。寻找最小值的最常用方法是“梯度下降”。想想这个函数的作用,如起伏的山脉和梯度下降就像滑下山到达最低点。 ...
  • svm损失函数,Hinge损失合页损失

    千次阅读 2019-07-25 22:22:37
    Hinge Loss是机器学习领域中的一种损失函数,可用于“最大间隔(max-margin)”分类,其最著名的应用是作为SVM的目标函数。 在二分类情况下,公式如下: L(y) =max(0 , 1 –t⋅y) 其中,y是预测值(-1到1之间),t...
  • 机器学习中常见的损失函数

    万次阅读 多人点赞 2016-09-07 19:16:56
    机器学习中常见的损失函数   一般来说,我们在进行机器学习任务时,使用的每一个算法都有一个目标函数,算法便是对这个目标函数进行优化,特别是在分类或者回归任务中,便是使用损失函数(Loss Function)作为其...
  • 机器学习-损失函数

    2019-09-30 00:55:24
    常用的损失函数有:0-1 损失函数,合页损失函数,对数损失函数,平方损失函数,绝对损失函数,Huber 损失函数等。下面分别介绍几个损失函数。 0-1 损失函数 对于二分类问题,希望分类器输出的值与样本真实值一致,...
  • 神经翻译笔记2扩展a. 损失函数

    千次阅读 2019-04-12 16:22:29
    损失函数针对回归问题的损失函数均方误差函数平均绝对值误差函数Huber loss关于回归问题的损失函数小结针对分类问题的损失函数交叉熵损失函数概述Softmax交叉熵损失函数Sigmoid交叉熵损失函数铰链损失函数(hinge ...
  • 前两篇关于SVM的讨论中,我们只讨论了样本在原始空间和特征空间中线性可分的情况,但是,现实不可能这么完美,就算真的被找到了,但是世上没有免费的午餐,最后的结果很可能过拟合了。...软间隔 有软便有硬,...
  • 合页损失函数的理解

    2020-06-07 10:08:36
    在学习支持向量机的过程中,我们知道其损失函数为合页损失函数。至于为什么叫这个名字,李航老师的《统计学习方法》上是这么说的:由于函数形状像一个合页,故命合页损失函数。下图为合页损失函数的图像(取自《统计...
  • 本文打算讨论在深度学习中常用的十余种损失函数,结合PyTorch和TensorFlow2对其概念、公式及用途进行阐述,希望能达到看过的伙伴对各种损失函数有个大致的了解以及使用。本文对原理只是浅尝辄止,不进行深挖,感兴趣...
  • 机器学习的损失函数

    千次阅读 2017-02-27 11:10:55
    机器学习的数学本质上是优化问题的求解,求解优化问题首先得构造相应优化问题的损失函数,本文将简要介绍squared loss、cross entropy、hinge loss、exponential loss损失函数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,484
精华内容 5,793
关键字:

最大间隔损失函数