https://www.toutiao.com/a6654435108105224712/

2019-02-05 16:46:49

在介绍交叉熵之前首先介绍熵(entropy)的概念。熵是信息论中最基本、最核心的一个概念,它衡量了一个概率分布的随机程度,或者说包含的信息量的大小。

首先来看离散型随机变量。考虑随机变量取某一个特定值时包含的信息量的大小。假设随机变量取值为x,对应的概率为p(x)。直观来看,取这个值的可能性越小,而它又发生了,则包含的信息量就越大。因此如果定义一个函数h(x)来描述随机变量取值为的信息量的大小的话,则h(x)应该是p(x)的单调减函数。例如,一年之内人类登陆火星,包含的信息量显然比广州明天要下雨大,因为前者的概率明显小于后者。

满足单调递减要求的函数太多了,我们该选择哪个函数呢?接着考虑。假设有两个相互独立的随机变量,它们的取值分别为和,取该值的概率为p(x)p(y)。根据随机变量的独立性,它们的联合概率为:

p(x,y)=p(x)p(y)

由于这两个随机变量是相互独立的,因此它们各自取某一值时包含的信息量应该是两个随机变量分别取这些值的时候包含的信息量之和:

h(x,y)=h(x)+h(y)

这要求h(x)能把p(x)的乘法转化为加法,在数学上,满足此要求的是对数函数。因此,可以把信息量定义为:

h(x)=-logp(x)

这个对数的底数是多少并没有太大关系,根据换底公式,最后计算出来的结果就差了一个倍数,信息论中通常以2为底,在机器学习中通常以e为底,在后面的计算中为了方便起见我们用10为底。需要强调的对数函数前面加上了负号,这是因为对数函数是增函数,而我们要求h(x)p(x)的减函数。另外,由于0≤p(x)≤1,因此logp(x)<0,加上负号之后刚好可以保证这个信息量为正。

上面只是考虑了随机变量取某一个值时包含的信息量,而随机变量的取值是随机的,有各种可能,那又怎么计算它取所有各种取值时所包含的信息量呢?既然随机变量取值有各种情况,而且取每个值有一个概率,那我们计算它取各个值时的信息量的均值即数学期望即可,这个信息量的均值,就是熵。

对于离散型随机变量,熵定义为

这里约定pi =p(xi)

下面用实际例子来说明离散型随机变量熵的计算。对于下表定义的概率分布

它的熵为

再来看另外一个概率分布

它的熵为

从上面两个结果可以看出一个现象。第一个概率分布非常均匀,随机变量取每个值的概率相等;第二个不均匀,以极大的概率取值为1,取值为2-4的概率非常小。第一个概率分布的熵明显的大于第二个概率分布,即随机变量越均匀(随机),熵越大,反之越小。

下面考虑连续型随机变量。对于连续型随机变量,熵(微分熵)定义为

这里将求和换成了广义积分。

根据熵的定义,随机变量取各个值的概率相等(均匀分布)时有极大值,在取某一个值的概率为1,取其他所有值的概率为0时有极小值(此时随机变量退化成某一必然事件或者说确定的变量)。下面证明这一结论。

对于离散型随机变量,熵定义的是如下函数

其中xi 为随机变量取第 i 个值的概率。约束条件为:

由于对数函数的定义域是非负的,因此可以去掉不等式约束。构造拉格朗日乘子函数

xi 求偏导数并令其为0,可以得到

这意味着在极值点处所有的xi 必须相等。对λ求偏导数并令其为0,可以得到

因此当xi = 1/n时函数取得极值。此时熵的值为

进一步的可以证明该值是极大值。熵的二阶偏导数为

因此Hessian矩阵为

由于 xi > 0,该矩阵负定,熵是凹函数,有极大值。因此当 xi =1/n时熵有极大值。如果定义

显然它与下面的极限是一致的

则当某一个xi =1,其他xj =0, j!=0的时熵有极小值0

除此情况之外,只要满足 0<xi <1,则logxi < 0,因此

上面这些结果说明熵是非负的,当且仅当随机变量取某一值的概率为1,取其他值的概率为0时熵有极小值0。此时随机变量退化成普通的变量,取值固定。而当随机变量取所有值的概率相等时即均匀分布时熵有极大值。故熵的范围为

下面举例说明熵在机器学习中的应用,以决策树为例。用于对分类问题,决策树在训练每个非叶子节点时要寻找最佳分裂,将样本进行划分成尽可能纯的子集。此时熵的作用是度量数据集的“纯度”值。样本集D的熵不纯度定义为

当样本只属于某一类时熵有最小值,当样本均匀的分布于所有类中时熵有最大值。找到一个分裂让熵最小化,它就是最佳分裂。

交叉熵

交叉熵的定义与熵类似,不同的是定义在两个概率分布而不是一个概率分布之上。对于离散型随机变量,交叉熵定义为:

