信息量

 
- 随机变量X,其取值有x1,x2,...,称这些取值为不同的事件。
- P(xi)=P(X=xi)越小,也就是事件发生的概率越小,我们认为该事件的信息量就越大。
- 信息量的计算:I(xi)=−logP(xi)
- 又叫自信息I,表示一个事件发生所包含的信息的多少。

信息量如此抽象的事物也能数字化,
在AI的世界中,多少并不重要,重要的是相对差异,
你拥有0.1有没有觉得很少,但其余所有人加起来不足0.01,
哇,地球上所有人的财富加起来 还不到 你财富的十分之一,是不是很富有!!!

这个公式重点有二:
1 使用了概率,概率指出了全体是什么,即讨论一个事物前先定下了边界,是在一定范围内去讨论一个问题
2 使用了log这个函数,恰如其份地表达了两个内容:
  2.1 越大,就是概率越接近1,就是近乎100%发生的事,没有啥可再讨论的空间了,信息量很少
  2.2 越小,就是概率越接近0,变数越多,包含的信息越多,啥都有可能发生啊,讨论几天几夜都不会有啥结果的
熵(Entropy)

 
熵:各类事件 信息量 的期望

熵的计算:H(X)=∑P(xi)I(xi)=−∑P(xi)logP(xi)

用于衡量事件/系统的信息量,信息量越大,其概率越小
由于该熵处理的是信息量,所以也有人叫这个熵为信息熵

相对熵(KL散度 Kullback-Leibler Divergence)

 
- KL离散度,也称KL距离,一般被用来计算两个分布的差异。KL离散度不具有对称性。
- 离散变量A和B分布的差别
Dkl(A||B) = ∑Pa(xi)log(Pa(xi)/Pb(xi))
    = ∑A中xi的概率*log(A中xi的概率/B中xi的概率)
    = ∑A中xi的概率*log(A中xi的概率) - ∑A中xi的概率*log(B中xi的概率)
    = ∑P(A)log(P(A)) - ∑P(A)log(P(B))

观察上面公式可以知道:
    当P(A)=P(B),即两个随机变量分布完全相同,KL离散度等于0;
    注意离散事件的公式,减号的前一部分即随机变量A的熵的相反数。
    DKL(A||B)≠DKL(B||A)

交叉熵

 
- 交叉熵公式:H(A,B)=−∑P_A(xi)logP_B(xi)
- D_{KL}(A||B)=−H(A)+H(A,B)
- KL离散度 = 交叉熵 - 熵 
- 通常A表示真实样本或已有样本,其熵是固定的
- B表示未来样本或新的样本,用于预测
- 当熵固定的时候,用KL散度来衡量两个分布的差异,等价于用交叉熵来衡量。
- 在人工智能中
    - A表示样本标签
    - B表示模型输出,即由模型预测出来的数据分布

## 交叉熵在机器学习中的作用
- 我们根据经验猜测一个接近数据分布规律的模型y=f(x)
- 或者为P(X|w),样本已知,模型已定,模型参数待定
- 模型输出与实际数据就是两个分布
- 交叉熵则能够以“数字大小”反应这两个分布之间的差异
- 我们的目的是让交叉熵不断地减小
- 让模型输出B不断地接近数据分布A,直到不能再接近为止
- 至此,我们将实际问题转换为 求交叉熵极值 的问题

import torch
def entorpy(x,label):
    """两个分布越接近其交叉熵越小
    """
    label = torch.tensor(label)
    x1 = torch.tensor(x)
    entorpy = -label*torch.log(x1)
    return entorpy.sum()

label = [0,0,1]
x1 = [0.1,0.3,0.7]
print(entorpy(x1,label))  # tensor(0.3567)


label = [0,0,1]
x1 = [0.01,0.03,0.9]
print(entorpy(x1,label))   # tensor(0.1054)

label = [0,0,1]
x1 = [0.01,0.06,0.92]
print(entorpy(x1,label))   # tensor(0.0834)

闲谈

 
所谓理解,就是用一个事物去描述/阐述 另外一个事物
孤立的节点,无法让人理解 
事物之间的联系,就是映射 
以边表示关系,节点表示事物,形成的网络,就是事物的简化

以边表示的关系,有两种:
1. 必然
2. 随机 

必然关系就像1+1=2一样,别问我为什么1+1就是2了,反正以此建立的数学体系可以解释很多客观现象
但很明显并没有解释完所有现象,至于是不是因为1+1有时候可以不为2导致的,俺不知道
万物经过漫长的运动,形成相对稳定的状态,这是必然关系经过时间积累的必然结果 

随机,也可以用精准的数字来描述
概率就是干这个的
对于单个事件,5%发生与95%不发生,没有意义,啥也说明不了
对于群体事物,5%发生,就有统计学意义

那如何用数字这种精准的事物,去表示现实三维世界中的事物呢?
1. 把事物数字化
2. 建立事物间的映射关系,就像万有引力一样,任何两个事物之间都存在映射关系
   并且事物之间的关系,不止一种

我们身在自然界,事物之间的关系,不用我们主动去发现/管理,
甚至我们感受不到多如繁星的关系网,
但在数字化的计算机,我们要先手工地建立事物之间的映射关系

参考