0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「過学習って何?」から理解する教師あり学習 — 正則化・交差検証・アンサンブルまで

0
Posted at

機械学習の用語は、1つずつ暗記すると関係が見えにくくなりがちです。

たとえば、

  • 過学習
  • 汎化
  • 正則化
  • 交差検証
  • アンサンブル学習
  • マルチタスク学習

は、どれも教師あり学習の周辺でよく登場します。

この記事では、これらを個別に覚えるのではなく、

「学習したモデルを、未知のデータでもうまく使うにはどうすればよいか」

という1本の流れとして整理します。


教師あり学習とは

教師あり学習(Supervised Learning)は、

入力データと正解をセットにして、入力から正解を予測する規則を学習させる方法

です。

たとえば住宅の家賃を予測したい場合、次のようなデータを用意します。

面積 築年数 駅からの距離 家賃
40㎡ 5年 5分 9万円
60㎡ 10年 10分 11万円
25㎡ 20年 15分 5万円

ここでは「面積・築年数・駅からの距離」が入力で、「家賃」が正解です。


モデルとは何か

機械学習でいう モデル とは、

入力を受け取り、そこから予測結果を出すための、学習済みの仕組み

です。

たとえば住宅価格予測なら、

という働きをします。

通常のプログラムでは、人間がルールを直接書きます。

人間
↓
ルールを書く
↓
プログラム

一方、機械学習では、

データ
↓
学習アルゴリズム
↓
モデル

という流れになります。

ここで、 アルゴリズム と モデル は同じものではありません。

  • アルゴリズム :どのように学習するかという方法
  • モデル :その方法で実際にデータを学習した結果できたもの

料理にたとえるなら、「アルゴリズム = レシピ」「データ = 材料」「モデル = 出来上がった料理」くらいの関係です。


分類と回帰

教師あり学習の代表的な問題は、大きく 分類 と 回帰 に分けられます。

覚え方はシンプルです。

分類 = 何者なのか
回帰 = いくつなのか


学習できたら終わり、ではない

モデルを作る目的は、 学習に使ったデータだけを正しく当てること ではありません。

本当に重要なのは、

学習時には見たことがない、新しいデータにも正しく対応できること

です。

ここから、 過学習 と 汎化 という重要な概念が出てきます。


過学習とは

モデルが訓練データに合わせすぎてしまうことを、 過学習(Overfitting) といいます。

たとえば、

という状態です。

訓練データには非常によく合っているのに、未知データでは性能が落ちています。

モデルが、

データ全体に共通する本質的な規則

だけではなく、

訓練データにたまたま含まれていた細かな特徴やノイズ

まで覚えてしまうと、このようなことが起こります。


汎化とは

汎化(Generalization) とは、

学習時に見ていないデータにも、学習した規則を適用できること

です。

その能力を 汎化性能 と呼びます。

訓練データに強い
        ≠
良いモデル

理想は、

訓練データにも強い
+
未知データにも強い

状態です。


正則化とは

過学習を防ぐ代表的な方法の1つが、 正則化(Regularization) です。

※「正規化(Normalization)」とは別の用語です。

正則化を理解するには、まず モデルの複雑さ が何を意味するのかを理解すると分かりやすくなります。


モデルの「複雑さ」とは何か

ここでいう複雑さは、「コードが読みにくい」「ファイルサイズが大きい」という意味ではありません。

ざっくり言えば、

どれだけ多様な規則や形を表現できるかという、モデルの自由度・表現力

です。

直線しか引けないモデル

たとえば、入力 x から出力 y を予測するとします。

最も単純なモデルの1つは直線です。

y = ax + b

このモデルが調整できるのは、主に傾き a と切片 b です。

表現できる形は直線だけなので、自由度はそれほど高くありません。

データ      ●
          ●
       ●
    ●

モデル   /
       /
     /

多少データから外れていても、全体としての傾向を捉えようとします。

より自由に曲がれるモデル

一方、より高い次数の多項式なら、

y = a₀ + a₁x + a₂x² + a₃x³ + … + aₙxⁿ

のように、調整できる係数が増えます。

次数を上げるほど、より複雑な曲線を表現できます。

単純なモデル
────────/────────

より複雑なモデル
──/\_/\__/\──

複雑なモデルは悪いのか?

複雑であること自体が悪いわけではありません。

現実の規則そのものが複雑なら、単純すぎるモデルでは表現できません。

問題なのは、

必要以上に自由度が高く、訓練データの偶然のばらつきまで説明できてしまうこと

です。


なぜ複雑なモデルほど過学習しやすいのか

たとえば、勉強時間とテストの点数に、

勉強時間が長いほど、点数も高くなりやすい

という大まかな関係があるとします。

しかし、現実のデータには、

  • その日たまたま体調が悪かった
  • 得意な問題が出た
  • 睡眠不足だった

といった偶然のばらつきも含まれます。

自由度の低いモデルなら、

「多少ずれている点はあるけれど、全体として右肩上がりだ」

と学習します。

一方、自由度が高すぎるモデルは、1点1点の偶然のズレまで説明するように曲線を変えることができます。

つまり、

表現力が高い → 良い規則も表現できるが、ノイズまで表現できてしまう

