過学習: モデルの複雑さ

前のユニットでは、テストセット内の多くの木を誤って分類した次のモデルを紹介しました。

図 16. 図 13 と同じ画像です。これは複雑な形状で、多くの木を誤って分類します。
図 16. 前のユニットの動作が不安定な複雑なモデル。

上記のモデルには、多くの複雑な形状が含まれています。よりシンプルなモデルの方が新しいデータを適切に処理できますか?複雑なモデルを、途方もなく単純なモデル(直線)に置き換えたとします。

図 17. 病気の木と健康な木を非常にうまく分離する直線モデル。
図 17. はるかにシンプルなモデルです。

シンプルなモデルは、複雑なモデルよりも新しいデータに対して一般化が優れています。つまり、単純なモデルは、複雑なモデルよりもテストセットで優れた予測を行いました。

シンプルさは長い間、複雑さを打ち負かしてきました。実際、シンプルさを重視する考えは古代ギリシャにまで遡ります。数世紀後、14 世紀の修道士であるオッカムのウィリアムは、シンプルさを重視する考え方をオッカムの剃刀という哲学で形式化しました。この哲学は、機械学習を含む多くの科学の基本的な原則として残っています。

演習: 理解度を確認する

物理方程式を開発しています。オッカムの剃刀に近いのは、次の式のうちどれですか。
3 つの変数を含む式。
3 つの変数は 12 個の変数よりもオッカムの剃刀の原則に沿っています。
12 個の変数を含む式。
12 個の変数は複雑すぎるように思えます。 物理学で最も有名な 2 つの公式(F=ma と E=mc2)には、それぞれ 3 つの変数しか含まれていません。
新しい ML プロジェクトで、最初の特徴を選択しようとしています。選択する特徴の数
予測力が強いと思われる特徴を 1 ~ 3 つ選択します。
データ収集パイプラインは、1 ~ 2 つの特徴から始めるのが最適です。これにより、ML モデルが意図したとおりに動作していることを確認できます。また、いくつかの特徴からベースラインを構築すると、進歩しているように感じられます。
予測力が強いと思われる特徴を 4 ~ 6 個選択します。
最終的にはこれだけの機能を使用しますが、最初は少ない機能から始めることをおすすめします。通常、機能が少ないほど、不要な複雑さは少なくなります。
できるだけ多くの特徴を選択して、最も予測力の高い特徴を特定します。
小規模から始めましょう。新しい特徴を追加するたびに、トレーニング データセットに新しい次元が追加されます。次元が増加すると、空間のボリュームが急速に増加し、使用可能なトレーニング データがスパースになります。データがまばらであるほど、実際に重要な特徴とラベルの関係をモデルが学習するのは難しくなります。この現象を「次元の呪い」といいます。

正則化

機械学習モデルは、次の 2 つの相反する目標を同時に満たす必要があります。

  • データに適合する。
  • できるだけシンプルにデータを適合させる。

モデルをシンプルに保つアプローチの一つは、複雑なモデルにペナルティを科す方法です。つまり、トレーニング中にモデルを強制的にシンプルにします。複雑なモデルにペナルティを適用することは、正則化の一種です。

損失と複雑さ

これまでのこのコースでは、トレーニングの唯一の目標は損失を最小限に抑えることであると説明してきました。つまり、

$$\text{minimize(loss)}$$

ご覧のとおり、損失の最小化のみに焦点を当てたモデルは、過剰適合する傾向があります。優れたトレーニング最適化アルゴリズムは、損失と複雑さの組み合わせを最小限に抑えます。

$$\text{minimize(loss + complexity)}$$

残念ながら、損失と複雑さは通常、反比例します。複雑さが増すほど、損失は減少します。複雑さが低下すると、損失が増加します。モデルがトレーニング データと実世界のデータの両方で優れた予測を行う妥当な中間点を見つける必要があります。つまり、モデルは損失と複雑さの間で妥当な妥協点を見つける必要があります。

複雑性とは

損失を定量化する方法はいくつかあります。複雑さを定量化するにはどうすればよいですか。次の演習でデータ探索を開始しましょう。

演習: 直感を確認する

ここまでは、複雑さが実際に何であるかについてかなりあいまいでした。次のアイデアのどれが、複雑さの指標として妥当だと思いますか。
複雑さはモデルの重みの関数です。
はい。これは、一部のモデルの複雑さを測定する 1 つの方法です。この指標は L1 正則化と呼ばれます。
複雑さは、モデルの重みの 2 乗の関数です。
はい。一部のモデルの複雑さは、この方法で測定できます。この指標は、 L2 正則化と呼ばれます。
複雑さは、モデル内のすべての特徴のバイアスの関数です。
バイアスは複雑さを測定しません。