Loftal Engineer's Blog

Loftalの開発者ブログです。

教師あり学習の問題設定とそれを解く手順

機械学習の主要なテーマの一つとして「教師あり学習」があります。これは、データと正解のペアからパターンを学習し、新たなデータの正解を当てることを目標とする研究テーマです。実際の応用例としては幅広く、例えば以下のようなものが挙げられます。

  • 画像認識
    • 顔認識、物体認識、手書き文字認識
  • 音声認識
    • 音声からテキストへの変換、話者の判別
  • 迷惑メール判定

これらの技術の基礎は共通しています。つまり、背景にある理論を理解することで様々な分野に応用することが可能となります。

そこで本記事では、様々なモデル・手法を体系的に整理することを見据えて、教師あり学習について書いてみたいと思います。一見遠回りに見えますが、体系的に整理することで今話題の「ニューラルネットワーク」や「ディープラーニング」についても理解が深まります。

教師あり学習の問題設定

まずは教師あり学習の問題設定をできるだけ一般的な形で表します。問題設定自体は至ってシンプルです。

ノーテーション
 \mathcal{X}:観測データが取りうる値の集合
 \mathcal{Y}:ラベルデータが取りうる値の集合
 N \in \mathbb{N}:訓練データ数
 \boldsymbol{x}_n (\in \mathcal{X}) n個目の観測データ (n=1,2,\ldots , N)
 y_n (\in \mathcal{Y}) n個目のラベルデータ (n=1,2,\ldots , N)

上記ノーテーションを用いて、既知データと未知データは以下のように書くことができます。

既知データ
 \mathcal{D} = \{ (\boldsymbol{x}_1, y_1), (\boldsymbol{x}_2, y_2), \ldots , (\boldsymbol{x}_N, y_N) \}:訓練データの集合
 \boldsymbol{x}^* (\in \mathcal{X}):新たな観測データ

未知データ
 y^* (\in \mathcal{Y}) \boldsymbol{x}^*のラベルデータ

教師あり学習の目的は、既知データから未知データを予測することです。

教師あり学習の問題設定はこれだけです。この時点では、確率もパラメータも出てこないことに注意しておきましょう。

具体例1(身長と体重)

身長から体重を予測する問題を考えたい場合、
 \mathcal{X} = \mathbb{R}:身長が取りうる値の集合
 \mathcal{Y} = \mathbb{R}:体重が取りうる値の集合
とすればOKです。

このように \mathcal{Y}が連続である場合を、回帰と呼びます。

具体例2(手書き数字認識)

28×28ピクセルの画像(256階調グレースケール)からどの数字か(0〜9)を予測する問題を考えたい場合は以下のようにします。
 \mathcal{X} = \{0, 1, \ldots , 255\}^{784}
 \mathcal{Y} = \{ 0, 1, \ldots , 9\}

このように \mathcal{Y}が離散である場合を、分類と呼びます。

問題を解く手順

以上で教師あり学習の問題設定を表すことができました。それではこの問題をどのように解けば良いでしょうか?問題を解く手順は以下の3ステップに分けることができます。

  1. モデル化
  2. 学習
  3. 推論

ここでも各ステップをできるだけ一般的な形で表してみます。

モデル化

モデル化とは、 \boldsymbol{x} yの関係を数式で表現することです。ここでは特にパラメータ \boldsymbol{\theta}で特徴づけられる確率分布 Pを仮定することにし、これを確率モデルと呼ぶことにします。以降モデル化として確率モデルのみを考えます。

確率モデルによるモデル化は以下の2つに分けることができます。

  • 識別モデル
  • 生成モデル

識別モデル

識別モデルは以下のように表されます。
 P(y | \boldsymbol{x}, \boldsymbol{\theta})
つまり、観測データが与えられたもとでのラベルデータの確率分布をモデル化したものが識別モデルです。

生成モデル

生成モデルは以下のように表されます。
 P(\boldsymbol{x} | y, \boldsymbol{\theta})
つまり、ラベルデータが与えられたもとでの観測データの確率分布をモデル化したものが生成モデルです。

学習

モデル化ができたら、次は学習です。学習とは、訓練データからモデルのパラメータ \boldsymbol{\theta}を計算することです。学習は以下の3つに分けることができます。

最尤推定

