L1正則化項を用いると疎な重み係数が得られる理由・利点

プログラミング

機械学習モデルのパラメータ最適化計算をする際に出てくる正則化項(罰則項)。一般的な正則化項としては、次の二つがあげられます。

L2正則化項
$$L2:||w||_2^2=\sum_{j=1}^{m}{w_j^2}$$

L1正則化項
$$L1:||w||_1=\sum_{j=1}^{m}{|w_j|}$$
L1正則化項を用いると疎な重み係数(パラメータ)が得られる訳ですが、その理由はご存知でしょうか。L2正則化項との比較をしながら、L1正則化項の利点も合わせてご説明します。今回参考にした書籍は以下です。

正則化項ってなんやったっけ?

最も簡単な例として入力変数の線形結合からなる線形回帰モデルを考えます。

$$y({\bf x},{\bf w})=w_0+w_1x_1+\cdots+w_Dx_D$$

この線形回帰モデルの二乗和誤差関数は以下で定義されます。

$$E_D({\bf w})=\frac{1}{2}\sum_{n=1}^{N}\{ t_n-{\bf w}\cdot {\bf x_n} \}^2$$

\(t_n\)が目的変数、\({\bf x_n}\)が説明変数、\(N\)が学習で使うデータ数と思ってください。一般的に、機械学習の学習フェーズでは誤差関数\(E_D({\bf w})\)を最小化するような\({\bf w}\)を求めることになります。しかし、誤差関数として、上記の二乗和誤差関数のみを用いると、学習データにだけ特化した(汎化性能が乏しい)モデルがでてきしまいます。そこで、正則化項(罰則項)\(E_W({\bf w})\)を誤差関数に追加します。すなわち、

$$E({\bf w})=E_D({\bf w})+E_W({\bf w})$$

を最小化するような\({\bf w}\)を求めることになります。一般的には正則化項を与えることで汎化性能が上がります。

L1正則化項は疎な解を促す理由

先に説明した正則化項としてL1正則化項:

$$E_W({\bf w})=\sum_{j=1}^{m}{|w_j|}$$

を用いた場合、誤差関数最小化問題の解\({\bf w}\)は疎な解になりやすくなります(疎な解というのは、0成分多いという意味です)。その直感的な説明を、L2正則化項:

$$E_W({\bf w})=\sum_{j=1}^{m}{w_j^2}$$

と比較しながら説明します。その前に、\(E({\bf w})\)を最小化する問題は、\(E_W({\bf w})\leq \eta \)のもと、\(E_D({\bf w})\)を最小化する問題と等価になります。これを視覚的に表すと、

上のようなイメージになります。上の図において、赤の実線は\(E_D({\bf w})\)単独の等高線を表します。また、★が\(E_D({\bf w})\)の最小値を与える点になります。一方、正則化項をいれた場合、青の領域(L2の場合は円、L1の場合は四角)内で最も小さい誤差関数\(E_D({\bf w})\)が小さくなる点を求める必要があります。その点が赤点になります。この絵を見ると、L1正則化を入れた場合、\(w_1=0\)になっていることが分かります。これは、あくまで簡単化した絵になりますが、L1が解の疎性を促すことが感覚的にご理解いただけると思います。

L1正則化を用いる利点

L1正則化項を誤差関数に入れた場合、解の疎性が促されることはなんとなくわかりました。では、一体どういうメリットがあるのでしょうか。重み係数\({\bf w}\)のうち0となった成分に関しては、その成分にかかる特徴量も0になります。つまり、予測に全く影響しなくなります。実際には、無関係な特徴量(ゴミデータ)が混じっている場合、これらの特徴量にかかる重み係数が0になりやすくなります。つまり、L1正則化を用いると無関係なデータの影響を受けにくくなります。これがL1正則化を用いる利点となります。また、以下の記事ではL1正則化項の利点を実際にワインの等級分類問題において、L2正則化項と比較しながら紹介しています。

【Python】ロジスティック回帰におけるL1正則化を用いる利点
機械学習モデルのパラメータ最適化計算をする際に出てくる正則化項(罰則項)。一般的な正則化項としては、次の二つがあげられます。L1正則化項を用いると疎な重み係数(パラメータ)が得られます。L2正則化項との比較をしながら、L1正則化項の利点を実際にPythonでソフトを作って検証してみます。

まとめ

今回はL1正則化項が疎な解を促す理由とその利点をご紹介しました!

また、機械学習を勉強するための参考書を以下で紹介しています!よかったら見ていってください。

機械学習を勉強するためのオススメ参考書(理論・Python・Webアプリ)
統計・機械学習に関しては授業で習ったところありますが、結構忘れてしまっています(。また、Rの演習の授業はありましたが、Pythonは学生のころには使っていません。機械学習・データサイエンスを勉強するにあたり、私が参考にしている参考書を一挙ご紹介したいと思います。

コメント