隠れマルコフモデル(HMM)は,モデル化されているシステムが観測されていない(すなわち隠れた)状態を持つマルコフ過程であると仮定される統計的マルコフモデルである。
隠されたマルコフモデルは、音声、手書き、ジェスチャー認識、品詞タグ付け、楽譜追従、部分放電、バイオインフォマティクスなどの強化学習や時間的パターン認識への応用で特に知られている。
HMMの用語
隠された用語は、観測の背後にある一次マルコフ過程を指します。 観測とは、私たちが知っていて観察できるデータを指します。 マルコフ過程は、下の図の”雨”と”晴れ”の間の相互作用によって示され、これらのそれぞれは隠された状態である。

観測値は既知のデータであり、上の図では”歩く”、”店”、”きれい”を指します。 機械学習の意味では、観測は私たちの訓練データであり、隠された状態の数は私たちのモデルのハイパーパラメータです。 このモデルの評価については、後で説明します。

T=まだ観測値がありません,N=2,M=3,Q={“Rainy”,”Sunny”},V={“Walk”,”Shop”,”Clean”}
状態遷移確率は、各隠された状態を指す矢印です。 観測確率行列は、各隠された状態からの各観測値を指す青と赤の矢印です。 行列は行確率的であり、行が1まで加算されることを意味します。


行列は、ある状態から別の状態へ、またはある状態から観測への確率が何であるかを説明します。
初期状態分布は、非表示状態から開始することによってモデルを取得します。
既知の状態遷移確率、観測確率行列、および初期状態分布を持つ完全なモデルは、次のようにマークされています,

上記のモデルをPythonでどのように構築できますか?
上記の場合、排出量は離散的な{“Walk”、”Shop”、”Clean”}です。 上記のモデルには、hmmlearnライブラリのMultinomialHMMが使用されます。 GaussianHMMとGMMHMMはライブラリ内の他のモデルです。
さて、HMMで解決すべきいくつかの重要な問題は何ですか?
- 問題1、既知のモデルが与えられた場合、シーケンスOが発生する可能性は何ですか?
- 問題2、既知のモデルとシーケンスOが与えられた場合、最適な隠れ状態シーケンスは何ですか? これは、天気が「雨」か「晴れ」かを知りたい場合に便利です
- 問題3、シーケンスOと隠れ状態の数が与えられた場合、Oの確率を最大化する最適モデルは何
Pythonでの問題1
最初の観測値が”ウォーク”である確率は、初期状態分布と放出確率行列の乗算に等しくなります。 0.6×0.1+0.4×0.6=0.30(30%)です。 ログ尤度は呼び出しから提供されます。スコア。
Pythonでの問題2

既知のモデルと観測値{“Shop”,”Clean”,”Walk”}を考えると、天気は最も可能性が高い{“Rainy”,”Rainy”,”Sunny”}であり、確率は-1.5%です。
既知のモデルと観測値{“Clean”,”Clean”,”Clean”}を考えると、天気は最大3.6%の確率で{“Rainy”,”Rainy”,”Rainy”}でした。
直感的には、”歩く”が発生したとき、天気は”雨”ではない可能性が最も高いでしょう。
Pythonでの問題3
オーディオファイルを使用した音声認識:これらの単語を予測します

振幅はHMMの観測として使用できますが、特徴工学はより多くの性能を与えます。

機能stftおよびpeakfindはオーディオ信号のための特徴を発生させる。
上記の例はhereから取られました。 Kyle Kastnerは3d配列を取り込むHMMクラスを構築しましたが、2d配列のみを許可するhmmlearnを使用しています。 これが、Kyle Kastnerによって生成された機能をX_Testとして削減している理由です。平均(軸=2)。
このモデリングを実行するには、理解するのに多くの時間がかかりました。 私は、ターゲット変数が観測値である必要があるという印象を持っていました。 これは時系列に当てはまります。 分類は、各クラスのHMMを構築し、入力のlogprobを計算して出力を比較することによって行われます。
問題1に対する数学的解法:前方アルゴリズム

アルファパスは、与えられたモデルの観測と状態シーケンスの確率です。

時間(t)=0でのアルファパス、iへの初期状態分布、そこから最初の観測O0への初期状態分布。

時間(t)=tでのアルファパス、各隠れ状態への最後のアルファパスの合計にOtへの放出を掛けたもの。

問題2への数学的解法: バックワードアルゴリズム




与えられたモデルと観測、時間tで状態qiにいる確率.

問題3への数学的解法: フォワード-バックワードアルゴリズム


与えられたモデルと観測値による時刻tにおける状態qiからqjへの確率


iからjへのすべての遷移確率の合計。


遷移と放出確率行列をdi-γで推定した。
P(O|モデル)の確率が増加した場合に反復する