在一般的分类问题中,通常的套路都是提取特征,将特征输入分类器训练,得到最终的模型。但是在具体操作时,一开始提出的特征和输入分类器训练的特征是不一样的。比如假设有N张100×100的图像,分别提取它们的HoG特征x∈Rp×q,p为特征的维数,
如果把直接把这样的一万个x直接投入分类器训练,效果不一定好,因为不一定每个像素点的信息都是有价值的,里面可能有很多是冗余的信息。而且特征维度太高会导致最终的训练时间过长。
所以通常会对raw features做一些预处理。最常用的就是词袋模型(bag of words)。
Alt text
上图中k-means+featuresc encoding这一步就是典型的词袋模型。K-means是最常用的聚类方法之一,我们的例子中,有N幅图像,每幅图像有
k-means的缺点在于,它是一个hard聚类的方法,比如有一个点任何一个聚类中心都不属于,但是词袋模型仍然可能会把它强行划分到一个聚类中心去。对于一个点,它属不属于某个聚类中心的可能性是个属于(0,1)的整数值。
相反,高斯混合模型(Gaussian Mixture Model) 就是一种soft聚类的方法,它建立在一个重要的假设上,即任意形状的概率分布都可以用多个高斯分布函数去近似。顾名思义,高斯混合模型是由很多个高斯分布组成的模型,每一个高斯分布都是一个component。每一个component Nk∼(μk,σk),k=1,2,…K对应的是一个聚类中心,这个聚类中心的坐标可以看作(μk,σk),对于一个点xi它属于第k个聚类中心的可能性
所以当给定N张图像的训练集合
其中p(x|k)~N(μk,σk),设p(k)=πk表示的是第k个高斯分布的被选中的概率,也就是权重。现在的任务就是找到
故有
对上式分别对于μ,Σ,ϕ求偏导并置于0,就可以求出最优的参数。但是上式中又有加和,我们没法直接用求导解方程的办法直接求得最大值。
所以一般解高斯混合模型都用的是EM算法。
EM算法分为两步:
在E-step中,估计数据由每个component生成的概率。
假设μ,Σ,ϕ已知,对于每个数据 xi 来说,它由第k个component 生成的概率为
在M-step中,估计每个component的参数
利用上一步得到的pik,它是对于每个数据 xi 来说,它由第k个component生成的概率,也可以当做第
重复迭代前面两步,直到似然函数的值收敛为止。