zoukankan      html  css  js  c++  java
  • 统计学习方法 李航---第10章 隐马尔可夫模型

    第10章隐马尔可夫模型

    隐马尔可夫模型(hidden Markov model, HMM)是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型。

    10.1 隐马尔可夫模型的基本概念

    定义10.1 (隐马尔可夫模型) 隐马尔可夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。隐藏的马尔可夫链随机生成的状态的序列,称为状态序列(state sequence):每个状态生成一个观测,而由此产生的观测的随机序列,称为观测序列(observation sequenoe )。序列的每一个位置又可以看作是一个时刻。

    隐马尔可夫模型由初始概率分布、状态转移概率分布以及观测概率分布确定。隐马尔可夫模型的形式定义如下

    设Q是所有可能的状态的集合,V是所有可能的观侧的集合.

    e6d473eb-96d9-41e1-bcf7-c65b7af4c877

    其中,N是可能的状态数,M是可能的观测数.

    I是长度为T的状态序列,O是对应的观测序列.

    429ab539-1817-4f54-a6a5-d67cfa5d9c45

    A是状态转移概率矩阵:

    900fa950-6c9f-4c5b-8de9-b999cd64fec6 5d7099b6-602c-4e48-bdc4-ac7b1f8ada9f

    是在时刻t处于状态qi的条件下在时刻t+1转移到状态qj的概率。

    B是观测概率矩阵:

    62d52fcd-0cc5-485f-9db1-2b7fba63d9b1 88f9d185-88b9-4a1b-94ba-03ad08273dc0

    是在时刻t处于状态qj的条件下生成观测vk的概率。

    n是初始状态概率向量:

    53b24b7e-b2c8-4aca-b822-92066df5364de828a4b8-980d-4afe-a666-30b3a436a2cc

    是时刻t=1处于状态qi的概率。

    隐马尔可夫模型兄可以用三元符号表示,即

    8263e6d6-3fd1-41a4-8a92-8811eb5550f5

    隐马尔可夫模型由初始状态概率向量pi、状态转移概率矩阵A和观测概率矩阵B决定。A,B,pi称为隐马尔可夫模型的三要素。

    状态转移概率矩阵A与初始状态概率向量pi确定了隐藏的马尔可夫链,生成不可观测的状态序列。

    观测概率矩阵B确定了如何从状态生成观测,与状态序列综合确定了如何产生观测序列。

    隐马尔可夫模型作了两个基本假设:

    (1) 齐次马尔可夫性假设,即假设隐藏的马尔可夫链在任意时刻t的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关,也与时刻t无关

    7bd2abcb-bb53-4afe-ac1b-4f688f5148ca

    (2) 观测独立性假设,即假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测及状态无关.

    513722da-84a0-4a6d-a1ef-4cf4638ae4cf

    隐马尔可夫模型可以用于标注,这时状态对应着标记。标注问题是给定观测的序列预测其对应的标记序列可以假设标注问题的数据是由隐马尔可夫模型生成的。这样我们可以利用隐马尔可夫模型的学习与预测算法进行标注。

    根据隐马尔可夫模型定义,可以将一个长度为T的观测序列,其生成过程描述如下:

    0f43bf59-f7c9-4398-a7d2-b977e4cbfa46

    隐马尔可夫模型的3个基本问题

    (1)概率计算问题。给定模型e88ee111-9eb0-4cc0-b435-20713f7878a4和观测序列O=(o1,o2,... ,oT),计算在模型lamda之下观测序列O出现的概率9b282b44-ea9b-4b0a-bee3-a1a016dab3bc

    (2)学习问题。己知观测序列O=(o1,o2,... ,oT),估计模型e88ee111-9eb0-4cc0-b435-20713f7878a4参数,使得在该模型下观测序列概率9b282b44-ea9b-4b0a-bee3-a1a016dab3bc最大。即用极大似然估计的方法估计参数。

    (3)预测问题,也称为解码(decoding)问题。己知模型e88ee111-9eb0-4cc0-b435-20713f7878a4和观测序列O=(o1,o2,... ,oT),求对给定观测序列条件概率P(I | O)最大的状态序列I=(i1,i2,... ,iT),即给定观测序列,求最有可能的对应的状态序列。

    10.2 概率计算算法

    直接计算法

    按概率公式直接计算通过列举所有可能的长度为T的状态序列I=(i1,i2,... ,iT),求各个状态序列I与观测序列O=(o1,o2,... ,oT)

    的联合概率f0f3e860-13d6-484b-80b0-5c6264af7a72,然后对所有可能的状态序列求和,得到9b282b44-ea9b-4b0a-bee3-a1a016dab3bc

    fec89f4f-bf1f-4d80-b998-2a9c39f788a5

    db16e4a6-f8c2-4939-a77d-dd6aea51ef7e

    53923a61-c4e5-4a81-bbf2-324b763f17f9

    b1f2871a-a6d9-4eec-b5cc-56a11f8e48be

        但是,计算量很大,是O(TNT)阶的,这种算法不可行。

    前向-后向算法(forward-backward algorithm)

    前向算法

    定义10.2 (前向概率) 给定隐马尔可夫模型e88ee111-9eb0-4cc0-b435-20713f7878a4,定义到时刻t部分观测序列o1,o2,... ,ot且状态为qi的概率为前向概率,记作

    6de35303-bb63-4895-a9c3-56a58bac2db0

    可以递推地求得前向概率及观测序列概率

    95aefb3d-ef3b-4ed4-8d31-d5e15a3becaa

    步骤(1)初始化前向概率,是初始时刻的状态i1=qi和观测o1的联合概率。

    步骤(2)是前向概率的递推公式,计算到时刻t+1部分观测序列为o1,o2,... ,ot ,ot+1且在时刻t+1处于状态qi的前向概率,如图10.1所示。

    376c92b1-6bee-4fcd-a363-f32789752ebf

    ai(j)是到时刻t观测到o1,o2,... ,ot并在时刻t处于状态qj的前向概率,那么乘积ai(j)aji就是到时刻t观测到o1,o2,... ,ot在在时刻t处于状态qj而在时刻t+1到达状态qi的联合概率。对这个乘积在时刻t的所有可能的N个状态qj求和,其结果就是到时刻t观测为o1,o2,... ,ot并在时刻t+1处于状态qi的联合概率。方括弧里的值与观测概率bi(ot+1)的乘积恰好是到时刻t+1观测到

    o1,o2,... ,ot ,ot+1且在时刻t+1处于状态qi的前向概率。

    步骤(3):

    因为 

    048b78c2-42cd-4e9e-95da-afaede8afdab

    所以

    06bcb84e-5240-4e08-b93c-0aca0879e474

    前向算法实际是基于“状态序列的路径结构”递推计算9b282b44-ea9b-4b0a-bee3-a1a016dab3bc的算法。前向算法高效的关键是其局部计算前向概率,然后利用路径结构将前向概率“递推”到全局,得到9b282b44-ea9b-4b0a-bee3-a1a016dab3bc。具体地,在时刻t=1,计算a1(i)的N个值(i=1,2,...,N);在各个时刻t=1,2,...,T-1,计算at+1(i)的N个值(i=1,2,...,N),而且每个at+1(i)的计算利用前一时刻ai(j)。

    减少计算量的原因在于每一次计算直接引用前一个时刻的计算结果,避免重复计算。利用前向概率计算9b282b44-ea9b-4b0a-bee3-a1a016dab3bc的计算量是O(N2T)阶的,而不是直接计算的O(TNT)阶。

    后向算法

    定义10.3 (后向概率) 给定隐马尔可夫模型e88ee111-9eb0-4cc0-b435-20713f7878a4,定义在时刻t部状态为qi的条件下,从t+1到T的部分观测序列为ot+1,ot+2 ,... ,oT的概率为后向概率,记作

    79f3b920-223f-4779-a5bd-d62d4e5caa36

    可以递推地求得后向概率及观测序列概率

    68edc065-8829-4ec9-9319-b1104f973a53

    步骤(1)初始化初始化后向概率,对最终时刻的所有状态qi规定6fbfeea2-75a0-4ddc-b691-762638262d3b

    步骤(2)是后向概率的递推公式,如图10.3所示,为了计算在时刻t部状态为qi的条件下,从t+1到T的部分观测序列为ot+1,ot+2 ,... ,oT的后向概率1936d7b4-c8c5-48ed-9d39-7eaeca11b693。只需考虑在时刻t十1所有可能的N个状态qj的转移概率(即aij项),以及在此状态下的观测ot+1的观测概率(即bj(oi+1)项),然后考虑状态qj之后的观测序列的后向概率(即b9a387d6-837f-488b-b936-b0db9b37ec5f项)。

    步骤(3)求解9b282b44-ea9b-4b0a-bee3-a1a016dab3bc的思路与步骤(2)一致,只是初始概率2558fb11-be7e-4f2e-9911-e5113e1b9230代替转移概率.

    f89f4e59-3c77-41a3-844d-af00711ff2f5

    利用前向概率和后向概率的定义可以将观测序列概率统一写成

    8ff63e94-35d6-4e24-a264-076c0e90e716

    此式当t=1和t=T-1时分别为式(10.17)和式(10.21)。

    一些概率与期望值的计算

    给定隐马尔可夫模型e88ee111-9eb0-4cc0-b435-20713f7878a4和观测O,利用前向概率和后向概率,可以得到关于单个状态和两个状态概率的计算公式,

    (1)在时刻t处于状态qi的概率。记

    e5c543c1-0a4e-4f94-b003-9ac123c7dcdf

    由前向和后向概率的定义可知,

    9f00e87a-a6e4-4545-b430-74a37d628667

    所以

    d1bfd35d-0a62-4252-8fe2-0b10878e9146

    (2)在时刻t处于状态qi的概率且在时刻t+1处于状态qj的概率。记

    4393b0a9-3e67-427b-ab3a-e6ddb35e06a4

    根据前后向概率计算:

    8b6fc194-f860-44da-a171-b7bb82fc53f048e223fa-8f9f-4592-8ca9-2fd91caf16ff

    所以

    814660e2-1f21-4319-9b7a-9a158d4231b0

    (3)将(1)和(2)中的概率对各个时刻t求和,可以得到一些有用的期望值

    在观测O下状态i出现的期望值:d88575d1-262e-46c1-85cf-8669ac64ff15

    在观测O下由状态i转移的期望值:f6c66e2f-3a88-4219-a4aa-be4160a67af3

    在观测O下由状态i转移到状态j的期望值:ecead9e4-967b-48cf-a0c7-28e246048409

    10.3 学习算法

    隐马尔可夫模型的学习,根据训练数据是包括观测序列和对应的状态序列还是只有观测序列,可以分别由监督学习与非监督学习实现.

    监督学习算法

    假设已给训练数据包含S个长度相同的观测序列和对应的状态序列{(O1,I1),...,(OS,IS)},利用极大似然估计法来估计隐马尔可夫模

    型的参数。

    (1)转移概率aij的估计
      设样本中时t处于状态i时刻t+1转移到状态j的频数为Aij,那么状态转移概率的估计是

    f62cb2d9-c10f-4507-9e47-40d96293ffa9

    (2)观测概率bj(k)的估计

    设样本中状态为j并观测为k的频数是Bjk,那么状态为j观测为k的概率的估计是

    f1c26faa-9389-46e9-9791-e6557668c790

    (3)初始状态概率cfb92e51-42b1-4d32-9dd4-87eebf8d88ab的估计为S个样本中初始状态为qi的频率

    非监督学习算法--Baum-Welch算法(即EM算法)

    假设给定训练数据只包含S个长度为T的观测序列{O1,...,OS)}而没有对应的状态序列,目标是学习隐马尔可夫模型的参数。将观测序列数据看作观测数据O,状态序列数据看作不可观测的隐数据I,那么隐马尔可夫模型事实上是一个含有隐变量的概率模型

    fcacc65c-aa0a-436c-ae96-6cda4c56b284

    它的参数学习可以由EM算法实现。

    完全数据由观测数据和隐数据组成(O,I)=(o1,o2,... ,oT,i1,i2,... ,iT),对数似然函数是553517ee-f616-4137-ac97-574dc37c45f9

    EM算法的E步:求Q函数

    eeb1d67a-f03c-4a16-a26e-3d2063ae210f

    EM算法的M步:极大化Q函数求模型参参数:极大似然函数可得,

    5a00f4d5-45ec-4cc7-8ca2-36ddbc25ae3b

    c48e26cd-a265-49ae-90bc-378d70295b8b

    6cf42d97-ebcc-47ee-a14c-48188a64ac31

    利用之前求得的概率5547b9e2-4e49-44be-8cad-d4a5bbcd04b0表示,可得算法详细如下:

    23e34c9a-4643-4571-86fd-25ad7ddd2193

    10.4 预测算法

    隐马尔可夫模型预测的两种算法:近似算法与维特比算法(Viterbi algorithm)

    近似算法

    近似算法的想法是:在每个时刻t选择在该时刻最有可能出现的状态it*,得到一个状态序列27824433-e88f-42a3-ade2-65576e41a6bb作为预测的结果。

    在每一时刻t最有可能的状态it*通过下式得到:

    35ec072a-cf1d-48da-bbdb-8f3c5f4a4ed5

    近似算法的优点是计算简单,其缺点是不能保证预测的状态序列整体是最有可能的状态序列,因为预测的状态序列可能有实际不发生的部分。该方法得到的状态序列中有可能存在转移概率为0的相邻状态

    维特比算法

    维特比算法实际是用动态规划解隐马尔可夫模型预侧问题,即用动态规划(dynamic programming)求概率最大路径(最优路径)。一条路径对应着一个状态序列。

    根据动态规划原理,最优路径具有这样的特性:如果最优路径在时刻t通过结点it*,那么这一路径从结点it*到终点iT*的部分路径,对于从it*到iT*的所有可能的部分路径来说,必须是最优的。依据这一原理,我们只需从时刻t=1开始,递推地计算在时刻t状态为i的各条部分路径的最大概率,直至得到时刻t=T状态为i的各条路径的最大概率。时刻t=T的最大概率即为最优路径的概率P*

    最优路径的终结点iT*也同时得到。之后,从终结点iT*开始,由后向前逐步求得结点iT-1* , ... , i1*

    c7fb6629-63fe-4d9f-9e7e-98bc517fc036

  • 相关阅读:
    老男孩Python全栈开发(92天全)视频教程 自学笔记08
    datagrid---columns列
    easyui---datagrid
    easyui---layout实战
    easyui---layout布局
    easyui---表单验证
    easyui---form表单_validatebox验证框
    easyui---easyloader.js
    easyui---基础组件:dialog
    easyui---基础组件:window
  • 原文地址:https://www.cnblogs.com/YongSun/p/4767667.html
Copyright © 2011-2022 走看看