
http://blog.csdn.net/pipisorry/article/details/23538535logitslogits就是神经网络模型中的 W * X矩阵注意不需要经过sigmoid即为未通过激活函数的原始输出。Tensorflow with logit: The input_vector/logit is not normalized and can scale from [-inf, inf]. [如何理解深度学习源码里经常出现的logits]监督学习及其目标函数损失函数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或者其他的正则函数。规则项参考[最优化方法范数和规则化regularization]。整个式子表示的意思是找到使目标函数最小时的θ值。机器学习的大部分带参模型都和这个不但形似而且神似其实大部分无非就是变换这两项而已。损失函数/loss函数不同的loss函数具有不同的拟合特性。对于第一项Loss函数如果是Square loss那就是最小二乘如果是Hinge Loss那就是著名的SVM如果是exp-Loss那就是 Boosting如果是log-Loss那就是Logistic Regression等等。loss函数一般都是通过mle推导出来的。使用最大似然来导出代价函数的方法的一个优势是它减轻了为每个模型设计代价函数的负担。明确一个模型p(y | x)则自动地确定了一个代价函数log p(y | x)。[深度学习]Note: lz: Loss functions一般指一个样本的而cost functions指N个样本的。但是有时是混用的。皮皮blog回归问题的损失函数回归模型中的三种损失函数包括均方误差Mean Square Error、平均绝对误差Mean Absolute ErrorMAE、Huber Loss。平方损失函数最小二乘法, Ordinary Least Squares 最小二乘法是线性回归的一种OLS将问题转化成了一个凸优化问题。在线性回归中它假设样本和噪声都服从高斯分布根据中心极限定理最后通过极大似然估计MLE可以推导出最小二乘式子即平方损失函数可以通过线性回归在假设样本是高斯分布的条件下推导得到。最小二乘的基本原则是最优拟合直线应该是使各点到回归直线的距离和最小的直线即平方和最小。换言之OLS是基于距离的而这个距离就是我们用的最多的欧几里得距离。选择使用欧式距离作为误差度量呢即Mean squared error MSE主要是因为简单计算方便欧氏距离是一种很好的相似性度量标准在不同的表示域变换后特征性质不变。MSE的优缺点优点MSE 曲线的特点是光滑连续、可导便于使用梯度下降算法是比较常用的一种损失函数。而且MSE 随着误差的减小梯度也在减小这有利于函数的收敛即使固定学习因子函数也能较快取得最小值。缺点如果样本中存在离群点MSE 会给离群点赋予更高的权重但是却是以牺牲其他正常数据点的预测效果为代价这最终会降低模型的整体性能。即使用 MSE 损失函数受离群点的影响较大。平方损失Square loss的标准形式当样本个数为n时此时的损失函数变为Y-f(X)表示的是残差而我们的目的就是最小化目标函数值也就是最小化残差的平方和residual sum of squaresRSS。而在实际应用中通常会使用均方差MSE作为一项衡量指标即MSE1/n*L。上面提到了线性回归这里额外补充一句我们通常说的线性有两种情况一种是因变量y是自变量x的线性函数一种是因变量y是参数α的线性函数。在机器学习中通常指的都是后一种情况。最小二乘法解线性回归解上面的纯属回归也有解析方法直接通过数学求解参数值。首先构建Design matrixNote: 用这种方法时不需要feature scaling。[Linear Regression with Multiple Variables多变量线性规划 (Week 2) ]最小二乘解[矩阵分析与应用-张]绝对值损失函数平均绝对误差Mean Absolute ErrorMAE平均绝对误差指的就是模型预测值 f(x) 与样本真实值 y 之间距离的平均值。其公式如下所示损失函数的图形MAE优缺点MAE 的曲线呈 V 字型连续但在 y-f(x)0 处不可导计算机求解导数比较困难。而且 MAE 大部分情况下梯度都是相等的这意味着即使对于小的损失值其梯度也是大的。这不利于函数的收敛和模型的学习。优点就是 MAE 对离群点不那么敏感更有包容性。因为 MAE 计算的是误差 y-f(x) 的绝对值无论是 y-f(x)1 还是 y-f(x)1没有平方项的作用惩罚力度都是一样的所占权重一样。选择 MSE 还是 MAE 呢实际应用中我们应该选择 MSE 还是 MAE 呢从计算机求解梯度的复杂度来说MSE 要优于 MAE而且梯度也是动态变化的能较快准确达到收敛。但是从离群点角度来看如果离群点是实际数据或重要数据而且是应该被检测到的异常值那么我们应该使用MSE。另一方面离群点仅仅代表数据损坏或者错误采样无须给予过多关注那么我们应该选择MAE作为损失。Huber LossHuber Loss 是对二者的综合包含了一个超参数 δ。δ 值的大小决定了 Huber Loss 对 MSE 和 MAE 的侧重性当 |y−f(x)| ≤ δ 时变为 MSE当 |y−f(x)| δ 时则变成类似于 MAE因此 Huber Loss 同时具备了 MSE 和 MAE 的优点减小了对离群点的敏感度问题实现了处处可导的功能。Huber Loss优缺点Huber Loss 在 |y−f(x)| δ 时梯度一直近似为 δ能够保证模型以一个较快的速度更新参数。当 |y−f(x)| ≤ δ 时梯度逐渐减小能够保证模型更精确地得到全局最优值使用 Huber Loss 作为激活函数对离群点仍然有很好的抗干扰性这一点比 MSE 强。[机器学习大牛是如何选择回归损失函数的]methodLoss 形式优点缺点maemae梯度稳定单 head 建模多峰困难存在不可导点msemse(pred, label)直接衡量预测与真实之间的差异单 head 建模多峰困难容易引起梯度爆炸mse(pred, pow(label, 0.3))拟合平滑后的分布缓解梯度爆炸单 head 建模多峰困难放大预估偏差mse(pred, log(label, 0.3))拟合平滑后的分布缓解梯度爆炸单 head 建模多峰困难放大预估偏差softmax常规 softmax分类任务较回归任务易学习拟合多峰缓解样本 dominating缺失 label 之间大小关系分类边界存在一定误差stacking softmaxcoarse to fine 进一步缓解样本不均衡/多峰问题distill-softmax软化 label 提供序关系gumbel-softmaxargmax 引入序信息越靠近 label预估概率越大有序回归$$dis\_log\_loss\sum_{i1}^{in}{cross\_entropy(p_i, y_i)}$$$$pred\_ecpm \sum_{i1}^{in}{pi * (t_i-t_{i-1})}$$$$dis\_mse\_lossmse(pred\_ecpm, ecpm)$$二分类预测大于桶边界引入序信息多个二分类拟合多峰wceweighted log loss原始空间预估无偏难以拟合多峰低估/高估梯度差异大rank loss$$R_{ij} ||(\log y_i - \log y_j) - (\log z_i - \log z_j)||^2$$辅助 loss 引入序信息huber loss$$NewHuberLoss_{\delta,C}\begin{cases} \frac{C}{2\cdot label}(pred-label)^{2}, if \frac{\left| pred-label\right|}{label}\delta \\ C\delta \left | pred-label\right | - \frac{C\delta^{2}label}{2}, if \frac{\left| pred-label\right|}{label}\delta \end{cases}$$基于相对预估偏差截断梯度避免异常梯度tweedie$$Tweedie loss \frac{1}{N}\sum^N_i{-(y_i\frac{\mu^{1-\rho}_i}{1-\rho} - \frac{\mu^{2-\rho}_i}{2-\rho}})\\ log(\mu_i) F(x_i)$$贴合多峰分布GMM贴合多峰分布TPM树形多层分类拟合多峰皮皮blog分类问题的损失函数point wiseMSE、MAE当然前面回归模型的loss函数如MSE、MAE也是可以用在分类上的只是一个截断的MSE、MAE。log对数损失函数逻辑回归log损失的基本形式为log(1exp(−m))在逻辑回归的推导中它假设样本服从伯努利分布0-1分布然后求得满足该分布的似然函数接着取对数求极值等。但是逻辑回归并没有求似然函数的极值而是把极大化当做是一种思想进而推导出它的经验风险函数为最小化负的似然函数即max F(y, f(x)) —- min -F(y, f(x)))。从损失函数的视角来看它就成了log损失函数了。Log损失log(1exp(−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(y∣x;w)σ(wTx)^y *(1−σ(wTx))^(1−y)为了求解其中的参数w通常使用极大似然估计的方法。log loss推导过程如下1、似然函数其中σ(x)1/(1exp(−x)2、log似然3、需要求解的是使得log似然取得最大值的w。将其改变为最小值可以得到如下的形式即J(θ)或者[log损失与交叉熵的等价性]logistic的损失函数表达式蓝色线代表logistic regression 紫洋红色线代表SVMPDF参考一下Lecture 6: logistic regression.pdf。[Sigmod/Softmax变换_sigmoid求原函数-CSDN博客]交叉熵损失函数Cross-Entropy单样本交叉熵其中 C为类的数目 yi , j为第 i 个样本在第 j 类上的真实标签pi , j为第 i 个样本对第 j 类的预测概率。实际上只有当前样本对应的类计算出来是有值的其他项都是0扩展到多分类任务也一样。所以公式可以简化为这里用Y(i)来指示第 i 个样本所属的类别 pi,Y(i) 代表第 i 个样本在其所属类别上的预测概率。batch交叉熵n为batch size。仅二分类的交叉熵展开形式单个样本label1时的图像可以看出该函数是凸函数求导时能够得到全局最优值。[损失函数交叉熵损失函数]tf实现z * -log(sigmoid(x)) (1 - z) * -log(1 - sigmoid(x))实际计算优化后等价于max(x, 0) - x * z log(1 exp(-abs(x)))[TensorFlow交叉熵损失函数_tensorflow交叉熵损失-CSDN博客]为什么分类函数要用交叉熵交叉熵和熵的关系[北大旁听 - 深入Loss Function的来源][03.2 交叉熵损失函数]softmaxloss[]NTPNext Token Prediction损失主要针对序列预测问题如使用transformer decoder输出预测下一个token。模型输出的不是单一答案而是一串“可能性”——「饭 30%」「面 25%」「苹果 5%」……交叉熵会比较真实答案在这串可能性里的概率有多高如果真实答案概率给得越高越接近 1损失越小 给得越低接近 0损失越大。公式直观地说就是 “把真实答案的概率做负对数越小越好”。[https://zhuanlan.zhihu.com/p/1919400191104100247]皮皮blog合页损失函数Hinge LossSVMSVM的损失函数是hinge损失函数。在线性支持向量机中最优化问题可以等价于下列式子下面来对式子做个变形令于是原式就变成了如若取λ12C式子就可以表示成可以看出该式子与下式非常相似前半部分中的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核。[functions - How do you minimize hinge-loss? - Mathematics Stack Exchange]感知损失感知机算法感知损失是Hinge损失的一个变种感知损失的具体形式如下max(0,−m) 。运用感知损失的典型分类器是感知机算法。感知机算法的损失函数感知机算法只需要对每个样本判断其是否分类正确只记录分类错误的样本其损失函数为minw,b[−∑i1ny(i)(wTx(i)b)]两者的等价对于感知损失max(0,−m)或者表示为[ - t(wx b) ]优化的目标为minw[∑i1nmax(0,−fw(x(i))y(i))]在上述的函数fw(x(i))中引入截距b即fw,γ(x(i))wTx(i)b上述的形式转变为minw,b[∑i1nmax(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ξ[∑i1nξi]即为minw,b[−∑i1ny(i)(wTx(i)b)]Hinge损失对于判定边界附近的点的惩罚力度较高而感知损失只要样本的类别判定正确即可而不需要其离判定边界的距离这样的变化使得其比Hinge损失简单但是泛化能力没有Hinge损失强。指数损失函数Adaboost学过Adaboost算法的人都知道它是前向分步加法算法的特例是一个加和模型损失函数就是指数函数。在Adaboost中经过m此迭代之后可以得到fm(x) :Adaboost每次迭代时的目的是为了找到最小化下列式子时的参数α和G指数损失函数(exp-loss的标准形式lz感觉就像是soft版本的hinge loss可以看出Adaboost的目标式子就是指数损失在给定n个样本的情况下Adaboost的损失函数为Note: 为什么adaboost的loss是指数损失假设是指数损失最小化f^t1第一个公式求alpha_m的值刚好就是adaboost中alpha_m更新方式。在AdaBoost中数据权重的更新方式为u(t1)nu(t1)nu(T1)n∑n1Nu(T1)nu(t)n◊−yngt(xn)u(t)nexp(−ynαtgt(xn))1Nexp(−yn∑t1Tαtgt(xn))1N∑n1Nexp(−yn∑t1Tαtgt(xn))AdaBoost的训练的目标就是减少∑Nn1u(T1)n因此其风险函数为1N∑n1Nexp(−yn∑t1Tαtgt(xn))关于Adaboost的推导可以参考WikipediaAdaBoost或者《统计学习方法》P145。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。在分类问题中可以使用函数的正负号来进行模式判断函数值本身的大小并不是很重要0-1损失函数比较的是预测值fw(x(i))与真实值y(i)的符号是否相同0-1损失的具体形式如下L01(m){0 ifm⩾0 ;1 ifm0}以上的函数等价于下述的函数12(1−sign(m))0-1损失并不依赖m值的大小只取决于m的正负号。带噪学习|不完美场景下的损失函数设计 loss function 的思路GCE损失Generalized Cross Entropy LossAAAI2017 Robust Loss Functions under Label Noise for Deep Neural Networks已经证明选取mean absolute error (MAE)可以有效抑制噪声数据但MAE存在收敛速度慢、训练困难的问题。即MAE 以均等分配的方式处理各个 sample而 CEcross entropy会向识别困难的 sample 倾斜这也是CCE相比MAE训练速度更快的原因因此针对 noisy labelMAE 比 CE 更加鲁棒但是 CE 的准确度更高拟合也更快。CCE和MAE的梯度计算从CCE的梯度中可看出每个样本有一个权重样本越难学习f值模型输出越小权重更高因此CCE偏向困难样本这也是CCE相比MAE训练速度更快的原因但在带噪数据中往往噪声数据的f值更小因此CCE会在噪声数据上overfitting。Lq Lossq是超参数介于(0,1]之间当q等于1时Lq Loss就是MAE当q趋近0时Lq loss是CCE因此本文提出的Lq loss是CCE和MAE的泛化。进一步优化参考[NIPS2018 Generalized Cross Entropy Loss for ...with Noisy Labels]peer lossICML20[Peer loss functions: learning from noisy labels without knowing noise rates]为什么 peer loss 可以很好地解决 noisy label 问题为了方便这里先把 l1、l2 都定义成 CE loss那么在第一项它表现的像 positive learning因为它就是一个传统的 CE function而在第二项它像 negative learning也就是在标记错的时候比如把狗标成汽车如果用 positive learning 进行学习的话那就出现问题了它是随机从一个 label 中进行抽取希望让模型学到它不是一个鸟狗不是一个鸟。samples selection 和 label correction思路NeurlPS 2018 上的这篇论文 (Co-teaching: Robust Training of Deep Neural Networks with Extremely Noisy Labels) 就是关于 Co-teaching 的。它的基本假设是认为 noisy label 的 loss 要比 clean label 的要大于是它并行地训练了两个神经网络 A 和 B在每一个 Mini-batch 训练的过程中每一个神经网络把它认为 loss 比较小的样本送给它其另外一个网络这样不断进行迭代训练。[腾讯优图带噪学习和协作学习不完美场景下的神经网络优化策略 | 机器之心]皮皮blog不平衡分类问题的损失函数Normalized Cross-Entropy在Facebook的paper中模型使用NE(Normalized Cross-Entropy)进行评价或者叫做 Normalized Entropy 计算公式如下where pi is the estimated P(yi1)and p∑yi/N is the average probability over the training set.p代表平均经验CTRNE等于预测的log loss除以background CTR的熵使得NE对background CTR不敏感NE越小模型性能越好[Normalized Cross Entropy - Cross Validated][http://quinonero.net/Publications/predicting-clicks-facebook.pdf][LRGBDT理论与实践 - 知乎]分母就是平均的损失平均的损失实际上就等于整个数据集的entropy所以叫normalized entropy这种是消除了不平衡数据集的影响。Normalized Cross-Entropy相对于Cross-Entropy的优势在于它可以在不同类别之间进行有效的比较。Cross-Entropy是一种度量两个概率分布之间差异的方法但是如果不同类别之间的样本数量不平衡那么Cross-Entropy就会偏向于数量较大的类别。通过归一化Normalized Cross-Entropy可以消除这种偏差从而更准确地衡量模型的性能。[monica]实现[TensorFlow交叉熵损失函数_tensorflow 交叉熵损失_-柚子皮-的博客-CSDN博客]带权重交叉熵损失函数对于准确率要求有限的情况下如何定向的提升模型的召回率。业务场景业务部门对于假阴性和假阳性的容忍度是不同的对于假阴性更为敏感可以容忍一部分假阳性的存在。如果所有的阳性都可以检测出来可以容忍准确率低一些。recall tp/(tpfn)要使recall变大假阳性fn要变小所以fn惩罚要变更大。从损失函数下手让假阴性的惩罚比假阳性的惩罚更大在binary crossentropy 两项前面加上不同的权重下面的loss中w1增大为w0的5倍左右。loss变成以下形式其中w1 和 w0 分别代表了当前数据的实际标签为1或 0时候的损失函数权重。相反的如果模型想要增大精度可以设置loss中w0增大为w1的5倍左右。[【算法实验】使用带权重交叉熵损失函数定向提升模型的召回率]平衡交叉熵函数balanced cross entropy基于样本非平衡造成的损失函数倾斜一个直观的做法就是在损失函数中添加权重因子提高少数类别在损失函数中的权重平衡损失函数的分布。如在二分类问题中添加权重参数 αα n/(mn)其中m为正样本个数n为负样本个数N为样本总数mnN。focal loss从交叉熵损失函数出发主要是为了解决难易样本数量不平衡注意有区别于正负样本数量不平衡的问题。focal loss的具体形式为focal loss相比交叉熵多了一个modulating factor即 (1−p_t)^γ。对于分类准确的样本 p_t→1 modulating factor趋近于0。对于分类不准确的样本 1−p_t→1 modulating factor趋近于1。即相比交叉熵损失focal loss对于分类不准确的样本损失没有改变对于分类准确的样本损失会变小。 整体而言相当于增加了分类不准确样本在损失函数中的权重。p_t也反应了分类的难易程度 p_t 越大说明分类的置信度越高代表样本越易分 p_t 越小分类的置信度越低代表样本越难分。因此focal loss相当于增加了难分样本在损失函数的权重使得损失函数倾向于难分的样本有助于提高难分样本的准确度。直觉上来讲样本非平衡造成的问题就是样本数少的类别分类难度较高。因此从样本难易分类角度出发使得loss聚焦于难分样本解决了样本少的类别分类准确率不高的问题当然难分样本不限于样本少的类别也就是focal loss不仅仅解决了样本非平衡的问题同样有助于模型的整体性能提高。当参数变化后可能会使原先易训练的样本 p_t 发生变化即可能变为难训练样本。当这种情况发生时可能会造成模型收敛速度慢正如苏剑林在他的文章中提到的那样。为了防止难易样本的频繁变化应当选取小的学习率。防止学习率过大造成 w 变化较大从而引起 p_t 的巨大变化造成难易样本的改变。同时解决正负难易问题公式实验表明γ 取2, α 取0.25的时候效果最佳。这样一来训练过程关注对象的排序为正难负难正易负易。focal loss与交叉熵的对比focal loss vs balanced cross entropyfocal loss相比balanced cross entropy而言二者都是试图解决样本不平衡带来的模型训练问题后者从样本分布角度对损失函数添加权重因子前者从样本分类难易程度出发使loss聚焦于难分样本。[focal loss 通俗讲解 - 知乎][5分钟理解Focal Loss与GHM——解决样本不平衡利器 - 知乎]代码实现[mmdetection/blob/main/mmdet/models/losses/focal_loss.py][FocalLoss][GitHub - Hsuxu/Loss_ToolBox-PyTorch: PyTorch Implementation of Focal Loss]GHM(gradient harmonizing mechanism)Gradient Harmonized Single-stage Detector,AAAI2019是基于Focal loss的改进让模型过多关注那些特别难分的样本肯定是存在问题的样本中有离群点outliers可能模型已经收敛了但是这些离群点还是会被判断错误Focal loss的超参很难调。Focal Loss是从置信度p的角度入手衰减loss而GHM是一定范围置信度p的样本数量的角度衰减loss。文章先定义了一个梯度模长gg torch.abs(pred.sigmoid().detach() - target)至于为什么叫梯度模长因为g是从交叉熵损失求梯度得来的。g正比于检测的难易程度g越大则检测难度越大。Note: 从# 计算梯度模长g torch.abs(pred.sigmoid().detach() - target)的代码看出梯度模长d就是预测和实际的差异差异过大和过小分别可能表示数据有问题或者太容易。应该关注下差异大但是没那么大的吧有点类似hard negtive的意思。梯度模长与样本数量的关系可以看到梯度模长接近于0的样本数量最多随着梯度模长的增长样本数量迅速减少但是在梯度模长接近于1时样本数量也挺多。GHM的想法是我们确实不应该过多关注易分样本但是特别难分的样本outliers离群点也不该关注啊这些离群点的梯度模长d要比一般的样本大很多如果模型被迫去关注这些样本反而有可能降低模型的准确度况且这些样本的数量也很多梯度密度因此梯度密度的物理含义是单位梯度模长g部分的样本个数。对于每个样本把交叉熵CE×该样本梯度密度的倒数即可用于分类的GHM损失N是总的样本数量。抑制的效果GHM之所以效果更好不仅仅因为对easy example做了loss上的抑制同时对very hard example也起到了一定的忽略作用。文中把这些very hard examples定义为离群点outliers这些outliers在模型的不断拟合过程中一直为very hard examples如果模型强行的去拟合这些outliers反而会起到适得其反的效果这也就是为什么也要抑制这些very hard examples的原因之一。[5分钟理解Focal Loss与GHM——解决样本不平衡利器 - 知乎]召粗分类问题的损失函数loss functionPointwise损失函数BCE loss/binary cross entropy lossPairwise分类问题的损失函数Margin hinge loss / triplet lossbpr losslistwise分类问题的损失函数softmax lossIn-batch Softmax LossnceNoise Contrastive EstimationInfo-NCEListNetListMLE[召回粗排损失函数]Loss函数总结squared loss方便求导缺点是当分类正确的时候随着ys的增大损失函数也增大。cross entropy方便求导逼近01 loss。Hinge Loss当ys≥1损失为0对应分类正确的情况当ys1时损失与ys成正比对应分类不正确的情况软间隔中的松弛变量。exponential loss方便求导逼近01 loss。squared loss cross entropyexponential 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 intractablethe hinge loss (used in support-vector classification) results in solutions which are sparse in the data (due to it being zero forf(x)1) and is relatively robust to outliers (it grows only linearly forf(x)→−∞) . It doesnt 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 dont want only binary predictions but also probabilities for the outcomes. On the downside, its 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 whenf(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)纵轴表示损失。[Loss functions · VowpalWabbit/vowpal_wabbit Wiki · GitHub]from: 损失函数loss_loss函数_-柚子皮-的博客-CSDN博客ref: [library_design/losses][Loss Function][《统计学习方法》 李航][机器学习中的常见问题——损失函数]*[机器学习的损失函数 ][机器学习-损失函数]*