原文:https://blog.csdn.net/weixin_41923961/article/details/80382409#commentsedit

损失函数

损失函数(Loss function)是用来估量你模型的预测值f(x)f(x)f(x)与真实值 yyy 的不一致程度,它是一个非负实值函数,通常用 L(y,f(x))L(y,f(x))L(y,f(x))来表示。损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数的重要组成部分。模型的风险结构包括了风险项和正则项,通常如下所示:

θ∗=argmin∑i=1NL(yi,f(xi;θ))+λΦ(θ)θ^∗=argmin∑_{i=1}^NL(y_i,f(x_i;θ))+λ Φ(θ)θ∗=argmini=1∑N​L(yi​,f(xi​;θ))+λΦ(θ)

其中,前面的均值函数表示的是经验风险函数,LLL代表的是损失函数,后面的 ΦΦΦ 是正则化项(regularizer)或者叫惩罚项(penalty term),它可以是L1L_1L1​,也可以是L2L_2L2​,或者其他的正则函数。整个式子表示的意思是找到使目标函数最小时的θθθ值。

常用损失函数

常见的损失误差有五种:

  1. 铰链损失(Hinge Loss):主要用于支持向量机(SVM) 中;
  2. 互熵损失 (Cross Entropy Loss,Softmax Loss ):用于Logistic 回归与Softmax 分类中;
  3. 平方损失(Square Loss):主要是最小二乘法(OLS)中;
  4. 指数损失(Exponential Loss) :主要用于Adaboost 集成学习算法中;
  5. 其他损失(如0-1损失,绝对值损失)

1.Hinge loss

Hinge的叫法来源于其损失函数的图形,为一个折线,通用函数方式为:
L(mi)=max(0,1−mi(w))L(m_i) = max(0,1-m_i(w))L(mi​)=max(0,1−mi​(w))

Hinge可以解 间距最大化 问题,带有代表性的就是svm,最初的svm优化函数如下:
argminw,ζ12∣∣w∣∣2+C∑iζist.∀yiwTxi≥1−ζiζi≥0\underset{w,\zeta}{argmin} \frac{1}{2}||w||^2+ C\sum_i \zeta_i \\ st.\quad \forall y_iw^Tx_i \geq 1- \zeta_i \\ \zeta_i \geq 0 w,ζargmin​21​∣∣w∣∣2+Ci∑​ζi​st.∀yi​wTxi​≥1−ζi​ζi​≥0

将约束项进行变形则为:
ζi≥1−yiwTxi\zeta_i \geq 1-y_iw^Tx_iζi​≥1−yi​wTxi​
则可以将损失函数进一步写为:
J(w)=12∣∣w∣∣2+C∑imax(0,1−yiwTxi)J(w)=\frac{1}{2}||w||^2 + C\sum_i max(0,1-y_iw^Tx_i)J(w)=21​∣∣w∣∣2+Ci∑​max(0,1−yi​wTxi​)
=12∣∣w∣∣2+C∑imax(0,1−mi(w))= \frac{1}{2}||w||^2 + C\sum_i max(0,1-m_i(w))=21​∣∣w∣∣2+Ci∑​max(0,1−mi​(w))
=12∣∣w∣∣2+C∑iLLinge(mi)= \frac{1}{2}||w||^2 + C\sum_i L_{Linge}(m_i)=21​∣∣w∣∣2+Ci∑​LLinge​(mi​)

因此svm的损失函数可以看成L2-Norm和Hinge损失误差之和.

2.Softmax Loss

有些人可能觉得逻辑回归的损失函数就是平方损失,其实并不是。平方损失函数可以通过线性回归在假设样本是高斯分布的条件下推导得到,而逻辑回归得到的并不是平方损失。在逻辑回归的推导中,它假设样本服从伯努利分布(0-1分布),然后求得满足该分布的似然函数,接着取对数求极值等等。而逻辑回归并没有求似然函数的极值,而是把极大化当做是一种思想,进而推导出它的经验风险函数为:最小化负的似然函数(即maxF(y,f(x))→min−F(y,f(x)))maxF(y,f(x))→min−F(y,f(x)))maxF(y,f(x))→min−F(y,f(x)))。从损失函数的视角来看,它就成了Softmax 损失函数了。

