1. 前言

在机器学习中学习模型的参数是通过不断损失函数的值来实现的。对于机器学习中常见的损失函数有:平方损失函数与交叉熵损失函数。在本文中将讲述两者含义与响应的运用区别。

2. 平方损失函数

平方损失函数较为容易理解,它直接测量机器学习模型的输出与实际结果之间的距离。这里可以定义机器学习模型的输出为yiy_iyi​,实际的结果为tit_iti​,那么平方损失函数可以被定义为:
L(x)=1N∑i=1N(yi−ti)2L(x)=\frac{1}{N}\sum_{i=1}^{N}{(y_i-t_i)^2}L(x)=N1​i=1∑N​(yi​−ti​)2
对于这样的定义简单直接,能够很清楚的解释损失函数的含义,但是对于交叉熵损失函数其含义就不是那么好理解了,接下来的内容将具体讲解。

3. 交叉熵损失函数

3.1 交叉熵损失函数定义

交叉熵(Cross Entry)是用来评估当前训练得到的概率分布与真实分布的差异情况,减少交叉熵损失就是在提高模型的预测准确率。其离散函数形式
H(p,q)=−∑xp(x)log(q(x))H(p,q)=-\sum_x{p(x)log(q(x))}H(p,q)=−x∑​p(x)log(q(x))
参数解释:p(x)p(x)p(x)是真实分布的概率,q(x)q(x)q(x)是模型通过数据计算出来的概率估计。
例如在二分类问题中,对于yiy_iyi​的取值无非是1或是0,表示为yi∈{1,0}y_i\in{\{1, 0\}}yi​∈{1,0}。
当yi=1y_i=1yi​=1时:
P(yi=1∣xi)=1,P(y+i=0∣xi)=0P(y_i=1|x_i)=1, P(y+i=0|x_i)=0P(yi​=1∣xi​)=1,P(y+i=0∣xi​)=0
反之当yi=0y_i=0yi​=0时:
P(yi=1∣xi)=0,P(y+i=0∣xi)=1P(y_i=1|x_i)=0, P(y+i=0|x_i)=1P(yi​=1∣xi​)=0,P(y+i=0∣xi​)=1
对于模型的估计概率,可以表示为:
P(yi=1∣xi)=yi,,P(y+i=0∣xi)=1−yi,P(y_i=1|x_i)=y_{i}^{,}, P(y+i=0|x_i)=1-y_i^,P(yi​=1∣xi​)=yi,​,P(y+i=0∣xi​)=1−yi,​
因而,对于该二分类模型其交叉熵损失函数可以定义为:
H(p,q)=1N∑i=0N−yilogyi,−(1−yi)log(1−yi,)H(p,q)=\frac{1}{N}\sum_{i=0}^{N}-y_ilogy_i^,-(1-y_i)log(1-y_i^,)H(p,q)=N1​i=0∑N​−yi​logyi,​−(1−yi​)log(1−yi,​)

3.2 交叉熵损失函数信息论角度理解

信息熵是在结果出来之前对可能产生的信息量的期望。相对熵表示两个概率分布的差异,即KL散度。当两个分布相同时,相对熵的值为000,其余情况下都大于000。
D(p∣∣q)=∫xp(x)logp(x)q(x)=−∫xp(x)logq(x)dx−(−∫xp(x)logp(x)dx)D(p||q)=\int_xp(x)log\frac{p(x)}{q(x)}=−\int_xp(x)logq(x)dx−(−\int_xp(x)logp(x)dx)D(p∣∣q)=∫x​p(x)logq(x)p(x)​=−∫x​p(x)logq(x)dx−(−∫x​p(x)logp(x)dx)
前者是交叉熵,而后者是真实分布的信息熵。由于真实分布是固定的,所以信息熵的值是固定的。当交叉熵越小,相对熵则越小,估计的概率分布q(x)q(x)q(x)越接近真实的分布p(x)p(x)p(x)。

3.3 训练与测试集正样本比例不同的影响

交叉熵最小化等价于似然函数最大化。假设我们对每个标签为正例的样本都预测一个固定的概率,根据似然函数最大化,得到
yi,=正样本数量全部样本数量y_i^,=\frac{正样本数量}{全部样本数量}yi,​=全部样本数量正样本数量​
如果测试集的正例的比例也接近这个值,那么在该假设情况下我们得到的损失函数最小。
但是,如果训练集和测试集的正例比例不同,那么模型越复杂,越接近临界值的样本(越难判断结果的样本)就越容易受到训练集中正例比例的影响而偏离真实分布。

