【Python深度学习】——信息量|熵

假设

例子:掷硬币
假设我们有一个公平的硬币。这个硬币有两个面:正面(H)和反面(T),每次掷硬币出现正面或反面的概率都是 0.5

1. 信息量

1.1 含义

信息量用来表示一件事发生的难易程度
一件事越容易发生, 它的信息量就越小.

1.2 信息量的公式:

  I ( x ) = − log ⁡ 2 P ( x )   \ I(x) = -\log_2 P(x) \  I(x)=log2P(x) 
其中,
  I ( x )   \ I(x) \  I(x) 表示事件 ( x ) 的信息量,   P ( x ) \ P(x)  P(x)表示事件 ( x ) 发生的概率
以2为底, 是转换到二进制下的表示复杂度.
此外, 事件独立时, 两个事件同时发生的信息量,等于两个事件的信息量相加.

  I ( A B ) = − log ⁡ 2 1 P ( A B ) = − log ⁡ 2 1 P ( A ) ∗ P ( B ) = − ( log ⁡ 2 1 P ( A ) + log ⁡ 2 1 P ( B ) ) = I ( A ) + I ( B )   \ I(AB)= -\log_2 \frac{1}{P(AB)} = -\log_2 \frac{1}{P(A)*P(B)} = -(\log_2 \frac{1}{P(A)}+ \log_2 \frac{1}{P(B)}) =I(A) + I(B) \  I(AB)=log2P(AB)1=log2P(A)P(B)1=(log2P(A)1+log2P(B)1)=I(A)+I(B) 

对于假设中的例子, 出现正面的信息量为:
I ( H ) = − log ⁡ 2 P ( H ) = − log ⁡ 2 0.5 = 1  bit I(H) = -\log_2 P(H) = -\log_2 0.5 = 1 \text{ bit} I(H)=log2P(H)=log20.5=1 bit
同理反面也是
I ( T ) = − log ⁡ 2 P ( T ) = − log ⁡ 2 0.5 = 1  bit I(T) = -\log_2 P(T) = -\log_2 0.5 = 1 \text{ bit} I(T)=log2P(T)=log20.5=1 bit

2. 熵Entropy

2. 含义

熵可以理解为一个整体/一个系统所携带的信息量.
系统整体由所有可能发生的事件构成. 例如, 抛硬币的结果出现正面和反面就构成一个完整的系统.
熵的值就等于概率分布中所有信息量的期望.

2.2 熵的计算公式:

H ( x ) = − ∑ i P ( x i ) log ⁡ 2 P ( x i ) H(x) = - \sum_{i} P(x_i) \log_2 P(x_i) H(x)=iP(xi)log2P(xi)
对于假设中的例子, 熵的计算为:
H ( X ) = − [ P ( H ) log ⁡ 2 P ( H ) + P ( T ) log ⁡ 2 P ( T ) ] H(X) = -\left [P(H) \log_2 P(H) + P(T) \log_2 P(T) \right] H(X)=[P(H)log2P(H)+P(T)log2P(T)]
即,
H ( X ) = − [ 0.5 log ⁡ 2 0.5 + 0.5 log ⁡ 2 0.5 ] H(X) = -\left[ 0.5 \log_2 0.5 + 0.5 \log_2 0.5 \right] H(X)=[0.5log20.5+0.5log20.5]

H ( X ) = − [ 0.5 ⋅ ( − 1 ) + 0.5 ⋅ ( − 1 ) ] H(X) = -\left[ 0.5 \cdot (-1) + 0.5 \cdot (-1) \right] H(X)=[0.5(1)+0.5(1)]

H ( X ) = 1 H(X) = 1 H(X)=1

2.3 熵的作用

熵可以用来评估概率模型的不确定性程度——概率密度越均匀, 不确定性越高,即熵越高; 概率密度越聚拢, 不确定性越低, 熵越低.
如下图所示,左图为一个平均分布, 不确定性较高;
右图为一个正太分布, 不确定性较低.

请添加图片描述

相关推荐

  1. 语义深度学习中的信息度量新指标

    2024-06-10 14:04:03       26 阅读
  2. 深度学习 - softmax交叉损失计算

    2024-06-10 14:04:03       27 阅读
  3. 决策树学习-计算数据集的信息

    2024-06-10 14:04:03       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-10 14:04:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-10 14:04:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-10 14:04:03       82 阅读
  4. Python语言-面向对象

    2024-06-10 14:04:03       91 阅读

热门阅读

  1. 【arxiv】国内arxiv 镜像

    2024-06-10 14:04:03       30 阅读
  2. 树的4种遍历

    2024-06-10 14:04:03       31 阅读
  3. 贪心算法跳跃游戏1and2

    2024-06-10 14:04:03       29 阅读
  4. vim常用技巧

    2024-06-10 14:04:03       22 阅读
  5. 软件技术的个人心得和看法

    2024-06-10 14:04:03       30 阅读
  6. “TH1“ 和 “TL1” 的命名含义

    2024-06-10 14:04:03       29 阅读
  7. 详细说说机器学习在医疗领域的应用

    2024-06-10 14:04:03       28 阅读