之前在GCN中碰到的交叉熵损失函数是分类问题中经常使用的一种损失函数,对于其内部原理感觉没有完全懂,今天来深入理解一下。

交叉熵简介

交叉熵 :信息论中的一个重要概念,主要用于度量两个概率分布间的差异性
信息是用来消除随机不确定性的东西”,衡量信息量的大小就是看这个信息消除不确定性的程度。
“太阳东升西落”,这条信息并没有减少不确定性,因为太阳肯定是从东边升起西边落下,这是一句人人都知道的话,信息量为0。
”2018年中国队成功进入世界杯“,从直觉上来看,这句话具有很大的信息量。因为中国队进入世界杯的不确定性因素很大,而这句话消除了进入世界杯的不确定性,所以按照定义,这句话的信息量很大。
根据上述总结:信息量的大小与信息发生的概率成反比。概率越大,信息量越小。
设某一事件发生的概率为P(x),其信息量表示为:

其中 I(x)表示信息量,这里 log 表示以e为底的自然对数。
信息熵
信息熵也被称为熵,用来表示所有信息量的期望。

期望是试验中每次可能结果的概率乘以其结果的总和。

所以信息量的熵可表示为:(这里的 X是一个离散型随机变量)

对0-1分布的问题,其结果只用两种情况,是或不是,设某一件事情发生的概率为 P ( x ) ,则另一件事情发生的概率为 1 − P ( x ) ,所以对于0-1分布的问题,计算熵的公式可以简化如下:

相对熵(KL散度)
如果对于同一个随机变量 X X有两个单独的概率分布 P ( x ) 和 Q ( x ) ,则我们可以使用KL散度来衡量这两个概率分布之间的差异。
机器学习中,常常使用 P ( x ) P\left(x\right) P(x)来表示样本的真实分布, Q ( x ) Q \left(x\right) Q(x)来表示模型所预测的分布,比如在一个三分类任务中(例如,猫狗马分类器), x 1 , x 2 , x 3 分别代表猫,狗,马,例如一张猫的图片真实分布 P ( X ) = [ 1 , 0 , 0 ]预测分布
Q ( X ) = [ 0.7 , 0.2 , 0.1 ]计算KL散度:

KL散度越小,表示 P ( x ) 与 Q(x)的分布更加接近,可以通过反复训练 Q ( x ) 来使 Q ( x ) 的分布逼近 P ( x )

交叉熵
首先将KL散度公式拆开:

前者 H ( p ( x ) )表示信息熵,后者即为交叉熵,KL散度 = 交叉熵 - 信息熵
交叉熵公式表示为:

在机器学习训练网络时,输入数据与标签常常已经确定,说明真实概率分布 P ( x )已经确定,即信息熵是一个常量。由于KL散度的值表示真实概率分布 P ( x ) 与预测概率分布 Q ( x ) 之间的差异,其值越小说明预测结果越好。因此需要最小化KL散度,而交叉熵等于KL散度加上一个常量(信息熵),且公式相比KL散度更加容易计算,所以在机器学习中常常使用交叉熵损失函数来计算loss。
总结:

交叉熵能够衡量同一个随机变量中的两个不同概率分布的差异程度,在机器学习中就表示为真实概率分布与预测概率分布之间的差异。交叉熵的值越小,模型预测效果就越好。

交叉熵在分类问题中常常与softmax是标配,softmax将输出的结果进行处理,使其多个分类的预测值和为1,再通过交叉熵来计算损失。
如GCN中预测:

从GCN中学习的信息熵相关推荐

  1. 浙大吴飞教授:尽管AlphaGo Zero已强大到从经验中学习模型,我也绝不赞同马斯克和霍金的威胁论,人才是智能的最终主宰

    记者 | 鸽子 在整个采访过程中,吴飞教授在回答中给人的最大感受是温和.儒雅.他没有激烈的言辞,也没有犀利的观点,不会一开始直接抛出自己的判断,而是将所有的提问,看作是一次学术上的严谨探讨,从问题本身 ...

  2. 《从缺陷中学习C/C++》——6.15 试图产生的指针很可能不存在

    本节书摘来自异步社区出版社<从缺陷中学习C/C++>一书中的第6章,第6.15节,作者: 刘新浙 , 刘玲 , 王超 , 李敬娜 , ,更多章节内容可以访问云栖社区"异步社区&q ...

  3. rust墙壁升级点什么_分享:如何在阅读Rust项目源码中学习

    今天做了一个Substrate相关的小分享,公开出来. 因为我平时也比较忙,昨天才选定了本次分享的主题,准备比较仓促,细节可能不是很充足,但分享的目的也是给大家提供一个学习的思路,更多的细节大家可以在 ...

  4. 极客新闻——05、如何在工作中学习和成长?

    本文笔记全部来自<极客新闻>--新鲜的技术资讯.权威的趋势剖析.别样的技术洞察 关于如何进行自我学习的话题? 不同的人可能有不同的回答,总结起来就是阅读博客.参加技术大会.读书.利用闲暇时 ...

  5. 3D U-Net:从稀疏注释中学习密集的体积分割

    作者:Tom Hardy Date:2020-01-10 来源:3D U-Net:从稀疏注释中学习密集的体积分割

  6. 程序员失业第一步?斯坦福研究员用AI从编译器反馈中学习改Bug

    来源:AI科技评论 本文约2700字,建议阅读10分钟 本文介绍了来自斯坦福大学的两位研究员研究了如何使用AI来自动修复程序,以期未来程序修复自动化可以大大提高编程和学习编程的效率. 众所周知,程序员 ...

  7. 《从缺陷中学习C/C++》——6.18 小结

    本节书摘来自异步社区出版社<从缺陷中学习C/C++>一书中的第6章,第6.18节,作者: 刘新浙 , 刘玲 , 王超 , 李敬娜 , ,更多章节内容可以访问云栖社区"异步社区&q ...

  8. MVVM架构~knockoutjs系列之从Knockout.Validation.js源码中学习它的用法

    说在前 有时,我们在使用一个插件时,在网上即找不到它的相关API,这时,我们会很抓狂的,与其抓狂,还不如踏下心来,分析一下它的源码,事实上,对于JS这种开发语言来说,它开发的插件的使用方法都在它的源码 ...

  9. 「从源码中学习」面试官都不知道的Vue题目答案

    前言 当回答面试官问及的Vue问题,我们除了照本宣科的回答外,其实还可以根据少量的源码来秀一把,来体现出你对Vue的深度了解. 本文会陆续更新,此次涉及以下问题: "new Vue()做了什 ...

最新文章

  1. 关于Linux的inode和dentry的一组文章
  2. MySQL——单表查询练习:彩票数据核对
  3. (C#)链接本地数据SDF。
  4. 你是个失败者,有什么资格说话?
  5. session的钝化和活化
  6. mysql 5.6.31 配置_MySQL5.6.31 winx64.zip 安装配置教程详解
  7. 面试前,不要这么准备了,简直愚蠢到极点
  8. 可视化概念思维导图软件 MindMapper 17 Arena 完美汉化开心版
  9. white-space 空白处理、强制内容不换行,word-wrap 文本自动换行,text-overflow 文本溢出
  10. Chrome 76.0.3809.100(正式版本) (64 位) 版本 77.0.3865.90不显示网址中的www怎么解决...
  11. 尚硅谷大数据开发Day01
  12. 监狱智能化管理系统综合安防解决方案
  13. 学计算机基础的重要性,浅谈学习计算机基础知识的重要性.pdf
  14. linux 6重启网卡,centos 网卡重启方法
  15. 浅层砂过滤器的原理是什么,滤料是什么,需要不需要定期?
  16. trim函数去除空格(所有空格,前后,前,后)以及字母大小写切换
  17. linux网络服务器笔记
  18. 生日礼物(winter camp F)
  19. Web前端面试指导(二):编写简历,吃透简历内容
  20. 《30天自制操作系统》读书笔记(2)hello, world

热门文章

  1. tf.nn.sigmoid_cross_entropy_with_logits 分类
  2. Bzoj 4371: [IOI2015]sorting排序 二分
  3. django QuerySet
  4. transform,translate,transition 的区别
  5. Apache ActiveMQ教程
  6. 学习拾遗--用RadioButtonList 或者DropDownList 进行动态赋值问题
  7. JDK5新特性之一----静态导入
  8. HibernateTemplate使用方法
  9. 用MyEclipse测试发送email时报java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
  10. PHP5.5+Nginx1.9