3.4 正样本比例不同的解决办法

为了解决训练集与测试集中正样本比例不一致的问题,常用到的解决办法就是抽样,假设正样本以α\alphaα的比例进行抽样,而负样本以β\betaβ的比例进行抽样,则最后的交叉熵损失函数可以表示为:
H(p,q)=1N∑i=0N−αyilogyi,−β(1−yi)log(1−yi,)H(p,q)=\frac{1}{N}\sum_{i=0}^{N}-\alpha y_ilogy_i^,-\beta(1-y_i)log(1-y_i^,)H(p,q)=N1​i=0∑N​−αyi​logyi,​−β(1−yi​)log(1−yi,​)

4. 两种损失函数的区别

平方损失函数与交叉熵损失函数都可以用作为机器学习模型的目标函数,但是在何种场景下使用何种损失函数才是较为合理的选择呢?一般来讲,如果学习模型致力于解决的问题是回归问题的连续变量,那么使用平方损失函数较为合适;若是对于分类问题的离散Ont-Hot向量,那么交叉熵损失函数较为合适

4.1 直观理解

从平方损失函数运用到多分类场景下,可知平方损失函数对每一个输出结果都十分看重,而交叉熵损失函数只对正确分类的结果看重。例如,对于一个多分类模型其模型结果输出为(a,b,c)(a,b,c)(a,b,c),而实际真实结果为(1,0,0)(1, 0, 0)(1,0,0)。则根据两种损失函数的定义其损失函数可以描述为:
LS=(a−1)2+(b−0)2+(c−0)2=(a−1)2+b2+c2L_S=(a-1)^2+(b-0)_2+(c-0)_2=(a-1)^2+b^2+c^2LS​=(a−1)2+(b−0)2​+(c−0)2​=(a−1)2+b2+c2
LC=−1∗loga−0∗logb−0∗logc=−logaL_C=-1*loga-0*logb-0*logc=-logaLC​=−1∗loga−0∗logb−0∗logc=−loga
从上述的结果中可以看出,交叉熵损失函数只和分类正确的预测结果有关。而平方损失函数还和错误的分类有关,该损失函数除了让正确分类尽量变大,还会让错误分类都变得更加平均,但实际中后面的这个调整使没必要的。但是对于回归问题这样的考虑就显得重要了,因而回归问题上使用交叉熵并不适合。

4.2 理论角度分析

平方数损失函数假设最终结果都服从高斯分布,而高斯分布实际上是一个连续变量,并不是一个离散变量。如果假设结果变量服从均值uuu,方差为σ\sigmaσ,那么利用最大似然法就可以优化它的负对数似然,公式最终变为了:
=max∑iN[−12log(2πσ2)−(ti−y)2σ2]=max\sum_i^N[-\frac{1}{2}log(2\pi\sigma^2)-\frac{(t_i-y)}{2\sigma^2}]=maxi∑N​[−21​log(2πσ2)−2σ2(ti​−y)​]
出去与yyy无关的项目,最后剩下的就是平方损失函数的形式。

5. Reference

  1. Quora Question Pairs整理 - 理解交叉熵损失函数

