热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

机器学习中的数学(2):信息熵与损失函数,致敬Shannon神

机器学习中的数学(2):信息熵与损失函数,致敬Shannon神

在众多的机器学习和深度算法中,我们见到许多度量模型效果的损失函数,在回归任务中常见的是均方误差函数,在分类任务中,交叉信息熵则使用很频繁,为什么呢?本次文章将带你领略香农信息论的魔力。

本期导读:

  • 香农与信息论
  • 信息熵
  • 相对熵与交叉熵
  • 均方误差与交叉熵对比
  • 多目标分类
  • 最小化交叉熵与最大化似然函数

申明

本文原理解释及公式推导部分均由LSayhi完成,允许部分或全部转载,但请注明出处;详细数据及代码可在github查阅。

GitHub:https://github.com/LSayhi/book-paper-note

微信公众号:AI有点可ai(文末附二维码,感谢您的关注)

CSDN博客:https://blog.csdn.net/LSayhi

一、香农与信息论

信息论是研究信息及其传输的一般规律的学科,运用数学和其他相关方法研究信息的性质、计量以及获得、传输、存储、处理和交换等。香农被称为是“信息论之父”,通常将香农于1948年10月发表于《贝尔系统技术学报》上的论文《A Mathematical Theory of Communication》作为现代信息论研究的开端,在该文中,香农给出了信息熵的定义,从此信息量的度量有了更精确的数学描述,而不再是以“多”或“少”来衡量,信息论中的很多概念都有跨学科的应用,不只在通信领域,在编码学、密码学、数据压缩、检测与估计理论中就广泛地运用了信息论的相关概念,机器学习和深度学习也涉及到许多信息论的知识,下图是香农半神。

机器学习中的数学(2):信息熵与损失函数,致敬Shannon神

二、信息熵

物质、能量、信息是世界的三大要素。在信息论诞生之前,物质和能量众多物理学家和数学家已经给出了基本的定义和度量,但是关于信息的度量还没有一个明确的方式,香农在1948年提出了度量信息的法则,并称之为信息熵。
由于信息论首先是应用在通信领域的,我们沿用通信系统的假设,在定义信息熵之前,先给出“自信息”的度量,对于一个分布为p(x)随机变量X,自信息表示为:机器学习中的数学(2):信息熵与损失函数,致敬Shannon神

  • 为了理解这个公式的含义,举个例子,宅男A说他昨晚约了校花出去玩,我们的第一反应是很吃惊,随口一句,“卧槽,怎么可能,信息量太大了”,而当男神B说他十一准备约女朋友的云南旅游,我们的反应除了“卧槽,禽兽,好好玩【滑稽】”就没了。为什么呢?因为按照常理,宅男A约到校花的概率很小,基本上不可能发生的,而男神B约他女票已经大家习以为常的事情,这种事情发生的概率本来就很大,恭喜你已经有了直观的对信息量多少的概念了,这时我们再看自信息的公式,其很完美的契合了我们对信息量的直观感受,就是概率越小的事情,信息量越大,打雷快要下雨蕴含的信息量不多,但是学渣考了满分信息量很大。
  • 说完了自信息的概念,我们来引入信息熵,对于分布为p(x)的随机变量X,其信息熵定义为:
    机器学习中的数学(2):信息熵与损失函数,致敬Shannon神 对于离散的情况, 机器学习中的数学(2):信息熵与损失函数,致敬Shannon神 信息熵总是大于0的,从定义公式来看,信息熵可以理解为自信息的数学期望。那些接近确定性的分布,信息熵比较低,而越是接近均匀分布的,信息熵比较高,这可以对信息熵求最值推导出。这个和越不容易发生的事情信息越大这个基本思想是一致的。从这个角度看,信息可以看做是不确定性的衡量,而信息熵就是对这种不确定性的数学描述(换句话说,就是消除系统不确定性所需的信息量,而不是系统的信息量)。

三、相对熵与交叉熵

信息熵使用来衡量一个分布p其自身的不确定性,相对熵则用来衡量两个分布p和q之间的差异,在信息论中也称为KL散度,其定义为:机器学习中的数学(2):信息熵与损失函数,致敬Shannon神

  • 相对熵公式的前半部分就是交叉熵。相对熵只有在p(x)=q(x)时,值才为0。若p和q不同分布,其值就会大于0,证明如下:
    机器学习中的数学(2):信息熵与损失函数,致敬Shannon神
  • 上式中不等号利用的是Jensen不等式,当p=q时,等号成立。在机器学习中,比如分类问题,如果把结果当作是概率分布来看,标签表示的就是数据真实的概率分布,由logistic函数和softmax函数产生的结果其实是对于数据的预测分布,预测分布和真实分布差值叫做KL散度或者是相对熵。若p(x)是数据的真实概率分布,q(x)是由数据计算假设的概率分布,我们目的就是让q(x)尽可能地逼近甚至等于p(x),从而使得相对熵接近最小值0。在统计学中,概率学派认为真实的概率分布是固定的(例如抛硬币正反面都是概率是0.5),相对熵公式的后半部分就成了一个常数,最小化相对熵就等效于最小化交叉熵。值得一提的是,对交叉熵求最小值,也“等效”于最大化似然函数(见第五部分)。

