HMM基本的なアルゴリズム

音声信号の統計モデル(以下HMMと呼ばれる隠れマルコフモデル)HMM、広く音声処理の様々な分野で使用されてきました。もちろん、特にホットRNN、LSTMや神経の他のネットワーク系列モデルにおける学習の現在の深さの上昇とともに、HMMの状態が減少しました。しかし、古典的なモデル、モデルと対応するHMMの学習アルゴリズムとして、我々は改善し、アルゴリズムの考え方は非常に良いです拡大してモデリング機能の問題を解決します。 - 後方アルゴリズム、Baum_Welchアルゴリズムおよびビタビ復号化アルゴリズムフォワード:この記事は、HMMは、3つの基本的なアルゴリズムに与えられていることが多いに直面している音声処理の三の大基本的な問題のためのソリューションを導入するために適用さ扱っています。

フォワード - アルゴリズム

観測値の所定のシーケンスを計算するために使用されるアルゴリズム\(O = O_1、O_2、 \ ldots、o_T \) およびモデル(\ \ラムダ=(\ PI 、A、B)は、\) 保持し、モデル(\ \ラムダ\) \ラムダ)| O $ P(Oの確率を計算するために $を。
HMM以下に示す組成:

eDtlKs.png

\(P(O | \ラムダ )\) 以下のように最も直接的な方法が得られます。

固定された状態シーケンスの\(Q = Q_1、Q_2、\ ldots、Q_t \)がある
\ [P(O | Q、 \ラムダ)= \ mathop {\パイ} _ {T = 1} ^ TP(o_t | q_t、\ラムダ)= B_
{Q_1}(O_1)B_ {Q_2}(O_2)\ ldots B_ {q_T}(o_T)\タグ{1-1} \] 項、
\ [q_t B_ {}(O_t) = \ \ B_ {JK}左
右|。_ {q_t = \ theta_j、o_t = V_K}、1 \当量T \当量T \タグ{1-2} \] と指定された\(\ラムダ\)、 Qは確率である
\ [P(Q | \ラムダ
)= \ pi_ {Q_1} A_ {q_1q_2} \ cdotsのA_ {q_T-1q_T} \タグ{1-3} \] したがって、必要な確率
\ [\開始{eqnarray *} P(O | \ラムダ)&=&\ sum_ {すべてのQ} P(O | Q、\ラムダ)P(Q | \ラムダ)\\&=&\ sum_ {Q_1、Q_2、\ ldots、q_T} \ pi_ {Q_1
} B_ {Q_1}(O_1)A_ {q_T-1q_T} B_ {q_T}(o_T)\端{eqnarray *} \タグ{1-4} \] 上記式から明らかな計算量は、約、驚異的である\(2TN ^ T \)大きさ、(N = 5、Tは= \ 100 \) 、コンピューティング能力\(10 ^ {72} \)これは完全に受け入れられません。この場合、取得するために、\(P(O |)\ラムダを\) 我々はより効率的なアルゴリズムを模索しなければならない、アルゴリズムに前後には、この問題を解決するための効率的なアルゴリズムです。
便宜のためのアルゴリズムは、後で、状態表現\(\ theta_i \)と略すの形で\を(私は\します)

フォワードアルゴリズム

変数を上記で定義したよう
\ [\ alpha_t(I)=
P(o_1o_2 \ cdots o_t、q_t = I | \ラムダ)\タグ{1-5} \] 、そこ、

  • 初期化のための:\(1 \のLeq I \のLeq N \)があり、

\ [\ Alpha_1(J)= \ pi_ib_i(O_1)\ {1-6} \]

  • 再帰のための:\(1 \のLeq T \ T-1,1のLeq \のLeq J \のLeq N \)が、

\ [\ alpha_t + 1(J)= \左[\ sum_ {i = 1} ^ N \ alpha_t(I)A_ {IJ} \右] b_j(O_ {T + 1})\タグ{1-7} \]

  • 終了:

\ | [P(O \ラムダ
)= \ sum_ {i = 1} ^ N \ alpha_T(I)\タグ{1-8} \] 式(1-7)
\ [b_j(O_t 1 +)= \右\左B_ {JK} |
。_ {O_ {T + 1} = V_K} \タグ{1-9} \] アルゴリズムは、演算量を低減するために、唯一の\(N ^ 2T \)二次操作。以下のための\(N = 5、T = 100 \) のみ約3000回の乗算。なお、正面図アルゴリズムの概略図は次式で与えられ、格子状構造体です。
eDtMvj.png

アルゴリズムの後

同様に、以前の方法と、変数は次のように定義された後、
\ [\ beta_t(I)= P(O_ {T + 1} O_ {T + 2} \ cdots o_T | q_t = I、\ラムダ)\タグ{1~10 } \]は
、フォワードアルゴリズムに類似しています

  • 初期化のための:\(1 \ Iル\ルN \)があり、

\ [\ beta_T(i)が1個の\タグ{1-11} = \]

  • 再帰:のために\(= T-T 1、T-2、\ cdots、1,1- \のLeq I \のLeq N \)がある
    [\ beta_t(I)= \ \ sum_ {J = 1} ^ N A_ {IJ} b_j(O_ {T + 1})\ beta_ {T + 1}(J)\タグ{1-12} \]
  • 終了:

\[ P(O|\lambda)=\pi_ib_i(o_1)\beta_1(i)\tag{1-13} \]
后向算法的计算量大约也在\(N^2T\)数量级,它也是一种格形结构,HMM后向算法中计算后向变量\(\beta_t(i)\)的递推过程如下图所示。
eDgH2R.png

Viterbi算法

这个算法解决对给定一个观察值序列\(O=o_1o_2 \cdots o_T\)和一个模型\(\lambda=(\pi,A,B)\),如何确定一个最佳状态序列\(Q^*=q_1^*,q_2^*,\cdots,q_T^*\)的问题。
“最佳”的意义有很多种,由不同的定义可得到不同的结论,这里讨论的最佳意义上的状态序列\(Q^*\)是指使\(P(Q,O|\lambda)\)最大时确定的状态序列\(Q^*\)。这可用Viterbi算法来实现,其描述如下:
定义\(\delta_t(i)\)为时刻t时沿一条路径\(q_1,q_2,\cdots,q_t\),且q_t=i,产生出\(o_1o_2\cdots o_t\)的最大概率,即有
\[ \delta_t(i)=\mathop{max}_{q_1,q_2,\cdots,q_{t-1}}P(q_1q_2 \cdots q_t,q_t=i,o_1o_2\cdots o_t|\lambda)\tag{2-1} \]
那么,求取最佳状态序列$Q^* $的过程为

  • 初始化:对$1 \le i \le N $,有
    \[ \delta_t(i)=\pi_i b_i(o_t)\tag{2-2} \]
    \[ \varphi_1(i)=0\tag{2-3} \]
  • 递推:对$2 \le t \le T,1 \le j \le N $,有
    \[ \delta_t(j)=\mathop{max}_{1 \le i \le N}[\delta_{t-1}(i)a_{ij}]b_j(o_t)\tag{2-4} \]
    \[ \varphi_t(j)=\mathop{argmax}_{1 \le i \le N}[\delta_{t-1}(i)a_{ij}]\tag{2-5} \]
  • 终止:
    \[ P^*=\mathop{max}_{1\le i \le N}[\delta_T(i)]\tag{2-6} \]
    \[ q_T^*=\mathop{argmax}_{1 \le i \le N}[\delta_T(i)]\tag{2-7} \]
  • 路径回溯,确定最佳状态序列:
    \[ q_t^*=\varphi_{t+1}(q_{t+1}^*),t=T-1,T-2,\cdots,1\tag{2-8} \]
    对语音处理应用而言,\(P(Q,O|\lambda)\)动态范围很大,或者说不同的Q使\(P(Q,O|\lambda)\)的值差别很大,而\(\mathop{\max}_q P(Q,O|\lambda)\)事实上是\({\sum}_qP(Q,O|\lambda)\)中举足轻重的唯一成分,因此常常等价的使用\(max_qP(Q,O|\lambda)\)近似\(\sum_qP(Q,O|\lambda)\),那么,Viterbi 算法也就能用来计算\(P(O|\lambda)\)
    此外,上述的Viterbi算法也是一种格形结构,而且类似于前向算法。同样,由后向算法的思想出发,亦可推导出Viterbi算法的另一种实现方式。

Baum-Welch算法

这个算法用于解决HMM训练问题,即HMM参数估计问题。可描述为:给定一个观察虚列\(O=o_1,o_2,\cdots,o_T\),确定一个\(\lambda=(\pi,A,B)\),使\(P(O|\lambda)\)最大。
显然,由前向算法和后向算法定义的前向和后向变量,即式(1-5)、(1-10),有
\[ P(O|\lambda)=\sum_{i=1}^N \sum_{j=1}^N \alpha_t(i) a_{ij} b_j(o_{t+1}) \beta_{t+1}(j),1 \le t \le T-1 \tag{3-1} \]
求取\(\lambda\)使\(P(O|\lambda)\)最大是一个泛函极值问题。但由于给定的训练序列有限,因而不存在一个估计\(\lambda\)的最佳方法。在这种情况下,Baum-Welch算法利用递归的思想,使\(P(O|\lambda)\)局部极大,最后得到模型参数\(\lambda=(\pi,A,B)\)。此外,用梯度方法也可以达到类似的目的。
定义\(\xi_t(i,j)\)为给定训练序列O和模型\(\lambda\)时,HMM模型在t时刻处于i状态,t+1时刻处于j状态的概率,即
\[ \xi_t(i,j)=P(q_t=i,q_{t+1}=j|O,\lambda)\tag{3-2} \]
可以推导出
\[ \xi_t(i,j)=[\alpha_t(i)a_{ij}b_j(o_{t+1})\beta_{t+1}(j)]\tag{3-3} \]
那么,HMM模型在时刻 t 处于 i 状态的概率为
\[ \gamma_t(i)=P(q_t=i|O,\lambda)=\sum_{j=1}^N \xi_t(i,j)=\alpha_t(i)\beta_t(i)/P(O|\lambda)\tag{3-4} \]
因此,\(\mathop{\sum}_{t=1}^{T-1} \gamma_t(i)\)表示从 i 状态转移出去次数的期望值 ,而\(\sum_{t=1}^{T-1}\xi_t(i,j)\)表示从 i 状态转移到状态 j 次数的期望值。由此,导出Baum-Welch算法中著名的重估公式,即
\[ \mathop{\pi_i}^-=\gamma_1(i)\tag{3-5} \]

\[ \mathop{a_{ij}}^-=\mathop{\sum}_{t=1}^{T-1}\xi_t(i,j) / \mathop{\sum}_{t=1}^{T-1}\gamma_t(i)\tag{3-6} \]
\[ \mathop{b_{jk}}^-=\mathop{\sum}_{t=1,o_k=V_k}^T\gamma_t(i) / \mathop{\sum}_{t=1}^T\gamma_t(i)\tag{3-7} \]
那么,HMM参数\(\lambda=(\pi,A,B)\)的求取过程为,根据观察值序列O和选取的初始模型\(\lambda=(\pi,A,B)\),由重估公式(3-5)、(3-6)和(3-7)求得一组新参数\(\mathop{\pi_i}^-\)\(\mathop{a_{ij}}^-\)\(\mathop{b_{jk}}^-\),亦即得到了一个新模型\(\mathop{\lambda}^-=(\mathop{\pi}^-,\mathop{A}^-,\mathop{B}^-)\)。由下面的证明可以看出,\(P(O|\mathop{\lambda}^-)>P(O|\lambda)\),即由重估公式得到的\(\mathop{\lambda}^-\)\(\lambda\)在表示观察值序列O方面要好,那么重复这个过程,逐步改进模型参数,直到\(P(O|\mathop{\lambda}^-)\)收敛,即不再明显增大,此时的\(\mathop{\lambda}^-\)即为所求的模型。
应当指出,HMM训练,或者称为参数估计问题,是HMM在语音处理中应用的关键问题,与前面讨论的两个问题相比,这是最困难的问题。Baum-Welch算法只是得到广泛应用的解决这一问题的经典方法,但并不是唯一的,也远不是最完善的方法。

重估算法证明

Baum-Welch算法一般的证明方式是构造Q函数作为辅助函数,这和EM算法中的Q函数构造是一样的。这里简要介绍EM算法,这样在介绍Q函数构造原则的同时,也将证明Baum-Welch算法的有效性。

EM算法是一种从“不完全数据”中求解模型分布参数的最大似然估计方法。所谓“不完全数据”一般是指两种情况:一种情况是由于观测过程本身的限制或者错误造成观测数据成为有错漏的“不完全”数据;另一种情况是对参数的似然函数直接优化十分困难,而引入额外的参数(隐含的或丢失的)后优化就会比较容易。于是定义原始观测数据加上额外参数组成“完全数据”,原始观测数据自然就成为“不完全数据”。在模式识别及相关领域中,后一种情况更常见。由于所要优化的似然函数是一个随机变量,直接对其求最大化不好计算,但它的期望却是一个确定性的函数,优化起来相对容易。这就是EM算法的基本思路。该算法中包含两个主要方面:一是求期望,用E来表示,一是最大化,用M来表示;这也是这种方法名字的由来。EM算法在矢量优化和HMM模型的参数估计中有着很重要的作用。下面以HMM模型训练为例介绍EM算法。

在HMM模型中,数据是由两部分组成,一部分是可以观测到的数据,如观测特征序列O,称为可观测数据;另一部分数据无法观测到,如状态序列Q,称为隐含序列。由这两部分数据可以共同构成一个完全数据集(O,Q)。EM算法的目的是通过迭代的将完全数据集的对数似然度期望最大化,来实现对可观测数据的对数似然度的最大化。

根据Bayes公式,完全数据集的似然度和可观测数据集的似然度之间存在以下关系:
\[ P(O,Q|\lambda)=P(Q|O,\lambda)P(O|\lambda)\tag{4-1} \]
那么,观测数据的对数似然度可以表示为
\[ logP(O|\lambda)=logP(O,Q|\lambda)-logP(Q|O,\lambda)\tag{4-2} \]
对于两个参数集\(\lambda\)\(\mathop{\lambda}^-\),在已知O和\(\lambda\)的情况下,对公式(4-2)在完全数据集上求期望,则
\[ E[logP(o|\mathop{\lambda}^-)|O,\lambda]=E[logP(O,Q|\mathop{\lambda}^-)|O,\lambda]-E[logP(Q|O,\mathop{\lambda}^-)|O,\lambda]\tag{4-3} \]
其中式(4-3)的左半部分为
\[ \begin{eqnarray*} E[logP(o|\mathop{\lambda}^-)|O,\lambda] & = & \int logP(O|\mathop{\lambda}^-)P(Q|O,\lambda)dQ \\ & = & logP(O|\mathop{\lambda}^-) \\ & = & L(O,\mathop{\lambda}^-)\tag{4-4} \end{eqnarray*} \]

\[ Q(\lambda,\mathop{\lambda}^-)=E[logP(O,Q|\mathop{\lambda}^-)|O,\lambda]=\int logP(O,Q|\mathop{\lambda}^-)P(Q|O,\lambda)dQ\tag{4-5} \]

\[ H(\lambda,\mathop{\lambda}^-)=E[logP(Q|O,\mathop{\lambda}^-)|O,\lambda]=\int logP(Q|\mathop{\lambda}^-)P(Q|O,\lambda)dQ\tag{4-6} \]
则式(4-4)变为
\[ L(O,\mathop{\lambda}^-)=Q(\lambda,\mathop{\lambda}^-)-H(\lambda,\mathop{\lambda}^-)\tag{4-7} \]
由Jensen不等式可以知道,\(H(\lambda,\mathop{\lambda}^-) \le H(\lambda,\lambda)\)。EM算法的基本原理在于,如果可以保证\(Q(\lambda,\mathop{\lambda}^-) \ge Q(\lambda,\lambda)\)不等式成立,那么不等式\(L(O,\mathop{\lambda}^-) \ge L(O,\lambda)\)一定成立。从上面分析可以看出,Q()函数实质上就是完全数据集的对数似然度的期望,这样,通过将Q()函数最大化就可以实现观测数据的对数似然度的最大化。
当隐藏数据为离散时,Q()函数一般表示为
\ [Q(\ラムダ、\ mathop {\ラムダ} ^ - )= \ sum_ { すべてのQ} \ FRAC {P(O 、Q | \ラムダ)} {P(O | \ラムダ)}のlogP(O、Q | \ mathop {\ラムダ} ^ - )\ {4-8} \]タグ
一般的に記載されたEMアルゴリズム-パラメータの現在のセット所与\(\ラムダ\)を、パラメータの新しい組を介して得ることができる(\ \ mathop {\ラムダ} ^ - \)

  • 初期パラメータ$ \ラムダ$を選択します。
  • ラムダ$に望ましい、即ち、パラメータの所与のセットで$ \ Qはシーク()関数を求めます。
  • Q(\ラムダ、\ mathop {\ラムダ} ^ - )$ - $ \ラムダ= \ mathop {} ARGMAX _ {\ mathop {\ラムダ} ^}を選択し、最大。

おすすめ

転載: www.cnblogs.com/liuerdou/p/11332428.html