目录

  • 潜(隐)变量模型
  • K-means
  • GMM模型
  • GMM模型参数估计的EM算法总结
  • GMM模型和K-means的联系
  • EM算法
  • 使用EM算法通用步骤重新考虑GMM参数估计
  • EM算法通用解释
  • python代码实现

潜(隐)变量模型

观测变量:直接观测的数据
潜变量:

  • 无法直接被观测到,需要通过模型和观测变量进行推断
  • 利用潜变量来判断观测变量的模型,GMM HMM都是潜变量模型
  • 潜变量模型将不完数据(只有观测数据)的边缘分布转化为容易处理的完全数据(观测数据+潜变量)的联合分布。

如:聚类问题,潜变量是类别(未知),观测变量是数据点,给定观测变量,如果推断哪些是同一类?K-means

K-means

给定一个含有N个数据点的集合隐变量自回归模型是什么 潜变量和隐变量_深度学习,隐变量自回归模型是什么 潜变量和隐变量_语音识别_02,聚类的目标是将此N个数据点聚类到K个类别中,且假设K给定。

K-means思路:

  1. 引入K个D维均值向量隐变量自回归模型是什么 潜变量和隐变量_机器学习_03隐变量自回归模型是什么 潜变量和隐变量_深度学习_04是第k个类别的聚类中心。
  2. 计算数据点隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_05和所有类中心隐变量自回归模型是什么 潜变量和隐变量_深度学习_04的距离,类中心距离此数据点最近的类别,即为当前数据点的类别。
  3. 根据新的聚类结果,使用当前聚集到各个类别的数据的均值来更新当前类别的类中心。
  4. 返回第2步,直到满足一定的停止准则。

引入潜变量

  • 对于每一个数据点隐变量自回归模型是什么 潜变量和隐变量_语音识别_07引入一个指示因子隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_08,如果隐变量自回归模型是什么 潜变量和隐变量_语音识别_07属于第k类,则隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_10,否则隐变量自回归模型是什么 潜变量和隐变量_算法_11隐变量自回归模型是什么 潜变量和隐变量_语音识别_12即为潜变量
  • 定义目标函数隐变量自回归模型是什么 潜变量和隐变量_深度学习_13
  • 优化目标:寻找合适的$r_{nk} 隐变量自回归模型是什么 潜变量和隐变量_语音识别_14\boldsymbol{\mu}_{k}$使目标函数最小。

模型优化:两阶段迭代优化(简单EM)

  • 选择初始化的隐变量自回归模型是什么 潜变量和隐变量_算法_15值,并保持隐变量自回归模型是什么 潜变量和隐变量_算法_15固定,关于$r_{nk} 隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_17J$(E步)
    隐变量自回归模型是什么 潜变量和隐变量_语音识别_18
  • 保持隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_19固定,关于隐变量自回归模型是什么 潜变量和隐变量_算法_15最小化隐变量自回归模型是什么 潜变量和隐变量_语音识别_21(M步)
    隐变量自回归模型是什么 潜变量和隐变量_算法_22

K-means应用:图像分割和压缩

GMM模型

高斯分布

  • D维高斯变量的高斯分布:
    隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_23
    其中,隐变量自回归模型是什么 潜变量和隐变量_算法_24,高斯分布的均值向量,隐变量自回归模型是什么 潜变量和隐变量_深度学习_25,高斯分布的协方差矩阵。

为什么使用高斯分布?1. 高斯分布在自然界的数据中广泛存在,2.中心极限定理:在适当条件下,大量相互独立随机变量的均值经适当标准化后依分布收敛于正太分布。

最大似然估计

假设随机变量 隐变量自回归模型是什么 潜变量和隐变量_算法_26 服从分布 隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_27, 即 隐变量自回归模型是什么 潜变量和隐变量_语音识别_28, 其中, 隐变量自回归模型是什么 潜变量和隐变量_深度学习_29 为待估计的参数,如果可以获得N个互相独立的 隐变量自回归模型是什么 潜变量和隐变量_算法_26 的采样点 隐变量自回归模型是什么 潜变量和隐变量_深度学习, 则似然函数的定义为
隐变量自回归模型是什么 潜变量和隐变量_机器学习_32
在实际使用中,一般采用对数似然函数:
隐变量自回归模型是什么 潜变量和隐变量_算法_33
参数 隐变量自回归模型是什么 潜变量和隐变量_深度学习_29 的最大似然估计为:
隐变量自回归模型是什么 潜变量和隐变量_语音识别_35
高斯模型的最大似然估计

隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_36

高斯混合分布
隐变量自回归模型是什么 潜变量和隐变量_语音识别_37

隐变量自回归模型是什么 潜变量和隐变量_语音识别_38

隐变量自回归模型是什么 潜变量和隐变量_语音识别_39
隐变量自回归模型是什么 潜变量和隐变量_机器学习_40隐变量自回归模型是什么 潜变量和隐变量_深度学习_41隐变量自回归模型是什么 潜变量和隐变量_语音识别_42为待估计参数。

  • 隐变量自回归模型是什么 潜变量和隐变量_深度学习_43的解释(直观理解为第k个高斯所占的比重)
    引入一个K维 one-hot(只有一维为1, 其余维度为0) 向量 隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_44, 概率 隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_45 为 向量z的第k维为的先验概率 隐变量自回归模型是什么 潜变量和隐变量_语音识别_46,向量z的分布可以表示为 隐变量自回归模型是什么 潜变量和隐变量_语音识别_47, 等价于 隐变量自回归模型是什么 潜变量和隐变量_深度学习_48, where 隐变量自回归模型是什么 潜变量和隐变量_语音识别_49
  • 条件分布隐变量自回归模型是什么 潜变量和隐变量_机器学习_50
  • 联合分布

隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_51

  • 边缘分布
  • 使用贝叶斯公式对潜变量求和:隐变量自回归模型是什么 潜变量和隐变量_机器学习_52
  • 对每一个观测隐变量自回归模型是什么 潜变量和隐变量_深度学习_53,都有一个潜变量隐变量自回归模型是什么 潜变量和隐变量_深度学习_54和其对应,上述公式将变量隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_55和潜变量隐变量自回归模型是什么 潜变量和隐变量_语音识别_56联系起来,并且引入了联合分布隐变量自回归模型是什么 潜变量和隐变量_深度学习_57,完成了将观测数据的边缘分布转换成观测和潜变量的联合分布
  • 后验分布
    隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_58

隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_59为得到观测隐变量自回归模型是什么 潜变量和隐变量_机器学习_60后,隐变量自回归模型是什么 潜变量和隐变量_深度学习_61的后验概率,理解为第k个高斯成分对于生成观测隐变量自回归模型是什么 潜变量和隐变量_机器学习_60的贡献值。

GMM对数似然函数
隐变量自回归模型是什么 潜变量和隐变量_语音识别_63
其中,隐变量自回归模型是什么 潜变量和隐变量_深度学习_64,给出潜变量矩阵定义隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_65隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_66由公式(1)计算。

GMM模型参数估计的EM算法(最大似然准则)

计算似然函数隐变量自回归模型是什么 潜变量和隐变量_语音识别_67分别对参数隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_68求导:

  1. 隐变量自回归模型是什么 潜变量和隐变量_算法_69求导:
    隐变量自回归模型是什么 潜变量和隐变量_算法_70
    隐变量自回归模型是什么 潜变量和隐变量_机器学习_71
  2. 隐变量自回归模型是什么 潜变量和隐变量_算法_72求导:
    隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_73
    隐变量自回归模型是什么 潜变量和隐变量_语音识别_74
  3. 隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_75求导:
    隐变量自回归模型是什么 潜变量和隐变量_算法_76
    用拉格朗日乘子法,求解隐变量自回归模型是什么 潜变量和隐变量_语音识别_77:
    隐变量自回归模型是什么 潜变量和隐变量_机器学习_78
    等号两边同时乘以 隐变量自回归模型是什么 潜变量和隐变量_算法_79, 并对k求和
    隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_80

GMM模型参数估计的EM算法总结

上述参数估计方法并不是一个严格的解析解,因为公式中有后验概率隐变量自回归模型是什么 潜变量和隐变量_算法_81,依赖于每个高斯的代估计参数。上述推导过程给出了一个迭代的估计参数的过程,并能保证似然逐步增加。

