如果概率模型的变量都是观测变量,则给定数据之后,可以直接用极大似然估计法或者贝叶斯估计法来估计模型参数。
但是当模型含有隐变量时,就不能简单的使用这些估计方法。此时需要使用EM
算法。
EM
算法是一种迭代算法。EM
算法专门用于含有隐变量的概率模型参数的极大似然估计,或者极大后验概率估计。EM
算法的每次迭代由两步组成:
E
步求期望。M
步求极大。所以EM
算法也称为期望极大算法。
假设学校所有学生中,男生身高服从正态分布 , 女生身高服从正态分布 。
现在随机抽取200名学生,得到这些学生的身高 ,求参数 的估计。
定义隐变量为 ,其取值为 ,分别表示男生、女生
。
如果隐变量是已知的,即已知每个学生是男生还是女生 ,则问题很好解决:
统计所有男生的身高的均值和方差,得到 :
其中 表示满足 的 构成的集合。 分别表示平均值和方差。
统计所有女生的身高的均值和方差,得到 :
其中 表示满足 的 构成的集合。 分别表示平均值和方差。
如果已知参数 ,则任意给出一个学生的身高 ,可以知道该学生分别为男生/女生的概率。
则有: 。因此也就知道该学生更可能为男生,还是更可能为女生。
因此:参数 学生是男生/女生
,这两个问题是相互依赖,相互纠缠的。
为解决该问题,通常采取下面步骤:
先假定参数的初始值:。
迭代 :
根据 来计算每个学生更可能是属于男生,还是属于女生。
这一步为E
步(Expectation
),用于计算隐变量的后验分布 。
根据上一步的划分,统计所有男生的身高的均值和方差,得到 ;统计所有女生的身高的均值和方差,得到 。
这一步为 M
步(Maximization
),用于通过最大似然函数求解正态分布的参数。
当前后两次迭代的参数变化不大时,迭代终止。
已知三枚硬币 A
,B
,C
,这些硬币正面出现的概率分别为 。进行如下试验:
A
,若是正面则选硬币 B
;若是反面则选硬币 C
。 1
;投掷的结果如果是反面则记作0
。1,1,0,1,0,...0,1
。现在只能观测到投掷硬币的结果,无法观测投掷硬币的过程,求估计三硬币正面出现的概率。
设:
1
或者0
A
硬币的结果,取值为 1
或者 0
则:
注意:随机变量 的数据可以观测,随机变量 的数据不可观测
将观测数据表示为 ,未观测数据表示为 。
由于每次试验之间都是独立的,则有:
考虑求模型参数 的极大似然估计,即:
这个问题没有解析解,只有通过迭代的方法求解,EM
算法就是可以用于求解该问题的一种迭代算法。
EM
算法求解:
首先选取参数的初值,记作 ,然后通过下面的步骤迭代计算参数的估计值,直到收敛为止:
设第 次迭代参数的估计值为: , 则EM
算法的第 次迭代如下:
E
步:计算模型在参数 下,观测数据 来自于投掷硬币 B
的概率:
它其实就是 ,即:已知观测变量 的条件下,观测数据 来自于投掷硬币 B
的概率。
M
步:计算模型参数的新估计值:
EM
算法的解释:
初始化:随机选择三枚硬币 A
,B
,C
正面出现的概率 的初始值 。
E
步:在已知概率 的情况下,求出每个观测数据 是来自于投掷硬币 B
的概率。即: 。
于是对于 次实验,就知道哪些观测数据是由硬币 B
产生,哪些是由硬币 C
产生。
M
步:在已知哪些观测数据是由硬币 B
产生,哪些是由硬币 C
产生的情况下:
B
产生的次数的频率。B
产生的数据中,正面向上的频率。C
产生的数据中,正面向上的频率。令 表示观测随机变量, 表示对应的数据序列;令 表示隐随机变量, 表示对应的数据序列。
和 连在一起称作完全数据,观测数据 又称作不完全数据。
假设给定观测随机变量 ,其概率分布为 ,其中 是需要估计的模型参数,则不完全数据 的似然函数是 , 对数似然函数为 。
假定 和 的联合概率分布是 ,完全数据的对数似然函数是 ,则根据每次观测之间相互独立,有:
由于 发生,根据最大似然估计,则需要求解对数似然函数:
的极大值。其中 表示对所有可能的 求和,因为边缘分布 。
该问题的困难在于:该目标函数包含了未观测数据的的分布的积分和对数。
EM
算法通过迭代逐步近似极大化 。
假设在第 次迭代后, 的估计值为: 。则希望 新的估计值能够使得 增加,即: 。
为此考虑两者的差: 。
这里 已知,所以 可以直接计算得出。
Jensen
不等式:如果 是凸函数, 为随机变量,则有: 。
如果 是严格凸函数,当且仅当 是常量时,等号成立。
当 满足 时,将 视作概率分布。
设随机变量 满足概率分布 ,则有: 。
考虑到条件概率的性质,则有 。因此有:
等号成立时,需要满足条件:
其中 为随机变量 的取值个数。
令 :
则有: ,因此 是 的一个下界。
根据定义有: 。因为此时有:
任何可以使得 增大的 ,也可以使 增大。
为了使得 尽可能增大,则选择使得 取极大值的 : 。
求极大值:
其中: 与 无关,因此省略。
EM
算法:
输入:
联合分布和条件分布的形式已知(比如说高斯分布等),但是参数未知(比如均值、方差)
输出:模型参数
算法步骤:
选择参数的初值 ,开始迭代。
E
步:记 为第 次迭代参数 的估计值,在第 步迭代的 E
步,计算:
其中 表示:对于观测点 , 关于后验概率 的期望。
M
步:求使得 最大化的 ,确定 次迭代的参数的估计值
重复上面两步,直到收敛。
通常收敛的条件是:给定较小的正数 ,满足: 或者 。
是算法的核心,称作 函数。其中:
EM
算法的直观理解:EM
算法的目标是最大化对数似然函数 。
直接求解这个目标是有问题的。因为要求解该目标,首先要得到未观测数据的分布 。如:身高抽样问题中,已知身高,需要知道该身高对应的是男生还是女生。
但是未观测数据的分布就是待求目标参数 的解的函数。这是一个“鸡生蛋-蛋生鸡” 的问题。
EM
算法试图多次猜测这个未观测数据的分布 。
每一轮迭代都猜测一个参数值 ,该参数值都对应着一个未观测数据的分布 。如:已知身高分布的条件下,男生/女生的分布。
然后通过最大化某个变量来求解参数值。这个变量就是 变量,它是真实的似然函数的下界 。
隐变量估计问题也可以通过梯度下降法等算法求解,但由于求和的项数随着隐变量的数目以指数级上升,因此代价太大。
EM
算法可以视作一个非梯度优化算法。EM
算法,都容易陷入局部极小值。定理一:设 为观测数据的似然函数, 为EM
算法得到的参数估计序列, 为对应的似然函数序列,其中 。
则: 是单调递增的,即: 。
定理二:设 为观测数据的对数似然函数, 为EM
算法得到的参数估计序列, 为对应的对数似然函数序列,其中 。
如果 有上界,则 会收敛到某一个值 。
在函数 与 满足一定条件下,由 EM
算法得到的参数估计序列 的收敛值 是 的稳定点。
关于“满足一定条件”:大多数条件下其实都是满足的。
定理二只能保证参数估计序列收敛到对数似然函数序列的稳定点 ,不能保证收敛到极大值点。
EM
算法的收敛性包含两重意义:
前者并不蕴含后者。
实际应用中,EM
算法的参数的初值选择非常重要。
EM
算法对初值是敏感的,选择不同的初始值可能得到不同的参数估计值。EM
算法可以保证收敛到一个稳定点,不能保证得到全局最优点。其优点在于:简单性、普适性。
高斯混合模型(Gaussian mixture model,GMM
):指的是具有下列形式的概率分布模型:
其中 是系数,满足 :
如果用其他的概率分布密度函数代替上式中的高斯分布密度函数,则称为一般混合模型。
假设观察数据 由高斯混合模型 生成,其中 。
可以通过EM
算法估计高斯混合模型的参数 。
可以设想观察数据 是这样产生的:
这样,观察数据 是已知的,观测数据 来自哪个分模型是未知的。
对观察变量 ,定义隐变量 ,其中 。
完全数据的对数似然函数为:
其对数为:
后验概率为:
即:。
则 函数为:
求极大值: 。
根据偏导数为 0,以及 得到:
:
其中: ,其物理意义为:所有的观测数据 中,产生自第 个分模型的观测数据的数量。
:
其中: ,其物理意义为:所有的观测数据 中,产生自第 个分模型的观测数据的总和。
:
其中: ,其物理意义为:所有的观测数据 中,产生自第 个分模型的观测数据,偏离第 个模型的均值( )的平方和。
高斯混合模型参数估计的EM
算法:
输入:
输出:高斯混合模型参数
算法步骤:
随机初始化参数 。
根据 迭代求解 ,停止条件为:对数似然函数值或者参数估计值收敛。
其中:
。
其物理意义为:所有的观测数据 中,产生自第 个分模型的观测数据的数量。
。
其物理意义为:所有的观测数据 中,产生自第 个分模型的观测数据的总和。
。
其物理意义为:所有的观测数据 中,产生自第 个分模型的观测数据,偏离第 个模型的均值( )的平方和。
kmeans
算法:给定样本集 , 针对聚类所得簇划分 , 最小化平方误差:
其中 是簇 的均值向量。
定义观测随机变量为 ,观测数据为 。定义隐变量为 ,它表示 所属的簇的编号。设参数 , 则考虑如下的生成模型:
其中 表示距离 最近的中心点所在的簇编号。即:
计算后验概率:
即:
计算 函数:
设距离 最近的聚类中心为 ,即它属于簇 ,则有:
则有:
定义集合 ,它表示属于簇 的样本的下标集合。则有:
则有:
这刚好就是 k-means
算法的目标:最小化平方误差。
由于求和的每一项都是非负的,则当每一个内层求和 都最小时,总和最小。即:
得到:,其中 表示集合 的大小。
这就是求平均值来更新簇中心。
F
函数:假设隐变量 的概率分布为 ,定义分布 与参数 的函数 为:
其中 是分布 的熵。
通常假定 是 的连续函数,因此 为 和 的连续函数。
函数 有下列重要性质:
定理一:设 为观测数据的对数似然函数, 为 EM
算法得到的参数估计序列,函数 ,则:
定理二:EM
算法的一次迭代可由 F
函数的极大-极大算法实现:设 为第 次迭代参数 的估计, 为第 次迭代函数 的估计。在第 次迭代的两步为:
GEM
算法1(EM
算法的推广形式):
输入:
输出:模型参数
算法步骤:
初始化参数 ,开始迭代。
第 次迭代:
该算法的问题是,有时候求 极大化很困难。
GEM
算法2(EM
算法的推广形式):
输入:
输出:模型参数
算法步骤:
初始化参数 ,开始迭代。
第 次迭代:
记 为参数 的估计值, 计算
求 使得
重复上面两步,直到收敛。
此算法不需要求 的极大值,只需要求解使它增加的 即可。
GEM
算法3(EM
算法的推广形式):
输入:
输出:模型参数
算法步骤:
初始化参数 ,开始迭代
第 次迭代:
记 为参数 的估计值, 计算
进行 次条件极大化:
重复上面两步,直到收敛。
该算法将 EM
算法的 M
步分解为 次条件极大化,每次只需要改变参数向量的一个分量,其余分量不改变。