logloglog损失函数的标准形式:

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

刚刚说到,取对数是为了方便计算极大似然估计,因为在MLE中,直接求导比较困难,所以通常都是先取对数再求导找极值点。损失函数L(Y,P(Y∣X))L(Y,P(Y|X))L(Y,P(Y∣X))表达的是样本X在分类Y的情况下,使概率P(Y∣X)P(Y|X)P(Y∣X)达到最大值(换言之,就是利用已知的样本分布,找到最有可能(即最大概率)导致这种分布的参数值;或者说什么样的参数才能使我们观测到目前这组数据的概率最大)。因为logloglog函数是单调递增的,所以logP(Y∣X)logP(Y|X)logP(Y∣X)也会达到最大值,因此在前面加上负号之后,最大化P(Y∣X)P(Y|X)P(Y∣X)就等价于最小化LL 了。
逻辑回归的P(Y=y∣x)P(Y=y|x)P(Y=y∣x)表达式如下(为了将类别标签y统一为1和0y统一为1和0y统一为1和0,下面将表达式分开表示):

将它带入到上式,通过推导可以得到logisticlogisticlogistic的损失函数表达式,如下:

逻辑回归最后得到的目标式子如下:

上面是针对二分类而言的。这里需要解释一下:之所以有人认为逻辑回归是平方损失,是因为在使用梯度下降来求最优解的时候,它的迭代式子与平方损失求导后的式子非常相似,从而给人一种直观上的错觉。

3 Squared Loss

最小二乘法是线性回归的一种,OLS将问题转化成了一个凸优化问题。在线性回归中,它假设样本和噪声都服从高斯分布(中心极限定理),最后通过极大似然估计(MLE)可以推导出最小二乘式子。最小二乘的基本原则是:最优拟合直线应该是使各点到回归直线的距离和最小的直线,即平方和最小。

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

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

当样本个数为n时,此时的损失函数为:

L(Y,f(X))=∑i=1n(Y−f(X))2L(Y,f(X))=∑_{i=1}^n(Y−f(X))^2L(Y,f(X))=i=1∑n​(Y−f(X))2
Y−f(X)​Y−f(X)​Y−f(X)​表示残差,整个式子表示的是残差平方和 ,我们的目标就是最小化这个目标函数值,即最小化残差的平方和。
在实际应用中,我们使用均方差(MSE)作为一项衡量指标,公式如下:

MSE=1n∑i=1n(Yi~−Yi)2MSE=\frac{1}{n}∑_{i=1}^n(\tilde{Y_i}−Y_i)^2MSE=n1​i=1∑n​(Yi​~​−Yi​)2

4.Exponentially Loss

损失函数的标准形式是:

