機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

ラッソ回帰(L1正則化)

L1正則化

目的関数に正則化項としてL1ノルムを加えたものをL1正則化と言います。ラッソ回帰とも言います。
 w_0正則化から外すことも多い為、今回は外します。
目的関数は以下のようになります。

\begin{eqnarray}
E({\bf w})&=&\frac{1}{2}||{\boldsymbol\Phi}{\bf w}-{\bf t}||^2+\lambda\sum_{i=1}^D|w_i|\tag{1}
\end{eqnarray}

最適化

この目的関数の最適化はL1ノルムがあり、解析的に解くのが難しい為、座標降下法を使って解きます。
座標降下法とは一般に、
ある{\bf x}\in{\mathbb R}^Dの関数\psi({\bf x})を最小化(最大化)したいときに、
\frac{\partial\psi}{\partial x_1}=0を満たすx_1x_1を更新し、
\frac{\partial\psi}{\partial x_2}=0を満たすx_2x_2を更新し、という風に繰り返していく方法です。

まず、w_0の更新式を求めます。
E({\bf w})w_0についてまとめます。

\begin{eqnarray}
E({\bf w})&=&\frac{1}{2}||{\boldsymbol\Phi}{\bf w}-{\bf t}||^2+\lambda\sum_{i=1}^D|w_i|\\
&=&\frac{1}{2}\sum_{n=1}^N({\boldsymbol\phi}(x_n)^\top{\bf w}-t_n)^2+{\rm const.}\\
&=&\frac{1}{2}\sum_{n=1}^N(w_0+\phi_1(x_n)w_1+\cdots+\phi_D(x_n)w_D-t_n)^2+{\rm const.}\\
&=&\frac{1}{2}\sum_{n=1}^N\left(w_0^2+2w_0\left(\sum_{d=1}^D\phi_d(x_n)w_d-t_n\right)\right)+{\rm const.}\tag{2}\\
\end{eqnarray}

(2)をw_0微分して=0とおきます。

\begin{eqnarray}
&&\frac{\partial}{\partial w_0}E({\bf w})=0\\
&&\Leftrightarrow\sum_{n=1}^N\left(w_0+\sum_{d=1}^D\phi_d(x_n)w_d-t_n\right)=0\\
&&\Leftrightarrow Nw_0+\sum_{n=1}^N\left(\sum_{d=1}^D\phi_d(x_n)w_d-t_n\right)=0\\
&&\Leftrightarrow w_0=\frac{1}{N}\sum_{n=1}^N\left(t_n-\sum_{d=1}^D\phi_d(x_n)w_d\right)\tag{3}\
\end{eqnarray}

次に、w_k(k\not=0)の更新式を求めます。一旦、w_k>0とします。この時、|w_k|=w_kです。
E({\bf w})w_kについてまとめます。

\begin{eqnarray}
E({\bf w})&=&\frac{1}{2}||{\boldsymbol\Phi}{\bf w}-{\bf t}||^2+\lambda\sum_{i=1}^D|w_i|\\
&=&\frac{1}{2}\sum_{n=1}^N({\boldsymbol\phi}(x_n)^\top{\bf w}-t_n)^2+\lambda w_k+{\rm const.}\\
&=&\frac{1}{2}\sum_{n=1}^N(w_0+\phi_1(x_n)w_1+\cdots+\phi_D(x_n)w_D-t_n)^2+\lambda w_k+{\rm const.}\\
&=&\frac{1}{2}\sum_{n=1}^N\left(\phi_k(x_n)^2w_k^2+2\phi_k(x_n)w_k\left(w_0+\sum_{d\not=k}\phi_d(x_n)w_d-t_n\right)\right)+\lambda w_k+{\rm const.}\tag{4}\\
\end{eqnarray}

(4)の\sum_{d\not=k}\sum_{d=1,d\not=k}^Dです。
(4)をw_k微分して=0とおきます。

\begin{eqnarray}
&&\frac{\partial}{\partial w_0}E({\bf w})=0\\
&&\Leftrightarrow\sum_{n=1}^N\left(\phi_k(x_n)^2w_k+\phi_k(x_n)\left(w_0+\sum_{d\not=k}\phi_d(x_n)w_d-t_n\right)\right)+\lambda=0\\
&&\Leftrightarrow \left(\sum_{n=1}^N\phi_k(x_n)^2\right)w_k+\sum_{n=1}^N\phi_k(x_n)\left(w_0+\sum_{d\not=k}\phi_d(x_n)w_d-t_n\right)+\lambda=0\\
&&\Leftrightarrow w_k=\frac{\sum_{n=1}^N\phi_k(x_n)\left(t_n-w_0-\sum_{d\not=k}\phi_d(x_n)w_d\right)-\lambda}{\sum_{n=1}^N\phi_k(x_n)^2}\tag{5}\
\end{eqnarray}

(5)はw_k>0のときなので、w_k^+として書き直すと

\begin{eqnarray}
&&w_k^+=\frac{\sum_{n=1}^N\phi_k(x_n)\left(t_n-w_0-\sum_{d\not=k}\phi_d(x_n)w_d\right)-\lambda}{\sum_{n=1}^N\phi_k(x_n)^2}\tag{6}\
\end{eqnarray}

となります。
同様にw_k<0のとき、w_k^-とおくと

\begin{eqnarray}
&&w_k^-=\frac{\sum_{n=1}^N\phi_k(x_n)\left(t_n-w_0-\sum_{d\not=k}\phi_d(x_n)w_d\right)+\lambda}{\sum_{n=1}^N\phi_k(x_n)^2}\tag{7}\
\end{eqnarray}

となります。
w_k^+w_k>0を、w_k^-w_k<0を前提として計算されたものなので、
w_k^+>0ならば、w_k^+に更新し、w_k^-<0ならば、w_k^-に更新します。
またw_k^+>0w_k^-<0の両方を満たさないときはw_kは更新しません。
まとめると、以下のようになります。
\sum_{n=1}^N\phi_k(x_n)\left(t_n-w_0-\sum_{d\not=k}\phi_d(x_n)w_d\right)>\lambdaなら

\begin{eqnarray}
&&w_k=\frac{\sum_{n=1}^N\phi_k(x_n)\left(t_n-w_0-\sum_{d\not=k}\phi_d(x_n)w_d\right)-\lambda}{\sum_{n=1}^N\phi_k(x_n)^2}\tag{8}\
\end{eqnarray}

\sum_{n=1}^N\phi_k(x_n)\left(t_n-w_0-\sum_{d\not=k}\phi_d(x_n)w_d\right)<-\lambdaなら

\begin{eqnarray}
&&w_k=\frac{\sum_{n=1}^N\phi_k(x_n)\left(t_n-w_0-\sum_{d\not=k}\phi_d(x_n)w_d\right)+\lambda}{\sum_{n=1}^N\phi_k(x_n)^2}\tag{9}\
\end{eqnarray}

それ以外ならw_kは更新しない。

収束条件

収束条件はこの記事では、単純に{\bf w}のL1ノルムを次元数で割ったもの|{\bf w}|/Dの変化量を見て
それがある値以下になるまで繰り返します。

偉人の名言

f:id:olj611:20210301153715p:plain
最上の思考は孤独のうちになされ、最低の思考は混乱のうちになされる。
トーマス・エジソン

参考文献

パターン認識機械学習 上巻
機械学習のエッセンス

動画

目次へ戻る