四、均方误差与交叉熵对比

对于损失函数,最直观的是采用均方误差函数,所以先讨论均方误差函数作为损失函数的情况。常系数1/2是为了计算方便美观,m是样本数据量大小,x为样本,y为样本标签,**函数取常见的sigmoid函数:机器学习中的数学(2):信息熵与损失函数,致敬Shannon神

  • 为了方便讨论,我们取一个样本x来推导说明,对于minibatch梯度下降只需将x替换为向量X即可。此时
    机器学习中的数学(2):信息熵与损失函数,致敬Shannon神
    于是可得,偏导数
    机器学习中的数学(2):信息熵与损失函数,致敬Shannon神
    机器学习中的数学(2):信息熵与损失函数,致敬Shannon神
机器学习中的数学(2):信息熵与损失函数,致敬Shannon神
  • 我们知道sigmoid函数图像如上所示,它的函数值在z很小或者很大时变化很慢,即对z的导数很小,结合以上的两个偏导公式,我们可以发现,当|z|较大时,sigmoid的导数那项较小,导致两个偏导数较小(即梯度较小),于是梯度下降时w和b的更新速度较慢,所以代价函数收敛的较慢,可以会导致梯度消失问题,为了解决这个问题,人们提出了relu等其它**函数来使得梯度下降的速度保持较高的水平,但同时也带了其它问题,还有一种解决方案是,重新定义损失函数,使得损失函数与sigmoid函数的导数无关。

人们发现既然相对熵(等价于交叉熵+常数)可以衡量两个分布之间的差异,在二分类或多分类的机器学习任务中,输出值在0到1之间,实际上也可以认为是一种概率空间,那么其也应该可以用来作为损失函数,更让人兴奋的是,应用交叉信息熵作为损失函数时,其梯度与sigmoid的导数项无关。以下是用交叉熵作为损失度量时的梯度推导。

  • 对于二分类情况(比如,判断一张图片中是否有猫),交叉熵损失函数为:
    机器学习中的数学(2):信息熵与损失函数,致敬Shannon神
    对于多目标分类(例如一张图片中有猫有狗有老虎有狮子),n为类别数,交叉熵损失函数为:
    机器学习中的数学(2):信息熵与损失函数,致敬Shannon神
    同样地,为了表达式更简洁,推导采用一个样本来说明,对于minibatch只需向量化X即可,此时
    机器学习中的数学(2):信息熵与损失函数,致敬Shannon神
    假设底数为2,可得偏导数
    机器学习中的数学(2):信息熵与损失函数,致敬Shannon神
    机器学习中的数学(2):信息熵与损失函数,致敬Shannon神
    对比损失函数是均方误差情况下的偏导数,可以看出,交叉熵损失函数的两个偏导数的值均与sigmoid函数的导数无关,所以更容易避免梯度消失的问题,能够提高训练的速率。

五、最小化交叉熵与最大化似然函数

首先,在讲解这点之前,纠正一个广泛的错误表达,在大量的博客中,充斥着一句话“最小化交叉熵相当于求最大似然估计”,这句话是有一些问题的,在于最大似然估计是求参数,最小化交叉熵不仅要求参数,还要给出损失大小。

  • 最大似然估计是基于统计方法去估计模型参数从而重建模型的方法。最大似然估计的基本过程是对已知的分布中独立同分布地抽取出n个样本,然后利用这n个样本去估计该分布的未知参数。例如我们知道高考成绩服从正态分布,但我们不知道这个正态分布的均值和方差,于是我们可以从考生成绩样本空间中独立同分布的抽取足够多的n个样本,然后利用统计的方法估计出均值和方差,这就是最大似然估计的过程。
  • 那么似然函数又是什么?似然函数是在求最大似然估计过程中用到的一个概率,这个概率是抽样的n个样本的联合概率分布,可以写作
    机器学习中的数学(2):信息熵与损失函数,致敬Shannon神
    而x1,x2,xn是独立同分布的,这个时候
    机器学习中的数学(2):信息熵与损失函数,致敬Shannon神
    参数θ是需要估计的,参数θ需要使P最大,我们称P为似然函数,把求使P最大的参数θ的过程叫最大似然估计,为了简化计算,我们定义下式对数似然函数
    机器学习中的数学(2):信息熵与损失函数,致敬Shannon神 由于log函数为单调函数,所以对数似然函数最大时,似然函数也最大,此时对应的最大似然估计为
    机器学习中的数学(2):信息熵与损失函数,致敬Shannon神
    对此式除以n,不改变最大似然估计的值,于是
    机器学习中的数学(2):信息熵与损失函数,致敬Shannon神
    注意到式
    机器学习中的数学(2):信息熵与损失函数,致敬Shannon神
    恰巧就是交叉信息熵的相反数,于是我们得知,我们可以知道最大化似然函数(也即最大化上式),就相当于是最小化交叉信息熵。

