【L1・L2正則化の相性診断】その機械学習モデル、正則化して本当に大丈夫ですか
こんにちは。ゆうせいです。
機械学習の勉強を進めていくと、必ずぶつかる壁があります。「過学習」という言葉を聞いたことはありますか。AIが練習問題(学習データ)を丸暗記しすぎてしまって、本番のテスト(未知のデータ)で全く点数が取れなくなってしまう現象のことです。
この過学習を防ぐための強力な武器として「正則化」というテクニックがあります。特に有名なのが「L1正則化」と「L2正則化」です。
しかし、ここで皆さんに質問です。この正則化、どんなモデルにもとりあえず使っておけば良いと思っていませんか。
実は、正則化には「相性の良い手法」と「相性の悪い手法(そもそも使えない手法)」があるのです。今日は、この意外と見落としがちな相性について、高校生でもわかるように解説していきます。
そもそも正則化とは何か
まずは正則化のイメージを掴みましょう。
機械学習モデルが学習するとき、目的は「誤差を最小にすること」です。しかし、正則化を使うときは、この目的にひとつ条件を加えます。「誤差を小さくしなさい。ただし、モデルの式はできるだけシンプルに保ちなさい」という条件です。
数式で表すと、こんなイメージになります。
最終的なコスト 予測の誤差
正則化項(ペナルティ)
この「正則化項」が、モデルが複雑になりすぎるのを防ぐブレーキの役割を果たします。モデルが複雑な数式を作ろうとすると、この項が大きくなって「コスト」が増えてしまうため、AIは仕方なくシンプルな数式で我慢するようになるのです。
L1正則化(ラッソ)
これは「不要な重みをゼロにする」性質があります。特徴量(データの項目)がたくさんあるときに、「このデータは使わなくていいや」と断捨離してくれるイメージです。
L2正則化(リッジ)
こちらは「重み全体を小さく滑らかにする」性質があります。極端に大きな値が出ないように、全体を平均的に抑え込むイメージです。
正則化が向いている手法:線形モデルとニューラルネットワーク
では、どんな手法が正則化と相性が良いのでしょうか。答えはシンプルです。「重み(係数)」を使って計算するモデルたちです。
線形回帰・ロジスティック回帰
これらは最も正則化が活躍する場所です。線形回帰は、入力データに「係数」を掛け算して足し合わせるという、とてもシンプルな仕組みで動いています。
予測値
データ1
データ2
この (重み)が大きくなりすぎると、データに対して敏感になりすぎて過学習してしまいます。そこで、L1やL2正則化を使って
を小さく抑え込むのです。これによって、モデルの安定性が劇的に向上します。
ニューラルネットワーク
ディープラーニングの基礎となるニューラルネットワークも、内部では膨大な数の「重み」を持っています。この重みに対して正則化(ウェイトディケイとも呼ばれます)をかけることで、特定のニューロンだけが強くなりすぎるのを防ぎ、ネットワーク全体でバランスよく学習できるように調整します。
メリット
極端な数値による予測の暴走を止められることと、特にL1正則化を使えば、どのデータが重要なのかを選別できる(特徴量選択)という利点があります。
正則化が向いていない(または概念が異なる)手法
一方で、正則化の概念がそのままでは通用しない、あるいは必要性が薄い手法もあります。
k近傍法(k-NN)
これは「自分と似ているご近所さん」の真似をするという、とても直感的な手法です。新しいデータが来たら、近くにある学習データをいくつかピックアップして、その多数決などで答えを決めます。
ここには、線形回帰のような「重み を学習して数式を作る」というプロセスがありません。学習データをただ覚えているだけ(怠惰学習といいます)なので、そもそも「重みを小さくして式をシンプルにする」というL1やL2正則化を適用する場所がないのです。k近傍法の過学習を防ぐには、正則化ではなく「ご近所さんの数(k)」を調整します。
決定木(単体)
決定木は、「もし気温が30度以上なら右へ、そうでなければ左へ」といった条件分岐を繰り返して答えにたどり着く手法です。
ここでも、線形モデルのような「入力データ 重み」という計算は行われません。したがって、一般的な意味でのL1/L2正則化(係数へのペナルティ)は行いません。
決定木で過学習を防ぐには、「木の深さ(質問の回数)」を制限したり、「葉(最終的なグループ)に含まれる最小データ数」を決めたりすることで複雑さをコントロールします。これを「剪定(せんてい)」と呼んだりします。
※補足:決定木をたくさん集めた「XGBoost」や「LightGBM」などの高度な手法では、目的関数の中に正則化のような項を含めることがありますが、初心者のうちは「普通の決定木にはL1/L2は使わない」と覚えておいて問題ありません。
デメリット(注意点)
向いていない手法に対して無理に正則化の概念を当てはめようとすると、混乱の元になります。手法ごとに「何が過学習の原因になるか」が違うため、ブレーキのかけ方も異なるのです。
まとめ
最後に要点を整理しましょう。
- 向いている手法線形回帰、ロジスティック回帰、ニューラルネットワークなど。「重み(係数)」を掛け算して計算するモデルには、L1/L2正則化が非常に効果的です。
- 向いていない手法k近傍法、決定木など。これらは計算の仕組みが違うため、係数を小さくするというアプローチは使えません。それぞれのモデル専用の調整方法(kの調整や木の深さ制限)を使います。
今後の学習の指針
今回で、モデルによって「ブレーキの踏み方」が違うことがわかりましたね。
次は、実際にPythonなどのプログラミング言語を使って、線形回帰モデルで「正則化あり」と「正則化なし」の挙動を比較してみることをおすすめします。正則化をかけた途端に、テストデータの正解率がぐっと上がる感動をぜひ味わってください。
Scikit-learnというライブラリを使えば、Lasso(L1)やRidge(L2)というクラスを呼び出すだけで簡単に実験できますよ。
機械学習の手法は道具です。それぞれの道具の手入れ方法を正しく知って、長く使えるエンジニアを目指しましょう。
それでは、また次回の記事でお会いしましょう。