# 汎化能力
## 定義
汎化能力(generalization ability)とは、有限の訓練データを用いて、無限ともいえる未知のデータに対してもうまく動くようなモデルを獲得する能力である。機械学習において最も重要な目標であり、その能力の高低を汎化性能が高い/低いと呼ぶ。機械学習は単に訓練データでうまくいくモデルを見つけることだけを目標とはしない。汎化能力の対極にあるのが丸暗記(memorization)であり、学習時のデータをすべてそのまま記憶し予測時に利用するアプローチである。丸暗記が有効なのは訓練データが取りうる場合をすべて網羅できる場合(三目並べのように場合の数が少ない問題)に限られ、画像・音声・言語のような高次元データでは取りうる場合の数が天文学的(たとえば32×32の2値画像だけで約$2^{1024}$通り)であるため、丸暗記は不可能であり、真の汎化能力が必要になる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.3)
## 過学習とその発生機序
訓練データではうまくいっているのに、訓練時に見なかった未知のデータではうまくいかない状態を過学習(overfitting)と呼ぶ。機械学習は、あるパラメータのときのモデルを一つの仮説とみなし、多くの仮説の中から多くの訓練事例を説明する仮説を探す問題とみなせる。過学習は、たまたま多くの訓練事例でうまくいくモデルが見つかってしまうことで起きる。検証する仮説数が少なければ見つかった仮説が本当に成立する可能性が高いが、仮説数が多いほど、たまたま訓練データで成り立つだけの誤った仮説(疑似相関)が選ばれる可能性が高くなる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.3)
## 過学習を防ぐ2つの方法
1. **訓練データを増やす**: 多くの事例で仮説を検証できれば、たまたま仮説が成り立つ可能性を小さくできる。データオーグメンテーション(data augmentation、訓練データに意味を変えない変換を加えて人工的に水増しする手法)も有効。
2. **仮説数を必要最低限に抑える**: モデルに制約を加えたり、学習時に仮説数を少なくする機構を加え、可能な限り単純なモデルを使う。この指針は14世紀の哲学者オッカムの「ある事柄を説明するためには必要以上に多くを仮定するべきでない」という「オッカムの剃刀」として知られる。100個のパラメータのモデルと5個のパラメータのモデルが同じように訓練データを説明できるなら、後者の方が汎化性能が高いと期待される。
(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.3)
## ニューラルネットワークが多パラメータでも汎化する理由
一般に訓練データに対する性能が同じなら、パラメータ数が少ないモデルの方が汎化性能が高いと期待されるが、「別の過学習を抑える仕組み」がある場合はこの限りではない。ニューラルネットワークは従来のモデルよりパラメータ数が数百〜数万倍多いにもかかわらず汎化能力が高く、条件を満たせばパラメータ数がむしろ多いほど(ある程度までは)汎化性能が向上することもわかっている。これには、最適化の結果見つかる解が単純なモデルに対応するフラットな解であること、勾配降下法を使うこと自体が対象問題を解けるパラメータの中で最も単純なモデルを選ぶように働くこと、が重要な役割を果たしていると考えられている。詳細は[[深層学習の汎化]]・[[暗黙的正則化]]を参照。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.3)
## 訓練誤差・汎化誤差による3パターンの評価
学習して得られたモデルの評価では、訓練誤差(訓練データ上の誤差)と汎化誤差(未知データ上の誤差の期待値)の両方を見る必要がある。モデルは訓練誤差を小さくするよう最適化されるため、常に汎化誤差以下になる(ノイズで逆転する場合を除く)。この結果、評価時には次の3パターンが現れる。
1. **未学習(underfit)**: 訓練誤差も汎化誤差も大きい。モデルの表現力不足、問題の難しさ、ノイズの大きさなどが原因。
2. **過学習(overfit)**: 訓練誤差は小さいが汎化誤差は大きい。正則化の適用でギャップを縮める必要がある。
3. **理想(学習成功)**: 訓練誤差・汎化誤差ともに小さい。ただし完全に0になることはほとんどなく、評価データによる汎化誤差の推定はあくまで近似である。
評価データを学習やハイパーパラメータ調整に使ってしまうと、その評価データがリーク(leak)し、正確な汎化誤差の推定ができなくなる。これを防ぐため、訓練データ・開発データ(ハイパーパラメータ調整用)・テストデータ(最終評価用)の3分割が必要になる。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.6)
## 横断的知見
- 本ページの「仮説数が多いほど疑似相関が選ばれやすい」という直感的な説明は、[[PAC学習]]・[[汎化誤差バウンド]]・[[カバリングナンバー]]が扱う一様収束・ユニオンバウンドの数理的な精緻化に対応し、[[最小記述長原理]]が扱う「単純なモデルを選ぶ」という原理(オッカムの剃刀)とも直接つながるが、これらとの明示的な突き合わせは今後の課題。
- **前書(ch.2)が「汎化能力とは何か」を定義した地点から、続巻(ch.2)は「なぜニューラルネットワークは多パラメータでも汎化するのか」という一段深い問いへ進む**: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.3は、汎化能力を「学習の目的は丸暗記でなく未知データへの予測能力の獲得である」と定義し、過学習を防ぐ2条件(訓練データを増やす/仮説数を減らす)を挙げるにとどめ、「ニューラルネットワークが多パラメータでも汎化する理由」は本ページの当該節が一段落で予告するだけだった。[[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 2 ディープラーニングの汎化]]はこの予告を1章丸ごと使って回収し、勾配降下法によるノルム最小化・低ランク化、フラットな解への到達、[[宝くじ仮説]]という3つの機構(まとめて[[暗黙的正則化]])が、仮説数を暗黙のうちに絞り込む役割を担うことを示す。前書の「仮説数を減らす」という2条件目の過学習対策は、続巻では学習者が明示的に行う操作ではなく、勾配降下法という最適化アルゴリズム自体が暗黙に行っている操作として再定式化される。(Source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.3, [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 2 ディープラーニングの汎化]] §2.2)
## 未解決の問い
- 「訓練データを増やす」と「仮説数を減らす」という2つの過学習対策は、どのような条件下でどちらがより効果的か。
- ニューラルネットワークが多パラメータでも汎化する理由として挙げられる「フラットな解」「勾配降下法の単純解選好」は、[[暗黙的正則化]]・[[深層学習の汎化]]が扱う理論とどこまで整合するか(続巻ch.2で3機構への分解までは判明したが、[[汎化誤差バウンド]]の数式との対応づけは今後の課題)。
- 続巻ch.2が挙げる「宝くじ仮説」(パラメータ数が多いほどサブネットワークの当たりくじが見つかりやすい)は、前書ch.2が挙げるPAC学習的な「仮説数と必要サンプル数のトレードオフ」とどう整合するか。仮説数(サブネットワーク数)自体は指数的に増えるのに、なぜ過学習しないのかという直感的な緊張関係は本ページではまだ解消されていない。
## 関連
- source: [[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] / [[@2022__Gihyo__ディープラーニングを支える技術〈2〉 - Chapter 2 ディープラーニングの汎化]]
- concept: [[深層学習の汎化]] / [[汎化誤差バウンド]] / [[経験リスク最小化]] / [[最小記述長原理]] / [[PAC学習]] / [[次元の呪い]] / [[暗黙的正則化]] / [[正則化]] / [[宝くじ仮説]]
## 出典
- 岡野原大輔, 『ディープラーニングを支える技術』, 技術評論社, 2022, 第2章, §2.3, §2.6.
- 岡野原大輔, 『ディープラーニングを支える技術〈2〉 ニューラルネットワーク最大の謎』, 技術評論社, 2022, 第2章, §2.2.