马尔科链模型
一个系统有\(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