平方损失函数与交叉熵损失函数相关推荐

  1. 【深度学习】损失函数系列 (一) 平方损失函数、交叉熵损失函数 (含label_smoothing、ignore_index等内容)

    一.平方损失函数(Quadratic Loss / MSELoss): Pytorch实现: from torch.nn import MSELoss loss = nn.MSELoss(reduct ...

  2. 【深度学习】——分类损失函数、回归损失函数、交叉熵损失函数、均方差损失函数、损失函数曲线、

    目录 代码 回归问题的损失函数 分类问题的损失函数 1. 0-1损失 (zero-one loss) 2.Logistic loss 3.Hinge loss 4.指数损失(Exponential l ...

  3. 损失函数|交叉熵损失函数

    看完文章,希望你能顺利回答以下题目: 题目1:这个任务,你会使用什么损失函数?         题目2: 交叉熵表达式?         题目3:为什么使用交叉熵?能不能用MSE?         题 ...

  4. 交叉熵损失函数python_交叉熵损失函数nn.CrossEntropyLoss()

    nn.CrossEntropyLoss() 1.引言 在使用pytorch深度学习框架做多分类时,计算损失函数通常会使用交叉熵损失函数nn.CrossEntropyLoss() 2. 信息量和熵 信息 ...

  5. 交叉熵损失函数优缺点_【损失函数】常见的损失函数(loss function)总结

    阅读大概需要7分钟 跟随小博主,每天进步一丢丢 机器学习算法与自然语言处理出品 @公众号原创专栏作者 yyHaker 单位 | 哈工大SCIR实验室 损失函数用来评价模型的预测值和真实值不一样的程度, ...

  6. sigmoid函数求导_交叉熵损失函数的求导(Logistic回归)

    目录 前言 交叉熵损失函数 交叉熵损失函数的求导 前言 最近有遇到些同学找我讨论sigmoid训练多标签或者用在目标检测中的问题,我想写一些他们的东西,想到以前的博客里躺着这篇文章(2015年读研时机 ...

  7. 深度学习-tensorflow1.x之交叉熵损失函数(softmax_cross_entropy_with_logits)代码实现 Tensorflow1.x 和 Numpy

    交叉熵损失函数 神经网络(机器学习)中作为损失函数 具体的理解可以看 https://blog.csdn.net/SIGAI_CSDN/article/details/86554230 交叉熵损失函数 ...

  8. 交叉熵损失函数分类_逻辑回归(Logistic Regression)二分类原理,交叉熵损失函数及python numpy实现...

    本文目录: 1. sigmoid function (logistic function) 2. 逻辑回归二分类模型 3. 神经网络做二分类问题 4. python实现神经网络做二分类问题 ----- ...

  9. 人脸识别-Loss-2010:Softmax Loss(Softmax激活函数 + “交叉熵损失函数”)【样本3真实标签为c_5,则样本3的损失:loss_3=-log(\hat{y}_5^3)】

    一般一个CNN网络主要包含卷积层,池化层(pooling),全连接层,损失层等. 全连接层:等号左边部分就是全连接层做的事, W W W 是全连接层的参数,我们也称为权值, X X X 是全连接层的输 ...

  10. 二分类交叉熵损失函数python_二分类问题的交叉熵损失函数多分类的问题的函数交叉熵损失函数求解...

    二分类问题的交叉熵损失函数; 在二分类问题中,损失函数为交叉熵损失函数.对于样本(x,y)来讲,x为样本 y为对应的标签.在二分类问题中,其取值的集合可能为{0,1},我们假设某个样本的真实标签为yt ...

最新文章

  1. 安装shopex注意事项
  2. 异步通信在生活中的例子_聊聊工作中经常遇到的“异步”,你掌握了多少
  3. mysql数据库前端缓存_什么是MySQL数据库的缓存池原理?看完或许就懂了
  4. python 字符串格式化语法_Python:字符串格式化
  5. hdfs mv命令_Hadoop2.x HDFS shell命令
  6. 调出远程桌面的任务管理器
  7. jQuery源码解读一
  8. unity安装后续添加模块
  9. 内网穿透工具开发者运维人员必备
  10. 大学生网页制作期末作业——HTML+CSS+JavaScript制作成都旅游网页设计与实现12个页面 web前端课程设计代码 web课程设计 HTML网页制作代码
  11. 转载:使用pythonr脚本实现微信公众号音频批量下载
  12. 一根均线选股法_一根均线选股法视频教程
  13. golang并发编程之Ticker
  14. matlab三相变压器,simulink三相变压器
  15. 为何戴绿帽的总是悲催老实人?
  16. 解密淘宝优惠群泛滥的原因
  17. 匈牙利命名法的衰落和建议
  18. 现在java开发用什么工具
  19. 敏捷ACP.知识总结.错题回顾
  20. 化骨龙 GPS M80Pro 拆解

热门文章

  1. 龙芯3A3000笔记本玩机笔记
  2. 【新知实验室 腾讯云TRTC实时音视频体验】
  3. Hibernate注解 @Enumerated
  4. android MediaPlayer m3u8 播放
  5. 华为隐藏功能扩大内存代码大全_华为手机隐藏功能代码大 | 手游网游页游攻略大全...
  6. 新建参考线快捷键,透视快捷键
  7. kettle简单的更新与插入
  8. 【数据库】理解一对一、一对多、多对多关系
  9. 数据表对应关系(一对一、一对多、多对多)
  10. C++后台开发学习路线