其中x为离散型随机变量,p(x)q(x)是它的两个概率分布。交叉熵衡量了两个概率分布的差异。其值越大,两个概率分布相差越大;其值越小,则两个概率分布的差异越小。

下面通过实际例子来说明交叉熵的计算。对于下表的两个概率分布

其交叉熵为

对于下表的两个概率分布

其交叉熵为

第一个表格中两个概率分布完全相等,第二个则差异很大。第二个的熵比第一个大。后面我们会证明这一结论。

对于连续型概率分布,交叉熵定义为

如果两个概率分布完全相等,则交叉熵退化成熵。

可以证明,当两个分布相等的时候,交叉熵有极小值。假设第一个概率分布固定即p(x)为常数,此时交叉熵为如下形式的函数

约束条件为

构造拉格朗日乘子函数

对所有变量求偏导数,并令偏导数为0,有

最后可以解得

交叉熵函数的Hessian矩阵为:

该矩阵正定,因此交叉熵损失函数是凸函数,上面的极值点是极小值点。

用于logistic回归

交叉熵在机器学习中用得更多,通常用于充当目标函数,以最小化两个概率分布的差异。下面介绍交叉熵在logistic回归中的应用。logistic的预测函数为

样本属于正样本的概率为

属于负样本的概率为

其中y为类别标签,取值为1或者0,分别对应正负样本。

训练样本集为( xi, yi),i=1, ..., l, xi 为特征向量,yi为类别标签,取值为1或0。给定w参数和样本特征向量x,样本属于每个类的概率可以统一写成如下形式

y为1和0,上式分别等于样本属于正负样本的概率。由于训练样本之间相互独立,训练样本集的似然函数为

对似然函数取对数,得到对数似然函数为

这就是交叉熵的特殊情况,随机变量只取01两个值。要求该函数的最大值,等价于求下面函数的极小值:

目标函数的梯度为

Hessian矩阵为

如果单个样本的特征向量为:

矩阵Xi定义为

此矩阵可以写成如下乘积形式

对任意不为0的向量X

从而矩阵Xi 半正定,另外由于

因此Hessian矩阵半正定,目标函数是凸函数。logistic回归求解的优化问题是不带约束条件的凸优化问题。可以证明,如果使用欧氏距离作为目标函数则无法保证目标函数是凸函数。这是使用交叉熵而不使用欧氏距离作为logistic回归的目标函数的主要原因。

用于softmax回归

softmax回归是logistic回归的推广,用于解决多分类问题。给定l个训练样本(xi, yi),其中xin维特征向量,yi为类别标签,取值为1k之间的整数。softmax回归估计一个样本属于每一类的概率

模型的输出为一个k维的概率向量,其元素之和为1,每一个分量为样本属于该类的概率。使用指数函数进行变换的原因是指数函数值都大于0,概率值必须是非负的。分类时将样本判定为概率最大的那个类。要估计的参数为:

其中θi 每个都是一个列向量,θ是一个n×k的矩阵。如果将上面预测出的概率向量记为y*,即:

样本真实标签向量用one-hot编码,即如果样本是第 i 类,则向量的第个分量为1,其他为0,将这个标签向量记为y。仿照logistic回归的做法,样本属于每个类的概率可以统一写成:

显然这个结论是成立的。因为只有一个yi 为1,其他的都为0,一旦y的取值确定,如样本为第j类样本,则上式的值为yj* 。给定一批样本,它们的似然函数为:

yij 为第 i 个训练样本标签向量的第 j 个分量。对上式取对数,得到对数似然函数为

让对数似然函数取极大值等价于让下面的损失函数取极小值

这就是交叉熵,同样可以证明这个损失函数是凸函数。

对单个样本的损失函数可以写成:

如果样本属于第 i 类,则yi = 1,其他的分量都为0,上式可以简化为

下面计算损失函数对θp 的梯度。如果i=p,则有:

否则

如果一个样本是第p类的,对单个样本的损失函数可以简化为

如果softmax回归预测出来的属于第p类的值为1,即与真实标签值完全吻合,此时损失函数有极小值0。反之,如果预测出来属于第p类的值为0,此时损失函数值为正无穷。

用于神经网络

softmax回归经常被用作神经网络的最后一层,完成多分类任务,训练时采用的损失函数一般为交叉熵。在神经网络的早期,更多的使用了欧氏距离损失函数,后来对分类任务交叉熵使用的更多。对于分类问题,交叉熵一般比欧氏距离有更好的效果,可以收敛到更好的局部最优解。此时训练样本的类别标签向量同样为one-hot编码形式,是类别取每个值的概率,神经网络输出的概率估计向量要和真实的样本标签向量接近。