最尤推定は、訓練データを生成する尤もらしいパラメータを推定値とします。推定値を \hat{\boldsymbol{\theta}}とすると、以下のように書くことができます。
 \displaystyle \hat{\boldsymbol{\theta}} = \arg \max \prod_{n=1}^{N} P(y_n | \boldsymbol{x}_n, \boldsymbol{\theta})

ここで、識別モデルの場合を書きましたが、生成モデルの場合は \boldsymbol{x} yを逆にするだけです。以降のMAP推定、ベイズ推定も同様に識別モデルの場合のみを書きます。

MAP推定

MAP推定では \boldsymbol{\theta}の事前分布 P(\boldsymbol{\theta})を仮定し、訓練データが与えられたもとでの事後確率 P(\boldsymbol{\theta} | \mathcal{D})が最大となるものを推定値とします。ベイズの定理を用いて、以下のように書くことができます。
 \displaystyle \hat{\boldsymbol{\theta}} = \arg \max \prod_{n=1}^{N} \frac{ P(y_n | \boldsymbol{x}_n, \boldsymbol{\theta}) P(\boldsymbol{\theta}) }{ \int P(y_n | \boldsymbol{x}_n, \boldsymbol{\theta}) P(\boldsymbol{\theta}) d\boldsymbol{\theta} }

最尤推定及びMAP推定は、一点の \boldsymbol{\theta}を推定するため、点推定と呼ばれます。

ベイズ推定

ベイズ推定では、点推定と異なり一点の \boldsymbol{\theta}を推定するのではなく、 \boldsymbol{\theta}を確率分布として推定します。ベイズの定理を用いて、以下のように書くことができます。
 \displaystyle P(\boldsymbol{\theta} | \mathcal{D}) = \prod_{n=1}^{N} \frac{ P(y_n | \boldsymbol{x}_n, \boldsymbol{\theta}) P(\boldsymbol{\theta}) }{ \int P(y_n | \boldsymbol{x}_n, \boldsymbol{\theta}) P(\boldsymbol{\theta}) d\boldsymbol{\theta} }

推論

最後に仮定したモデルと学習したパラメータを用いて新たな観測データのラベルデータを推論します。以下の場合に分けて考えます。

  • 識別モデルで点推定の場合
  • 識別モデルでベイズ推定の場合
  • 生成モデルで点推定の場合
  • 生成モデルでベイズ推定の場合

識別モデルで点推定の場合

識別モデルでは yの確率分布を直接計算できます。また点推定のため、求めたパラメータ \hat{\boldsymbol{\theta}}を用いれば良いので、とてもシンプルです。
 \hat{y^*} = \arg \max P(y | \boldsymbol{x}^*, \hat{\boldsymbol{\theta}})

識別モデルでベイズ推定の場合

一方ベイズ推定の場合は \boldsymbol{\theta}の確率分布を推定しています。そこで、その確率分布 P(\boldsymbol{\theta} | \mathcal{D})で期待値を取ったものの最大値を求めます。
 \displaystyle \hat{y^*} = \arg \max \int P(y | \boldsymbol{x}^*, \boldsymbol{\theta}) P(\boldsymbol{\theta} | \mathcal{D}) d\boldsymbol{\theta}

生成モデルで点推定の場合

生成モデルの場合、 yの確率分布は直接計算できないので、ベイズの定理を用いて事後確率を計算します。点推定で求めたパラメータはそのまま代入します。
 \displaystyle \hat{y^*} = \arg \max \frac{ P(\boldsymbol{x}^* | y, \hat{\boldsymbol{\theta}}) P(y) }{ \int P(\boldsymbol{x}^* | y, \hat{\boldsymbol{\theta}}) P(y) dy }

生成モデルでベイズ推定の場合

生成モデルでベイズ推定の場合は、 yの事後確率を更にベイズ推定で求めた確率分布で期待値を取ります。
 \displaystyle \hat{y^*} = \arg \max \int \frac{ P(\boldsymbol{x}^* | y, \boldsymbol{\theta}) P(y) }{ \int P(\boldsymbol{x}^* | y, \boldsymbol{\theta}) P(y) dy } P(\boldsymbol{\theta} | \mathcal{D}) d\boldsymbol{\theta}

まとめ

以上で教師あり学習の問題設定とそれを解く手順の整理ができました。本記事で整理した枠組みから捉えると、教師あり学習の各種手法が何をしているのか見通しが良くなります。次回はこの枠組みを用いて「ニューラルネットワーク」について書いてみたいと思います。