matlab图像信息熵交叉熵,【机器学习】信息量,信息熵,交叉熵,KL散度和互信息(信息增益)...

首先先强烈推荐一篇外文博客Visual Information Theory这个博客的博主colah是个著名的计算机知识科普达人,以前很是著名的那篇LSTM讲解的文章也是他写的。这篇文章详细讲解了信息论中许多基本概念的前因后果,并且很是的直观用了大量的图片,和形象化的解释。git

信息量

信息量用一个信息所须要的编码长度来定义,而一个信息的编码长度跟其出现的几率呈负相关,由于一个短编码的代价也是巨大的,由于会放弃全部以其为前缀的编码方式,好比字母”a”用单一个0做为编码的话,那么为了不歧义,就不能有其余任何0开头的编码词了.因此一个词出现的越频繁,则其编码方式也就越短,同时付出的代价也大.

github

I=log2(1p(x))=−log2(p(x))

信息熵

而信息熵则表明一个分布的信息量,或者编码的平均长度

web

H(p)=∑xp(x)log2(1p(x))=−∑xp(x)log2(p(x))

即信息量的均值

交叉熵 cross-entropy

交叉熵本质上能够当作,用一个猜想的分布的编码方式去编码其真实的分布,获得的平均编码长度或者信息量

机器学习

Hp(q)=∑xq(x)log2(1p(x))

如上面的式子,用猜的的p分布,去编码本来真是为q的分布,获得的信息量

交叉熵 cross-entropy在机器学习领域的做用

交叉熵cross-entropy在机器学习领域中常常做为最后的损失函数

为何要用cross-entropy呢,他本质上至关于衡量两个编码方式之间的差值,由于只有当猜想的分布约接近于真实分布,则其值越小。

好比根据本身模型获得的A的几率是80%,获得B的几率是20%,真实的分布是应该获得A,则意味着获得A的几率是100%,因此

svg

L=−∑iyilog(p(xi))+(1−yi)log(1−p(xi))

在LR中用cross-entry比平方偏差方法好在:

在LR中,若是用平方损失函数,则损失函数是一个非凸的,而用cross-entropy的话就是一个凸函数

用cross-entropy作LR求导的话,获得的导数公式以下

∂L∂θj=−∑i(yi−p(xi))xij

而用平方损失函数的话,其求导结果为

∂L∂θj=−∑i(yi−p(xi))p′(xi)

平方损失函数中会出现p′(xi)而sigmoid函数的导数会出现梯度消失的问题【一些人称之为饱和现象】

KL散度

KL散度/距离是衡量两个分布的距离,KL距离通常用D(q||p)或者Dq(p)称之为q对p的相对熵函数

Dq(p)=Hq(p)−H(p)=∑xq(x)log2(q(x)p(x))

KL散度与cross-entropy的关系

用图像形象化的表示两者之间的关系能够以下图:

7f04138f8a2a873c910305b5d32c3961.png

上面是q所含的信息量/平均编码长度H(p)

第二行是cross-entropy,即用q来编码p所含的信息量/平均编码长度|或者称之为q对p的cross-entropy

第三行是上面二者之间的差值即为q对p的KL距离post

非负性证实

根据上图显然其为非负的,可是怎么去证实呢,仍是利用琴生不等式

学习

Dq(p)=∑xq(x)log2(q(x)p(x))

=−∑xq(x)log2(p(x)q(x))

=−E(log2(p(x)q(x)))

≥log2E(p(x)q(x))

=log2∑xq(x)(p(x)q(x))

=log2∑xp(x)

由于

∑xp(x)=1

因此上式

Dq(p)≥0

非负性证实完成

联合信息熵和条件信息熵

下面几条咱们要说的是联合分布中(即同一个分布中)的两个变量相互影响的关系,上面说的KL和cross-entropy是两个不一样分布之间的距离度量【我的理解是KL距离是对于同一个随机事件的不一样分布度量之间的距离,因此是1.同一随机事件*2.不一样分布*】。

b949e5d3ffafa44dc4f42fb2cd147b0b.png编码

联合信息熵:

atom

H(X,Y)=∑x,yp(x,y)log2(1p(x,y))

条件信息熵:

H(X|Y)=∑yp(y)∑xp(x|y)log2(1p(x|y))

=∑x,yp(x,y)log2(1p(x|y))

举个例子,更容易理解一些,好比天气是晴天仍是阴天,和我穿短袖仍是长袖这两个事件其能够组成联合几率分布

H(X,Y)

因此对应着上面的第一条,而对于

H(x)

来讲就是下面第二横行,由于两个时间加起来的信息量确定是大于单一一个事件的信息量的。像

H(x)

对应着今每天气分布的信息量。

而今每天气和我今天穿衣服这两个随机几率事件并非独立分布的,因此若是已知今每天气的状况下,个人穿衣的信息量/不肯定程度是减小了的。

