1:要解决的问题?
例如:
1:我要用键盘输入一大段文字,如果在手动输入时,能不能有一个输入法能猜测出我想要录入的句子供我选择?
2: 和别人对话,听到一串连续的声音,能不能有个机器能预测他实际想要表达的内容?
3:希望根据当前天气的情况来预测未来天气情况
现在打字写笔记,我在键盘上敲出来的一系列字符就是观测序列,
而我实际想写的一段话就是隐藏序列。输入法的任务就是从敲入的一系列字符尽可能的猜测我要写的一段话,并把最可能的词语放在最前面让我选择,这就可以看做一个HMM模型了。再举一个,我在和你说话,我发出的一串连续的声音就是观测序列,而我实际要表达的一段话就是状态序列,你大脑的任务,就是从这一串连续的声音中判断出我最可能要表达的话的内容。
隐马尔科夫模型(Hidden Markov Model,以下简称HMM)是比较经典的机器学习模型了,它在语言识别,自然语言处理,模式识别等领域得到广泛的应用。
HMM模型时我们的问题一般有这两个特征:
我们的问题是基于序列的,比如时间序列,或者状态序列
我们的问题中有两类数据,一类序列数据是可以观测到的,即观测序列;而另一类数据是不能观察到的,即隐藏状态序列,简称状态序列。
2:数学知识:
马尔可夫过程 (Markov Process):
马尔科夫过程描述的是空间状态经过一个状态到另一个状态转换的随机过程Markov Property(马尔科夫的性质):
t+1时刻的状态与t时刻之前的状态已经没有关系
马尔可夫过程:
满足马尔可夫性质的过程,就叫做马尔可夫过程。
马尔可夫链
时间和状态都是离散的马尔可夫过程称为马尔可夫链。
马尔可夫链的实际应用:预测股市广告收益预测
状态转移概率:
是指从一个马尔科夫状态s跳转到后继状态s'的概率
马尔科夫随机序列由元组表示。S 代表有限状态集,P 是状态转移概率矩阵。公式,描述了一个状态转移到另一个状态发生的概率。
所有状态的转移概率:
模型
生成模式(Generating Patterns)
确定性模式(Deterministic Patterns)交通信号灯
因为状态间的转移是完全已知的。
非确定性模式(Non-deterministic patterns): 天气预报
一个马尔科夫过程是状态间的转移仅依赖于前n个状态的过程。这个过程被称之为n阶马尔科夫模型,其中n是影响下一个状态选择的(前)n个状态。最简单的马尔科夫过程是一阶模型,它的状态选择仅与前一个状态有关。
对于有M个状态的一阶马尔科夫模型,共有M^2个状态转移,因为任何一个状态都有可能是所有状态的下一个转移状态。每一个状态转移都有一个概率值,称为状态转移概率——这是从一个状态转移到另一个状态的概率。所有的M^2个概率可以用一个状态转移矩阵表示。注意这些概率并不随时间变化而不同——这是一个非常重要(但常常不符合实际)的假设。
3: 隐马尔科夫模型(Hidden Markov Models):
定义(Definition of a hidden Markov model):
数学符号:
模型包含两个状态集合和三组概率:
隐藏状态:Q ={ } 一个系统的(真实)状态
观察状态:在这个过程中可视的状态 V ={ }
向量:包含了(隐)模型在时间t=1时一个特殊的隐藏状态的概率
={ } (初始概率)
状态转移矩阵:一个隐藏状态到另一个隐藏状态的转移概率
A =
表示状态i直接转移到状态j的概率。
混淆矩阵:状态生成观测序列的概率也称发射矩阵
表示在状态生成观察 的概率
隐马尔可夫模型三大假设:
1:齐次马尔可夫假设。又叫一阶马尔可夫假设,即任意时刻的状态只依赖前一时刻的状态,与其他时刻无关。符号表示为:
2:观测独立性假设。任意时刻的观测只依赖于该时刻的状态,与其他状态无关
推广:n阶马儿可夫模型:任意时刻的状态只依赖前面n个时刻的状态,与其他时刻无关。
3:参数不变性假设。上面介绍的三大要素不随时间的变化而改变,即在整个训练过程中一直保持不变。
隐马尔可夫模型三个问题:
应用(Uses associated with HMMs):
第一个问题: 概率计算问题
已知模型 , 和观测序列O={ },求观察序列的概率
方法:
直接计算(暴力求解)
前向算法 forward
后向算法 backward
第二个问题: 学习问题
已知观测序列O={ },估计模型参数,使得在该模型下出现的概率最大。(极大释然估计)
方法:
训练数据如果有对应的隐藏状态,监督学习 极大释然估计
无监督学习,参数学习可以由EM算法实现(Baum-Welch)
第三个问题:deconding 解码问题(预测问题)
已经模型,和观测序列O={ },和状态Q ={ } 求给的观测序列条件概率P(I | O)最大的状态序列,搜索最有可能生成一个观察序列的隐藏状态序列(解码)
方法:
近似算法:(贪心)
维特比算法 动态规划
4: 观测序列的生成过程
根据隐马尔可夫模型定义,可以将一个长度为T的观测序列 的生成过程描述如下:算法(观测序列的生成)
输入:隐马尔可夫模型,观测序列长度
输出:观测序列。
(1)按照初始状态分布产生状态
(2)令t=1
(3)按照状态的观测概率分布生成
(4)按照状态的状态转移概率分布产生状态
令;如果则转步(3);否则,终止。
5:概率计算算法
1:暴力求解 :不可取
给定模型,求给定长度为T的观测序列的概率,直接计算法的思路是枚举 所有 的长度T的状态序列,计算该状态序列与观测序列的联合概率(隐状态发射到观测),对所有的枚举项求和即可。在状态种类为N的情况下,一共有N^T种排列组合,每种组合计算联合概率的计算量为T,总的复杂度为2:前向算法:
定义(前向概率)给定隐马尔可夫模型,定义到时刻t为止的观测序列为且状态为的概率为前向概率,记作
可以递推地求得前向概率及观测序列概率
算法(观测序列概率的前向算法)
输入:隐马尔可夫模型,观测序列