隐马尔科夫模型

介绍
第一部分 参数方法——类密度模型参数估计
第二部分 监督学习——分类(基于似然的方法)
第三部分 监督学习——分类(基于判别式的方法)(参数方法——判别式参数估计)
第四部分 监督学习——回归
第五部分 监督学习——关联规则
第六部分 维度规约(特征的提取和组合)
第七部分 半参数方法
第八部分 非监督学习——聚类
第九部分 非参数方法——密度估计
第十部分 非参数方法——决策树实现的判别式
第十一部分 多层感知器——非参数估计器
第十二部分 局部模型
第十三部分 支持向量机与核机器
第十四部分 隐马尔科夫模型
第十五部分 参数的贝叶斯估计
第十六部分 集成学习——组合多学习器
第十七部分 增强学习
第十八部分 机器学习实验
第十九部分 特征工程与数据预处理

一般情况下,我们都会假设样本独立同分布,好处是整个样本的似然可由各个实例的似然之积得到。而这一假设在一些连续实例具有依赖性的应用中并不适用。马尔科夫模型所考虑的问题,不再假设样本实例间相互独立。而是把输入序列建模为由一个参数化的随机过程所产生的序列。

离散马尔科夫过程

考虑一个服从离散马尔科夫过程的系统,在任意时刻处于N个离散状态之一。将其在时刻 t 的状态记做。
系统每一时刻的状态,根据以前各时刻的状态值,按一定的概率转移到另一个状态:。
对于一阶马尔科夫模型,系统在 t+1 时刻的状态只依赖于 t 时刻的状态:

我们假设状态从到的转移概率不受具体的时刻 t 影响,也就是从到总具有相同的概率。记相应的转移概率为,并满足。是一个矩阵,称作转移概率矩阵

这样系统总是以概率从状态转移到,唯一的特例是第一个状态。定义初始状态概率为,并满足。并记为初始概率向量。

可观测马尔科夫模型

在可观测的马尔科夫模型中,状态时刻直接观测的属性。在任意时刻 t ,我们可以观测知道状态。随着系统从一个状态变为另一个状态,可以得到一个观测状态序列。记观测序列为,其概率为

给定观测序列集,估计可观测马尔科夫模型的参数很直接。初始概率向量用以开始的序列数占总序列数的比例来估计:
,其中1(e),在e为真时等于1,否则为0。
而转移概率的估计则为从转移到的个数占所有从转移的总数:

隐马尔科夫模型

隐马尔科夫模型(HMM)中,系统状态是不可直接观测的,每个状态只能记录一个观测值,即。
这个观测是状态的概率函数,假定每个状态的一个离散观测取自集合。依然假设观测概率不依赖于具体的时刻 t ,是系统处在时,观测到的观测概率。记为观测概率矩阵。定义了一个HMM模型。

由于状态的不可观测性,在隐马尔科夫模型中,随机性来自于两个方面,状态间转移的随机性,对状态观测的随机性。

HMM的三个基本问题:

  1. 给定一个模型,估计任意给定观测序列的概率,即。
  2. 给定一个模型和一个观测序列,找出状态序列,最大化产生的概率。即最大化的。
  3. 给定观测序列的训练集,学习最大化得到X的概率的模型。

下面逐一介绍这些问题。

估计观测序列的概率

对于观测序列和状态序列。在给定模型下,状态序列观测的概率为。但这是无法直接计算的,因为状态无法观测。
状态序列的概率为。
由此得到联合密度

从而可得到。但这样计算是不现实的的,因为如果假设所有的概率都不为0,那么有种可能的状态序列。

前(后)向过程是一种计算的有效方法。及将整个观测序列,在 t 时刻分割为两部分。

先介绍前向过程,给定模型,定义正向变量为到时刻 t 为止观测到部分序列且在时刻 t 状态为的概率:

这种表示方式可以通过积累每个时刻 t 的结果,并迭代地推算出整体的概率:
\begin{align} \alpha_{t+1}(j)=&P(o_1o_2\cdots o_{t+1},q_{t+1}=S_j|\lambda)\\ =&P(o_1o_2\cdots o_{t+1}|q_{t+1}=S_j,\lambda)P(q_{t+1}=S_j|\lambda)\\ =&P(o_1o_2\cdots o_t|q_{t+1}=S_j,\lambda)P(o_{t+1}|q_{t+1}=S_j,\lambda)P(q_{t+1}=S_j|\lambda)\\ =&P(o_1o_2\cdots o_t,q_{t+1}=S_j|\lambda)P(o_{t+1}|q_{t+1}=S_j,\lambda)\\ =&\sum_iP(o_1o_2\cdots o_t,q_t=S_i,q_{t+1}=S_j|\lambda)P(o_{t+1}|q_{t+1}=S_j,\lambda)\\ =&\sum_iP(o_1o_2\cdots o_t,q_{t+1}=S_j|q_t=S_i,\lambda)P(q_t=S_i|\lambda)P(o_{t+1}|q_{t+1}=S_j,\lambda)\\ =&\sum_iP(o_1o_2\cdots o_t|q_t=S_i,\lambda)P(q_{t+1}=S_j|q_t=S_i,\lambda)\\ &P(q_t=S_i|\lambda)P(o_{t+1}|q_{t+1}=S_j,\lambda) \\ =&\sum_iP(o_1o_2\cdots o_t,q_t=S_i|\lambda)P(q_{t+1}=S_j|q_t=S_i,\lambda)P(o_{t+1}|q_{t+1}=S_j,\lambda)\\ =&\left[ \sum^N_{i=1}a_t(i)a_{ij} \right]b_j(o_{t+1}) \end{align}
上式可以看做在t+1 时刻前,有N个可能的状态,通过转移概率转移到时刻 t+1的状态,最终按概率得到状态的观测。
通过前向过程,可以得到观测序列的概率为
是产生整个观测序列并最终停留在所有可能状态的概率之和。而计算的复杂度为。

相应的有后向过程,定义后向变量为在时刻 t 处于状态且观察到部分序列的概率,。递归计算如下:
\begin{align} \beta_t(i)=&P(o_{t+1}\cdots o_T|q_t=S_i,\lambda) \\ =&\sum_jP(o_{t+1}\cdots o_T,q_{t+1}=S_j|q_t=S_i,\lambda)\\ =&\sum_jP(o_{t+1}\cdots o_T|q_{t+1}=S_j,q_t=S_i,\lambda)P(q_{t+1}=S_j|q_t=S_i,\lambda)\\ =&\sum_jP(o_{t+1}|q_{t+1}=S_j,q_t=S_i,\lambda)P(o_{t+2}\cdots o_T|q_{t+1}=S_j,q_t=S_i,\lambda)\\ &P(q_{t+1}=S_j|q_t=S_i,\lambda)\\ =&\sum_jP(o_{t+1}|q_{t+1}=S_j,\lambda)P(o_{t+2}\cdots o_T|q_{t+1}=S_j,\lambda)P(q_{t+1}=S_j|q_t=S_i,\lambda) \\ =&\sum^N_{j=1}a_{ij} b_j(o_{t+1})\beta_{t+1}(j) \end{align}
在时刻 t 之后有N种可能的状态,通过转移概率转移到 t+1 时刻的新状态,按概率得到观测,之后解释后面的所有观测。最后对所有可能的状态观测求和。
整个观测序列的概率为

实际上,用前向变量和后向变量一起表示有

可以看到,前向变量解释到时刻 t 并终止于到状态的前一部分序列,后向变量解释从时刻 t 到时刻 T 的后一部分序列。
这在解决后面的问题时会用到。

最大化给定观测序列的状态序列

给定模型,寻找产生观测序列的概率最大的状态序列。
定义为在时刻 t 处于状态的概率,有
\begin{align}\gamma_t(i)=&P(q_t=S_i|O,\lambda)\\ =&\frac{P(O|q_t=S_i,\lambda)P(q_t=S_i|\lambda)}{P(O|\lambda)}\\ =&\frac{P(o_1o_2\cdots o_t|q_t=S_i,\lambda)P(o_t\cdots o_T|q_t=S_i,\lambda)P(q_t=S_i|\lambda)}{\sum^N_{j=1}\alpha_t(j)\beta_t(j)} \\ =&\frac{\alpha_t(i)\beta_t(i)}{\sum^N_{j=1}\alpha_t(j)\beta_t(j)} \end{align}
显然。为了找到状态序列,可以选取每个时刻 t 具有最高概率的状态:
但这有可能在连续的两个时刻选择到转移概率的两个状态。为了找到一个最好的状态序列,使用基于动态规划的Viterbi算法

给定模型和观测序列O,定义在时刻 t 导致前 t 个观测为给定观测并止于状态的最高概率路径的概率:

于是可以递归地计算。根据动态规划的方法,最优路径可以从最后一个时刻T 反向读取。

首先初始化时刻 1 的概率:,
递归:,
终止时刻:,
路径回溯:
跟踪在时刻 t-1 最大化的状态,也就是前一时刻的最优状态。

学习模型参数

