L1・L2正則化に比べると影が薄いものの、「なぜ実際にはL1が使われるのか」を理解する鍵になるのがL0正則化です。ペナルティの考え方としては最も直感的なこの手法を、初心者向けに解説します。

📖 ひと言でいうと

L0正則化とは、モデルのパラメータのうち「0でないものの個数」そのものにペナルティをかける正則化手法です。使うパラメータの数が少ないほど罰が軽くなるため、多くのパラメータが0になったスパース(疎)なモデルへ誘導されます。

例えるなら、引っ越しのときに「荷物の重さ」ではなく「段ボールの個数」で料金が決まる方式です。中身がどれだけ重くても軽くても、箱を1つ使えば1箱分の料金がかかるので、自然と「本当に必要な箱だけ使おう」という動機が働きます。厳密には、この「個数を数える」という操作が数学的に扱いにくく、それがL0正則化の最大の弱点になります。

🖼 1枚でわかるL0正則化

L0正則化 = 「使うパラメータの個数」に罰金
  • ペナルティの対象 — 0でないパラメータの「個数」(値の大きさは無関係)
  • 狙い — パラメータの大半が0のスパース(疎)な解を得る
  • 弱点 — 微分できず組合せ的な探索になるため計算コストが高い
  • 現実解 — 微分可能で計算効率の良いL1正則化(LASSO)で代替される
つくもち屋「G検定対策」SUMMARY

📘 公式テキストの説明

L0正則化は、モデルのパラメータのうち0でない項の数にペナルティをかけることで、スパース(疎)な解を得ようとする正則化手法。パラメータの数が多いと計算が複雑になるため、L0正則化を適用するときには通常、計算コストが高くなる問題がある。このため、実際の機械学習の場面では、微分可能で計算効率の良いL1正則化(LASSO)が代替として利用されることが多い。

この短い説明に、試験で問われる要素がすべて詰まっています。①ペナルティの対象は「0でない項の数」、②目的は「スパースな解」、③弱点は「計算コスト」、④だから実際は「L1正則化で代替」——この4点セットで覚えましょう。

🔍 しっかり理解する

「個数を数える」とはどういうことか

正則化は一般に、損失関数に「モデルの複雑さへの罰金(ペナルティ項)」を足すことで過学習を防ぐ枠組みです。L0・L1・L2の違いは、この罰金の計算方法にあります。

💡 ポイント
  • L0: 0でないパラメータの「個数」を数える
  • L1: パラメータの「絶対値の合計」をとる
  • L2: パラメータの「二乗の合計」をとる

L0のペナルティは、パラメータの値が0.001でも100でも「0でない」なら等しく1個とカウントします。つまり値の大きさには一切興味がなく、「そのパラメータを使うか使わないか」だけを見る、最も割り切った罰金です。使うだけでコストが発生するので、モデルは「本当に効く特徴量以外はきっぱり0にする」方向へ強く誘導されます。これがスパース化の理屈です。

なぜ実用では使われないのか

「個数を数える」関数は、パラメータが0から少しでも動いた瞬間に値が0から1へ飛び移る、階段のような不連続な関数です。滑らかでないため微分ができず、ニューラルネットワークの学習を支える勾配降下法がそのまま使えません。

勾配が使えないとなると、「どのパラメータを0にするか」の組合せを一つひとつ試すような探索になりますが、パラメータがn個あれば組合せは2のn乗通り。パラメータ数が数百万〜数十億に達する現代のモデルでは、まともに解くことは現実的に不可能です。

L1正則化という「賢い妥協」

そこで登場するのがL1正則化です。絶対値の合計というペナルティは、L0の「個数」を微分可能な形で近似したものと見ることができます。L1でも一部のパラメータがちょうど0になる性質(スパース性)は保たれるため、「スパースな解が欲しい」というL0の目的を、勾配法で解ける計算コストで実現できます。公式テキストが「L1正則化(LASSO)が代替として利用される」と述べているのはこの意味です。

🅰 L0正則化(理想)
  • 非ゼロの「個数」に直接ペナルティ
  • スパース化の効果は最も直接的
  • 微分不可・組合せ爆発で計算困難
🅱 L1正則化(現実解)
  • 「絶対値の合計」にペナルティ
  • 一部の重みが0になりスパース性を実現
  • 微分可能で勾配法により効率的に学習

💡 具体例で考える

遺伝子データから病気のリスクを予測する場面を想像してください。特徴量(遺伝子)は数万個ありますが、実際に病気に関係するのはごく一部です。理想は「関係する遺伝子だけを使ったモデル」で、これはまさにL0正則化が目指すスパースな解です。しかし数万個の遺伝子から「使う・使わない」の組合せを総当たりで探すのは不可能なので、実務ではL1正則化(ラッソ回帰)を使い、勾配ベースの計算で近似的にスパースな解を得ます。

この例からわかるように、L0正則化は「実際に動かす手法」というより、「スパース化という目標を最も純粋に表した基準点」として理解するのが適切です。L1の意義は、L0という理想があってはじめて明確になります。G検定の学習でも、L0を「L1がなぜ選ばれるのかを説明するための引き立て役」と位置づけると、正則化ファミリー全体の見取り図がすっきり整理できます。

⚠️ よくある誤解・紛らわしい用語

💡 ポイント
  • L1正則化との違い — L0は非ゼロパラメータの「個数」、L1は「絶対値の合計」にペナルティをかけます。どちらもスパースな解を目指しますが、実際に広く使われるのは計算可能なL1の方です
  • L2正則化との違い — L2は「二乗の合計」にペナルティをかけ、重みを全体的に小さくしますが、ぴったり0にはしません。スパース化が目的のL0・L1とは狙いが異なります
  • 「L0が最も高性能だから使われる」は誤り — L0は計算コストが高すぎて実用が難しいため、実際の機械学習ではL1で代替されるのが普通です
  • 「L0ノルムのペナルティは値が大きいほど重くなる」は誤り — L0はパラメータの値の大きさを見ず、0か否かだけをカウントします

📝 試験でのポイント

💡 ポイント
  • 「0でない項の数にペナルティをかける正則化はどれか」という定義問題で、L1・L2と並べて出題されることが想定されます
  • 「スパース(疎)な解」というキーワードはL0とL1に共通する狙いです。この語から正則化の種類を選ばせる問題に注意しましょう
  • 「計算コストが高いため、実用ではL1正則化(LASSO)で代替される」という関係性は、L0に関する記述の正誤判定で最も問われやすいポイントです
  • L0・L1・L2それぞれの「ペナルティの計算対象」(個数・絶対値の和・二乗の和)を対応づけられるようにしておきましょう

📚 まとめ

L0正則化は、0でないパラメータの個数にペナルティをかけてスパースな解を目指す正則化手法です。「使うパラメータを最小限に」という狙いは最も直接的ですが、個数を数える関数は微分できず計算コストが高いため、実務では微分可能なL1正則化(LASSO)が代替として使われます。L0=個数、L1=絶対値の和、L2=二乗の和というペナルティの対象の違いを軸に整理しておきましょう。