カテゴリー別アーカイブ: PRML

[PRML] 1.1 多項式曲線フィッティング (2)

次数 M の決め方
次に、多項式の次数 M は、どう選べばよいのでしょうか。
この問題はモデル選択(model selection)と呼ばれています。

それでは、実際に M の値をいろいろと変えてみたものを見てみましょう。

(図 作成中)

次数 M が小さすぎる場合、ほとんどの訓練データへの当てはまりが悪いのが分かります。
反対に、次数 M が大きすぎる場合、訓練データへの当てはまりが非常に良くなっています。例えば、次数 M = 9 の例では、E({\mathbf w}^*) = 0 となっていて、誤差が無い状態です。

では M = 9 の場合が一番良いのでしょうか。

そうではなさそうですよね。
関数の形が発振したようにぐにゃぐにゃになってしまっています。
このような状態では、訓練データに対する当てはまりが良すぎて、新しいデータ、つまりテストデータに対しては、うまく目標値を予測することができません
この状態を、過学習(over-fitting)とよびます。

では、よい次数 M はどうやって選べばよいのでしょうか。

…答えは単純です。

いろいろとMを変えてみて、それぞれについて誤差 E({\mathbf w}^*) を求め、比較すればいいのです。

実際には、平均二乗平方根誤差(RMS error, root-mean-square error)という指標を使います。

E_{RMS} = \sqrt{\frac{2E({\mathbf w}^*)}{N}}

この指標は、

  • データ数 N で誤差関数を割っているため、異なるデータ数をもつデータに有効
  • 平方根をとっているため、目標値 t と単位が揃う

というメリットがあります。

次数 M の場合の、E({\mathbf w}^*) を訓練集合とテスト集合それぞれについて調べてみると、以下のような結果になりました。

(図 作成中)

次数が高い多項式は次数が低い多項式を特殊な場合として含むので、次数が高くなるにつれてよいモデルになりそうですが、結果は異なります。
これは多項式の次数が高すぎると、データに含まれるノイズに敏感になってしまうためと考えることができます。

データ集合のサイズを大きくする

今度は、次数 M を固定したうえで、データ集合 N のサイズを変えてみましょう。

(図 作成中)

どうでしょうか。

先ほど問題になっていた複雑な多項式モデル M = 9 ですが、データ数 N が増えたことで過学習が緩和されていることが分かります。

訓練データの数が大きくなると、より複雑なモデルをデータに当てはめることができます。

この議論で行くと、入手できる訓練データの数によって、モデルの複雑さ(この場合の次数 M )を選ばなくてはならなくなってしまうので、違和感があります。

限られたサイズの訓練データに対して複雑で柔軟なモデルを使うことができるようにするために、正則化(regularization)というテクニックがあります。

[PRML] 1. データに潜むパターンを見つけ出す。

パターン認識という学問

計算機アルゴリズムを通じて、データの中の規則性を自動的に見つけ出し、さらにその規則性を使ってデータを異なるカテゴリに分類する、というデータ処理を行う

素直な方法

  • 人力による識別ルールの作成
  • ヒューリスティクスを編み出す

ただし、こういった方法ではあらかじめ作らなくてはいけないルールの数を爆発的に増やさなくてはならなかったり、例外が起きたときのルールも爆発的に増えてしまいます。

パターン認識での方法

  • 訓練集合(training set) \{{\mathbf x}_1,\ldots, {\mathbf x}_N\} の入力 {\mathbf x_i} により関数のパラメータを更新し、出力(target vector) {\mathbf t_i} となるような関数 {\mathbf t} = y({\mathbf x}) を作る
  • テスト集合(test set)の入力 {\mathbf x}_j に対して出力 {\mathbf t}_j  が予測(prediction)できるようになる

処理の手順

  1. 入力データに対する前処理(preprocessing)あるいは特徴抽出(feature extraction)を行う(次元削減とか)
  2. 訓練集合の入力 {\mathbf x} と目標ベクトル {\mathbf t} を対応付ける関数 y の導出
  3. 関数 y によりテスト集合 {\mathbf x'} の目標ベクトル {\mathbf t'} を予測

パターン認識の扱う問題の種類
大きく分けて

  1. 教師あり学習(supervised learning):訓練データが、入力ベクトル {\mathbf x} と目標ベクトル {\mathbf t} の事例で構成される場合
  2. 教師なし学習(unsupervised learning):訓練データが、入力ベクトル {\mathbf x} のみで構成される(それらに対応する目標ベクトルが存在しない)場合

に分けることができます。
このほかに

  • 半教師あり学習(semi-supervised learning):訓練データの中に、目標ベクトルがない事例も含まれる場合
  • 強化学習(reinforcement learning):最適な出力は事例として与えられず、与えられた状況下で、報酬を最大化するように学習を行う場合

などもあります。

教師あり学習
教師あり学習には、大きく分けて2つの場合があり、

  1. クラス分類(classification):各入力ベクトルを離散カテゴリの一つに割り当てる場合
  2. 回帰(regression):各入力ベクトルに対し、一つあるいは複数の連続値を与える場合

教師なし学習
教師なし学習には

  • クラスタリング(clustering):類似した事例のグループを見つけること
  • 密度推定(density estimation):入力空間におけるデータの分布を求めること

などがあります。

パターン認識を学ぶのに必要な知識

  • 微分積分学
  • 線形代数学

は基本として、

  • 確率論
  • 決定理論
  • 情報理論

の知識が必須です。

(言葉だけだと分かりづらいので、図とかTeXとかで更新予定です)