混合高斯聚类的一种实现方法

本文介绍了混合高斯聚类模型的一种实现方法,通过优化KL散度实现聚类,适用于目标检测中替代NMS。文章详细阐述了算法原理、聚类迭代过程,并通过实验展示了方法的有效性,指出其局限性和优化方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近来看了一篇文章《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=1kαiN(y;μi,Σi)=i=1kα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=1kαifi(y)j=1mβ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),于是拟合问题就是:
θ=arg⁡min⁡θ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(log⁡pgpf)(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(N1N2)=21(logΣ1Σ2+Tr(Σ21Σ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(xu,Σ)=(2π)n/2Σ1/21exp{ 21(xu)TΣ1(xu)}
则两个高斯分布的KL散度为:
DKL(P1∣∣P2)=EP1[log⁡P1−log⁡P2] =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]}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值