L(y,f(x))=exp[−yf(x]L(y,f(x))=exp[−yf(x]L(y,f(x))=exp[−yf(x]

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

5 其他损失

0-1 损失函数

绝对值损失函数


上述几种损失函数比较的可视化图像如下:

总结

机器学习作为一种优化方法,学习目标就是找到优化的目标函数——损失函数和正则项的组合;有了目标函数的“正确的打开方式”,才能通过合适的机器学习算法求解优化。

参考资料:
[1] https://blog.csdn.net/google19890102/article/details/50522945
[2] https://www.cnblogs.com/hejunlin1992/p/8158933.html
[3] https://blog.csdn.net/u014755493/article/details/71402991
[4] https://webcache.googleusercontent.com/search?q=cache:http://kubicode.me/2016/04/11/Machine%20Learning/Say-About-Loss-Function/&gws_rd=cr

总结各类损失函数【修】相关推荐

  1. 视频插帧各类损失函数汇总

    前言:在做视频插帧方向时,RSNR和SSIM的值往往很高,但是图片的质量却不太佳.这里我先整理一些常用的损失函数,对损失函数进行改进想看看对性能有什么影响. 视频插帧各类损失函数汇总 FLAVR–FL ...

  2. 可视化深入理解损失函数与梯度下降 | 技术头条

    作者 | Hugegene 译者 | 刘畅 责编 | Rachel 出品 | AI科技大本营(id:rgznai100) [导语]本文对梯度函数和损失函数间的关系进行了介绍,并通过可视化方式进行了详细 ...

  3. 【天池赛事】零基础入门语义分割-地表建筑物识别 Task4:评价函数与损失函数

    [天池赛事]零基础入门语义分割-地表建筑物识别 Task1:赛题理解与 baseline(3 天) – 学习主题:理解赛题内容解题流程 – 学习内容:赛题理解.数据读取.比赛 baseline 构建 ...

  4. 深度学习自学(一):Loss function 损失函数

                                     Loss function   2018.8.11    技术积淀篇 面试经常被问到损失函数,想着有时间整理下,最常被问到的事在SVM ...

  5. yolov5目标检测神经网络——损失函数计算原理

    前面已经写了4篇关于yolov5的文章,链接如下: 1.基于libtorch的yolov5目标检测网络实现--COCO数据集json标签文件解析 2.基于libtorch的yolov5目标检测网络实现 ...

  6. 目标检测常用损失函数

    学习目标检测的同学一定对损失函数非常头疼.在求分类时会遇到0-1损失,交叉熵损失,在求回归框的时候需要用到L1损失.L2损失以及各种IoU损失.而我们本身又不是很了解这些损失函数,网上的教程大多是走数 ...

  7. 能“看穿”换脸视频背后的AI模型

    Deepfake是一款非常火的AI换脸工具,可以将专业复杂的AI换脸过程简单化,实现快速换脸,制作的内容甚至可以以假乱真. 但是,现在的技术不仅可以判断照片是否假冒伪劣,还可以跟踪所有背后的信息,你信 ...

  8. gbdt 回归 特征重要性 排序_RandomForest、GBDT、XGBoost、lightGBM 原理与区别

    RF,GBDT,XGBoost,lightGBM都属于集成学习(Ensemble Learning),集成学习的目的是通过结合多个基学习器的预测结果来改善基本学习器的泛化能力和鲁棒性. 根据基本学习器 ...

  9. [机器学习 ] RandomForest、GBDT、XGBoost、lightGBM 原理与区别

    目录 随机森林 -- RandomForest GBDT (Gradient Boosting Decision Tree) XGBoost lightGBM 一 知识点介绍 RF,GBDT,XGBo ...

最新文章

  1. 更快更强,谷歌提出SWideRNet:全景分割新标杆来啦!
  2. string转date类型_10:Wrapper;String;Date;Math;File;Enumeration;Syst
  3. 自己动手利用KVM和Intel VT实现简单虚拟机
  4. [转]使用C#开发ActiveX控件
  5. golang:Linux下安装go环境
  6. 您已到达6300千米深度,速度8 公里/秒,正在穿过地心 [置顶]
  7. UITableView滚动到指定位置
  8. RabbitMQ消息队列,看这篇文章就够了
  9. 苹果macmac效率工具:Alfred
  10. linux系统添加中文输入法
  11. 腾讯与新浪微博开放平台之比较
  12. GNS3+JunOS
  13. 史上最全后端技术介绍
  14. 生活娱乐 WIFI机器人(某机器发烧友自己动手做一台)
  15. 舞蹈课(dance.cpp/c/pas)
  16. 2022宁波市第五届网络安全大赛(训练赛Misc部分)
  17. 基于Tcl脚本生成Vivado工程及编译
  18. ggplot2-标度、坐标轴和图例4
  19. ultraedit编辑器快速学习
  20. 2/3/4/5G频段 带宽介绍

热门文章

  1. JENKINS+maven+ssh+shell 完成自动化部署工具的开发
  2. 数据结构之插入排序:折半插入排序算法
  3. 数据结构-线性表之用队列实现栈用栈实现队列
  4. 制作cab文件(Windows自带的makecab)
  5. Sysmon勘验、分析现场(主机监控)
  6. linux下/var/run目录下.pid文件的作用(文件锁,防止重复启动)
  7. crunch字典生成工具
  8. QT三种窗口、调试终端信息打印、新建菜单、设置窗口标题名称、界面初始化、打开文件对话框、保存文件对话框
  9. C/C++:Windows编程—Inline Hook内联钩子(上)
  10. 【模板/经典题型】并查集维护生成树