因此当已知

H(x)

这个信息量的时候,联合分布

H(X,Y)

剩余的信息量就是

条件熵:

H(Y|X)=H(X,Y)−H(X)

根据上面那个图,也能够通俗的理解为已知X的状况下,H(X,Y)剩余的信息量

互信息(信息增益)

互信息就是一个联合分布中的两个信息的纠缠程度/或者叫相互影响那部分的信息量

I(X,Y)=H(X)+H(Y)−H(X,Y)

I(X,Y)=H(Y)−H(Y|X)

决策树中的信息增益就是互信息,决策树是采用的上面第二种计算方法,即把分类的不一样结果当作不一样随机事件Y,而后把当前选择的特征当作X,则信息增益就是当前Y的信息熵减去已知X状况下的信息熵。

经过下图的刻画更为直观一些

c73b29b379bafd5820bc10533cd9b614.png

以上图能够清楚的看到互信息I(X,Y)的不一样求法

这里还有另一个量叫variation of information【不知道中文名叫啥】

V(X,Y)=H(X,Y)−I(X,Y)

Variation of information度量了不一样随机变量之间的差异,若是

V(X,Y)=0

说明这两个变量是彻底一致的,其约大说明两个变量越独立。

这里再注意一下Variation of information和KL距离的差异:

Variation of information是联合分布中(即

同一个分布中)的两个变量相互影响的关系

KL和cross-entropy是

两个不一样分布之间的距离度量

非负性证实

I(X,Y)=H(X)+H(Y)−H(X,Y)

=−∑x,yp(x,y)(log(p(x))+log(p(y))−log(p(x,y)))

=−∑x,yp(x,y)(log(p(x)p(y)p(x,y)))

=D(P(X,Y)||P(X)P(Y))

即互信息能够转化成两个分布

P(X,Y)

P(X)P(Y)

之间的KL距离,而KL距离的非负性在上面已经被证实过了,因此

I(X,Y)≥0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第2章第1讲数据类型及常量变量

#include"stdio.h"main() {printf("I love music!\n");printf("the music is \"D:\\music\\love.mp3\".\n");} #include "stdio.h" #define PI 3.14 //符号常量 main() {float r,area; …

数据结构有哪些

概念: 数据结构 : 数据用什么样的方式组合在一起。 数据结构是计算机存储数据的方式,指相互之间存在一种或多种特定关系的数据元素集合 常见数据结构: 数据存储的常用结构有:栈、队列、数组、链表和红黑树。 栈: stack…

php 关于日期的知识总结

1.UNIX时间戳 time() echo time(); 2.UNIX时间戳转换为日期用函数: date() 一般形式:date(Y-m-d H:i:s, 1156219870); 即 echo date(date(Y-m-d H:i:s, time())); 或 $showtime date(Y-m-d H:i:s,time()); 显示结果: 3.日期转换为UNIX时间…

php template strring,PHP字符串函数

<?php $str "THIS is a beautiful world!";//$newstr strstr($str,"is"); //区分大小写的//stristr 表示 $str里面第一次出现"is"的位置和之后的字符串//$newstr stristr($str,"is"); //不区分大小写$newstr stristr($str,&…

Java Calendar 类的时间操作

Java Calendar 类时间操作&#xff0c;这也许是创建和管理日历最简单的一个方案&#xff0c;示范代码很简单。 演示了获取时间&#xff0c;日期时间的累加和累减&#xff0c;以及比较。 原文地址&#xff1a;blog.csdn.NET/joyous/article/details/9630893 注意事项&#xff1a…

Java的异常入门

概念&#xff1a; 异常就是程序出现了不正常的情况&#xff0c;会导致JVM非正常停止&#xff0c;语法错误不算异常体系中 异常体系&#xff1a; 编译时异常&运行时异常&#xff1a; 虚拟机默认处理方式&#xff1a; 代码中出现异常&#xff0c;程序会先判断有没有处理异常的…

Java——多线程使用详解

多线程&#xff1a; 多线程就是同时执行多个应用程序&#xff0c;需要硬件的支持同时执行&#xff1a;不是某个时间段同时&#xff0c;cpu切换的比较快&#xff0c;所有用户会感觉是在同时运行 并发与并行&#xff1a; 并行(parallel)&#xff1a;指在同一时刻&#xff0c;有多…

php边框的颜色 怎么设置,网页中table表格如何修改边框颜色

table表格是网页制作中以前较常使用的一种布局方式&#xff0c;但随着DIVCSS的兴起&#xff0c;table表格已辉煌不在。但它在我们制作网页中也是时有用到。table表格也可以使用DIV一样随意的设置它的边框颜色。下面介绍一下二种方法。方法一&#xff1a;使用CSS代码控制边框颜色…