给定一个GMM模型, 优化目标是寻找使似然函数最大的各个高斯成分的均值向量、协方差矩阵和混合系数

  1. 初始化 初始化参数 隐变量自回归模型是什么 潜变量和隐变量_深度学习_82
  2. E步 使用当前参数计算后验概率
    隐变量自回归模型是什么 潜变量和隐变量_语音识别_83
  3. M步 使用后验重新估计参数
    隐变量自回归模型是什么 潜变量和隐变量_机器学习_84
  4. 重新计算似然函数, 重复2-4,直至满足收敘条件

GMM模型和K-means的联系

K-means可以看作GMM模型的一个特殊情况,假设公式隐变量自回归模型是什么 潜变量和隐变量_机器学习_85中,每个单高斯的分布都具有相同的协方差矩阵,并且有隐变量自回归模型是什么 潜变量和隐变量_机器学习_86隐变量自回归模型是什么 潜变量和隐变量_机器学习_87是单位矩阵,高斯分布可以简化为:
隐变量自回归模型是什么 潜变量和隐变量_深度学习_88
公式隐变量自回归模型是什么 潜变量和隐变量_语音识别_89中的后验概率变为:
隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_90
隐变量自回归模型是什么 潜变量和隐变量_算法_91隐变量自回归模型是什么 潜变量和隐变量_语音识别_92,对于分母中,假设第m项隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_93最小,那么分母上j=m这一项将在隐变量自回归模型是什么 潜变量和隐变量_算法_91的时候以最慢的速度趋于0,因此只有分子上k=m时,隐变量自回归模型是什么 潜变量和隐变量_语音识别_95隐变量自回归模型是什么 潜变量和隐变量_算法_96,显然隐变量自回归模型是什么 潜变量和隐变量_语音识别_97

K-means是一种硬对齐方式,某个数据点只能对应在某个类别上,GMM是一种软对齐方式,使用后验概率来表示某个数据点由某个类别产生的概率。

EM算法

上述GMM参数估计过程中已经使用到GMM算法,现在具体看一下EM算法。首先通过一个例子来体会。

问题:假设随机抽取100个男生和女生的身高数据,假设男生和女生的身高分布分别服从高斯分布隐变量自回归模型是什么 潜变量和隐变量_算法_98隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_99,请用最大似然法估计男生和女生身高分布的均值和方差。

这里分为两种情况:

情况1:已经知道每个数据对应的性别







178

175

170

175

168

169

隐变量自回归模型是什么 潜变量和隐变量_算法_100

其中隐变量自回归模型是什么 潜变量和隐变量_算法_101为男生总人数,隐变量自回归模型是什么 潜变量和隐变量_算法_102为每个男生的身高数据。同理,可求出女生的数据。

情况2:果冻大意了,只统计了身高数据

-

-

-

-

-

-

178

175

170

175

168

169

这种情况,我们引入一个新的变量隐变量自回归模型是什么 潜变量和隐变量_深度学习_103隐变量自回归模型是什么 潜变量和隐变量_机器学习_104表示第i个数据为男生身高的概率,隐变量自回归模型是什么 潜变量和隐变量_语音识别_105表示第i个数据为女生的身高的概率。

隐变量自回归模型是什么 潜变量和隐变量_深度学习_106

如何获得隐变量自回归模型是什么 潜变量和隐变量_深度学习_107?可以采用迭代估计法:

  1. 隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_108先给出一组随机的参数取值 隐变量自回归模型是什么 潜变量和隐变量_机器学习_109
  2. 隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_108更新 隐变量自回归模型是什么 潜变量和隐变量_机器学习_111
  3. 使用新的p更新 隐变量自回归模型是什么 潜变量和隐变量_机器学习_109, 重复2-3

含隐变量模型的最大似然估计->EM算法,隐变量与模型参数相互影响,分两步一静一动交替迭代。通用步骤:E步(求期望)、M步(最大化)、重复E、M

