ML

HMM

sequential data

Posted by mtt on October 16, 2018

PRML: Chapter 13

对于序列数据,数据的分布往往不是独立同分布的,而当前数据点往往和之前的数据点序列有关,对于这种数据的概率分布建模,有两种:stationary 和 nonstationary, 我们这里关注前者, 也就是序列数据和时间有关,生成分布和时间无关
M阶Markov链 :条件概率分布只依赖与前M个变量
但是如果我们直接对 $p(x_n \mid x_{n-M},\ldots ,x_{n-1})$ 建模,假设离散变量,那么参数的数量随M指数增长
假设数据由对应的隐变量,满足马尔科夫链结构,得到state space model如下

其中 $z_{n+1} \perp z_{n-1} \mid z_n$, 并且从D分离得, $x_n$ 依赖于所以之前 $x_i(i<n)$
对于以上得图结构,如果隐变量是离散,我们获得了隐式马尔可夫模型(HMM),如果隐变量和观测变量都符合高斯分布,我们获得linear dynamical system

Hidden Markov Model

可以看成Naive Bayes的sequence version,都是生成式模型
有N个观测数据,隐变量有K种值编码1到K
我们定义HMM参数如下

  1. $\pi \; \pi_k = p(z_{1k} = 1)$ 其中 $z_{nk}$ 代表 $z_n$ 处在第k个状态是否为真(初始概率向量)
  2. (transition probabilities) $\mathbf{A} \; A_{jk} = p(z_{nk} = 1 \mid z_{n-1,j} = 1)$ suject to $0 \le A_{jk} \le 1 \sum_{k}A_{jk} = 1$ (状态转移矩阵)
  3. (emission probabilities) $\phi$ 是一组控制 $p(\mathbf{x}_n \mid \mathbf{z}_n, \phi)$ 的参数(混淆矩阵)

那么

HMM假设

  • 齐次马尔科夫性假设:假设隐藏的马尔科夫链在任意时刻的状态只依赖前一时刻的状态,与其他时刻状态以及观测无关,也和当前时刻t无关
    $p(z_i \mid z_{i-1}, \ldots, z_1) = p(z_i \mid z_{i-1})$
    $p(z_{i+1} \mid z_{i}) = p(z_{j+1} \mid z_j)$

  • 观察独立性假设: 假设任意时刻观测只依赖于该时刻马尔科夫链的状态,和其他观测状态无关
    $p(x_1,\ldots,x_N \mid z_1, \ldots, z_N) = \prod p(x_i \mid z_i)$

其中 $\mathbf{X} = \{\mathbf{x_1, \ldots, x_N}\}$ , $\mathbf{Z} = \{\mathbf{z_1, \ldots, z_N}\}$ , $\theta = \{\mathbf{\pi,A,\phi}\}$
上面是标准的HMM模型,很多HMM的变形,比如left-to-right HMM,它限制 $A_{jk} = 0 (k < j)$

Maximum likelihood for the HMM

直接最大化导致没有闭式解,采用EM算法

  1. 选择 $Q(Z) = p(Z \mid X, \theta)$
  2. 选择 $\theta := \underset{\theta}{argmax}\;\sum_{Z}Q(Z)\mathrm{ln}\; \frac{p(X,Z \mid \theta)}{Q(Z)} = \underset{\theta}{argmax}\sum_{Z}p(X, Z \mid \theta^{old})\mathrm{ln}p(X,Z \mid \theta)$
  3. 迭代到收敛

$\gamma(z_{nk})$ 是 $\gamma(z_n = k)$, $\xi(z_{n-1,j},z_{nk})$ 是 $\xi_(z_{n-1} = j, z_n = k)$

(这里PRML写的是 $\sum_{z}\gamma(z)z_{n-1,j}z_{nk}$ ????)

(gg ??的地方推导失败 那他怎么得到下面的式子啊 我凉了)

用拉格朗日乘子法

注意 $\pi\;A$ 中的元素初始化为0那么会一直保持0,一般随机初始化suject to 和为1和正数限制
关于 $\phi_k$ 最大化时,最后一项类似混合高斯分布的形式
如果 $p(x_n \mid \phi_k) = N(x_n\mid \mu_k, \Sigma_k)$

EM算法还需要初始化 $\phi$ , 一种方式是先假设数据是iid,然后估计出来的参数作为初始值

forward-backward algorithm(Baum-Welch)

有效估计 $\gamma(z_{nk})$ 和 $\xi(z_{n-1,j},z_{nk})$ 的方法

由D分离性质,我们有

定义

也就是

初始时

计算整个链的时间复杂度为 $O(NK^2)$

同理

也就是

初始时

对于 $p(X)$ 的计算,在参数估计时可以约分掉,如果我们想要知道 $p(X)$ 值那么

接下来我们估计 $\xi$ 函数,利用函数定义和D分离性质有

其中 $p(x_n \mid z_n)$ 因为 $x_n$ 是已经观察到的变量,在EM算法之前可以把其表示为 $z_n$ 的函数, 并且保持不变(形式?)

如果观察到 X ,希望预测 N+1时刻的x值

The sum-product algorithm for HMM

提供简便推导 $\alpha - \beta$ 递归 的方法
HMM的简化的因子图可以表示为

其中

把 $z_N$ 当作根,用sum-product算法推导如下

如果我们定义 $\alpha(z_n) = \mu_{f_n \rightarrow z_n}(z_n)$ 由于 $\mu_{h \rightarrow z_1} = h(z_1)$ 和 $\alpha(z_1)$ 的公式一样,两者的迭代公式一样,所以两者 $\alpha$ 是相同的

考虑从根的回传信息,根据sum-product算法有

定义 $\beta(z_n) = \mu_{f_{n+1} \rightarrow z_n}(z_n)$ 同理可证,两者的 $\beta$ 函数也是等价的

scale the factor
Viterbi

given x and M how to find y given y and X, how to find parameters of M to max p(y\midx, M)