一文了解机器学习中的交叉熵相关推荐

  1. 一文总览机器学习中各种【熵】的含义及本质

    https://www.toutiao.com/a6681435530564993544/ 2019-04-19 11:02:15 机器学习领域有一个十分有魅力的词:熵.然而究竟什么是熵,相信多数人都 ...

  2. 机器学习优化中的交叉熵及改进形式

    机器学习优化中的交叉熵及改进形式   [摘要]目前分类问题广泛的应用到我们的实际生活中[1],因而我们应该研究如何分类,研究它的算法.交叉熵通常在机器学习的分类问题中用作损失函数来判断分类模型的优劣, ...

  3. 深度学习中softmax交叉熵损失函数的理解

    1. softmax层的作用 通过神经网络解决多分类问题时,最常用的一种方式就是在最后一层设置n个输出节点,无论在浅层神经网络还是在CNN中都是如此,比如,在AlexNet中最后的输出层有1000个节 ...

  4. 机器学习中的交叉验证

    总第100篇 本篇讲讲机器学习中的交叉验证问题,并利用sklearn实现. 前言 在说交叉验证以前,我们先想一下我们在搭建模型时的关于数据切分的常规做法[直接利用train_test_split把所有 ...

  5. 一文解决机器学习中的过拟合与欠拟合问题(正则化,数据增强,Dropout)

    一文解决机器学习中的过拟合与欠拟合问题(正则化,数据增强,Dropout,提前终止) 生活中的过拟合与欠拟合现象 过拟合与欠拟合的概念 解决过拟合与欠拟合问题的四大金刚 正则化 数据增强 Dropou ...

  6. 一文介绍机器学习中的三种特征选择方法

    作者 | luanhz 来源 | 小数志 导读 机器学习中的一个经典理论是:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限.也正因如此,特征工程在机器学习流程中占有着重要地位.广义的特征 ...

  7. 机器学习中的交叉验证与有关定理

    1.交叉验证 简单交叉验证:随机的将样本数据分为两部分(比如:70%的训练集,30%的测试集),然后用训练集来训练模型,在测试集上验证模型及参数.接着,再把样本打乱,重新选择训练集和测试集,继续训练数 ...

  8. 第五章functions.py中的交叉熵代码解释

    functions中的一个交叉熵的代码是这样的: def cross_entropy_error(y, t):if y.ndim == 1:t = t.reshape(1, t.size)y = y. ...

  9. 干货丨一文介绍机器学习中基本的数学符号

    在机器学习中,你永远都绕不过数学符号. 通常,只要有一个代数项或一个方程符号看不懂,你就完全看不懂整个过程是怎么回事了.这种境况非常令人沮丧,尤其是对于那些正在成长中的机器学习初学者来说更是如此. 如 ...

最新文章

  1. 用gdb调试core文件
  2. golang浮点型及使用细节
  3. MongoDB 5.0新特性概览
  4. 地磅称重软件源码_电脑设备器件+塔吊主吊臂+撇渣管、丝杆+地磅称重传感器+极柱触头盒弯板+批式循环谷物干燥机+升降机标准节...
  5. 019、Linux性能监控:memory
  6. HTML5 Canvas save 保存恢复状态
  7. 使用MegaCli工具,在线调整raid配置
  8. Idea java 程序打jar包(maven)
  9. jquery ui tabs
  10. 【Oracle】ORA-30042: Cannot offline the undo tablespace
  11. 开启3389的方法记录
  12. 如何快速搭建在线教育知识付费系统(附带源码)
  13. eclipse安装red5插件,创建red5项目
  14. 两数互素有什么性质_两个数互质是什么意思 判断互质数的方法有哪些
  15. 如何优化网站才能让网站打开速度更快
  16. 可免费编辑 PDF 内容的 7 大 PDF 编辑工具
  17. c 语言实现多线程排序,在c中使用多线程快速排序
  18. 什么是图灵机及图灵完备(一)
  19. ORACLE怎么读英语,ORALCE是什么意思
  20. Light OJ 1214

热门文章

  1. 虚假新闻检测挑战赛落幕,探寻获奖团队背后的故事
  2. 图灵访谈 | 微盟技术专家戴頔:永远行走在路上
  3. 全球首个可繁殖活体机器人问世:AI参与设计,已自我繁殖4代
  4. 离群?异常?新类?开集?分布外检测?一文搞懂其间异同!
  5. 赠票 | 互联网大厂的数据治理与资产管理实战 | DAMS 2020
  6. 二次元少女生成器、会开车的神经网络...2019年最好的17个机器学习项目!
  7. 15篇最新AI论文推荐新鲜出炉!真的很skr了~(附链接)
  8. 【NLP招聘动态】太难啦!面试官盘点NLP近五年招聘动态
  9. 图灵奖获得者Yann LeCun:未来几十年AI研究的最大挑战是「预测世界模型」
  10. 施一公:大学必须不计成败、不论得失地为探索者提供宽容和支持的环境