给定完全数据 隐变量自回归模型是什么 潜变量和隐变量_语音识别_113 的联合概率分布 隐变量自回归模型是什么 潜变量和隐变量_算法_114, 待学习参数 隐变量自回归模型是什么 潜变量和隐变量_深度学习_115, 优化的目标是寻找隐变量自回归模型是什么 潜变量和隐变量_深度学习_115来最大化似然函数p 隐变量自回归模型是什么 潜变量和隐变量_语音识别_117

  1. 初始化 初始化参数 隐变量自回归模型是什么 潜变量和隐变量_算法_118
  2. E步 计算潜变量的后验概率p(Z|X, 隐变量自回归模型是什么 潜变量和隐变量_机器学习_119)
  3. M步 使用后验重新估计参数

隐变量自回归模型是什么 潜变量和隐变量_算法_120
隐变量自回归模型是什么 潜变量和隐变量_机器学习_121
4. 重算似然 重新计算似然函数,重复2-4, 更新参数 隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_122直至满足收敘条件

将不完全数据(只有观测数据)的边缘分布转换成容易处理的完全数据(观测数据+潜变量)的联合分布

深入理解EM算法

  • EM算法的目标是寻找潜变量模型的最大似然解。后边我们假定待估计的参数用隐变量自回归模型是什么 潜变量和隐变量_语音识别_123
  • 对数似然函数用完全数据的联合概率表示为:
    隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_124
    使用EM算法,一般认为完全数据的联合概率分布的似然隐变量自回归模型是什么 潜变量和隐变量_深度学习_125容易计算。实际上,完全数据{X,Z}无法获取,但是潜变量Z的后验概率分布隐变量自回归模型是什么 潜变量和隐变量_语音识别_126可以进行估计。
  • 计算完全数据的似然隐变量自回归模型是什么 潜变量和隐变量_深度学习_125隐变量自回归模型是什么 潜变量和隐变量_机器学习_128时,关于变量Z的期望:

隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_129

  • 寻找使Q函数最大的新参数:
    隐变量自回归模型是什么 潜变量和隐变量_机器学习_121

当尝试使用EM算法来解决自己的问题时,需要明确Q函数。

使用EM算法通用步骤重新考虑GMM参数估计

在之前的推导中,我们引入了潜变量Z,但并没用用到完全数据的联合概率分布,而是直接对不完全数据X的对数似然进行了求解。根据EM算法的通用步骤,首先考虑完全数据的似然函数:
隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_131
根据公式(4),计算Z的后验概率: 隐变量自回归模型是什么 潜变量和隐变量_机器学习_132
隐变量自回归模型是什么 潜变量和隐变量_语音识别_133
完全数据的对数似然关于潜变量的期望值:
隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_134

EM算法通用解释

EM算法的一般假设是直接优化观测数据的似然隐变量自回归模型是什么 潜变量和隐变量_深度学习_135十分复杂,但是优化完全数据的似然隐变量自回归模型是什么 潜变量和隐变量_机器学习_136比较容易。引入一个关于变量Z的任意分布隐变量自回归模型是什么 潜变量和隐变量_算法_137:

为什么引用任意一个Z的分布?我们只知道Z服从某一个分布,但是并不知道具体服从什么分布,但是后面的推导会证明,无论Z的真实分布是什么都不影响推导。

隐变量自回归模型是什么 潜变量和隐变量_深度学习_138
令:
隐变量自回归模型是什么 潜变量和隐变量_语音识别_139

KL散度是衡量两个概率分布之间差异的一个度量。

则:

隐变量自回归模型是什么 潜变量和隐变量_算法_140

隐变量自回归模型是什么 潜变量和隐变量_机器学习_141

其中:隐变量自回归模型是什么 潜变量和隐变量_机器学习_142隐变量自回归模型是什么 潜变量和隐变量_语音识别_143隐变量自回归模型是什么 潜变量和隐变量_深度学习_29的泛函,隐变量自回归模型是什么 潜变量和隐变量_机器学习_145,当且仅当隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_146时等号成立。

  • 隐变量自回归模型是什么 潜变量和隐变量_语音识别_147,所以隐变量自回归模型是什么 潜变量和隐变量_深度学习_148,只有当后验分布隐变量自回归模型是什么 潜变量和隐变量_深度学习_149隐变量自回归模型是什么 潜变量和隐变量_深度学习_150相等时,等号成立。
  • 隐变量自回归模型是什么 潜变量和隐变量_语音识别_151可以看作是隐变量自回归模型是什么 潜变量和隐变量_深度学习_152的下界,如果我们无法直接提升隐变量自回归模型是什么 潜变量和隐变量_深度学习_152的准确值,我们可以提升其下界。

