---
title: "隠れマルコフモデル（HMM）とは？G検定対策"
description: "隠れマルコフモデル（HMM）について、隠れ状態と観測値の関係、状態遷移確率・出力確率、評価・復号・学習の3つの問題を整理します。マルコフ連鎖やRNN・LSTMとの違いも確認し、G検定で選択肢を切る判断軸を身につけます。"
canonical_url: "https://stemtazoo.github.io/gk/hmm/"
section: "gk"
---

## まず結論

* **隠れマルコフモデル（HMM：Hidden Markov Model）**とは、直接は見えない**隠れ状態**が確率的に移り変わり、その状態から**観測値**が生成されると考える確率モデルです。
* G検定では、**隠れ状態・観測値・マルコフ性**に加えて、HMMが「観測から状態を推定するモデル」であることを押さえます。

## 直感的な説明

HMMは、外から見える結果を手がかりに、見えない内部状態を推定するモデルです。

たとえば、部屋の外から人の服装だけが見えるとします。

* 傘を持っている
* 長靴を履いている
* 上着がぬれている

これらは**観測値**です。
一方、本当に知りたい「晴れ・雨」という天気は、直接は見えない**隠れ状態**です。

HMMでは、

> 前の状態から次の状態へ移る確率と、各状態から観測値が出る確率

を使って、見えない状態を推定します。

## 定義・仕組み

HMMは主に次の要素で構成されます。

* **隠れ状態**：直接観測できない内部状態
* **観測値**：実際に観測できるデータ
* **初期状態確率**：最初に各状態である確率
* **状態遷移確率**：ある状態から次の状態へ移る確率
* **出力確率**：ある状態から観測値が出る確率

状態遷移には、**現在の状態は直前の状態だけに依存する**というマルコフ性を仮定します。

HMMでは、代表的に次の3つの問題を扱います。

### 1. 評価問題

観測列が与えられたとき、

> その観測列が出る確率はどれくらいか

を求めます。
代表的な方法は**Forwardアルゴリズム**です。

### 2. 復号問題

観測列が与えられたとき、

> 最も可能性が高い隠れ状態の並びは何か

を求めます。
代表的な方法は**Viterbiアルゴリズム**です。

### 3. 学習問題

観測データから、状態遷移確率や出力確率を推定します。
代表的な方法は**Baum-Welch法**です。

## いつ使う？（得意・不得意）

### 得意

* 音声認識
* 品詞推定
* 形態素解析
* 時系列データの状態推定
* 観測できない状態を含む系列データ

### 不得意・注意点

* 長距離の依存関係を表現するのは苦手
* 状態数が増えると計算量が大きくなる
* 状態遷移や出力の確率分布をあらかじめ設計する必要がある
* 複雑な特徴表現ではRNNやLSTMなどが有利なことが多い

## G検定ひっかけポイント

### HMMとマルコフ連鎖

* **マルコフ連鎖**：状態そのものを観測できる
* **HMM**：状態は隠れており、観測値から推定する

「状態が直接見える」と書かれていれば、HMMではありません。

### HMMとRNN・LSTM

* **HMM**：確率モデル。状態遷移確率と出力確率を使う
* **RNN・LSTM**：ニューラルネットワーク。重みを学習して系列を扱う

「確率的な状態遷移」「隠れ状態から観測が生成される」ならHMMです。

### アルゴリズムの役割

* 観測列の確率を求める → **Forwardアルゴリズム**
* 最尤の状態列を求める → **Viterbiアルゴリズム**
* パラメータを学習する → **Baum-Welch法**

名称だけでなく、**何を求める方法か**で切り分けます。

## まとめ（試験直前用）

* HMMは、隠れ状態から観測値が生成される確率モデル
* 状態遷移にはマルコフ性を仮定する
* Forwardは観測列の確率、Viterbiは状態列、Baum-Welchは学習
* 状態が直接見えるモデルはマルコフ連鎖
* 「隠れ状態＋観測値＋確率的遷移」ならHMM
