1行定義
汎化性能とは、学習に使っていない未知のデータに対しても、モデルが正しく予測できる能力のことです。
くわしく
汎化性能は、モデルが本番で役に立つかどうかを左右する、機械学習の中心にある考え方です。学習に使ったデータでよく当たるだけでは足りません。まだ見たことのないデータでも正しく予測できることが、機械学習の目的です。
運転の練習にたとえると
教習所のコースだけを何度も走り、曲がる場所や止まる場所をすべて覚えた人は、そのコースなら上手に走れます。しかし、初めての道では戸惑うかもしれません。知らない道でも安全に運転できる力が、汎化性能にあたります。
学習誤差と汎化誤差
学習データに対する誤差を学習誤差(訓練誤差)、未知のデータに対する誤差の期待値を汎化誤差といいます。学習で直接下げているのは学習誤差ですが、本当に下げたいのは汎化誤差です。
汎化誤差は直接には測れません。そこで、学習に使わずに取り分けておいたデータで誤差を測り、汎化誤差の見積もりとします。データの分け方には、ホールドアウト検証や交差検証があります。この見積もりは、学習用・評価用・本番のデータが同じ性質(分布)をもつという前提の上に成り立っています。
過学習・未学習との関係
- 学習誤差は小さいのに、検証用データでの誤差が大きい:過学習です。学習データの雑音まで覚え込んでいます。
- どちらの誤差も大きい:未学習です。モデルが単純すぎて、データの傾向をとらえきれていません。
この2つの間で、検証用データでの誤差が最も小さくなるモデルの複雑さを探すことが、モデル選択の中心的な課題です。最終的な性能は、選ぶのに使わなかったテストデータで確かめます。
汎化性能を高める主な方法
学習データを増やす、データ拡張、正則化、ドロップアウト、早期終了などがあります。AICやBICのように、パラメータ数に罰則を与えてモデルを選ぶ方法も、汎化性能を意識した考え方です。
覚え方
「汎=広く。学習データの外まで広く通用する力」と覚えます。
G検定での出題
出題のされ方
学習データと検証データの誤差を比べて過学習や未学習を見抜く形や、汎化性能を正しく見積もるためのデータの分け方、汎化性能を高める手法の選択が、場面設定とあわせて問われます。
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
汎化誤差とは、学習に使ったデータに対する予測の誤差を平均した値のことである。
答えを見る
答え × 誤り
それは学習誤差(訓練誤差)です。汎化誤差は未知の新しいデータに対する誤差の期待値で、学習に使わなかったテストデータでの誤差で見積もります。
-
運用を始めた後に入力データの傾向が大きく変わると、事前に評価用データで測った成績は、本番での成績の目安になりにくくなる。
答えを見る
答え ◯ 正しい
評価用データの成績が本番の目安になるのは、学習・評価・本番のデータが同じ性質(分布)をもつという前提があるからです。この前提が崩れると、事前の評価は当てはまらなくなります。
-
モデルのパラメータ数を増やすほど、汎化性能は必ず高くなる。
答えを見る
答え × 誤り
パラメータを増やすと学習データへの当てはまりは良くなりますが、雑音まで覚えて過学習し、未知のデータでの成績が下がることがあります。汎化性能は検証用データで確かめます。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目10 モデルの選択・評価)
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press (2016) (5.2 Capacity, Overfitting and Underfitting、5.3 Hyperparameters and Validation Sets)
- Christopher M. Bishop, Pattern Recognition and Machine Learning, Springer (2006) (1.3 Model Selection)
- scikit-learn User Guide, Cross-validation: evaluating estimator performance (3.1 Cross-validation)