zoukankan      html  css  js  c++  java
  • 隐马尔可夫模型学习笔记

    马尔科链模型

    • 一个系统有(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=“晴晴雨雨晴云晴”的概率为:

    egin{equation}
    egin{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 imes10^{-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

  • 相关阅读:
    ArrayList removeRange方法分析
    LinkedHashMap源码分析(基于JDK1.6)
    LinkedList原码分析(基于JDK1.6)
    TreeMap源码分析——深入分析(基于JDK1.6)
    51NOD 2072 装箱问题 背包问题 01 背包 DP 动态规划
    51 NOD 1049 最大子段和 动态规划 模板 板子 DP
    51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子
    8月20日 训练日记
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/milkcoffeesugar/p/5741819.html
Copyright © 2011-2022 走看看