熵,KL散度(相对熵),交叉熵

2024-01-11 09:58
文章标签 交叉 相对 kl 散度

本文主要是介绍熵,KL散度(相对熵),交叉熵,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

信息量:-lg(p)  

I(x_{0}), 一个事件发生的概率越大,则它发生时所携带的信息量就越小;

 

熵: -\sump*lg(p)

对一个事件x_{1},x_{2},...,x_{n}所有可能的发生结果的信息量的期望E(I(X)),或者不确定性程度的期望;

 

KL散度(相对熵):D_{KL}(p||q) = \sum_{x} p(x)*lg\frac{p(x)}{q(x)}   (注意前面没有负号)

-\sum_{x} p(x)*lg{q(x)} + \sum_{x}p(x)*lgp(x)=H_{q}(p) - H(p)

用来度量两个分布p(真实分布),q(假设分布)之间的差异(严格意义上不是距离,因为不满足交换律)

例子:google用KL散度来度量蒙特卡罗树试探得到的action分布和神经网络预测得到的action分布之间的差异;

 

交叉熵:-\sum_{x} p(x)*lg{q(x)}

当p(x)是已知分布时,例如时已知的label y向量,则H(p)是常数,最小化KL散度就变成了最小化交叉熵,所以交叉熵就成了损失函数;

(之所以叫做交叉熵,是因为看上去像是H(p)和H(q)一个取前面一个取后面得到的。。。)

把p(x)放到lg里面的q(x)的指数上,就变成了负对数似然函数,所以交叉熵负对数似然函数是等价的;

 

ID3,C4.5,CART,3者对比:

C4.5的信息增益,可以削弱“对取值多的属性”的偏好,但是同时对取值数目少的属性就有了偏好。。。通常会,先选取信息增益高于平均水平的特征以后,再从中选取增益率高的。

ID3和C4.5的树可以是多叉树,CART的树只能是二叉树。

CART树可以做分类(gini系数),也可以做回归(均方误差损失函数);(Random Forest用的就是CART树)

gini系数: \sum_{k}p_{k}*(1-p_{k}) = 1 - \sum_{k}p_{k}^2  意义:从数据集D中随机抽取两个样本类别标识不一致的概率。基尼指数越小,数据集的纯度越高。优点:省去了log,节省了计算量;

 

Random Forest: (Random Forest用的就是CART树---(CART树:二叉树,分类用基尼指数指标,回归用平方误差))

1. 训练样本采样使用Bagging(有放回的采样,训练集占所有样本的比例趋向于0.632,1-(1-1/N)^N取极限)

2. 特征采样:每个树节点,只采样一部分特征,在这部分特征里选择最优特征和最优分界点;

这篇关于熵,KL散度(相对熵),交叉熵的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/593996

相关文章

Java了解相对较多!

我是对Java了解相对较多,而对C#则是因工作需要才去看了一下,C#跟Java在语法上非常相似,而最初让我比较困惑的就是委托、事件部分,相信大多数初学者也有类似的困惑。经过跟Java的对比学习,发现这其实跟Java的监听、事件是等同的,只是表述上不同罢了。   委托+事件是观察者模式的一个典型例子,所谓的委托其实就是观察者,它会关心某种事件,一旦这种事件被触发,这个观察者就会行动。   下

交叉编译python

1.解决python源码,进入源码目录 2.先编译本地版本的python。直接使用命令 ./configure --prefix=/home/KAS-300/python3.8 --enable-optimizationsmake -j8make install 3.把生成的python可执行文件临时加入PATH export PATH=/home/KAS-300/python3.8/

逐行讲解Transformer的代码实现和原理讲解:计算交叉熵损失

LLM模型:Transformer代码实现和原理讲解:前馈神经网络_哔哩哔哩_bilibili 1 计算交叉熵目的 计算 loss = F.cross_entropy(input=linear_predictions_reshaped, target=targets_reshaped) 的目的是为了评估模型预测结果与实际标签之间的差距,并提供一个量化指标,用于指导模型的训练过程。具体来说,交叉

(4)SVG-path中的椭圆弧A(绝对)或a(相对)

1、概念 表示经过起始点(即上一条命令的结束点),到结束点之间画一段椭圆弧 2、7个参数 rx,ry,x-axis-rotation,large-arc-flag,sweep-flag,x,y (1)和(2)rx,ry rx:椭圆的x轴半径(即水平半径) ry:椭圆的y轴半径(即垂直半径) 这两个参数好理解,就是椭圆的两条对称轴半径,相等即为圆 也可以写比例,写比例时默认用符合条件

OpenCV结构分析与形状描述符(9)检测轮廓相对于其凸包的凹陷缺陷函数convexityDefects()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 查找一个轮廓的凸性缺陷。 下图显示了一个手部轮廓的凸性缺陷: convexityDefects 是 OpenCV 库中的一个函数,用于检测轮廓相对于其凸包的凹陷缺陷。这个函数可以帮助识别轮廓中的凹进去的部分,通常被用来分析手部或其他物体的形状

【深度学习 误差计算】10分钟了解下均方差和交叉熵损失函数

常见的误差计算函数有均方差、交叉熵、KL 散度、Hinge Loss 函数等,其中均方差函数和交叉熵函数在深度学习中比较常见,均方差主要用于回归问题,交叉熵主要用于分类问题。下面我们来深刻理解下这两个概念。 1、均方差MSE。 预测值与真实值之差的平方和,再除以样本量。 均方差广泛应用在回归问题中,在分类问题中也可以应用均方差误差。 2、交叉熵 再介绍交叉熵损失函数之前,我们首先来介绍信息

libmad音频解码库-Linux交叉编译移植

下载并解压libmad-0.15.1b.tar.gz 下载链接:https://downloads.sourceforge.net/mad/libmad-0.15.1b.tar.gz $tar -xvf libmad-0.15.1b.tar.gz$cd libmad-0.15.1b 1、先执行下面的命令:这条命令是为了适配高版本的gcc,因为高版本的gcc已经将-fforce-mem去除了:

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测+交叉验证

回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测+交叉验证 目录 回归预测 | Matlab基于贝叶斯算法优化XGBoost(BO-XGBoost/Bayes-XGBoost)的数据回归预测+交叉验证效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现基于贝叶斯算法优化X

hi 平台 opencv4.8 交叉编译

echo "参数是 'arm_hi'"         current_path=$(pwd)         nproc=32         # arm-linux-gnueabihf-gcc, Cross-Toolchain PATH         export PATH="/opt/aarch64-v01c01-linux-musl-gcc/bin:$PATH"

神经网络多分类任务的损失函数——交叉熵

神经网络多分类任务的损失函数——交叉熵 神经网络解决多分类问题最常用的方法是设置n个输出节点,其中n为类别的个数。对于每一个样例,神经网络可以得到的一个n维数组作为输出结果。数组中的每一个维度(也就是每一个输出节点)对应一个类别。在理想情况下,如果一个样本属于类别k,那么这个类别所对应的输出节点的输出值应该为1,而其他节点的输出都为0。 以识别手写数字为例,0~9共十个类别。识别数字1,神经网