モデルの複雑さと過学習
モデルの複雑さ
モデルの複雑さ(complexity)という概念を考える
https://gyazo.com/0373cfbb18c571db31a1cb32cc3c0a61
機械学習では、学習データに対して「正解」に近い出力が得られるように(=データとの誤差が小さくなるように)モデルのパラメータを調整する(=学習する)
原理的には、モデルを複雑にすると、学習データに対する「あてはまり」がよくなる(誤差が小さくなる)
モデルが「複雑」であるとは、中間層のユニットがたくさんあるRBFネットワーク、のようなイメージ
モデリングと「モデルの複雑さ」
データをもとにしたモデリング
https://gyazo.com/8472dce0fc2e574e2e50843dc3c440e4
「真の」プロセスが知りたいが、知り得ない
雑音の乗った観測データからこれを「推測」する
数理モデル(たとえばニューラルネットワーク)を使って観測データから「真のプロセスの近似関数」を求める
ここで生まれる命題:「モデルはどの程度の複雑さ(complexity)であるべきか?」
例)ニューラルネットワーク
https://gyazo.com/2b4cbf1503aa34aed3f2b10dbbc5186f
モデルの「複雑さ」とは?
モデルはシンプルすぎてはいけない
シンプルすぎると簡単な近似関数しか表現できず、データに適合できない → underfitting
モデルは複雑すぎてもいけない
有限でノイズの乗ったデータに合わせすぎてしまう → overfitting(過学習、過剰適合)
その間に「最適なモデルの複雑さ」のようなものがあるはず
つまり、モデルの複雑さにはトレードオフがある
学習に用いていないデータにも対応できる汎化能力が高まるように、モデルの複雑さについての適切なバランスをとるべき