马尔科链模型
一个系统有个状态,随着时间的推移,系统从某一状态转移到另一个状态,设为时间t的状态,系统在时间t处于状态的概率取决于其在时间1,2,…,t-1的状态,概率为:
如果系统在时间时刻的状态只与其在时刻的状态有关,则该系统构成一个离散的一阶马尔科夫链(马尔科夫过程):
如果只考虑独立于时间t的随机过程:
其中为转移概率,必须满足,且的和为1。
例子
假设一段时间的气象可以用三种状态的马尔科夫模型描述,S1:雨,S2:多云,S3:晴,状态转移矩阵为:
如果第一天为晴天,根据这一模型,在今后七天中天气O=“晴晴雨雨晴云晴”的概率为:
隐马尔科夫模型(HMM)
- 在马尔科夫模型中,每一个状态表示一个可以观察的事件
- 在HMM中观察到的事件是状态的随机函数,因此该模型十一双重随机过程,其中状态转移过程是不可观察的(隐蔽)的(马尔科夫链),而可观察的时间的随机过程是隐蔽的状态转换过程的随机函数(一般随机过程)。
HMM的三个假设
对于一个随机事件,有一观察值序列:。
- 假设1:马尔科夫性假设(状态构成一阶马尔科夫链)
- 假设2:不动性假设(状态与具体时间无关)
- 假设3:输出独立性假设(输出仅与当前的状态有关)
HMM定义
- 一个因马尔科夫模型(HMM)是有一个五元组描述的:
其中
- :状态的有限集合
- :观察值的有限集合
- :状态转移概率矩阵
- :观察值概率分布
- :初始状态分布
观察序列产生步骤
- 1.根据初始状态概率分布,选择一初始状态
- 2.设
- 3.根据状态Si的输出概率分布b_{jk},输出
- 4.根据状态转移概率分布,转移到新状态
- 5.设,如果,重复步骤3、4,否则结束
HMM的三个基本问题
令为给定HMM的参数
- 令为观察序列,则HMM的三个基本问题为:评估问题、解码问题、学习问题
- 评估问题:
对于给定模型,求某个观察值序列的概率; - 解码问题:
对于给定模型和观察值序列,求可能性最大的状态序列; - 学习问题:
对于给定一个观察值序列,调整参数,使得观察值出现的概率。
三个基本问题的求解算法
- 评估问题:前向算法
定义前向变量,采用动态规划算法,复杂度 - 解码问题:韦特比算法
采用动态规划算法,复杂度 - 学习问题:向前向后算法
EM算法是一个特例,带隐变量的最大似然估计
举个例子——天气与作习
举个常见的例子来引出下文,同时方便大家理解!比如我在不同天气状态下去做一些事情的概率不同,天气状态集合为{下雨,阴天,晴天},事情集合为{宅着,自习,游玩}。假如我们已经有了转移概率和输出概率,即P(天气A|天气B)和P(事情a|天气A)的概率都已知道,那么则有几个问题要问(注意,假设一天我那几件事情中的一件)。
- 1.假如一周内的天气变化是 下雨->晴天->阴天->下雨->阴天->晴天->阴天,那么我这一周 自习->宅着->游玩->自习->游玩->宅着->自习的概率是多大?
- 2.假如我这一周做事序列是 自习->宅着->游玩->自习->游玩->宅着->自习,不知道天气状态的情况下这个做事序列的概率是多大?
- 3.假如一周内的天气变化是 下雨->晴天->阴天->下雨->阴天->晴天->阴天,那我们这一周最有可能的做事序列是什么?
- 4.假如我这一周做事序列是 自习->宅着->游玩->自习->游玩->宅着->自习,那么这一周的天气变化序列最有可能是什么?
参考网址:
http://blog.csdn.net/stdcoutzyx/article/details/8522078
http://wenku.baidu.com/link?url=mgefnHLJRHgX6zghIcnZPIU0KCW5A-R9BsSnwvvbTXwMuKrn5caBCOv860O1ICAUpdGtgElY5d6BcybY1mBfRCks2rKEz9dr9eIiP-s7HMm