看懂线程安全

目录&#xff1a; 线程安全线程同步同步代码块同步方法Lock锁线程状态图sleep睡眠等待和唤醒 1. 线程安全 如果有多个线程在同时运行&#xff0c;而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样 的&#xff0c;而且其他的变量的值也和预期的是…

oracle数据库生产,从安装系统到oracle数据库生产环境(centos6.8)搭建

大纲服务器安装JDK配置Oracle数据库安装配置1.安装服务器服务器的安装参考这篇教程关于安装中可能出现的几个问题&#xff0c;在这里进行解决&#xff1a;1、使用u盘安装完后&#xff0c;系统进入GRUB引导&#xff0c;无法启动&#xff1a;解决办法&#xff1a;出现上述状况的原…

详解线程池

概念&#xff1a; 什么是线程池: 线程池是用来存储多线程的容器&#xff0c;是一种处理形式&#xff0c;处理过程中将任务添加到队列&#xff0c;然后在创建线程后自动启动这些任务。 线程池使用和不使用的区别&#xff1a; 因为系统创建线程池的成本很高&#xff0c;会涉及到…

oracle 10g express linux,在Ubuntu下安装Oracle Database 10g Express Edition

Oracle 10g有一款XE版&#xff0c;意为体验版&#xff0c;限制是不支持多CPU和数据库大小不能超过2G(还有其他的什么&#xff0c;不记得了&#xff0c;Oracle官方网站有写)。对于开发的时候调试一下&#xff0c;体验一下还是够用的。关键大小比较适中&#xff0c;安装包200多M。…

oracle硬盘亮黄灯,RH2288H V3服务器硬盘亮黄灯故障处理案例

原标题&#xff1a;RH2288H V3服务器硬盘亮黄灯故障处理案例本文广州诚本将分享RH2288H V3服务器硬盘亮黄灯故障处理案例&#xff0c;希望对大家的工作有所帮助。问题描述某客户新开局的项目&#xff0c;采购一批RH2288H V3的服务器&#xff0c;做RAID时发现其中一台服务器一块…

彻底学会IO流

概述&#xff1a; IO流就是用来处理设备间数据传输问题的.常见的应用: 文件复制; 文件上传; 文件下载IO的数据传输&#xff0c;可以看做是一种数据的流动&#xff0c;按照流动的方向&#xff0c;已内存为参照物&#xff0c;进行读写操作IO可以保存到文件&#xff0c;其实就是内…

一些芯片资料

74hc14d u10 u11 u12 六反相触发器 74HC244 三态八缓冲器 u15 u13 uln2003afwg u16 74HC07 u17 L298N 步进电机驱动芯片 MOS管认知 转载于:https://www.cnblogs.com/legion/p/6908434.html

DP Intro - Tree DP Examples

因为上次比赛sb地把一道树形dp当费用流做了&#xff0c;受了点刺激&#xff0c;用一天时间稍微搞一下树形DP&#xff0c;今后再好好搞一下&#xff09; 基于背包原理的树形DP poj 1947 Rebuilding Roads 题意&#xff1a;给你一棵树,让你求最少剪掉多少条边可以剪出一棵点数为m…

转换流/序列化/反序列化

转换流&#xff1a; 使用转换流可以在一定程度上避免乱码&#xff0c;还可以指定输入输出所使用的字符集 InputStreamReader&#xff1a;是从字节流到字符流的桥梁&#xff0c;父类是Reader OutputStreamWriter&#xff1a;是从字符流到字节流的桥梁&#xff0c;父类是Writer 转…

python+unittest框架整理(一点点学习前辈们的封装思路,一点点成长。。。)

预期框架整理目标&#xff1a; 1.单个用例维护在单个.py文件中可单个执行&#xff0c;也可批量生成组件批量执行 2.对定位参数&#xff0c;定位方法&#xff0c;业务功能脚本&#xff0c;用例脚本&#xff0c;用例批量执行脚本&#xff0c;常用常量进行分层独立&#xff0c;各自…

vs远程编译linux程序,使用Visual Studio 2015远程调试Linux程序

##安装 Visual Studio 2015安装时注意将跨平台移动开发->Visual C移动开发->Viaual C Android 开发的选项勾上##安装PUTTYVisual Studio依赖putty中的plink来连接Linux机器并发送命令##使用首先在Visual Studio中新建一个空项目这里是列表文本接下来将代码导入到这个空项…

都在说反射,反射到底是什么

概念&#xff1a; 什么是反射? 利用反射可以无视修饰符获取类里面所有的属性和方法对于任何对象&#xff0c;都能够调用它的方法和属性&#xff0c;这种动态获取信息以及动态调用对象方法的功能称为Java的反射 反射的应用场景? 常见的有&#xff1a; idea的智能提示、框架等…