信息熵、相对熵与交叉熵

news/2024/5/19 16:59:17 标签: , 交叉熵, 相对熵, KL散度

目录

1. 信息

  是一个信息论中的概念,表示随机变量不确定的度量,是对所有可能发生的事件产生的信息量的期望。信息公式如下:
H ( p ) = − ∑ i = 1 n p ( x i ) l o g p ( x i ) H(p)=-\sum_{i=1}^{n}{p(x_i)logp(x_i)} H(p)=i=1np(xi)logp(xi)
关于的详细解释可参考最大阈值分割法

2. 相对

  相对又称KL散度,用于衡量对于同一个随机变量x的两个分布 p ( x ) p(x) p(x) q ( x ) q(x) q(x)之间的差异。 p ( x ) p(x) p(x)表示样本真实分布, q ( x ) q(x) q(x)表示模型预测分布,模型训练就是不断让 q ( x ) q(x) q(x)分布拟合分布 p ( x ) p(x) p(x)KL散度的值越小表示两个分布越接近。KL散度公式如下:
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g p ( x i ) q ( x i ) D_{KL}(p||q)=\sum_{i=1}^{n}{p(x_i)log\frac{p(x_i)}{q(x_i)}} DKL(pq)=i=1np(xi)logq(xi)p(xi)

3. 交叉

  将KL散度变形得到如下表达式:
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g p ( x i ) − ∑ i = 1 n p ( x i ) l o g q ( x i ) = − H ( p ( x ) ) + [ − ∑ i = 1 n p ( x i ) l o g q ( x i ) ] \begin{aligned} D_{KL}(p||q)&=\sum_{i=1}^{n}{p(x_i)logp(x_i)}-\sum_{i=1}^{n}{p(x_i)logq(x_i)} \\ &=-H(p(x))+[-\sum_{i=1}^{n}{p(x_i)logq(x_i)}] \end{aligned} DKL(pq)=i=1np(xi)logp(xi)i=1np(xi)logq(xi)=H(p(x))+[i=1np(xi)logq(xi)]
  第一项就是 p ( x ) p(x) p(x)的信息,第二项就是交叉cross entropy。我们常用KL散度来评估真实标签和预测标签的差别,由于KL散度第一项是个常量,所以直接将第二项的交叉作为损失函数也是一样的。

4. 交叉与softmax

  分类问题中常用交叉作为模型的损失函数。样本标签 y 的值为1或者0可以看做是概率,而模型的输出是一个实数值,如何将这个实数值转换成概率呢?这就要用到 softmax 函数了(所以面试官会经常问为什么交叉要和 softmax 一起用)。假设模型输出为 y 1 , y 2 , . . . , y n y_1,y_2,...,y_n y1,y2,...,yn,经过 softmax 后的输出为:
s o f t m a x ( y i ) = e y i ∑ j = 1 n e y i softmax(y_i)=\frac{e^{y_i}}{\sum_{j=1}^{n}{e^{y_i}}} softmax(yi)=j=1neyieyi
  这样就把模型的输出也变成了一个概率分布,从而可以用交叉来计算预测值和真实值之间的距离了。


http://www.niftyadmin.cn/n/1094583.html

相关文章

转载 DNS查询流程简介

转载请注明出处:http://blog.csdn.net/luotuo44/article/details/45545059 DNS(domain name system),读者们或多或少都听过,就是可以将域名转换给IP的一个系统。使得我们只需记住域名而非IP就能访问某个网站。当我们在浏览器里面输入一个网址…

Android SQLite 事务处理

应用程序初始化时需要批量的向sqlite中插入大量数据,单独的使用forInsert方法导致应用响应缓慢,因为 sqlite插入数据的时候默认一条语句就是一个事务,有多少条数据就有多少次磁盘操作。我的应用初始5000条记录也就是要5000次读写磁盘操作。而且不能保证所…

Git命令——git log小结

git log 查看当前分支的提交历史 在提交了若干更新之后,想回顾下提交历史,可以使用git log命令查看。 默认不用任何参数的话,git log会按提交时间列出所有的更新,最近的更新排在最上面。看到了吗,每次更新都有一个 S…

Android 4.2原生支持从右到左的文字排列格式

Android 4.1(Jelly Bean) 在 TextView 和 EditText 元素里对“双向文字顺序”提供了有限的功能支持,允许应用程序在编辑和显示字符的时候,能够同时支持从左到右(LTR)以及从右到左(RTL)的排列格式。Android…

SVN代码统计工具——statsvn

###1、介绍 StatSVN是一个Java写的开源代码统计程序,能够从Subversion版本库中取得信息,然后生成描述项目开发的各种表格和图表。比如:代码行数的时间线;针对每个开发者的代码行数;开发者的活跃程度;开发者…

脏话文本检测方案

目录1. 场景2. 方案3. 数据增强4. 代码1. 场景 在问答系统中用户问题可能存在违规情况,包含涉政、色情、辱骂文字的文本视为违规文本。本文提出一种违规文本检测方案, 本方案仅限于判断文本是否包含违规内容,属于文本分类问题。 2. 方案 方案…

1)Spring基础

《SpringBoot实战》笔记 1.Spring概述 1.1 Spring的简史 第一阶段:xml配置 不多赘述 第二阶段:注解配置 在Spring2.x时代,随着JDK1.5带来的注解支持,Spring提供了声明Bean的注解(如Component、Service&#xff0…