Cross Entropy Error Function(交叉熵损失函数)

  • 例子
  • 表达式
  • 函数性质
  • 学习过程
  • 优缺点

这篇文章中,讨论的Cross Entropy损失函数常用于分类问题中,但是为什么它会在分类问题中这么有效呢?我们先从一个简单的分类例子来入手。

1. 预测政治倾向例子

我们希望根据一个人的年龄、性别、年收入等相互独立的特征,来预测一个人的政治倾向,有三种可预测结果:民主党、共和党、其他党。假设我们当前有两个逻辑回归模型(参数不同),这两个模型都是通过sigmoid的方式得到对于每个预测结果的概率值:

模型1

模型1预测结果

模型1对于样本1和样本2以非常微弱的优势判断正确,对于样本3的判断则彻底错误。

模型2

模型2预测结果

模型2对于样本1和样本2判断非常准确,对于样本3判断错误,但是相对来说没有错得太离谱。

好了,有了模型之后,我们需要通过定义损失函数来判断模型在样本上的表现了,那么我们可以定义哪些损失函数呢?

1.1 Classification Error(分类错误率)

最为直接的损失函数定义为:

模型1: 

模型2: 

我们知道,模型1模型2虽然都是预测错了1个,但是相对来说模型2表现得更好,损失函数值照理来说应该更小,但是,很遗憾的是,  并不能判断出来,所以这种损失函数虽然好理解,但表现不太好。

1.2 Mean Squared Error (均方误差)

均方误差损失也是一种比较常见的损失函数,其定义为: 

模型1:

对所有样本的loss求平均:

模型2:

对所有样本的loss求平均:

我们发现,MSE能够判断出来模型2优于模型1,那为什么不采样这种损失函数呢?主要原因是逻辑回归配合MSE损失函数时,采用梯度下降法进行学习时,会出现模型一开始训练时,学习速率非常慢的情况(MSE损失函数)。

有了上面的直观分析,我们可以清楚的看到,对于分类问题的损失函数来说,分类错误率和平方和损失都不是很好的损失函数,下面我们来看一下交叉熵损失函数的表现情况。

1.3 Cross Entropy Error Function(交叉熵损失函数)

1.3.1 表达式

(1) 二分类

在二分的情况下,模型最后需要预测的结果只有两种情况,对于每个类别我们的预测得到的概率为  和  。此时表达式为:

其中:
- y——表示样本的label,正类为1,负类为0
- p——表示样本预测为正的概率

(2) 多分类

多分类的情况实际上就是对二分类的扩展:

其中:
 ——类别的数量;
——指示变量(0或1),如果该类别和样本的类别相同就是1,否则是0;
——对于观测样本属于类别  的预测概率。

现在我们利用这个表达式计算上面例子中的损失函数值:

模型1

对所有样本的loss求平均:

模型2:

对所有样本的loss求平均:

可以发现,交叉熵损失函数可以捕捉到模型1模型2预测效果的差异。

2. 函数性质

可以看出,该函数是凸函数,求导时能够得到全局最优值。

3. 学习过程

交叉熵损失函数经常用于分类问题中,特别是在神经网络做分类问题时,也经常使用交叉熵作为损失函数,此外,由于交叉熵涉及到计算每个类别的概率,所以交叉熵几乎每次都和sigmoid(或softmax)函数一起出现。

我们用神经网络最后一层输出的情况,来看一眼整个模型预测、获得损失和学习的流程:

  1. 神经网络最后一层得到每个类别的得分scores
  2. 该得分经过sigmoid(或softmax)函数获得概率输出;
  3. 模型预测的类别概率输出与真实类别的one hot形式进行交叉熵损失函数的计算。

学习任务分为二分类和多分类情况,我们分别讨论这两种情况的学习过程。

3.1 二分类情况

二分类任务学习过程

如上图所示,求导过程可分成三个子过程,即拆成三项偏导的乘积:

3.1.1 计算第一项: 

 表示预测为True的概率;

 表示为True时等于1,否则等于0;

3.1.2 计算第二项: 

这一项要计算的是sigmoid函数对于score的导数,我们先回顾一下sigmoid函数和分数求导的公式:

3.1.3 计算第三项: 

一般来说,scores是输入的线性函数作用的结果,所以有:

3.1.4 计算结果 

可以看到,我们得到了一个非常漂亮的结果,所以,使用交叉熵损失函数,不仅可以很好的衡量模型的效果,又可以很容易的的进行求导计算。

3.2 多分类情况

4. 优缺点

4.1 优点