从数据中学习HMM模型,使得最大化训练序列样本的似然。
对给定观测O和,定义为时刻 t 处于状态且时刻 t+1 处于状态的概率:
\begin{align} \xi_t(i,j)\equiv &P(q_t=S_i,q_{t+1}=S_j|O,\lambda)\\ =&\frac{P(O,q_t=S_i,q_{t+1}=S_j|\lambda)}{P(O|\lambda)}=\frac{P(O,q_t=S_i,q_{t+1}=S_j|\lambda)}{ \sum_k\sum_lP(O,q_t=S_k,q_{t+1}=S_l|\lambda)} \\ =&\frac{\alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j)}{ \sum_k\sum_l\alpha_t(k)a_{kl}b_l(o_{t+1})\beta_{t+1}(l)} \end{align}
解释产生前 t 个观测且时刻 t 状态为,以概率转移到状态,产生 t+1 时刻的观测,而解释后面的观测序列。

对于状态可观测的情况,相当于监督学习,根据


直接学习模型。

但对于不可观测状态的隐马尔科夫过程,则为非监督问题。实际上隐马尔科夫模型相当于含有隐藏变量的模型。(EM方法见《非监督学习——聚类》中的介绍,隐藏变量作为观测的源,是混和模型中的分支)使用作为一种EM过程的Baum-Welch算法进行解决。

全部样本的对数似然为。
每次迭代先计算E步,给定当前,计算当前的样本对数似然的期望为
\begin{align}E[\sum_k\log P(O^k,Q^k|\lambda)|O^k,\lambda^l]=&\sum_k \sum_{Q^k} \log [P(O^k,Q^k|\lambda)P(Q^k|O^k,\lambda^l)]\\ =&\sum_k \sum_{Q^k} \log [P(O^k,Q^k|\lambda)\frac{P(O^k,Q^k|\lambda^l)}{P(O^k|\lambda^l)}] \end{align}
由于对于来说是常数,上式可略去该项:
\begin{align} E[\sum_k\log P(O^k,Q^k|\lambda)|O^k,\lambda^l]=&\sum_k \sum_{q\in Q^k} \log[P(O^k,Q^k|\lambda)P(O^k,Q^k|\lambda^l)]\\ =&\sum_k \sum_{q\in Q^k} \log [\pi_1^{qk}b_1^{qk}(o_1)a_{12}^{qk}\cdots a_{T-1T}^{qk}b_T^{qk}(o_T) P(O^k,Q^k|\lambda^l)]\\ =&\sum_k \sum_{q\in Q^k} \log \pi_1^{qk}P(O^k,Q^k|\lambda^l)+\\ &\sum_k \sum_{q\in Q^k} (\sum_t^{T-1}\log a_{tt+1}^{qk})P(O^k,Q^k|\lambda^l)+ \\ &\sum_k\sum_{q\in Q^k} (\sum_t^T\log b_t^{qk}(o_t))P(O^k,Q^k|\lambda^l) \end{align}
下面需要对极大化期望,上式的三个部分是独立的,可分别对其进行极大化求解。且对于每个观测序列 ,假定它们是相互独立的,那么参数可在每个观测序列上求解后再取平均。
对每个观测序列:
1)满足约束,使用拉格朗日乘子法求解可得

2),应用具有等式约束的拉格朗日乘子法可求得

3)使用拉格朗日乘子法,等式约束为,可求得

对于全体样本,参数在每个观测上取平均得到。


观测为连续时

上述讨论的马尔科夫模型,假设观测是离散的,服从多项式分布。对于观测值为连续时,一种方法是将其离散化,通过向量量化转换为最近的离散向量索引。
如果不做离散化处理,对于连续量,简单地假设其服从正态分布。这种情况下,对隐马尔科夫模型参数(c)的估计变为

HMM模型中的复杂度

在HMM模型中,影响其复杂度的主要有两个方面。
首先对于隐马尔科夫模型,状态是不可观测的,状态的个数N 也是未知的。在训练模型前,假定N 的大小就是一种归纳偏倚,较小的N对应较小的复杂度。
另一个是HMM的拓扑,对于状态转移矩阵,在有些应用中不是全矩阵。某些状态只会转移到特定的状态,存在部分使得模型的复杂度降低。


马尔科夫模型的应用

不再假设样本间相互独立,马尔科夫模型对连续样本序列进行了建模。可以将一个样本序列看做一个样本,就像在“学习模型参数”部分所做的那样。这样每个样本可看做来自于某个马尔科夫模型。
通过计算样本来自某个模型的后验:
可以做到对样本序列的分类,每个类由一个马尔科夫模型描述。这在语音识别的场景中被广泛使用。通过基本的音素,在时间上构成语音,使用HMM将它们顺序组合。注意HMM模型学习的是时间结构,而在基本单元(序列中的单元)上,尤其是复杂的基本单元,常结合其他方法(如神经网络)进行学习。

你可能感兴趣的:(隐马尔科夫模型)