去年闲着蛋疼做了个HMM的分词器,应好基友@jnduan的要求整理一下忽悠忽悠。
此篇形式化的符号多了一些,因为我希望能从模型的角度去讲明白算法细节里的数学思想,默认读者了解过一些背景知识(推荐吴军博士数学之美系列中分词一章作为本篇的前置课程)
1、马尔可夫过程 — 既不互相独立的随机变量依赖于此前的随机变量序列
N个有限状态S={s1, s2, ... sn}, 随机变量序列Q(q1, q2, ..., qt)中任意变量的取值为集合S中的某个状态,系统在t处于状态sj的概率为:
如果系统在时间t 的状态只与其在时间t - 1的状态相关, 公式(1)可得公式(2), 既得到一个离散的一阶马尔可夫链
aij为状态si到sj的状态转移概率,其中:
状态转移概率的数目取决于状态集合的个数以及马尔可夫过程的阶数,比如,一个含有n个状态的一阶过程有n的平方个状态转移
2、隐马尔可夫模型
在马尔可夫模型,每个时刻t的状态s代表了一个可观测的事件q,事件q的值取决于上一个已发生的事件qt-1
在隐马尔可夫模型,可观测事件o的随机过程是不可观测到的隐藏状态(s)到可观测符号(v)的随机函数bj(k),时刻t的观测事件(ot=v)的取值是被该时刻的隐藏事件(qt=s)所决定的,而隐藏事件qt的取值又被上一时刻的隐藏事件qt-1所决定,相当于双重的马尔可夫过程
马尔可夫模型中,模型 μ = (S, A, π), 其中:
S = 状态集合
A = 状态转移概率矩阵
π = 初始状态概率分布
在隐马尔可夫模型中, 模型 μ = (S, V, A, B, π), 其中:
S = 隐藏状态集合,集合大小为N
V = 观测符号集合,集合大小为M
A = 状态转移概率矩阵, 既从状态si到sj的转移概率矩阵,大小为N*N
B = 观测概率矩阵, 既隐藏状态sj到观测符号vk的概率矩阵,大小为N*M
π = 初始状态概率分布,大小为N
其中Q,O分别是隐藏状态集合S和观测符号V有关于时序t的输出序列
状态转移概率矩阵
观测概率矩阵
在使用任意模型都隐含着数据服从该模型的一系列假设,隐马尔可夫具有两个基本假设
假设1:齐次性马尔可夫性假设,即假设隐藏的马尔可夫链在任意时刻t的状态(qt)值依赖与其前一时刻的状态(qt-1),与其他时刻的隐藏状态和观测无关,也与时刻t无关,缩写成
假设2:观测独立性假设,即假设任意时刻的观测(ot)只依赖与该时刻的马尔可夫链的隐藏状态(qt)的状态,与其他观测以及隐藏状态无关,缩写成
3、隐马尔可夫三大基本问题
使用隐马尔可夫模型基本上是为了解决三个基本问题。在分词领域中,主要运用的是从模型的学习到分词结果预测的过程:
a、计算概率,即给定模型 μ = ( A, B, π)和观测序列O(o1,o2,...,ot),计算在模型μ下的观测序列O出现的可能性,求P(O|μ)
b、学习模型,已知已经发生的观测序列O(o1,o2,...,ot),估计模型 μ = ( A, B, π)的参数,使得在该模型μ下O出现的可能性最大,即最大似然法求P(μ|O)
c、预测结果,也称为解码问题,已知模型 μ = ( A, B, π)和观测序列O(o1,o2,...,ot),求给定观测序列的条件概率P(Q|O,μ)最大的隐藏状态序列Q
3.1、概率计算问题
直接计算法
状态序列Q(q1,q2,...,qn)的概率是
观测序列O的概率是
O和I同时出现的联合概率是
展开得
前向算法
定义时刻t的隐藏状态序列Q(q1,q2,...,qt)和观测序列O(o1,o2,...,ot),事件qt的取值表示为任意值si,qt-1为sj,观测ot为vk,那么从si到sj的状态转移概率表示为aij,从sj到vk的观测概率为bj(k),通过递推的方法求得前向概率以及观测序列概率P(O|μ)
3.2、学习问题
监督学习方法
假定已知的训练数据包含t个长度相同的状态序列和对应的观测序列,用极大似然法估计模型μ,求μ={A,B,π}
对于转移概率aij的估计是
对于观测概率bj(k)的估计是
对于初始状态π的估计为S个样本中初始状态为q的频率
非监督学习方法 (EM算法 略)
3.3、预测问题
Viterbi算法
维特比算法是用动态规划的思想来求解给定观测序列O(o1,o2,…,ot)在模型μ中的最优隐藏路径Q(q1,q2,…,qt),即在时刻t确定时刻t-1的最优路径,求得最终时刻T的最优路径终点i*后,回溯
1、初始化
求每个候选隐藏状态在时刻t=1时的概率delta_1(i)
初始化最优路径节点变量
2、递推,对t=2,3,...,T
候选隐藏状态在时刻t时的概率delta_t(i)等于前一时刻t-1时的任意隐藏节点delta_t-1(j)乘以该状态对应的状态转移概率aji并找出其中的最大解max[],然后再乘以观察概率bik得到全解
找到时刻t-1时有最大解的节点j,作为时刻t-1的最优路径
3、终止
求得最终时刻T的最大概率以及最优路径的终节点i*
(未完待续)