在用梯度下降法做参数更新的时候,模型学习的速度取决于两个值:一、学习率;二、偏导值。其中,学习率是我们需要设置的超参数,所以我们重点关注偏导值。从上面的式子中,我们发现,偏导值的大小取决于 ,我们重点关注后者,后者的大小值反映了我们模型的错误程度,该值越大,说明模型效果越差,但是该值越大同时也会使得偏导值越大,从而模型学习速度更快。所以,使用逻辑函数得到概率,并结合交叉熵当损失函数时,在模型效果差的时候学习速度比较快,在模型效果好的时候学习速度变慢。

5. 参考

[1]. 神经网络的分类模型 LOSS 函数为什么要用 CROSS ENTROPY

[2]. Softmax as a Neural Networks Activation Function

[3]. A Gentle Introduction to Cross-Entropy Loss Function

损失函数 - 交叉熵损失函数相关推荐

  1. 【转载】损失函数 - 交叉熵损失函数

    MSE 转载自:损失函数 - MSE[1] 数理统计中均方误差是指参数估计值与参数值之差平方的期望值,记为MSE.MSE是衡量"平均误差"的一种较方便的方法,MSE可以评价数据的变 ...

  2. 损失函数 -交叉熵损失函数

    参考文献: 1)https://zhuanlan.zhihu.com/p/35709485 2)https://jackon.me/posts/why-use-cross-entropy-error- ...

  3. 损失函数——交叉熵损失函数(CrossEntropy Loss)

    损失函数--交叉熵损失函数(CrossEntropy Loss) 交叉熵函数为在处理分类问题中常用的一种损失函数,其具体公式为: 1.交叉熵损失函数由来 交叉熵是信息论中的一个重要概念,主要用于度量两 ...

  4. 损失函数——交叉熵损失函数

    交叉熵代价函数(Cross-entropy cost function)是用来衡量人工神经网络(ANN)的预测值与实际值的一种方式.与二次代价函数相比,它能更有效地促进ANN的训练.在介绍交叉熵代价函 ...

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

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

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

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

  7. 【交叉熵损失函数】关于交叉熵损失函数的一些理解

    目录 0. 前言 1.损失函数(Loss Function) 1.1 损失项 1.2 正则化项 2. 交叉熵损失函数 2.1 softmax 2.2 交叉熵 0. 前言 有段时间没写博客了,前段时间主 ...

  8. python交叉熵损失函数实现_Softmax和交叉熵的深度解析和Python实现

    原标题:Softmax和交叉熵的深度解析和Python实现 作者 | PARAS DAHAL 译者 | zzq [导读]如果你稍微了解一点深度学习的知识或者看过深度学习的在线课程,你就一定知道最基础的 ...

  9. 交叉熵损失函数、修正Huber损失、极大似然估计、负对数似然、似然与交叉熵、KL散度

    交叉熵损失函数.修正Huber损失.极大似然估计.负对数似然.似然与交叉熵.KL散度 目录

最新文章

  1. 如何规划创建一个家庭实验室
  2. 《这就是搜索引擎:核心技术详解》---读后感
  3. myeclipse连接hadoop集群编程及问题解决
  4. Dusktree System (1)
  5. 异步复位同步释放_简谈同步复位和异步复位
  6. java自定义标签简单_JSP 自定义标签之一 简单实例
  7. 宽带和流量是分开的吗_为什么现在的手机套餐与宽带越来越贵,只是因为建设5G吗?...
  8. php 合并数组对象,JS内数组合并方法与对象合并实现步骤详解
  9. DI(数据集成)前瞻调查
  10. Python 3.5安装JPype
  11. 09月28日 pytorch与resnet(五) 转移学习
  12. Astar算法的Java实现 (其他很多都是错的,没有计入曼哈顿值的代价)
  13. 产品经理技能学习:流程图绘制及规范
  14. 小白入门大数据行业需要了解什么?
  15. C编译器剖析_5.2.1 中间代码生成及优化_布尔表达式的翻译
  16. P8196 [传智杯 #4 决赛] 三元组
  17. Qt QTreeWidget/QTreeView去焦点(虚线框)
  18. Python Matplotlib散点图
  19. 在线获取外链的php源码,y.qq.com-php获取QQ音乐外链源码
  20. 中科院计算机和理论物理双硕士白,中国科学院等离子体物理研究所

热门文章

  1. rgb文件格式的文件读取与转换
  2. L1-079 天梯赛的善良 (20 分)
  3. 微信打开页面,下载东西时调用其他浏览器下载
  4. 基于OAuth2的认证
  5. 【翻译】2020年云安全综合指南(风险,最佳实践,认证)
  6. 在Mifare S50中,如果第2区的访问控制码为FF 08 70 69,则该区块1和3的访问控制条件是什么
  7. anki卡片浏览器_Anki怎么用|小白anki安装使用指南+记忆库资源推荐
  8. 查看自己电脑的开关机记录
  9. 使用 Android Studio 搭建安卓开发环境
  10. Daimayuan Online Judge 查重判断