最大似然估计与期望最大化(EM)算法

一、最大似然估计与最大后验概率

1、概率与统计

概率与统计是两个不同的概念。

概率是指:模型参数已知,X未知,p(x1) ... p(xn) 都是对应的xi的概率

统计是指:模型参数未知,X已知,根据观测的现象,求模型的参数

2、似然函数与概率函数

  • 似然跟概率是同义词,所以似然也是表示概率,但这个概率有些不一样。

似然是指:模型在不同参数下, p(x1) ... p(xn) 发生的概率

似然估计是指:模型的参数未知,X已知,根据观测现象(X),估计模型参数的过程

  • 最大似然估计(为什么要最大):

 对于观测数据集x1,x2...xn, 在θ下发生的概率分别是p(x1|θ),p(x2|θ)... p(xn|θ), 所以出现该观测数据集的概率为 P(X|θ) = p(x1|θ)p(x2|θ)... p(xn|θ), 那想一想为什么我一下就会抽出x1, x2 ... xn这n个数据呢?一种直观的解释就是 它们发生的概率大,所以 就是求让 P(X)最大下的θ,这就是最大似然估计。

 3、最大后验概率

最大似然是求参数,让P(X|θ)最大,最大后验概率是让P(X|θ)P(θ)最大,相当于给似然函数加了一个关于θ的权重。

为什么要让 P(X|θ)P(θ) 最大?

想一想我们在干什么?我们是根据一群观测数据X = (x1, x2 ... xn) 估计模型的参数,即求 P(θ0 | X),  用贝叶斯改一下就是 

P(θ0 | X) = P(X|θ0) P(θ0) / P(X) , 对于给定的观测序列X来说P(X)是固定的,所以我们求后验概率P(θ0 | X)最大就是求P(X|θ0) P(θ0)最大

对于👆的贝叶斯公式来说, 其实就是 【后验概率P(θ0 | X)】 等于 【似然函数 P(X|θ0)】 乘以 【先验概率P(θ0)】

      参考

https://zhuanlan.zhihu.com/p/26614750

https://blog.csdn.net/u011508640/article/details/72815981

https://zhuanlan.zhihu.com/p/26614750

二、高斯混合模型(Gaussian Mixture Model)

 

每个 GMM 由 K 个 Gaussian 分布组成,每个 Gaussian 称为一个“Component”,这些 Component 线性加成在一起就组成了 GMM 的概率密度函数:

根据上面的式子,如果我们要从 GMM 的分布中随机地取一个点的话,实际上可以分为两步:

首先随机地在这 K 个 Component 之中选一个,每个 Component 被选中的概率实际上就是它的系数 \pi_k ,选中了 Component 之后,再单独地考虑从这个 Component 的分布中选取一个点就可以了──这里已经回到了普通的 Gaussian 分布,转化为了已知的问题。

GMM可以用来做分类,每个Gaussian都是一个类别。

现在假设我们有 N 个数据点,并假设它们服从某个分布(记作 p(x) ),现在要确定里面的一些参数的值,

例如,在 GMM 中,我们就需要确定 \pi_k\mu_k 和 \Sigma_k 这些参数。 我们的想法是,找到这样一组参数,它所确定的概率分布生成这些给定的数据点的概率最大,而这个概率实际上就等于 \prod_{i=1}^N p(x_i) ,我们把这个乘积称作似然函数 (Likelihood Function)。通常单个点的概率都很小,许多很小的数字相乘起来在计算机里很容易造成浮点数下溢,因此我们通常会对其取对数,把乘积变成加和 \sum_{i=1}^N \log p(x_i),得到 log-likelihood function 。接下来我们只要将这个函数最大化(通常的做法是求导并令导数等于零,然后解方程),亦即找到这样一组参数值,它让似然函数取得最大值,我们就认为这是最合适的参数,这样就完成了参数估计的过程。

     下面让我们来看一看 GMM 的 log-likelihood function :

由于在对数函数里面又有加和,我们没法直接用求导解方程的办法直接求得最大值。为了解决这个问题,我们采取之前从 GMM 中随机选点的办法:分成两步,实际上也就类似于 K-means 的两步。

1、估计数据由每个 Component 生成的概率(并不是每个 Component 被选中的概率):对于每个数据 x_i 来说,它由第 k 个 Component 生成的概率为

