『丸暗記の生徒は応用問題に弱い』、これが過学習。今日はその対策『正則化』を理解します。モデルに『適度なブレーキ』を仕込む考え方を身につけましょう。
過学習って、訓練データを丸暗記しちゃって応用が効かない状態ってことでよかった?
あらあら、ちゃんと覚えてたのね、ジャスミンちゃん。
その通り、訓練データには完璧にフィットしても未知データに対応できない状態を過学習と呼ぶのよ。
対策の代表が正則化です。
損失関数にパラメータの大きさに応じたペナルティ項を加えて、モデルが複雑になりすぎるのを抑えます。
ペナルティって、なんだか罰金みたいですね〜。
そんなイメージでいいわ。
モデルが大きな重みを持ちたがると『それはコストかかるよ』と損失が増える仕組みなの。
結果、シンプルで汎化しやすいモデルに落ち着くのよ。
代表的な種類ってあるの?
主に2つ覚えます。
L1正則化(Lasso)とL2正則化(Ridge)です。
L1は重みの絶対値の合計をペナルティに、L2は重みの2乗和をペナルティに加えるの。
L1は不要な特徴の重みをゼロにする性質があり、特徴選択の効果があるのが面白いところ。
L2は全部を少しずつ小さくする感じですか〜?
その通りです。
L2はすべての重みを穏やかに縮小させる。
どちらを使うか、両方組み合わせる(Elastic Net)かは問題次第です。
バドミントンでいうと、みんなが勝手に攻めすぎないようにブレーキをかけるイメージだね。
チームの統率を取る感じ?
いい例えね。
正則化はモデル全体の統率を取る役割なの。
ほかにも過学習対策ってあるんですか〜?
はい、データ拡張(データを増やす)、ドロップアウト(一部のノードを無効化)、早期停止(検証損失が悪化し始めたら学習を止める)などがあります。
正則化はその中の定番手法です。
ドロップアウトは深層学習で特に有名ね。
学習時にランダムに一部のノードを無効化することで、特定のパターンに依存しすぎるのを防ぐわ。
『あえて仲間を欠いて練習する』ようなイメージよ。
部活で主力選手を一人抜いて練習するみたいな感じ? 残りのメンバーが鍛えられるじゃん!
まさにそのイメージです。
どんな場面でも動けるようになる、という発想ですね。
過学習対策って、いろんな方法があって人間の学び方と重なる部分がいっぱいですね〜。
勉強しすぎない、一人で抱え込まない、たまには主力抜きで練習する。
人間にも当てはまる教訓じゃん。
ちなみに正則化の強度もハイパーパラメータの一つです。
強すぎると重要な特徴まで抑え込んでアンダーフィッティングに、弱すぎると過学習に逆戻り。
適切な強度は検証データで探ります。
ちょうどよいブレーキって、ほんと絶妙なバランスなんですね〜。
強すぎず、弱すぎず、か。
料理の塩加減と同じじゃん。
何度も試してコツをつかむ世界だね。
試験では『正則化=損失関数にペナルティ追加』『L1=特徴選択、L2=全体縮小』を押さえて。
両者の違いが頻出よ。
確認クイズ
正則化の目的として正しいものはどれか?
- 学習速度を上げる
- 訓練データの量を増やす
- 過学習を防いで汎化性能を高める
- 特徴量の数を増やす
こたえを見る
正解: 3. 過学習を防いで汎化性能を高める
正則化の目的はモデルの複雑さを抑え、過学習を防ぐことで未知データへの汎化性能を高めることです。学習速度やデータ量とは直接関係なく、モデルに『適度なブレーキ』をかける発想です。