極端な重みにペナルティーを科すL2正則化 Python機械学習プログラミング第三章

 

今回は、疑問になる点はあったが、おそらく単なる計算ミスだろうとおもい飛ばしたのでほとんど、ほんと同じであるが少し飛ばしてあったので、そこは埋めた。

L2正則化

 \lambda ||\vec{w}||をコスト関数に足すことでペナルティーを科す。コスト関数は\vec{w}_i微分される。

 \frac{\lambda}{2}\frac{\partial ||\vec{w}||^2 }{\partial w_i} = \lambda w_i \because ||\vec{w}||^2  = \Sigma {\vec{w}_i}^2

となる。

こうすると、

 w_i \leftarrow w_i - \frac{\partial J(\vec{w}) }{\partial w_i} - \lambda w_i

こうすると、 w_iが大きくなればなるほど,更新された w_iは小さくなる。

サポートベクトルマシンの慣例によって、 C = \frac{1}{\lambda}を用いるらしい。

不思議

L2正則化を用いた時のコスト関数は、

 J(\vec{w}) = C\{\Sigma [-y^i log(\phi(z^i)) - (1-y^i) log(1-  \phi(z^i))] + \frac{1}{2}||\vec{w}||^2\}

 となると書いてあるが、Cがλの逆数なら、 \frac{1}{C}がかかっているのが普通じゃないのかと考えたが、Cを大きくしたりしてもいいからこうなっているのか不思議に残る。ただ、あまり本質的には関係ないので省略。

 

 

 

Python機械学習プログラミングの他の記事はこちら↓

yosuke-programing.hatenadiary.com

 Amazonはこちら↓

[第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)

[第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)