お気付きの点がありましたらご指摘いただけますと幸いです。
- Overfitting - Wikipedia(2022年6月20日参照).
- model selection - Why isn't Akaike information criterion used more in machine learning? - Cross Validated(2022年6月20日参照).
- Can the BIC be used in neural nets despite its large no. of parameters? - Cross Validated(2022年6月20日参照).
- How to Avoid Overfitting in Deep Learning Neural Networks(2022年6月20日参照).
- Probabilistic Machine Learning: An Introduction(2022年6月20日参照).
- regularization - What is maxnorm constraint? How is it useful in Convolutional Neural Networks? - Cross Validated(2022年6月20日参照).
- [2101.12176] On the Origin of Implicit Regularization in Stochastic Gradient Descent(2022年6月20日参照).
まとめ
|
そもそも過学習とは & 理論的な対処法
そもそも過学習(overfitting)とは何ですか? どうも望ましくない状態のようですが、モデルを学習しておいて「学習し過ぎだ」とは随分勝手な物言いなのではないでしょうか。
なるほど。しかしその「適合し過ぎ」とは何なのでしょう? 本番データ上で思った予測精度が出なかったとして、それはただただ上手くいかなかっただけですよね? 「やり過ぎ」であったことになるんですか?
それについてウィキペディアの続きだけど、過学習といったときはモデルが過剰な表現力をもつことを含意しているね。パラメータ数が over というわけだ。
例えば、とある A 県では「マンションの家賃」の真のモデルが「築年数」の2次関数とホワイトノイズのみでできているとしよう。このとき、家賃を予測するモデルを築年数の3次関数にすると過学習が起きうる。築年数の3次の係数が過剰なパラメータになるからね。この過剰な係数はもっぱら訓練データ上のノイズを学ぶだろう。そしてそれは本番データの予測に害をなすことになる。次数の過剰に限らず、予測モデルに「床面積」や「駅からの徒歩分数」といった過剰な変数が入っているときも同様だね。
いやいや家賃が床面積や駅からの徒歩分数などに依存しないんですか!? どれだけ築年数しかみない県民性なんですか……しかし、過学習とはモデルに過剰な表現力があることで予測に寄与しないノイズまで学び取られてしまうことに起因しているのですね。であれば、表現力が必要十分なモデルを採用すれば……いえ、最初から必要な表現力がわかっていることなどほとんどないでしょうね。真のマンションの家賃が何次関数で決まるとわかっていたら苦労しません。ではいったいどのようなモデルを用意すべきなのか……訓練データから知るすべなどないのでは……?
例えば、先の家賃予測モデルを A 県のマンションの家賃データから 100 件抽出した訓練データで学習するとするよ。モデルを築年数の1次関数、2次関数、3次関数……とするにつけ訓練データ上での予測精度は向上するだろう。でも表現力が過剰なモデルは訓練データ外の予測精度がむしろ劣化していく。だから、A 県内のあらゆるマンションに対する予測精度を出してその期待値を計算すればいい。
おお、それはよいアイデアです……とでもいうと思ったのですか? それでは A 県内のあらゆるマンションに対する正解が手に入っているでしょう。それが手に入っているなら予測する必要がありません。
ディープニューラルネットへの実践的な対処法
常にそうするというわけでもない。例えば多項式モデルの次数を AIC で決定するのはよくみるというか、AIC が紹介されている文献に使用例として載っていることが多いと思う。これは多項式モデルは「自由度」が明確だからだろう。3次多項式は定数項含め自由度4というように。でも、一般のモデルは必ずしも自由度が明確ではない。見かけのパラメータ数とモデルの自由度が一致するとは限らない。自由度が明確でなければ情報量規準によるモデル選択は有効でなくなってしまう [詳しくは関連記事参照]。
ディープニューラルネットで情報量規準によるモデル選択がなされない主な要因もこれだと思う。参考文献 [2] [3] でも趣旨としてはそう回答されていたし。いや、調べたらニューラルネットに情報量規準を適用する例をみかけないこともなかったんだけど、浅い限定的なアーキテクチャなんじゃないかな(みつけたのは古い文献だったからリンクしていないけど)。そもそも一般にディープニューラルネットってネットワークのすべてのパラメータがフル活用されてはいないと思うしね。何にせよ、ディープニューラルネットでは情報量規準を論じづらいと思う。
そんなことはないよ。そもそもクロスバリデーションでモデル選択ができるし。これはディープニューラルネットに限らないね。A 県内のあらゆるマンションに対する正解がないなら、手元のデータの一部を評価用に取り分けておけばいいだけだ。
でそれとは別に、一般のディープニューラルネットで過学習を防ぐプラクティスとして、「もう表現力が過剰なんだろうから学習を妨害しておこう」、といったものたちがあるね。[4] 及び [5] の 13.5 節に紹介されている手法を以下の 3 タイプに整理したよ。まあ3タイプ目が「その他」って感じだけど……。
- 重みが取りうる値を制約する ― L2正則化(weight decay)、L1正則化(sparse DNNs)、活性化関数の出力に対する正則化、重みのL2ノルムの上限を直接制約 [6]……。
- (ミニバッチごとに)訓練する重みを一部に絞る ― ドロップアウト。
- その他の方法で訓練を妨げる ― 訓練を早めに切り上げる、訓練データにノイズを添加する、……。
[4] の Reduce Overfitting by Constraining Model Complexity という節の後半あたりにあるけど、重みが大きいということはそれだけ入力の小さな変化に対して出力が大きく変動するモデルということだ。でも私たちはモデルにあまりそのような挙動を期待しない。例えば、マンション B とマンション C の築年月が1ヶ月しか違わなかったとする。きっと両マンションの家賃は近いだろう。逆に、両マンションの家賃がかけ離れていたとしたら、どちらかがノイズを含んでいる可能性が高い。重みを制約することで、そのようなデータに適合しづらくなる効果が見込めるんじゃないか。重みや活性化関数の出力値の正則化は、「入力空間内で出力は急激に変化しないはずだ」という信念で正当化されると思う。
出力を大きく変動させるにはペナルティを乗り越えられるだけたくさんのデータによる証拠が必要ということですか。
あれ、いつから計算量の話に……。
最適化アルゴリズムによる暗黙裡な対処法
参考文献 [5] の 453 ページの 13.5.6 節は何を言わんとしているのでしょうか。ページの上部に広い谷と狭い谷のイラストがありますが。
では、次の 454 ページのイラストは……?