記事ディレクトリ
1. マルコフ連鎖
機械学習アルゴリズムにおいて、マルコフ連鎖(Markov chain)は非常に重要な概念です。離散時間マルコフ連鎖とも呼ばれるマルコフ連鎖は、ロシアの数学者アンドレイ・マルコフ (ロシア語: Андрей Андреевич Марков) にちなんで名付けられました。
1 はじめに
マルコフ連鎖は、状態空間内のある状態から別の状態へのランダムな遷移プロセスです。
-
プロセスには「メモリレス」プロパティが必要です。
- 次の状態の確率分布は現在の状態によってのみ決定でき、時系列でそれより前のイベントは関係ありません。この特定のタイプの「無記憶性」は、マルコフ特性と呼ばれます。
-
マルコフ連鎖には、実際のプロセスの統計モデルとして多くの用途があります。
-
マルコフ連鎖の各ステップで、システムは確率分布に従ってある状態から別の状態に変化し、現在の状態を維持することもできます。
-
状態の変化は遷移と呼ばれ、さまざまな状態変化に関連する確率は遷移確率と呼ばれます。
-
マルコフ連鎖の数学的表現は次のとおりです。
-
ある時点での状態遷移の確率は前の状態にのみ依存するため、システム内の任意の 2 つの状態間の遷移確率のみが必要であり、このマルコフ連鎖のモデルが決定されます。
2. 古典的な例
下図のマルコフ連鎖は、株式市場モデルを表すために使用され、強気相場、弱気相場、停滞相場の 3 つの状態があります。
各状態は、一定の確率で次の状態に遷移します。たとえば、強気相場は 0.025 の確率で横ばい状態になります。
- この状態確率遷移図は、行列の形で表すことができます。
- 行列 P の位置 P(i, j) の値を P(j|i) と定義すると、つまり、状態 i から状態 j に変化する確率です。
- さらに、強気相場、弱気相場、横ばい相場の状態をそれぞれ 0、1、2 と定義すると、マルコフ連鎖モデルの状態遷移行列は次のようになります。
状態遷移行列 P が決まれば、株式市場モデル全体が決まる!
3. まとめ
- マルコフ連鎖は
- 状態空間で、ある状態から別の状態に遷移する確率的プロセス。
- プロセスには「メモリレス」プロパティが必要です。
- 次の状態の確率分布は現在の状態によってのみ決定でき、時系列でそれより前のイベントは関係ありません。
2. HMM の紹介
隠れマルコフ モデル(HMM) は、未知のパラメーターが隠れているマルコフ過程を記述するために使用される統計モデルです。
難しいのは、観測可能なパラメータからプロセスの暗黙的なパラメータを決定することです。これらのパラメーターは、パターン認識などのさらなる分析に使用されます。
1.単純なケース
簡単な例で説明しましょう。
- 手にサイコロが 3 つあるとします。
- 最初のサイコロは通常のサイコロ (このサイコロを D6 と呼びます) で、6 つの面があり、各面 (1、2、3、4、5、6) が現れる確率は 1/6 です。
- 2 番目のサイコロは四面体 (このサイコロを D4 と呼びます) で、各面 (1、2、3、4) が現れる確率は 1/4 です。
- 3 番目のサイコロには 8 つの面があり (このサイコロを D8 と呼びます)、各面 (1、2、3、4、5、6、7、8) が現れる確率は 1/8 です。
- サイコロを転がし始め、最初に 3 つのサイコロのうちの 1 つを選びます。各サイコロを選ぶ確率は 1/3 です。
- 次に、サイコロを振って、1、2、3、4、5、6、7、8 のいずれかの数字を出します。上記のプロセスをノンストップで繰り返すと、数字の文字列が得られます。各数字は 1、2、3、4、5、6、7、8 のいずれかです。
- たとえば、1 6 3 5 2 7 3 5 2 4 のような数字の列 (サイコロを 10 回振る) が得られる場合があります。
- この一連の数字は、可視状態チェーンと呼ばれます。
しかし、隠れマルコフ モデルでは、このような一連の可視状態連鎖だけでなく、一連の隠れ状態連鎖も存在します。
- この例では、暗黙的な状態のチェーンは、使用するサイコロのシーケンスです。
- たとえば、暗黙的なステート チェーンは次のようになります。 D6 D8 D8 D6 D4 D8 D6 D6 D4 D8
一般的に言えば、HMMでいうマルコフ連鎖とは、実は隠れ状態連鎖のことを指しており、隠れ状態(サイコロ)の間には遷移確率(遷移確率)が存在するからです。
- この例では、D6 の次の状態は D4 であり、D6 と D8 の確率は 1/3 です。D4、D8 の次の状態は D4、D6 であり、D8 の遷移確率も 1/3 です。
- この設定は、最初にわかりやすく説明するためのものですが、実際にはコンバージョン確率を自由に設定できます。
- たとえば、D4 の後に D6 が続くことはなく、D6 が D6 に続く確率は 0.9、D8 の確率は 0.1 であると定義できます。
- これは新しい HMM です。
同様に、可視状態間の遷移確率はありませんが、非表示状態と可視状態の間には放出確率と呼ばれる確率があります。
- この例では、6 面ダイス (D6) の出力確率は 1/6 です。2、3、4、5、6 が出る確率も 1/6 です。
- 出力確率の他の定義を作成することもできます。たとえば、カジノに改ざんされた六面体のサイコロがあり、1 が出る確率は 1/2 で、2、3、4、5、6 が出る確率は 1/10 です。
実際、HMM の場合、すべての隠れ状態間の遷移確率と、すべての隠れ状態とすべての可視状態の間の出力確率が事前にわかっていれば、シミュレーションを行うのは非常に簡単です。しかし、HMM モデルを適用すると、情報の一部が欠落していることがよくあります。
- サイコロにはいくつかの種類があり、それぞれの種類のサイコロが何であるかは知っていても、投げられるサイコロの順序がわからない場合があります。
- サイコロを何回も振った結果だけ見て、あとはわからないということもあるでしょう。
これらの欠落情報をアルゴリズムで推定すると、非常に重要な問題になります。これらのアルゴリズムについては後で詳しく説明します。
2. 3 つの基本的な質問
- モデルが与えられた場合、一連の観測値を生成する確率を効率的に計算する方法は? 言い換えれば、モデルが観測シリーズにどの程度適合しているかをどのように評価しますか?
- モデルと観測シーケンスが与えられた場合、この観測シーケンスに最もよく一致する状態シーケンスを見つけるにはどうすればよいでしょうか? 言い換えれば、隠れたモデルの状態を一連の観測からどのように推測できるでしょうか?
- 観測シーケンスが与えられた場合、このシーケンスの確率を最大化するためにモデル パラメータを調整する方法は? 言い換えれば、観察されたデータを最もよく説明するためにモデルをどのようにトレーニングしますか?
最初の 2 つの問題は、パターン認識問題です: 1) 隠れマルコフ モデルに従って、観測可能な状態シーケンスの確率 (評価) を取得します; 2) このシーケンスが観測可能な状態シーケンスを生成する確率を最大化する隠れ状態シーケンスを見つけます (復号化)。 )。3 番目の問題は、一連の観測可能な状態シーケンスから隠れマルコフ モデル (学習) を生成することです。
3 つの主要な問題に対応するソリューション:
- フォワードアルゴリズム、バックワードアルゴリズム
- ビタビ アルゴリズム
- Baum-Welch アルゴリズム (EM アルゴリズムとほぼ同等)
3. HMM モデルベース
1. どのような問題に HMM モデルが必要か
まずは、HMMモデルを使ってどのような問題解決ができるか見てみましょう。HMM モデルを使用する際の問題には、一般に次の 2 つの特徴があります。
- 1) 私たちの問題は、時系列や状態シーケンスなどのシーケンスに基づいています。
- 2) この問題には 2 種類のデータがあります。
- シーケンス データの 1 つのタイプは観測可能です。つまり、観測シーケンスです。
- もう 1 つのタイプのデータは観測できません。つまり、状態シーケンスと呼ばれる隠れた状態シーケンスです。
これら 2 つの機能を使用すると、この問題は通常、HMM モデルで解決することができます。現実には、このような問題がたくさんあります。
-
例: 私は今あなたのためにコースウェアを書いています. 私がキーボードで入力する一連の文字は観察シーケンスであり, 私が実際に書きたい段落は隠れ状態シーケンスです. 私が書きたい段落を推測し,これは、HMM モデルと見なすことができます。
-
別の例を挙げると、私が授業で講義をする場合、私が発する一連の連続した音は観察シーケンスであり、実際に表現したい段落は隠れ状態シーケンスです. あなたの脳の仕事は、この一連の一連の音から判断することです.私は言葉の内容を表現する可能性が最も高いです。
これらの例から、HMM モデルがどこにでもあることがわかります。ただし、上記の説明はまだ正確ではありません. 以下では、正確な数学記号を使用して HMM モデルを表現します。
2. HMM モデルの定義
HMM モデルの場合、最初に、Q がすべての可能な隠れ状態のセットであり、V がすべての可能な観測された状態のセットであると仮定します。
- Q=q 1 、q 2 、.. . , q NQ={q_1,q_2,...,q_N}Q=q1、q2、. . . 、qN
- V = v 1 、v 2 、. . . v MV={v_1,v_2,...v_M}Ⅴ=v1、v2、. . . vM
ここで、N は考えられる隠れ状態の数であり、M はすべての考えられる観測された状態の数です。
長さ T のシーケンスの場合、i は対応する状態シーケンス、O は対応する観測シーケンスです。つまり、
- i = i 1 、 i 2 、 . . . , i T i={i_1,i_2,...,i_T}私=私1、私2、. . . 、私T
- O = o 1 、 o 2 、 . . . o TO={o_1,o_2,...o_T}〇=o1、o2、. . . oT
その中で、任意の隠れ状態it ∈ Q i_t \in Q私tεQ、任意の観測状態ot ∈ V o_t\in VotεⅤ
HMM モデルは、次の 2 つの非常に重要な仮定を行います。
1) 同次マルコフ連鎖仮定.
-
つまり、常に非表示の状態は、以前の非表示の状態にのみ依存します。
-
もちろん、この仮定は少し極端です。多くの場合、隠れた状態の 1 つが前の隠れた状態に依存するだけでなく、最初の 2 つまたは最初の 3 つになる可能性があるからです。
-
しかし、この仮定の利点は、モデルが単純で解決しやすいことです。
-
時刻 t での隠れ状態を= qi i_t=q_i とすると私t=q私、時刻t + 1 t+1t+1の隠れ状態it + 1 = qj i_{t+1}=q_j私t + 1=qじ、時刻 t から時刻 t+1 までのHMM 状態遷移確率aij a_{ij}a私は次のように表現できます。
- aij = P ( it + 1 = qj ∣ it = qi ) a_{ij}=P(i_{t+1}= q_j | i_t=q_i)a私は=P ( it + 1=qじ∣私t=q私)
-
そのようなaij a_{ij}a私はマルコフ連鎖を形成できる状態遷移行列 A:
- A = [ aij ] N × NA=[a_{ij}]_{N \times N}あ=[ _私は]N × N
- A = [ aij ] N × NA=[a_{ij}]_{N \times N}あ=[ _私は]N × N
2) 観測独立性の仮定.
-
つまり、任意の時点で観測される状態は、現時点での隠れた状態にのみ依存します。これは、モデルを単純化するための仮定でもあります。
-
時間 t での隠れ状態が= qj i_t=q_jの場合私t=qじ、対応する観測状態はot = vk o_t=v_kot=vk、この時点での状態vk v_kを観察しますvk隠れ状態qj q_jqじ生成される確率はbj ( k ) b_j(k)bじ( k )、満足:
- bj ( k ) = P ( ot = vk ∣ it = qj ) b_j(k)=P(o_t=v_k|i_t=q_j)bじ( k )=P ( ot=vk∣私t=qじ)
-
そのようなbj ( k ) b_j(k)bじ( k )は、観測状態によって生成される確率行列 B を形成できます。
- B = [ bj ( k ) ] N × MB=[b_j(k)]_{N \times M}B=[ bじ( k ) ]N × M
- B = [ bj ( k ) ] N × MB=[b_j(k)]_{N \times M}B=[ bじ( k ) ]N × M
-
さらに、時間 t=1 における一連の隠れ状態確率分布Π \Piが必要です。ピ:
- Π = [ Π i ] N \Pi =[\Pi_i]_N円周率=[ P私]N
-
其中 Π i = P ( i 1 = q i ) \Pi _i=P(i_1=q_i) 円周率私=P ( i1=q私)
-
HMM モデルは、隠れ状態の初期確率分布Π \Piによって定義できます。Π、状態遷移確率行列 A および観測された状態確率行列 B が決定されます。
Π\PiΠ、A は状態シーケンスを決定し、B は観測シーケンスを決定します。
したがって、HMM モデルは、トリプレットλ \lambdaで構成できます。λは次のように表されます。
- λ = ( A , B , Π ) = \lambda =(A,B, \Pi )=l=( 、_B 、P )= (状態系列、観測系列、初期状態確率分布)
3. HMM モデルの例
以下では、上で抽象化された HMM モデルを説明するために簡単な例を使用します。これは箱とボールのモデルです。
この例は、Li Hang の「Statistical Learning Methods」からのものです。
3 つの箱があり、それぞれの箱に赤と白の 2 種類のボールが入っているとします. これら 3 つの箱の中にあるボールの数はそれぞれ次のとおりです. 次の方法で箱からボールを取り出します
.
- 最初のボックスからボールを引く確率は 0.2 です。
- 2 番目のボックスからボールを引く確率は 0.4 であり、
- 3 番目のボックスからボールを引く確率は 0.4 です。
この確率でボールを1回引いた後、ボールを戻します。
次に、現在のボックスから次のボックスに移動してボールを描画します。ルールは次のとおりです。
- 現在のボールドローボックスが最初のボックスの場合、最初のボックスにとどまり、0.5 の確率でボールを引き続け、2 番目のボックスに移動して 0.2 の確率でボールを引き、3 番目のボックスに移動すると、 0.3球。
- 現在のボールボックスが2番目のボックスの場合、0.5の確率で2番目のボックスにとどまり、0.3の確率で最初のボックスに移動し、0.2の確率で3番目のボックスに移動します。
- 現在のボールボックスが3番目のボックスの場合、0.5の確率で3番目のボックスにとどまり、ボールを引き続け、0.2の確率で最初のボックスに移動し、0.3ボールの確率で2番目のボックスに移動します。
これは、ボールの色の観測シーケンスを取得するために 3 回繰り返されるまで続きます。
- O={赤、白、赤}
このプロセスでは、観察者はボールの色の順序しか見ることができず、ボールがどのボックスから取り出されたかを確認できないことに注意してください。
次に、以前の HMM モデルの定義によると、観測状態セットは次のようになります。
- V={赤、白}、M=2
非表示の状態のコレクションは次のとおりです。
- Q={ボックス 1、ボックス 2、ボックス 3}、N=3
また、観測シーケンスと状態シーケンスの長さは 3 です。
初期状態分布Π \Pi理由:
- Π = ( 0.2 , 0.4 , 0.4 ) T \Pi=(0.2,0.4,0.4)^T円周率=( 0 . 2 ,0 . 4 、0 . 4 )T
状態
遷移確率分布 A 行列は次のとおりです。
観測された状態確率 B 行列は次のとおりです。
4. HMM 観測系列の生成
上記の例から、HMM 観測シーケンス生成のプロセスを抽象化することもできます。
-
入力は HMM モデルλ = ( A , B , Π ) \lambda =(A,B,\Pi )l=( 、_B 、Π )、観測シーケンスTTT
-
出力は一連の観測O = o 1 , o 2 , . . . o TO={o_1,o_2,...o_T} です。〇=o1、o2、. . . oT
生成プロセスは次のとおりです。
-
1) 初期状態確率分布 \PiΠ に従って、隠れ状態i 1 i_1を生成します。私1
-
2) 1 から T までの t について
- a. 非表示の状態によると、i_t私t観測された状態分布ビット ( k ) b_{it}(k)b私は( k )観測状態ot o_tot
- b. 隠れた状態によると、i_t私t状態遷移確率分布ait , it + 1 ai_t, i_{t+1}私はt、私t + 1隠れ状態を生成it + 1 i_{t+1}私t + 1
すべてo_tot一緒に観測シーケンスを形成しますO = o 1 , o 2 , . . . o TO={o_1,o_2,...o_T}〇=o1、o2、. . . oT
5. HMM モデルの 3 つの基本問題
HMM モデルには、解決する必要がある 3 つの古典的な問題があります。
1) 観測シーケンス確率の評価 -前方および後方確率の計算
- つまり、与えられたモデルλ = ( A , B , Π ) \lambda =(A,B,\Pi )l=( 、_B 、Π)和观测序列 O = { o 1 , o 2 , . . . o T } O=\{o_1,o_2,...o_T\} 〇={ o1、o2、. . . oT}、モデルλ \lambda確率 P(O| λ \lambdal )。
- この問題を解決するには、HMM モデルの 3 つの問題の中で最も単純な前方後方アルゴリズムを使用する必要があります。
2) 予測問題 (復号化問題とも呼ばれます) -ビタビ アルゴリズム
- つまり、与えられたモデルλ = ( A , B , Π ) \lambda =(A,B,\Pi )l=( 、_B 、Π)和观测序列 O = { o 1 , o 2 , . . . o T } O=\{o_1,o_2,...o_T\} 〇={ o1、o2、. . . oT}、与えられた観測シーケンスの条件下で最も可能性の高い対応する状態シーケンスを見つけます。
- この問題を解決するには、動的計画法に基づくビタビ アルゴリズムを使用する必要があります。これは、HMM モデルの 3 つの問題の中で中程度の複雑さを持つアルゴリズムです。
3) モデル パラメーター学習問題 - Baum-Welch (Baum-Welch) アルゴリズム(未知の状態)、これは学習問題です。
- つまり、与えられた観測シーケンスO = { o 1 , o 2 , ... o T } O=\{o_1,o_2,...o_T\}〇={ o1、o2、. . . oT} ,アンロックλ = ( A , B , Π ) \lambda =(A,B,\Pi )l=( 、_B 、Π )、したがって、モデルP ( O ∣ λ ) P(O|\lambda )P ( O ∣ λ ) max.
- この問題を解決するには、HMM モデルの 3 つの問題の中で最も複雑な EM アルゴリズムに基づく Baum-Welch アルゴリズムを使用する必要があります。
次の 3 つのセクションでは、これら 3 つの質問について説明します。
4. 観測シーケンスの確率を評価するフォワードおよびバックワード アルゴリズム
このセクションでは、HMM の最初の基本的な問題の解決策、つまり、モデルと観測シーケンスが与えられた場合の観測シーケンスの発生確率を見つけることに焦点を当てます。
1. HMM の問題 1 の復習: 観測系列の確率を求める
まず、HMM モデルの質問 1 を復習しましょう。問題はこれです。
我们下载HMM モデルのパラメータλ = ( A , B , Π ) \lambda =(A,B,\Pi)l=( 、_B 、P ) .
ここで、A は隠れ状態遷移確率の行列です。
B は、観測された状態生成確率の行列です。
Π\PiΠは隠れ状態の初期確率分布です。
同時に、観測シーケンスO = { o 1 , o 2 , . . o T } O=\{o_1,o_2,...o_T\} も取得しました。〇={ o1、o2、. . . oT}、
ここで、観測シーケンス O がモデルλ \lambdaに含まれている必要があります。λ P ( O ∣ λ ) P(O|\lambda )の下での条件付き発生確率P ( O ∣ λ )。
一見、問題は単純です。すべての隠れた状態の間の遷移確率と、隠れた状態から観測された状態へのすべての生成確率を知っているので、それを激しく解くことができます。
長さ T i = { i 1 , i 2 , . . . , i T } i=\{i_1,i_2,...,i_T\} のすべての可能な隠れシーケンスをリストできます。私={ 私1、私2、. . . 、私T}、これらの隠れシーケンスと観測シーケンスをそれぞれ見つけますO = { o 1 , o 2 , . . . o T } O=\{o_1,o_2,...o_T\}〇={ o1、o2、. . . oT}同時確率分布P ( O , i ∣ λ ) P(O,i|\lambda )P ( O ,i ∣ λ )であるため、周辺分布P ( O ∣ λ ) P(O|\lambda )P ( O ∣ λ ) .
具体的な力ずくでの解決方法は以下の通りです。
-
首先,任意隐藏序列 i = i 1 , i 2 , . . . , i T i={i_1,i_2,...,i_T} 私=私1、私2、. . . 、私T発生確率は次のとおりです。
- P ( i ∣ λ ) = Π i 1 ai 1 , i 2 ai 2 , i 3 . . . ai T − 1 , i TP(i|\lambda )=\Pi _{i1}a_{i1,i2}a_{i2,i3}...a_{iT-1,iT}P ( i ∣ λ )=円周率私は1ai 1 、i 2a私は2 、私は3. . . ai T − 1 , i T
- P ( i ∣ λ ) = Π i 1 ai 1 , i 2 ai 2 , i 3 . . . ai T − 1 , i TP(i|\lambda )=\Pi _{i1}a_{i1,i2}a_{i2,i3}...a_{iT-1,iT}P ( i ∣ λ )=円周率私は1ai 1 、i 2a私は2 、私は3. . . ai T − 1 , i T
-
固定状態シーケンスの場合i = i 1 , i 2 , . . . , i T i={i_1,i_2,...,i_T}私=私1、私2、. . . 、私T、必要な一連の観測値O = o 1 , o 2 , . . . o TO={o_1,o_2,...o_T}〇=o1、o2、...oT 出现的概率是:
- P ( O ∣ i , λ ) = b i 1 ( o 1 ) b i 2 ( o 2 ) . . . b i T ( o T ) P(O|i,\lambda )=b_{i1}(o_1)b_{i2}(o_2)...b_{iT}(o_T) P(O∣i,λ)=bi1(o1)bi2(o2)...biT(oT)
-
则O和i联合出现的概率是:
-
然后求边缘概率分布,即可得到观测序列O在模型 λ \lambda λ 下出现的条件概率P(O| λ \lambda λ ):
虽然上述方法有效,但是如果我们的隐藏状态数N非常多的那就麻烦了,此时我们预测状态有 N T N^T NT种组合,算法的时间复杂度是 O ( T N T ) O(TN^T) O(TNT)阶的。
因此对于一些隐藏状态数极少的模型,我们可以用暴力求解法来得到观测序列出现的概率,但是如果隐藏状态多,则上述算法太耗时,我们需要寻找其他简洁的算法。
前向后向算法就是来帮助我们在较低的时间复杂度情况下求解这个问题的。
2. 用前向算法求HMM观测序列的概率
前向后向算法是前向算法和后向算法的统称,这两个算法都可以用来求HMM观测序列的概率。我们先来看看前向算法是如何求解这个问题的。
2.1 流程梳理
前向算法本质上属于动态规划的算法,也就是我们要通过找到局部状态递推的公式,这样一步步的从子问题的最优解拓展到整个问题的最优解。
-
在前向算法中,通过定义“前向概率”来定义动态规划的这个局部状态。
-
什么是前向概率呢, 其实定义很简单:定义时刻t时隐藏状态为 q i q_i qi, 观测状态的序列为 o 1 , o 2 , . . . o t o_1,o_2,...o_t o1,o2,...ot的概率为前向概率。记为:
-
既然是动态规划,我们就要递推了,现在假设我们已经找到了在时刻t时各个隐藏状态的前向概率,现在我们需要递推出时刻t+1时各个隐藏状态的前向概率。
-
我们可以基于时刻t时各个隐藏状态的前向概率,再乘以对应的状态转移概率,即 α t ( j ) a j i \alpha _t(j)a_{ji} αt( j )はジ・イ時間 t でo 1 、o 2 、... ot o_1、o_2、... o_t を観測することです。o1、o2、. . . ot、および時間 t における隠れ状態qj q_jqじ, 時間 t+1 隠れ状態qi q_iq私確率。
-
以下のすべての行に対応する確率を合計すると、つまり、∑ j = 1 N α ( j ) α ji \sum_{j=1}^{N}\alpha(j)\alpha_{ji}∑j = 1Na ( j ) aジ・イつまり、o 1 、o 2 、... ot o_1、o_2、... o_t が時刻 t に観測されます。o1、o2、. . . ot、および時間 t+1 での隠れ状態qi q_iq私の確率。
-
観測状態ot + 1 o_{t+1}のため、1 ステップ続行ot + 1時間 t+1 での隠れ状態qi q_iのみに依存q私o 1 , o 2 , ... ot , ot + 1 o_1,o_2,...o_t,o_{t+1} が時刻 t+1 に観測されるようにo1、o2、. . . ot、ot + 1、および時間 t+1 での隠れ状態qi q_iq私の確率。
-
そして、この確率はまさに時間 t+1 に対応する隠れ状態 i の前方確率であるため、次のように前方確率の再帰関係を取得します。
α T ( i ) \alpha _T(i)aT( i )は、時刻 T での観測シーケンスがo 1 、o 2 、... o T o_1、o_2、... o_T であることをo1、o2、. . . oT、および時間 T における隠れ状態qi q_iq私の確率は、すべての隠れ状態の対応する確率を追加するだけで済みます。つまり、∑ i = 1 N α T ( i ) \sum_{i=1}^{N}\alpha_T(i)∑私は= 1NaT( i )時刻 T における観測シーケンスは、o 1 、o 2 、... ot o_1、o_2、... o_to1、o2、. . . ot確率。
2.2 アルゴリズムのまとめ
-
形式:HMM 関数λ = ( A , B , Π ) \lambda =(A,B,\Pi )l=( 、_B 、Π),观测序列 O = ( o 1 , o 2 , . . . o T ) O=(o_1,o_2,...o_T) 〇=( o1、o2、. . . oT)
-
出力: 観測系列確率P ( O ∣ λ ) P(O|\lambda )P ( O ∣ λ )
-
1) 時間 1 での各隠れ状態の前方確率を計算します。
-
2) 時間 2、3、... T での再帰的前方確率:
-
3) 最終結果を計算します。
-
再帰式から、アルゴリズムの時間計算量はO ( TN 2 ) O(TN^2)であることがわかります。O ( T女性2),比暴力解法的时间复杂度 O ( T N T ) O(TN^T) O(TNT)少了几个数量级。
3. HMM前向算法求解实例
这里我们用前面盒子与球的例子来显示前向概率的计算。 我们的观察集合是:
我们的状态集合是:
而观察序列和状态序列的长度为3.
初始状态分布为:
状态转移概率分布矩阵为:
观测状态概率矩阵为:
球的颜色的观测序列:
按照我们上一节的前向算法。首先计算时刻1三个状态的前向概率:
时刻1是红色球,
-
隐藏状态是盒子1的概率为:
-
隐藏状态是盒子2的概率为:
-
隐藏状态是盒子3的概率为:
现在我们可以开始递推了,首先递推时刻2三个状态的前向概率:
时刻2是白色球,
-
隐藏状态是盒子1的概率为:
-
隐藏状态是盒子2的概率为:
-
隐藏状态是盒子3的概率为:
继续递推,现在我们递推时刻3三个状态的前向概率:
时刻3是红色球,
-
隐藏状态是盒子1的概率为:
-
隐藏状态是盒子2的概率为:
-
隐藏状态是盒子3的概率为:
最终我们求出观测序列:O=红,白,红的概率为:
向后算法原理大概一致,可自行查询
五、维特比算法解码隐藏状态序列
学习目标
知道维特比算法解码隐藏状态序列
在本篇我们会讨论维特比算法解码隐藏状态序列,即给定模型和观测序列,求给定观测序列条件下,最可能出现的对应的隐藏状态序列。
HMM模型的解码问题最常用的算法是维特比算法,当然也有其他的算法可以求解这个问题。
同时维特比算法是一个通用的求序列最短路径的动态规划算法,也可以用于很多其他问题。
1. HMM最可能隐藏状态序列求解概述
HMM模型的解码问题即:
- 给定模型 λ = ( A , B , Π ) \lambda=(A,B,\Pi) λ=(A,B,Π)和观测序列 O = o 1 , o 2 , . . . o T O={o_1,o_2,...o_T} 〇=o1、o2、. . . oT、最も可能性の高い対応する状態シーケンスを見つけますI ∗ = i 1 ∗ , i 2 ∗ , . . . i T ∗ I^\ast ={i^\ast _1,i^\ ast _2,...i^\ast _T}私∗=私1∗、私2∗、. . . 私T∗,即P ( I ∗ ∣ O ) P(I^\ast |O)P (私は∗ ∣O)の最大化。
考えられる近似解は、各時刻 t における観測シーケンス O の最も可能性の高い隠れ状態it ∗ i^\ast _tを見つけることです。私t∗次に、おおよその隠れ状態シーケンスI ∗ = i 1 ∗ , i 2 ∗ , . . . i T ∗ I^\ast ={i^\ast _1,i^\ast _2,...i^\ast _T を取得します。 }私∗=私1∗、私2∗、. . . 私T∗私。この近似を解くことは難しくなく、前方後方アルゴリズムを使用してシーケンスを観測する確率の定義を評価します。
- 与えられたモデルでλ \lambda時刻 t における状態qi q_iにおけるλおよび観測シーケンス Oq私の確率はγ t ( i ) \gamma _t(i)ct( i )、この確率は、HMM のフォワード アルゴリズムとバックワード アルゴリズムによって計算できます。このようにして、次のようになります。
近似アルゴリズムは非常に単純ですが、予測された状態シーケンス内の一部の隣接する隠れ状態の遷移確率が 0 になる可能性があるため、予測された状態シーケンス全体が最も可能性の高い状態シーケンスであることを保証することはできません。
ビタビアルゴリズムは、近似アルゴリズムの問題を回避するために、HMM の状態シーケンス全体を考慮することができます.HMM 復号化のためのビタビアルゴリズムの方法を見てみましょう.
2. ビタビアルゴリズムの概要
ビタビ アルゴリズムは、一般的な復号化アルゴリズムであり、動的計画法に基づいてシーケンスの最短経路を見つける方法です。
動的計画法のアルゴリズムであるため、適切な局所状態と局所状態の再帰式を見つける必要があります。HMM では、ビタビ アルゴリズムが再帰用に 2 つのローカル状態を定義します。
1)最初の部分状態は、時間 t における隠れ状態iiです。iすべての可能な状態遷移パスi 1 , i 2 , . . . it i_1,i_2,...i_t私1、私2、. . . 私tで確率最大。
- 记凡δ t ( i ) \delta _t(i)dt( i ) :
によるδ t ( i ) \delta _t(i)dt( i )の定義はδ \deltaを得ることができますδの再帰式:
2) 2 番目の部分状態は、最初の部分状態から再帰的に取得されます。
- 時間 t (i_1,i_2,...,i_{t-1},i) における隠れ状態 i の個々の状態遷移パス (i 1 , i 2 , . . . , it − 1 , i ) をすべて定義します。(私は1、私2、. . . 、私t − 1、i ) で確率が最も高い遷移パスの t-1 番目のノードの隠れ状態はψ t ( i ) \psi _t(i)pt( i )、
- その再帰式は次のように表現できます。
これら 2 つのローカル状態を使用して、時間 0 から時間 T まで再帰し、ψ t ( i ) \psi _t(i)を使用できます。pt( i )記録された以前の最も可能性の高い状態ノードは、最適な隠れ状態のシーケンスが見つかるまでバックトラックします。
3. ビタビアルゴリズム処理のまとめ
それでは、ビタビ アルゴリズムのプロセスを要約してみましょう。
-
形式:HMM 関数λ = ( A , B , Π ) \lambda=(A,B,\Pi)l=( 、_B 、Π),观测序列 O = ( o 1 , o 2 , . . . o T ) O=(o_1,o_2,...o_T) 〇=( o1、o2、. . . oT)
-
出力: 最も可能性の高い隠れ状態シーケンスI ∗ = i 1 ∗ , i 2 ∗ , . . . i T ∗ I^\ast ={i^\ast _1,i^\ast _2,...i^\ ast_T }私∗=私1∗、私2∗、. . . 私T∗
プロセスは次のとおりです。
-
1) ローカル状態を初期化します。
-
2) 動的計画法再帰時間t = 2 , 3 , ... T t t=2,3,...T を実行します。t=2 、3 、. . .時間Tでのローカル状態
-
3) 時間 T における最大δ T ( i ) \delta _T(i)を計算します。dT( i )は、最も可能性の高い隠れ状態シーケンスが現れる確率です。時刻 T における最大ψ t ( i ) \psi _t(i)pt( i )、これは時間 T で最も可能性の高い隠れ状態です。
-
4) 局所状態ψ t ( i ) \psi _t(i)を使用pt( i )バックトラックを開始します。t = T − 1 , T − 2 , . . . 1の場合t=T-1,T-2,...,1t=T−1 、T−2 、. . . 、1 :
最後に、最も可能性の高い隠れ状態シーケンスI ∗ = i 1 ∗ , i 2 ∗ , . . . i T ∗ I^\ast ={i^\ast _1,i^\ast _2,...i^\ ast_T }私∗=私1∗、私2∗、. . . 私T∗
4. HMM ビタビ アルゴリズムのソリューション例
以下でもボックスとボールの例を使用して、HMM ビタビ アルゴリズムの解を見ていきます。私たちの観測セットは次のとおりです。
私たちの州のコレクションは次のとおりです。
また、観測シーケンスと状態シーケンスの長さは 3 です。
初期状態分布は次のとおりです。
状態遷移確率分布行列は次のとおりです。
観測された状態確率行列は次のとおりです。
ボールの色の観測シーケンス:
以前のビタビ アルゴリズムによると、最初に時間 1 で 3 つの隠れ状態に対応する 2 つのローカル状態を取得する必要があり、観測された状態はこの時点で 1 です。
ここで、時間 2 で 3 つの隠れ状態に対応する 2 つの局所状態の再帰を開始します。このとき、観測状態は 2 です。時間 3 で、
3 つの隠れ状態に対応する 2 つの局所状態の再帰を続けます。このとき、観測状態 1:
現時点で最後の瞬間であり、後戻りの準備を開始します。この時点での最大確率はδ 3 ( 3 ) \delta _3(3)d3( 3 )であるため、i 3 ∗ = 3 i^\ast _3=3私3∗=3
ψ 3 ( 3 ) = 3 \psi _3(3)=3なのでp3( 3 )=3,所以 i 2 ∗ = 3 i^\ast _2=3 私2∗=3、そしてψ 2 ( 3 ) = 3 \psi _2(3)=3p2( 3 )=3,所以 i 1 ∗ = 3 i^\ast _1=3 私1∗=3 . したがって、最終的な最も可能性の高い隠れ状態シーケンスは (3,3,3) です。
6. Baum-Welch アルゴリズムの紹介
1 はじめに
モデル パラメーター学習問題 - Baum-Welch (Baum-Welch) アルゴリズム (状態不明)、
- つまり、与えられた観測シーケンスO = { o 1 , o 2 , ... o T } O=\{o_1,o_2,...o_T\}〇={ o1、o2、. . . oT} ,アンロックλ = ( A , B , Π ) \lambda =(A,B,\Pi )l=( 、_B 、Π )、したがって、モデルP ( O ∣ λ ) P(O|\lambda )P ( O ∣ λ ) max.
- 最も一般的に使用されているソリューションは Baum-Welch アルゴリズムで、実際には EM アルゴリズムに基づいていますが、Baum-Welch アルゴリズムが登場した時代には EM アルゴリズムが抽象化されていなかったため、Baum-Welch アルゴリズムと呼ばれています。
2. Baum-Welch アルゴリズムの原理
Baum-Welch アルゴリズムの原理は EM アルゴリズムの原理に基づいているため、
- 次に、ステップ E で同時分布P ( O , I ∣ λ ) P(O,I|\lambda) を見つける必要があります。P ( O ,I ∣ λ )条件付き確率P ( I ∣ O , λ ‾ ) P(I|O,\overline{\lambda}) にP ( I ∣ O ,l)、ここでλ ‾ \overline{\lambda}lは現在のモデル パラメータです。
- 次に、M ステップでこの期待値を最大化して、更新されたモデル パラメーターλ \lambdaを取得します。l .
次に、モデル パラメーターの値が収束するまで、EM 反復が継続的に実行されます。
まずステップ E を見てみましょう。現在のモデル パラメータはλ ‾ \overline{\lambda}です。l, 同時分布P ( O , I ∣ λ ) P(O,I|\lambda)P ( O ,I ∣ λ )条件付き確率P ( I ∣ O , λ ‾ ) P(I|O,\overline{\lambda}) にP ( I ∣ O ,l)期待される式は次のとおりです。
- L ( λ , λ ‾ ) = ∑ IP ( I ∣ O , λ ‾ ) log P ( O , I ∣ λ ) L(\lambda, \overline{\lambda}) = \sum\limits_{I}P(I |O,\overline{\lambda})logP(O,I|\lambda)L ( λ ,l)=私∑P ( I ∣ O ,l)ログP ( O , _ _私∣ λ )
ステップ M では、上記の式を最大化し、次のように更新されたモデル パラメーターを取得します。
- λ ‾ = arg max λ ∑ IP ( I ∣ O , λ ‾ ) log P ( O , I ∣ λ ) \overline{\lambda} = arg\;\max_{\lambda}\sum\limits_{I}P (I|O,\overline{\lambda})logP(O,I|\lambda)l=ア・ラ・グ最大l私∑P ( I ∣ O ,l)ログP ( O , _ _私∣ λ )
λ ‾ \ overline {\lambda}l収束。
セブン、HMMモデルAPI紹介
1. API のインストール:
公式ウェブサイトのリンク: https://hmmlearn.readthedocs.io/en/latest/
pip3 install hmmlearn
2. hmmlearn の紹介
hmmlearn は 3 つの HMM モデル クラスを実装します。これらのクラスは、観測状態が連続か離散かによって 2 つのカテゴリに分類できます。
GaussianHMM と GMMHMM は連続観測状態の HMM モデルであり、MultinomialHMM は離散観測状態のモデルであり、HMM 原理系列でも使用するモデルです。
ここでは主に、これまで話してきた離散状態に関する MultinomialHMM モデルを紹介します。
MultinomialHMM モデルの場合、使用は比較的簡単で、一般的に使用されるパラメーターがいくつかあります。
- 「startprob_」パラメーターは、隠れ状態の初期分布 \PiΠ に対応します。
- "transmat_" は状態遷移行列 A に対応し、
- 「emissionprob_」は、観測された状態確率行列 B に対応します。
3. 多項 HMM インスタンス
前にボールについて説明した例を使用して、MultinomialHMM を実行してみましょう。
import numpy as np
from hmmlearn import hmm
# 设定隐藏状态的集合
states = ["box 1", "box 2", "box3"]
n_states = len(states)
# 设定观察状态的集合
observations = ["red", "white"]
n_observations = len(observations)
# 设定初始状态分布
start_probability = np.array([0.2, 0.4, 0.4])
# 设定状态转移概率分布矩阵
transition_probability = np.array([
[0.5, 0.2, 0.3],
[0.3, 0.5, 0.2],
[0.2, 0.3, 0.5]
])
# 设定观测状态概率矩阵
emission_probability = np.array([
[0.5, 0.5],
[0.4, 0.6],
[0.7, 0.3]
])
# 设定模型参数
model = hmm.MultinomialHMM(n_components=n_states)
model.startprob_=start_probability # 初始状态分布
model.transmat_=transition_probability # 状态转移概率分布矩阵
model.emissionprob_=emission_probability # 观测状态概率矩阵
ここで、HMM 問題の 3D Bitby アルゴリズムのデコード プロセスを実行しましょう。デコードする前と同じ観測シーケンスを使用します。コードは次のとおりです。
seen = np.array([[0,1,0]]).T # 设定观测序列
box = model.predict(seen)
print("球的观测顺序为:\n", ", ".join(map(lambda x: observations[x], seen.flatten())))
# 注意:需要使用flatten方法,把seen从二维变成一维
print("最可能的隐藏状态序列为:\n", ", ".join(map(lambda x: states[x], box)))
HMM 問題 1 の観測系列の確率を求める問題を見てみましょう。コードは次のとおりです。
print(model.score(seen))
# 输出结果是:-2.03854530992
スコア関数は、自然対数に基づく対数確率値を返すことに注意してください. HMM問題1の手計算の結果は、対数なしの元の確率は0.13022です. 比較:
import math
math.exp(-2.038545309915233)
# ln0.13022≈−2.0385
# 输出结果是:0.13021800000000003