という両面があります。

実際の機械学習でいう複雑さは、単純に「パラメータ数」だけで決まるわけではありません。

たとえば、

  • 決定木:木の深さや分岐数
  • 多項式回帰:多項式の次数
  • ニューラルネットワーク:層、ユニット、パラメータ、構造
  • 各種モデル:制約や正則化の強さ

など、モデルの種類によって「自由度」に関わる要素は異なります。


正則化は「複雑さにもコストを課す」

通常の学習では、予測の誤差を小さくしたいと考えます。

しかし誤差だけを小さくしようとすると、訓練データへ過剰に合わせるために、モデルが必要以上に複雑になることがあります。

そこで正則化では、

予測誤差だけでなく、モデルが必要以上に複雑になることにもコストを課す

という考え方を使います。

概念的には、次のように考えられます。

Objective = Loss + λ × Complexity

ここで、

  • Loss:予測がどれだけ外れているか
  • Complexity:モデルの複雑さを表す量
  • λ:複雑さへのペナルティをどれくらい重視するか

です。

つまり正則化は、

「訓練データを完璧に覚えるためだけに、必要以上に複雑になるな」

というブレーキです。

代表的な方法として、

  • L1正則化
  • L2正則化

などがあります。

なお、上の式は考え方をつかむための概念図です。実際に何を「複雑さ」としてペナルティ化するかは、正則化手法やモデルによって異なります。


汎化性能をどうやって確認するのか

正則化は、 過学習を抑えるための手法 でした。

しかし、

本当に未知データにも強くなったのか?

は別途確認する必要があります。

そこで登場するのが、

  • ホールドアウト法
  • 交差検証

です。

正則化
↓
モデルの学習方法を調整する

交差検証
↓
モデルの汎化性能を評価する

ホールドアウト法

最も単純な方法は、データを学習用と評価用に分けることです。

たとえば1000件のデータなら、

800件 → 学習
200件 → 評価

とします。

これが ホールドアウト法 です。


ホールドアウト法の問題

1回だけ分割すると、 どのデータが評価側に入ったか によって結果が変わります。

たまたま簡単なデータばかりが評価側に入れば、実際より性能が高く見えるかもしれません。

逆に、難しいデータばかりが入れば、実際より悪く見える可能性があります。

そこで登場するのが 交差検証 です。


交差検証とは

交差検証(Cross Validation)は、

訓練用と評価用のデータを入れ替えながら、何度も学習と評価を行う方法

です。

代表的なのが k分割交差検証(k-fold cross validation) です。

たとえば5分割なら、

[A][B][C][D][E]

のようにデータを分けます。

こうすることで、特定の分割だけに評価結果が左右されにくくなります。


正則化と交差検証は役割が違う

手法 目的
正則化 過学習を抑え、モデルの学習を調整する
交差検証 未知データに対する性能を評価する

アンサンブル学習とは

アンサンブル学習(Ensemble Learning) とは、

複数のモデルを組み合わせて、1つの予測結果を作る方法

です。

1つのモデルだけに頼るのではなく、 複数の専門家に判断させて総合判断する ようなイメージです。

代表的な方法には、

  • バギング
  • ブースティング
  • スタッキング

があります。

Random Forestも、複数の決定木を組み合わせる代表的なアンサンブル学習です。


マルチタスク学習とは

マルチタスク学習(Multi-task Learning) とは、

1つのモデルで、関連する複数の課題を同時に学習する方法

です。

たとえば顔画像から、

  • 年齢
  • 表情
  • 顔の向き

を予測するとします。

これらの課題には、目・鼻・輪郭・顔の形など、共通して役立つ特徴があります。

そのため、共通部分を共有して学習することで、それぞれの課題に知識を活用できます。


アンサンブルとマルチタスクの違い

アンサンブル

複数モデル
    ↓
1つの予測

マルチタスク

1つのモデル
    ↓
複数タスク

方向が逆です。


全体を一枚で整理する


用語の位置関係

用語 一言でいうと 主な目的
教師あり学習 正解付きデータから学ぶ 予測モデルを作る
モデル 入力から予測する学習済みの仕組み 予測する
分類 カテゴリを予測 犬/猫など
回帰 数値を予測 売上・価格など
過学習 訓練データに合わせすぎる 避けたい状態
汎化 未知データにも対応する 良いモデルの条件
正則化 複雑さにペナルティを与える 過学習を抑える
ホールドアウト データを1回分割する 汎化性能の評価
交差検証 評価用データを交代させる より安定した評価
アンサンブル 複数モデルを統合 予測性能向上
マルチタスク 1モデルで複数課題 共通知識の活用

まとめ

過学習
↓
モデルが訓練データに合わせすぎた状態

正則化
↓
過学習を抑えるための手法

汎化性能
↓
未知データにも対応できる能力

交差検証
↓
汎化性能を評価する方法

アンサンブル学習
↓
複数モデルを組み合わせる方法

マルチタスク学習
↓
1つのモデルで関連する複数課題を学ぶ方法

個別の言葉を覚えるより、

「何が問題で、その問題に対して何をする技術なのか」

という関係で理解すると、機械学習全体の見通しがかなり良くなります。


参考資料

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?