近来看了一篇文章《Hierarchical Clustering of a Mixture Model》【1】,它是一篇比较早的文章了,2005年,Jacob Goldberger Sam Roweis,Department of Computer Science, University of Toronto。文中讲到一种简单的高斯聚类方法,近来有文章将它用于目标检测(Object Detection)最后阶段,以代替NMS(non maximum suppression,非极大值抑制),获得更好的bbox预测。我试了一下,这种方法有其独到之处,经它处理后的bbox相互重叠的情况有很大改善,而且较NMS要“软”一些,没那么“硬”,生成的box样子要比NMS能更好地覆盖目标。接下来,我将结合自己的代码和实验进行小结。
一、高斯聚类
混合高斯模型(MoG,Gaussian Mixture Model)是一种常见的参数化概率模型,其表达形式如下:
f(y)=∑i=1kαiN(y;μi,Σi)=∑i=1kαifi(y)(1) f(y) = \sum^k_{i=1}\alpha_iN(y;\mu_i,\Sigma_i)= \sum^k_{i=1}\alpha_i f_i(y)\qquad (1) f(y)=i=1∑kαiN(y;μi,Σi)=i=1∑kαifi(y)(1)
f(y)f(y)f(y)是由 kkk 个d维高斯分布构成的混合分布,各高斯分布 fi(y)f_i(y)fi(y) 的期望和方差分别为 μi,Σi\mu_i,\Sigma_iμi,Σi。可将每个独立的高斯分布称为一个高斯核,所谓高斯聚类就是将多个高斯核进行聚类,用较少的高斯核来近似表达它,此过程描述如下:
f(y)=∑i=1kαifi(y)≈∑j=1mβjgj(y), and k>m(2) f(y) =\sum^k_{i=1}\alpha_i f_i(y)\approx \sum^m_{j=1}\beta_j g_j(y)\quad \text{, and }k\gt m\qquad(2) f(y)=i=1∑kαifi(y)≈j=1∑mβjgj(y), and k>m(2)
(2)式中 gj(y)g_j(y)gj(y) 也是与fi(y)f_i(y)fi(y) 同维度的高斯分布,且约等于式左边的高斯核数量要大于右边的高斯核数量。所谓高斯聚类,指的就是用较少的高斯核混合分布来拟合较多核的高斯混合分布。
要完成 G(y)=∑j=1mβjgj(y)G(y)= \sum^m_{j=1}\beta_j g_j(y)G(y)=∑j=1mβjgj(y) 对 F(y)=∑i=1kαifi(y)F(y)=\sum^k_{i=1}\alpha_i f_i(y)F(y)=∑i=1kαifi(y) 的拟合即求使分布 G(y)G(y)G(y) 与分布 F(y)F(y)F(y) 距离最小的参数,设 θ\thetaθ 是 G(y)G(y)G(y) 的可调参数集,于是 G(y)G(y)G(y) 可写为 Gθ(y)G_{\theta}(y)Gθ(y),于是拟合问题就是:
θ=argminθDistance(Gθ,F)(3) \theta=\arg\min_{\theta} {Distance}(G_{\theta},F)\qquad (3) θ=argθminDistance(Gθ,F)(3)
G(y)G(y)G(y) 与 F(y)F(y)F(y) 是两个分布,衡量概率分布的距离可以用KL散度:
KL(G,F)=EF(logpgpf)(4) KL(G,F)=\mathbb E_{F}(\log\frac{p_g}{p_f})\qquad(4) KL(G,F)=EF(logpfpg)(4)
有了衡量拟合效果的距离定义(KL),有了可控参数模型(G(y)G(y)G(y)),似乎拟合问题就可以直接转化为最优化问题了:将 Gθ(y)G_{\theta}(y)Gθ(y) 和 F(y)F(y)F(y) 是代入(3)、(4),距离KL对参数集(θ={
β,μ,Σ}\theta=\{\beta,\mu,\Sigma\}θ={
β,μ,Σ})求偏导,偏导置零求解最优参数集。但不幸的是Gθ(y)G_{\theta}(y)Gθ(y) 和 F(y)F(y)F(y) 都是混合高斯模型,这个过程没有闭式解,直接求最优解的方法行不通。怎么办?
突破点1:
两个混合高斯的KL没有闭式,但两个高斯的KL却是有闭式形式的:
设两个高斯分布分别为 N1(μ1,Σ1)N_1(\mu_1,\Sigma_1)N1(μ1,Σ1) 和 N2(μ2,Σ2)\N_2(\mu_2,\Sigma_2)N2(μ2,Σ2),则它们的KL距离为:
KL(N1∣∣N2)=12(log∣Σ2∣∣Σ1∣+Tr(Σ2−1Σ1)+(μ1−μ2)T(Σ2)−1(μ1−μ2)+d) KL(N_1||N_2) = \frac 12 \left( \log\frac {|\Sigma_2|}{|\Sigma_1|}+Tr(\Sigma_2^{-1}\Sigma_1)+(\mu_1-\mu_2)^T(\Sigma_2)^{-1}(\mu_1-\mu_2)+d\right) KL(N1∣∣N2)=21(log∣Σ1∣∣Σ2∣+Tr(Σ2−1Σ1)+(μ1−μ2)T(Σ2)−1(μ1−μ2)+d)
证明:
d维高斯分布:
N(x∣u,Σ)=1(2π)n/2∣Σ∣1/2exp{
−12(x−u)TΣ−1(x−u)} N(x|u,\Sigma ) = {1 \over {
{
{(2\pi )}^{n/2}}{
{\left| \Sigma \right|}^{1/2}}}}\exp \{ - {1 \over 2}{(x - u)^T}{\Sigma ^{ - 1}}(x - u)\} N(x∣u,Σ)=(2π)n/2∣Σ∣1/21exp{
−21(x−u)TΣ−1(x−u)}
则两个高斯分布的KL散度为:
DKL(P1∣∣P2)=EP1[logP1−logP2] =12EP1[−log∣Σ1∣−(x−u1)TΣ1−1(x−u1)+log∣Σ2∣+(x−u2)TΣ2−1(x−u2)] =12log∣Σ2∣∣Σ1∣+12EP1[−(x−u1)TΣ1−1(x−u1)+(x−u2)TΣ2−1(x−u2)] =12log∣Σ2∣∣Σ1∣+12EP1{
−tr[Σ1−1(x−u1)(x−u1)T]+tr[Σ2−1(x−u2)(x−u2)T]}