马氏距离+协方差矩阵+KL散度的理解

协方差矩阵:

假设 X n × m \mathbf X_{n×m} Xn×m代表n个样本,m个维度。 μ x ( 1 × m ) \mu_{\mathbf x_{(1×m)}} μx(1×m) X n × m \mathbf X_{n×m} Xn×m每一维度的均值,那么协方差矩阵计算公式为:
协方差矩阵

马氏距离:

1、判断样本与总体之间的距离,考虑到各个特征之间的相关性,并于各个分量的尺度无关。如果样本就处于总体的均值处, 则距离为0,该距离随着P偏移均值而逐步增大。
假设总体的均值和协方差矩阵为 μ x ∈ ( 1 × m ) , Σ x ∈ ( m × m ) \mu_{\mathbf x} \in(1×m),\Sigma_{\mathbf x} \in(m×m) μx(1×m),Σx(m×m),样本 x ∈ ( 1 × m ) x \in(1×m) x(1×m),则马氏距离:
D m a h a ( X , x ) = ( x − μ x ) Σ x − 1 ( x − μ x ) T D_{maha}(\mathbf X, x)=(x- \mu_{\mathbf x}) \Sigma_{\mathbf x}^{-1}(x- \mu_{\mathbf x})^T Dmaha(X,x)=(xμx)Σx1(xμx)T
2、也可以判断服从同一分布的两个样本之间的距离
假设分布的协方差矩阵为 Σ \Sigma Σ
D m a h a ( y , x ) = ( x − y ) Σ − 1 ( x − y ) T D_{maha}(y, x)=(x- y) \Sigma^{-1}(x- y)^T Dmaha(y,x)=(xy)Σ1(xy)T

KL 散度

D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g p ( x i ) q ( x i ) D_{KL}(p||q)= \sum_{i=1}^np(x_i) log\frac{p(x_i)}{q(x_i)} DKL(pq)=i=1np(xi)logq(xi)p(xi)
其中p( x i x_i xi)是真实的分布,q( x i x_i xi)是我们预测的分布,我们希望q( x i x_i xi)越接近p( x i x_i xi)越好。KL散度就是衡量任意一个分布偏离真实分布的程度,如果两个分布完全匹配,那么KL散度为0,否则KL散度取值为0到无穷大之间。

从公式上理解KL散度

如果 q ( x i ) q(x_i) q(xi)大于 p ( x i ) p(x_i) p(xi),那么 l o g p ( x i ) q ( x i ) log\frac{p(x_i)}{q(x_i)} logq(xi)p(xi)小于0,反之,对数项大于0。只有当 q ( x i ) = = p ( x i ) q(x_i)==p(x_i) q(xi)==p(xi),D等于0。而使用 p ( x i ) p(x_i) p(xi)对这个对数项加权求和之后,从某种意义上说,这就是求期望的过程。也就是希望在真实分布 p p p概率大的地方权重更大,即更重要。
但是KL散度是不对称的,即 D k l ( p ∣ ∣ q ) ≠ D k l ( q ∣ ∣ p ) D_{kl} (p||q) \neq D_{kl}(q||p) Dkl(pq)=Dkl(qp)。我们在用 q ( x i ) q(x_i) q(xi)近似真实分布 p ( x i ) p(x_i) p(xi)的时,可以选择最小化 D k l ( p ∣ ∣ q ) D_{kl}(p||q) Dkl(pq)或着最小化 D k l ( q ∣ ∣ p ) D_{kl}(q||p) Dkl(qp)。两种选择取决于具体问题。1

如何选择:

D k l ( p ∣ ∣ q ) D_{kl}(p||q) Dkl(pq):模型更倾向选择一个分布 q q q,使得它在 p p p具有高概率的地方具有高概率。例如当 p p p具有多个峰时, q q q选择将这些峰模糊在一起,以便将高概率质量放到所有峰上。
D k l ( q ∣ ∣ p ) D_{kl}(q||p) Dkl(qp):模型倾向选择一个分布 q q q,使得它在 p p p具有低概率的地方具有低概率。当 p p p具有多个峰且这些峰间隔很宽时, q q q会选择单个峰,以避免将概率质量放在 p p p的多个峰之间的低概率区域。另外,如果这些峰没有别足够强的低概率区域分离,那么也可以选择这个公式来强调高概率的地方具有高概率的结果,此时这个方向的KL散度仍然可能选择模糊这些峰。
两个方向的KL散度选择
KL散度是非负的

KL散度在神经网络中的用法

因为神经网络一般不会预测出分布的概率密度函数,所以以上直接基于概率密度函数的公式没法用,但是可以用经过变换之后的公式来计算两个分布的KL散度。
一般神经网络都是通过预测出分布的均值和方差,再计算与真实分布的KL距离。
1、假设 p n × m \mathbf p_{n×m} pn×m是服从原分布的n个样本,每个样本有m个维度。 μ p , Σ p \mu_{\mathbf p},\Sigma_{\mathbf p} μp,Σp为真实分布的均值和协方差矩阵, μ q , Σ q \mu_{\mathbf q},\Sigma_{\mathbf q} μq,Σq为网络预测的均值方差,那么真实分布和网络预测的分布KL散度为:
D k l ( p ∣ ∣ q ) = 1 2 { l o g ∣ Σ q ∣ ∣ Σ p ∣ − m + t r ( Σ q − 1 Σ p ) + ( μ q − μ p ) T Σ q − 1 ( μ q − μ p ) } D_{kl}(\mathbf p || \mathbf q)=\frac12 \{log\frac {|\Sigma_\mathbf q|}{|\Sigma_\mathbf p|}-m+tr(\Sigma_\mathbf q^{-1} \Sigma_\mathbf p)+(\mu_{\mathbf q}-\mu_{\mathbf p})^T \Sigma_q^{-1}(\mu_{\mathbf q}-\mu_{\mathbf p}) \} Dkl(pq)=21{logΣpΣqm+tr(Σq1Σp)+(μqμp)TΣq1(μqμp)}
2、当真实分布 p \mathbf p p服从一元标准正态分布,即 p ∼ N ( 0 , 1 ) \mathbf p \sim N(0,1) pN(0,1),网络预测的均值和方差为 q ∼ N ( μ , σ 2 ) \mathbf q \sim N(\mu, \sigma^2) qN(μ,σ2)
D k l { N ( μ , σ 2 ) ∣ ∣ N ( 0 , 1 ) } = 1 2 { − l o g σ 2 + μ 2 + σ 2 − 1 } D_{kl}\{N(\mu,\sigma^2) || N(0,1)\}= \frac12 \{ -log \sigma^2 + \mu^2+ \sigma^2 - 1\} Dkl{N(μ,σ2)N(0,1)}=21{logσ2+μ2+σ21}
这个公式更多的用在VAE网络中。


  1. 更多细节说明可以看花书3.13节关于信息的知识 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值