\displaystyle
\gamma(i, k) = \frac{\pi_k \mathcal{N}(x_i|\mu_k, \Sigma_k)}{\sum_{j=1}^K \pi_j\mathcal{N}(x_i|\mu_j, \Sigma_j)}

由于式子里的 \mu_k 和 \Sigma_k 也是需要我们估计的值,我们采用迭代法,在计算 \gamma(i, k) 的时候我们假定 \mu_k 和 \Sigma_k 均已知,我们将取上一次迭代所得的值(或者初始值)。

2估计每个 Component 的参数:现在我们假设上一步中得到的 \gamma(i, k) 就是正确的“数据 x_i 由 Component k 生成的概率”,亦可以当做该 Component 在生成这个数据上所做的贡献,或者说,我们可以看作 x_i 这个值其中有 \gamma(i, k)x_i 这部分是由 Component k 所生成的。集中考虑所有的数据点,现在实际上可以看作 Component 生成了 \gamma(1, k)x_1, \ldots, \gamma(N, k)x_N 这些点。由于每个 Component 都是一个标准的 Gaussian 分布,可以很容易分布求出最大似然所对应的参数值:

\displaystyle
\begin{aligned}
\mu_k & = \frac{1}{N_k}\sum_{i=1}^N\gamma(i, k)x_i \\
\Sigma_k & = \frac{1}{N_k}\sum_{i=1}^N\gamma(i,
k)(x_i-\mu_k)(x_i-\mu_k)^T
\end{aligned}

其中 N_k = \sum_{i=1}^N \gamma(i, k) ,并且 \pi_k 也顺理成章地可以估计为 N_k/N 。 //不太懂

3、重复迭代前面两步,直到似然函数的值收敛为止。

参考:

http://blog.pluskid.org/?p=39 

https://github.com/wrayzheng/gmm-em-clustering

三、Expectation Maximum (EM)算法

 

假设我们有一个样本集{x(1),…,x(m)},包含m个独立的样本。但每个样本i对应的类别z(i)是未知的(相当于聚类),也即隐含变量。故我们需要估计概率模型p(x,z)的参数θ,但是由于里面包含隐含变量z,所以很难用最大似然求解,但如果z知道了,那我们就很容易求解了。

 

对于参数估计,我们本质上还是想获得一个使似然函数最大化的那个参数θ,现在与最大似然不同的只是似然函数式中多了一个未知的变量z,见下式(1)。也就是说我们的目标是找到适合的θ和z让L(θ)最大。那我们也许会想,你就是多了一个未知的变量而已啊,我也可以分别对未知的θ和z分别求偏导,再令其等于0,求解出来不也一样吗?
---------------------
作者:zouxy09
来源:CSDN
原文:https://blog.csdn.net/zouxy09/article/details/8537620
版权声明:本文为博主原创文章,转载请附上博文链接!

 

    

本质上我们是需要最大化(1)式(对(1)式,我们回忆下联合概率密度下某个变量的边缘概率密度函数的求解,注意这里z也是随机变量。对每一个样本i的所有可能类别z求等式右边的联合概率密度函数和,也就得到等式左边为随机变量x的边缘概率密度),也就是似然函数,但是可以看到里面有“和的对数”,求导后形式会非常复杂(自己可以想象下log(f1(x)+ f2(x)+ f3(x)+…)复合函数的求导),所以很难求解得到未知参数z和θ。那OK,我们可否对(1)式做一些改变呢?我们看(2)式,(2)式只是分子分母同乘以一个相等的函数,还是有“和的对数”啊,还是求解不了,那为什么要这么做呢?咱们先不管,看(3)式,发现(3)式变成了“对数的和”,那这样求导就容易了。我们注意点,还发现等号变成了不等号,为什么能这么变呢?这就是Jensen不等式的大显神威的地方。
---------------------
作者:zouxy09
来源:CSDN
原文:https://blog.csdn.net/zouxy09/article/details/8537620
版权声明:本文为博主原创文章,转载请附上博文链接!

      转自:https://blog.csdn.net/zouxy09/article/details/8537620

posted @ 2018-11-25 19:33  zhaop  阅读(2153)  评论(0编辑  收藏  举报