E步:寻找使 隐变量自回归模型是什么 潜变量和隐变量_机器学习_142 最大的 隐变量自回归模型是什么 潜变量和隐变量_语音识别_143, 当 隐变量自回归模型是什么 潜变量和隐变量_机器学习_156隐变量自回归模型是什么 潜变量和隐变量_深度学习_157 时, 隐变量自回归模型是什么 潜变量和隐变量_机器学习_158, 此时 隐变量自回归模型是什么 潜变量和隐变量_机器学习_142


隐变量自回归模型是什么 潜变量和隐变量_深度学习_160

M步: 固定 隐变量自回归模型是什么 潜变量和隐变量_语音识别_143, 寻找使 隐变量自回归模型是什么 潜变量和隐变量_机器学习_142 增加 的新参数 隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_163,因为参数更新, 隐变量自回归模型是什么 潜变量和隐变量_语音识别_143隐变量自回归模型是什么 潜变量和隐变量_深度学习_165 不再相等,此时隐变量自回归模型是什么 潜变量和隐变量_机器学习_166, 因此导致隐变量自回归模型是什么 潜变量和隐变量_算法_167


隐变量自回归模型是什么 潜变量和隐变量_深度学习_168

隐变量自回归模型是什么 潜变量和隐变量_深度学习_169隐变量自回归模型是什么 潜变量和隐变量_机器学习_170

隐变量自回归模型是什么 潜变量和隐变量_机器学习_156隐变量自回归模型是什么 潜变量和隐变量_深度学习_172隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_173 等价于隐变量自回归模型是什么 潜变量和隐变量_深度学习_174,推导如下:

隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_175
因此,EM算法中,E步所计算的隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_173 实际上等价于计算隐变量自回归模型是什么 潜变量和隐变量_深度学习_174

python代码实现

使用GMM-EM实现0-9孤立词识别,介绍GMM对数似然函数、E步、M步的实现,详细参考:

GMM的对数似然函数
公式:
隐变量自回归模型是什么 潜变量和隐变量_语音识别_63
隐变量自回归模型是什么 潜变量和隐变量_算法_179

python代码:

def calc_log_likelihood(self , X):
        """Calculate log likelihood of GMM

            param: X: A matrix including data samples, num_samples * D
            return: log likelihood of current model 
        """

        log_llh = 0.0
        N = X.shape[0]
        log_llh = np.sum([np.log(np.sum([self.pi[k] * self.gaussian(X[n], self.mu[k], self.sigma[k]) 
                    for k in range(self.K)])) for n in range(N)])
        return log_llh

E步

公式:

隐变量自回归模型是什么 潜变量和隐变量_算法_180

N = X.shape[0]
gamma = [np.zeros(self.K) for i in range(N)] # 后验概率

# E-step
for n in range(N):
    post_prob = [self.pi[k] * self.gaussian(X[n], self.mu[k], self.sigma[k]) for k in range(self.K)]
    post_prob = np.array(post_prob)
    post_prob_sum = np.sum(post_prob)
    gamma[n] = post_prob / post_prob_sum

M步:

公式:

隐变量自回归模型是什么 潜变量和隐变量_隐变量自回归模型是什么_181

# M-step
for k in range(self.K):
    Nk = np.sum([gamma[n][k] for n in range(N)])
    if Nk == 0:
        continue
    self.pi[k] = Nk / N
    self.mu[k] = 1.0 / Nk * np.sum([gamma[n][k] * X[n] for n in range(N)], axis=0)
    diffs = X - self.mu[k]
    self.sigma[k] = 1.0 / Nk * np.sum([gamma[n][k] * diffs[n].reshape(self.dim, 1) * diffs[n] 
                    for n in range(N)], axis=0)
                                            
    log_llh = self.calc_log_likelihood(X)