# GMM

### 一维单高斯模型SGM##\#

分布概率密度函数PDF定义如下：

$$
N(x;\mu,\sigma) = \frac {1}{\sqrt {2\pi} \sigma}exp(-\frac {(x-\mu)^2}{2\sigma^2})
$$

### 多维单高斯模型SGM##\#

分布概率密度函数PDF定义如下：

$$
N(x;\mu,\Sigma) = \frac {1}{\sqrt {(2\pi)^D|\Sigma|}} exp(-\frac {1}{2}(x-\mu)^T \Sigma^{-1} (x-\mu))
$$

注：$$\mu\_k$$各类均值，$$\Sigma\_k$$各类协方差矩阵，D是维度

> 注意得满足下面3个条件，才等价于N维随机向量服从多维正太分布
>
> * 任何线性组合$$Y = \alpha\_1x\_1+ \ldots +\alpha\_n x\_n$$服从正太分布
> * 存在随机
>
>   参考wiki&#x20;

**几何理解：** 二维的SGM在平面上近似椭圆形，在三维空间中近似椭球体。

### 混合高斯模型##\#

由K个 Gaussian Model(多维)线性组合在一起就是GMM的概率密度函数：

$$
p(x) = \sum\_{k=1}^K p(Z\_k=1)p(x|Z\_k=1) =
\sum\_{k=1}^K \pi\_k N(x|\mu\_k,\Sigma\_k) \\
\sum\_{k=1}^K \pi\_k = 1 \\
Z\text{为K维向量,满足} Z\_k \in {0,1}  \ \text{一个样本不能由多个类别混合组成吗？EM中没这样要求。}
$$

这样应该是有问题的。后来看到徐亦达老师的课件中是这么定义的： ![](https://2270971654-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M7DcNFhVrwIk3Tks_pB%2Fsync%2F842c6ef3c66f054db3c287369d27912b987122a1.JPG?generation=1589383942475287\&alt=media)

## 求解

#### 每个样本所属分类已知###\#

设样本容量为N，属于第K个分类的样本数量为$$N\_k$$，则

$$
\pi\_k = \frac {N\_k}{N} \\
\mu\_k = \frac {1}{N\_k} \sum\_{x \in L(k)}x \\
\Sigma\_k = \frac {1}{N\_k} \sum\_{x \in L(k)}(x-\mu\_k)^T(x-\mu\_k)
$$

所有样本所属分类已知，则跟EM算法没有关系。但是部分样本已知分类，如何半监督的学习，或者初始化EM的参数？

#### 样本分类数未知###\#

对整体数据求对数极大似然：

$$
f(x) = \sum\_{i=1}^N \log \sum\_{k=1}^K \pi\_k N(x|\mu\_k,\Sigma\_k)
$$

* 初始化参数：初始化每个Gaussian Models 都是标准正太分布。
* E步：依据当前模型的参数，计算分模型k对观测数据$$x\_i$$的相应度。\
  或者说每个样本由第k个component生成的概率,即类别k在给定的x下的条件概率，利用bayesian公式得：

$$
\gamma(i,k) =  p(z=k|x\_i;\mu,\Sigma) =
\frac {\pi\_k  N(x\_i|\mu\_k,\Sigma\_k)}{\sum\_{k=1}^K \pi\_k  N(x\_i|\mu\_k,\Sigma\_k)} \\
\gamma(i,k) \text{是在当前模型参数下等i个观测数据来自第k个分模型的概率}
$$

> 注意：在算$$\gamma(i,k)$$时，假定$$\mu\_k,\Sigma\_k$$均已知,是上一轮迭代出的参数。

* M步：对期望的下限最大化，计算新一轮迭代的模型参数。

  > 注意：此时$$\gamma(i,k)$$已知，也就是知道了每个样本由那个component生成，此时求模型参数，使似然函数最大化。

  * $$\mu\_k,\Sigma\_k$$分别求偏导数，然后等于0就可以了
  * $$\pi\_k$$不能直接求偏导数，因为有$$\sum\_{k=1}^K \pi\_k=1$$的约束，可以构造拉格朗日函数求解 &#x20;

求解过程： 对$$\mu\_k$$求导，固定$$\pi\_k,\Sigma\_k$$

$$
f = \sum\_{i=1}^N \log \sum\_{k=1}^K \pi\_k \frac {N(x|\mu\_k,\Sigma\_k)}{\sum\_{k=1}^K \pi\_k} =
\sum\_{i=1}^N \log \sum\_{k=1}^K \pi\_k \frac {N(x|\mu\_k,\Sigma\_k)}{\sum\_{k=1}^K \pi\_k} =
\sum\_{i=1}^N  \sum\_{k=1}^K \gamma(i,k)  \log  \frac {N(x|\mu\_k,\Sigma\_k)}{ \sum\_{k=1}^K \gamma(i,k)}  \\

\frac {\partial f}{\partial \mu\_k} =
-\sum\_{i=1}^N \sum\_{k=1}^K \gamma(i,k) \frac {1}{2}(x\_i-\mu)^T \Sigma\_k^{-1} (x\_i-\mu) =
-\frac {1}{2} \sum\_{i=1}^N \gamma(i,k)(2\mu\_k^T\Sigma\_k^{-1}x\_i -  \mu\_k^T\Sigma\_k^{-1}\mu\_k )
\= \sum\_{i=1}^N \gamma(i,k)(\Sigma\_k^{-1}x\_i - \Sigma\_k^{-1}\mu\_k )
\= 0 \\

\mu\_k = \frac {1}{N\_k} \sum\_{i=1}^N \gamma(i,k)x\_i
$$

对$$\Sigma\_k$$求导，固定$$\pi\_k,\mu\_k$$

$$
\Sigma\_k = \frac {1}{N\_k} \sum\_{i=1}^N \gamma(i,k)(x\_i-\mu\_k)(x\_i-\mu\_k)^T
$$

$$
N\_k = \sum\_{i=1}^N \gamma(i,k) ,  \\
\pi\_k = \frac {N\_k}{N}
$$

### 半监督学习##\#

### 并行学习##\#

#### 参考佳文###\#

[高斯混合模型和期望最大化算法](http://alexkong.net/2014/07/GMM-and-EM/) （此文甚是清晰准确）\
[期望最大化算法](http://wenku.baidu.com/link?url=13J7gzA08qLhtflI019h8GHsYEwLNle_OfUnPg9c9unJGI3WkyPDKZXp6QhFrUKExByJ8PEbDuZBpey8s0NtPp2aLpAl6usgqsd3NdmkCj7)