六、总结与预告

本期主要介绍了信息论中的相关概念,深入浅出的带大家推导和理解了信息熵交叉熵等概念,并将均方误差损失和交叉熵损失进行对比,给出了多目标分类下的证明,随后对最小化交叉熵与最大化似然函数的等价关系进行了证明,下期我们将对最大似然估计的”亲朋好友”进行介绍。

微信公众号:AI有点可ai

机器学习中的数学(2):信息熵与损失函数,致敬Shannon神

推荐阅读
  • 近期,微信公众平台上的HTML5游戏引起了广泛讨论,预示着HTML5游戏将迎来新的发展机遇。磊友科技的赵霏,作为一名HTML5技术的倡导者,分享了他在微信平台上开发HTML5游戏的经验和见解。 ... [详细]
  • MATLAB实现Sobel边缘检测算法
    图像边缘是指图像中灰度值发生显著变化的区域。Sobel算子是一种常用的边缘检测方法,通过计算图像灰度值的梯度来检测边缘。本文介绍了Sobel算子的基本原理,并提供了基于MATLAB的实现代码。 ... [详细]
  • 对于众多创业公司而言,选择小程序或小视频的发展方向至关重要。本文将深入分析小程序和小视频的特点、优势及局限,帮助创业者做出更明智的选择。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • Java swing 连连看小游戏  开发小系统 项目源代码 实训实验毕设
    Javaswing连连看小游戏开发小系统项目源代码实训实验能满足学习和二次开发可以作为初学者熟悉Java的学习,作为老师阶段性学习的一个成功检验不再是单调的理解老师空泛的知识,导入 ... [详细]
  • 在2019中国国际智能产业博览会上,百度董事长兼CEO李彦宏强调,人工智能应务实推进其在各行业的应用。随后,在“ABC SUMMIT 2019百度云智峰会”上,百度展示了通过“云+AI”推动AI工业化和产业智能化的最新成果。 ... [详细]
  • 【实例简介】本文详细介绍了如何在PHP中实现微信支付的退款功能,并提供了订单创建类的完整代码及调用示例。在配置过程中,需确保正确设置相关参数,特别是证书路径应根据项目实际情况进行调整。为了保证系统的安全性,存放证书的目录需要设置为可读权限。值得注意的是,普通支付操作无需证书,但在执行退款操作时必须提供证书。此外,本文还对常见的错误处理和调试技巧进行了说明,帮助开发者快速定位和解决问题。 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 在使用USB接口的二维条码扫描器时,发现其无法正确识别条码中的中文字符。然而,采用串口连接的方式则能够成功识别。目前面临的问题是如何将通过串口获取的数据在网页中进行实时展示,希望各位专家能提供解决方案,不胜感激。 ... [详细]
  • 题目解析给定 n 个人和 n 种书籍,每个人都有一个包含自己喜好的书籍列表。目标是计算出满足以下条件的分配方案数量:1. 每个人都必须获得他们喜欢的书籍;2. 每本书只能分配给一个人。通过使用深度优先搜索算法,可以系统地探索所有可能的分配组合,确保每个分配方案都符合上述条件。该方法能够有效地处理这类组合优化问题,找到所有可行的解。 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 浅析卷积码的应用及其优势:探讨卷积编码在通信系统中的关键作用与特性
    本文详细介绍了卷积编码的基本原理,并深入分析了其在通信系统中的应用及其显著优势。卷积编码通过在编码过程中引入冗余信息,有效提高了数据传输的可靠性和抗干扰能力,成为现代通信系统中不可或缺的关键技术。文章还探讨了卷积编码在不同场景下的具体实现方法及其性能特点。 ... [详细]
author-avatar
情若自已_650
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有