几个数学工具#
Stirling 公式,阶乘的近似#
l n ( n ! ) ≃ n l n n − n ln(n!) \simeq nlnn - n l n ( n !) ≃ n l nn − n
n越大越接近。
连续变量的Jensen不等式#
f ( ∫ x p ( x ) d x ) ≤ ∫ f ( x ) p ( x ) d x f(\int xp(x)dx) \leq \int f(x)p(x)dx f ( ∫ x p ( x ) d x ) ≤ ∫ f ( x ) p ( x ) d x
拉格朗日乘子法,解决多约束条件f下多变量函数的驻点问题#
等式约束g ( x ) = 0 g(x) = 0 g ( x ) = 0 中,直接:
L ( x , λ ) ≡ f ( x ) + λ g ( x ) L(x, \lambda) \equiv f(x) + \lambda g(x) L ( x , λ ) ≡ f ( x ) + λ g ( x )
令∂ f ∂ x = 0 \frac{\partial f}{\partial x} = 0 ∂ x ∂ f = 0 满足驻点,令∂ f ∂ λ = 0 \frac{\partial f}{\partial \lambda} = 0 ∂ λ ∂ f = 0 满足等式约束。
不等式约束g ( x ) > = 0 g(x) >= 0 g ( x ) >= 0 中,还是
L ( x , λ ) ≡ f ( x ) + λ g ( x ) L(x, \lambda) \equiv f(x) + \lambda g(x) L ( x , λ ) ≡ f ( x ) + λ g ( x )
然后满足KKT条件(以下三条):
g ( x ) > = 0 g(x) >= 0 g ( x ) >= 0
λ > = 0 \lambda >= 0 λ >= 0
λ g ( x ) = 0 \lambda g(x)=0 λ g ( x ) = 0
最后一条是所谓的“互补松弛性”,非常好理解,要么λ = 0 \lambda=0 λ = 0 (不在边界上,约束无效),要么g ( x ) = 0 g(x) = 0 g ( x ) = 0 (在边界上,满足边界)。
具体的解释在SVM中有,此处不加赘述。
信息熵公式为啥长这样?#
h ( x ) h(x) h ( x ) 为信息量,H ( x ) H(x) H ( x ) 为平均信息量,也就是所谓的随机变量x x x 的“熵”。
h ( x ) = − l o g 2 p ( x ) h(x) = -log_{2}p(x) h ( x ) = − l o g 2 p ( x )
H [ x ] = − ∑ x p ( x ) l o g 2 p ( x ) H[x] = - \sum_{x}p(x)log_2p(x) H [ x ] = − ∑ x p ( x ) l o g 2 p ( x )
对信息含量的判断取决于 概率分布p ( x ) p(x) p ( x ) 。
(如果一个事件一定会发生,我们从观测到这件事发生不能获得任何信息量,但是如果一个事件发生概率很小,我们观测到它发生了,就能获得很多信息。)
如果两个互不相关的事件x x x 和y y y ,那么观测到这两个事的信息量应等于两件事分别发生的信息量之和:
h ( x , y ) = h ( x ) + h ( y ) h(x, y) = h(x) + h(y) h ( x , y ) = h ( x ) + h ( y )
由于两个不相关事件是独立的,所以
p ( x , y ) = p ( x ) p ( y ) p(x, y) = p(x)p(y) p ( x , y ) = p ( x ) p ( y )
这时我们用p p p 定义h h h ,显然应当用对数 。
所以就可以得到一开始的公式:
h ( x ) = − l o g 2 p ( x ) h(x) = -log_{2}p(x) h ( x ) = − l o g 2 p ( x )
然后我们求整个传输过程的平均信息量,就要乘上事件发生的概率(权重),就得到:
H [ x ] = − ∑ x p ( x ) l o g 2 p ( x ) H[x] = - \sum_{x}p(x)log_2p(x) H [ x ] = − ∑ x p ( x ) l o g 2 p ( x )
非均匀分布的熵比均匀分布的熵小#
从对事件进行信息编码的角度考虑。
我们可以利用非均匀分布的优势,对可能性较高的事件使用较短的编码 ,这样平均编码长度就会较短。
无噪声编码定理指出:熵是传播随机变量状态所需比特数的下界 。
从将物品分进箱子推导熵公式#
将N N N 个相同的物品分进一组箱子,第i i i 个箱子放n i n_i n i 个物品。
不区分箱子内部物品的排列,可得方法总数为
W = N ! ∏ i n i ! W = \frac{N!}{\prod_i n_i!} W = ∏ i n i ! N !
这就是无谓的乘数 。
熵可以定义为用一个适当的常熟缩放后的乘数的对数:
H = 1 N l n W = 1 N l n N ! − 1 N ∑ i l n n i ! H = \frac{1}{N}lnW = \frac{1}{N}lnN! - \frac{1}{N}\sum_ilnn_i! H = N 1 l nW = N 1 l n N ! − N 1 ∑ i l n n i !
应用斯特林近似公式l n ( N ! ) ≃ N l n N − N ln(N!) \simeq NlnN - N l n ( N !) ≃ Nl n N − N
H = ln N − ∑ i n i N ln n i = − lim N → ∞ ∑ i ( n i N ) ln ( n i N ) = − ∑ i p i ln p i \begin{aligned} H &= \ln N - \sum_i \frac{n_i}{N} \ln n_i \\ &= - \lim_{N \to \infty}\sum_i \left(\frac{n_i}{N}\right) \ln \left(\frac{n_i}{N}\right) \\ &= -\sum_i p_i \ln p_i \end{aligned} H = ln N − i ∑ N n i ln n i = − N → ∞ lim i ∑ ( N n i ) ln ( N n i ) = − i ∑ p i ln p i
微分熵及其不凡性质#
离散熵用来衡量离散变量,微分熵用来衡量连续变量 。
微分熵是一个相对量 ,是熵取极限后舍弃掉无穷大的− l n Δ -ln\Delta − l n Δ 部分得到。
H [ x ] = − ∫ p ( x ) ln p ( x ) d x H[x] = - \int p(x) \ln p(x) dx H [ x ] = − ∫ p ( x ) ln p ( x ) d x
微分熵可以是负数(比如正态分布的某个点有个很高的峰值)
微分熵对坐标尺度敏感,比如将x变为2x微分熵会变,所以一般只比较两个相同坐标系下的分布的熵。(相对量而非绝对量 )
条件熵、相对熵(KL散度)与互信息#
条件熵#
H [ x , y ] = H [ x ] + H [ y ∣ x ] H[x, y] = H[x] + H[y|x] H [ x , y ] = H [ x ] + H [ y ∣ x ]
相对熵(KL散度)#
用近似分布q ( x ) q(x) q ( x ) 去描述真实分布p ( x ) p(x) p ( x ) 的信息,显然我们需要额外信息量,而这个额外的信息量就是KL散度。
K L ( p ∣ ∣ q ) = − ∑ p ( x ) ln q ( x ) p ( x ) = ∑ p ( x ) ln p ( x ) − ∑ p ( x ) ln q ( x ) = − ∑ p ( x ) ln q ( x ) ⏟ 交叉熵 H ( p , q ) − ( − ∑ p ( x ) ln p ( x ) ) ⏟ 真实熵 H ( p ) \begin{aligned} KL(p||q) &= -\sum p(x) \ln \frac{q(x)}{p(x)} \\ &= \sum p(x) \ln p(x) - \sum p(x) \ln q(x) \\ &= \underbrace{-\sum p(x) \ln q(x)}_{\text{交叉熵 } H(p,q)} - \underbrace{(-\sum p(x) \ln p(x))}_{\text{真实熵 } H(p)} \end{aligned} K L ( p ∣∣ q ) = − ∑ p ( x ) ln p ( x ) q ( x ) = ∑ p ( x ) ln p ( x ) − ∑ p ( x ) ln q ( x ) = 交叉熵 H ( p , q ) − ∑ p ( x ) ln q ( x ) − 真实熵 H ( p ) ( − ∑ p ( x ) ln p ( x ))
交叉熵H ( p , q ) H(p, q) H ( p , q ) 大于真实熵H ( p ) H(p) H ( p ) ,相减之后是所需的额外熵(即KL散度)
证明KL散度>=0#
其中利用到gensen不等式f ( ∫ x p ( x ) d x ) ≤ ∫ f ( x ) p ( x ) d x f(\int xp(x)dx) \leq \int f(x)p(x)dx f ( ∫ x p ( x ) d x ) ≤ ∫ f ( x ) p ( x ) d x ,以及∫ q ( x ) d x = 0 \int q(x)dx = 0 ∫ q ( x ) d x = 0 这一事实。
K L ( p ∣ ∣ q ) = − ∫ p ( x ) ln q ( x ) p ( x ) d x ≥ − l n ∫ q ( x ) d x = 0 KL(p||q) = -\int p(x) \ln \frac{q(x)}{p(x)} dx \geq - ln \int q(x)dx = 0 K L ( p ∣∣ q ) = − ∫ p ( x ) ln p ( x ) q ( x ) d x ≥ − l n ∫ q ( x ) d x = 0
最小化KL散度等同于最大化似然函数#
arg min θ K L ( p data ∥ q θ ) = arg min θ ( − E x ∼ p data [ ln q θ ( x ) ] ⏟ 负对数似然 (NLL) + E x ∼ p data [ ln p data ( x ) ] ⏟ 常数 (与 θ 无关) ) ⟺ arg max θ ∑ i ln q θ ( x i ) \underset{\theta}{\arg\min} \ KL(p_{\text{data}} \| q_{\theta}) = \underset{\theta}{\arg\min} \left( \underbrace{- \mathbb{E}_{x \sim p_{\text{data}}} [\ln q_{\theta}(x)]}_{\text{负对数似然 (NLL)}} + \underbrace{\mathbb{E}_{x \sim p_{\text{data}}} [\ln p_{\text{data}}(x)]}_{\text{常数 (与}\theta\text{无关)}} \right) \iff \underset{\theta}{\arg\max} \sum_{i} \ln q_{\theta}(x_i) θ arg min K L ( p data ∥ q θ ) = θ arg min 负对数似然 (NLL) − E x ∼ p data [ ln q θ ( x )] + 常数 ( 与 θ 无关 ) E x ∼ p data [ ln p data ( x )] ⟺ θ arg max ∑ i ln q θ ( x i )
互信息#
比如说现在有x分布和y分布,我们想考量知道x对我们预测y有多大帮助(或者反过来)。
我们可以通过x和y的联合分布p ( x , y ) p(x, y) p ( x , y ) 和边缘分布乘积p ( x ) p ( y ) p(x)p(y) p ( x ) p ( y ) 的KL散度(其实就是相似度)来判断两者的独立程度。
I [ x , y ] = K L ( p ( x , y ) ∥ p ( x ) p ( y ) ) = ∬ p ( x , y ) ln ( p ( x , y ) p ( x ) p ( y ) ) d x d y \begin{aligned} I[x, y] &= KL(p(x, y) \| p(x)p(y)) \\ &= \iint p(x, y) \ln \left( \frac{p(x, y)}{p(x)p(y)} \right) dx dy \end{aligned} I [ x , y ] = K L ( p ( x , y ) ∥ p ( x ) p ( y )) = ∬ p ( x , y ) ln ( p ( x ) p ( y ) p ( x , y ) ) d x d y
互信息如果用条件熵来表示,就是:
I [ x , y ] = H [ y ] − H [ y ∣ x ] = H [ x ] − H [ x ∣ y ] I[x, y] = H[y] - H[y|x]= H[x] - H[x|y] I [ x , y ] = H [ y ] − H [ y ∣ x ] = H [ x ] − H [ x ∣ y ]
%%互信息 = y 的原始不确定性 - 知道了 x 之后 y 剩下的不确定性 = x 的原始不确定性 - 知道了 y 之后 x 剩下的不确定性%%
我们可以把互信息看作:
由于获知y的值,我们减少了多少x的不确定性(反之亦然)
但主要还是用来描述两个分布的“互信息”。