交叉熵

交叉熵和极大似然

无人久伴 提交于 2019-11-28 04:02:52
交叉熵是用来计算两个函数或者概率之间的距离,计算的方式也是使用的KL Divergence 理解交叉熵作为神经网络的损失函数的意义: 交叉熵刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近,即拟合的更好。 CrossEntropy=H(p)+DKL(p∣∣q)CrossEntropy=H(p)+DKL(p∣∣q) Cross Entropy= H(p)+DKL(p||q)CrossEntropy=H(p)+DKL(p∣∣q) 当p分布是已知,则熵是常量;于是交叉熵和KL散度则是等价的。 最小化KL散度和模型采用最大似然估计进行参数估计又是一致的。(可以从公式推导上证明) 这也是很多模型又采用最大似然估计作为损失函数的原因。 来源: https://www.cnblogs.com/ivyharding/p/11391008.html

熵、交叉熵、KL散度、JS散度

﹥>﹥吖頭↗ 提交于 2019-11-27 22:59:41
熵、交叉熵、KL散度、JS散度 一、信息量 事件发生的可能性大,信息量少;事件发生的可能性小,其信息量大。 即一条信息的信息量大小和它的不确定性有直接的关系,比如说现在在下雨,然后有个憨憨跟你说今天有雨,这对你了解获取天气的信息没有任何用处。但是有人跟你说明天可能也下雨,这条信息就比前一条的信息量大。可以看出信息量的大小与事件发生的可能性成反比。 \[ \begin{align} p\left(x\right) &= Pr(X=x),x \in \chi \notag \\ I(x) &= - \log(p(x)) \tag{1} \end{align} \] \(I(x)\) 称为随机变量X的自信息,描述的是随机变量的某个事件(X = \(x\) )发生所带来的信息量。这里可以稍微理解一下为什么使用 \(log\) :例如两个相互独立的事件 \(x,y\) ,因为两者相互独立所以两个事件带来的信息量为 \(I(x)+I(y)\) ,而两个事件同时发生的概率是 \(p(x,y) = p(x)p(y)\) 。 \(log\) 函数就满足这两个式子,其中 \(log\) 的基数可以任意,常用的是2(二进制编码), \(e\) 。 二、熵 从信息量的公式可以看出,当一个事件的发生概率为 \(p(x)\) 时,它的信息量就是 \(-log(p(x))\)

交叉熵似然函数

大城市里の小女人 提交于 2019-11-27 19:21:06
交叉熵似然函数 转载自: https://zhuanlan.zhihu.com/p/70804197 信息熵 信息熵是消除不确定性所需信息量的度量 信息熵是信息的不确定程度 信息熵越小,信息越确定 \(信息熵=\sum\limits_{x=1}^n(信息x发生的概率\times{验证信息x所需信息量})\) 今年中国取消高考了,这句话我们很不确定(甚至心里还觉得这TM是扯淡),那我们就要去查证了,这样就需要很多信息量(去查证);反之如果说今年正常高考,大家回想:这很正常啊,不怎么需要查证,这样需要的信息量就很小。 根据信息的 真实分布 ,我们能够找到一个最优策略,以 最小的代价消除系统的不确定性 ,即 最小信息熵 概率越低,需要越多的信息去验证,所以 验证真假需要的信息量和概率成反比 。我们需要用数学表达式把它描述出来,推导: 考虑一个离散的随机变量 ,已知信息的量度依赖于概率分布 ,因此我们想要寻找一个函数 ,它是概率 的单调减函数(因为 \(p(x)\) 越大,所需要的信息量就越小),表示 信息量 怎么寻找呢?如果我们有两个不相关的事件 和 ,那么观察两个事件同时发生时获得的信息量应该等于观察到事件各自发生时获得的信息之和,即: 因为两个事件是 独立不相关 的,因此 根据这两个关系,很容易看出 一定与 的 对数 有关。 由对数的运算法则可知: 因此,我们有

softmax_cross_entropy_with_logits详解

瘦欲@ 提交于 2019-11-26 02:08:03
tf.softmax_cross_entropy_with_logits()的计算过程一共分为两步:1.对输入进行softmax转换成概率;2.计算交叉熵损失 对输入进行softmax转换成概率 比如某个logits = [2, 7, 5],使用softmax将logits转换成概率,就是按照公式: , 计算logits中每个元素的值: 计算logits中每个元素的值,计算结果为[0.00589975 0.8756006 0.11849965],这三个元素每个都不小于0并且和为1,所以构成了概率分布。 计算交叉熵损失 假设对应logits的标签labels是[0,1,0],根据交叉熵公式: 计算概率化之后的logits和标签之间的交叉熵损失,其中 y' = [0.00589975 0.8756006 0.11849965] ,也就是−0×log(0.00589975)−1×log(0.8756006)−0×log(0.11849965)=0.6355716 注意事项 上面举的例子只对应一个样本的logits=[2, 7, 5],一般训练时batch size不会为设为1, 所以要使用tf.reduce_mean()来对tf.softmax_cross_entropy_with_logits()的结果取平均,得到关于样本的平均交叉熵损失.比如batch size = 2 logits