隐马尔可夫模型学习笔记

马尔科链模型

  • 一个系统有\(N\)个状态,随着时间的推移,系统从某一状态转移到另一个状态,设为时间t的状态,系统在时间t处于状态的概率取决于其在时间1,2,…,t-1的状态,概率为:

\[P(q_t = S_j | q_{t-1}=S_i, q_{t-2}=S_k,..) \]

  • 如果系统在时间\(t\)时刻的状态只与其在\(t-1\)时刻的状态有关,则该系统构成一个离散的一阶马尔科夫链(马尔科夫过程):

\[P(q_t=S_j | q_{t-1}=S_i,q_{t-2}=S_k,..)=P(q_t=S_j | q_{t-1}=S_i) \]

  • 如果只考虑独立于时间t的随机过程:

\[P(q_t=S_j | q_{t-1}=S_i)=a_{ij},1<=i,j<=N \]

其中\(a_{ij}\)为转移概率,必须满足\(a_{ij}>=0\),且\(a_{ij}\)的和为1。

例子

  • 假设一段时间的气象可以用三种状态的马尔科夫模型\(M\)描述,S1:雨,S2:多云,S3:晴,状态转移矩阵为:

\[A = [a_{ij}] = [0.4, 0.4, 0.3; 0.2, 0.6, 0.2;0.1, 0.1, 0.8] \]

  • 如果第一天为晴天,根据这一模型,在今后七天中天气O=“晴晴雨雨晴云晴”的概率为:

\begin{equation}
\begin{aligned}
&P(O|M)\
&= P(S_3,S_3,S_3,S_1,S_1,S_3,S_2,S_3|M)\
&=P(S_3)\cdot P(S_3|S_3)\cdot P(S_3|S_3)\cdot P(S_1|S_3)\cdot P(S_1|S_1)\cdot P(S_3|S_1)\cdot P(S_2|S_3)\cdot P(S_3|S_2)\
&=1 \cdot a_{33}\cdot a_{33}\cdot a_{31}\cdot a_{11}\cdot a_{13}\cdot a_{32} \cdot a_{23} \
&=1.536\times10^{-4}
\end{aligned}
\end{equation}

隐马尔科夫模型(HMM)

  • 在马尔科夫模型中,每一个状态表示一个可以观察的事件
  • 在HMM中观察到的事件是状态的随机函数,因此该模型十一双重随机过程,其中状态转移过程是不可观察的(隐蔽)的(马尔科夫链),而可观察的时间的随机过程是隐蔽的状态转换过程的随机函数(一般随机过程)。

HMM的三个假设

对于一个随机事件,有一观察值序列:\(O=O_1,O_2,...,O_TQ=q_1,q_2,...,q_T\)

  • 假设1:马尔科夫性假设(状态构成一阶马尔科夫链)
  • 假设2:不动性假设(状态与具体时间无关)
  • 假设3:输出独立性假设(输出仅与当前的状态有关)$$ P(O_1,...,O_T|q_1,...,q_T)= \prod P(O_t|q_t)$$

HMM定义

  • 一个因马尔科夫模型(HMM)是有一个五元组描述的:$$ \lambda =(N,M,A,B,\pi )$$

其中

  • \(N\):状态的有限集合
  • \(M\):观察值的有限集合
  • \(A\):状态转移概率矩阵
  • \(B\):观察值概率分布
  • \(\pi={\pi_i},\pi _i=P(q_1=s_i)\):初始状态分布

观察序列产生步骤

  • 1.根据初始状态概率分布\(\pi=\pi_i\),选择一初始状态
  • 2.设\(t=1\)
  • 3.根据状态Si的输出概率分布b_{jk},输出\(O_t=v_k\)
  • 4.根据状态转移概率分布,转移到新状态\(q_{t+1}=S_j\)
  • 5.设\(t=t+1\),如果\(t<T\),重复步骤3、4,否则结束

HMM的三个基本问题

令为给定HMM的参数

  • \(O=O_1,...,O_T\)为观察序列,则HMM的三个基本问题为:评估问题、解码问题、学习问题
  • 评估问题:
    对于给定模型,求某个观察值序列的概率\(P(O|\lambda)\);
  • 解码问题:
    对于给定模型和观察值序列,求可能性最大的状态序列\(max_Q {P(Q|O,\lambda)}\);
  • 学习问题:
    对于给定一个观察值序列\(O\),调整参数\(\lambda\),使得观察值出现的概率\(P(O|\lambda)\)

三个基本问题的求解算法

  • 评估问题:前向算法
    定义前向变量,采用动态规划算法,复杂度\(O(N^2T)\)
  • 解码问题:韦特比算法
    采用动态规划算法,复杂度\(O(N^2T)\)
  • 学习问题:向前向后算法
    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

posted @ 2016-08-05 16:20  英吹斯汀ING  阅读(1037)  评论(0编辑  收藏  举报