わくわく計算ライフ

ゲーマーによる節約生活。はじまります。

PRML 学習記録1

基礎学力に疑問が出てきたので、ちゃんとした書籍でお勉強することにした。
学習記録のアウトプットが目的なので、ボリュームはそこそこに週一程度の継続を目指したい。
多分前週の学習結果のまとめみたいになると思う。

1. 書籍紹介

PRMLこと

をやっていきます。
有名な本ですね。記述がしっかりしているのと、途中で折れる人が結構多いので。
ぱらぱらっと見てみたらやっぱり書いてあることが納得いくことが多かったので、これを機に知識の整理と基礎固めのし直しを試みます。
業務で機械学習触るけど、結構雰囲気でもとりあえず動いてしまうのでこの辺をおろそかにしていたがさすがに不誠実だなってことでもうちょいやる。
あくまで個人の学習メモなので本書持ってないと何言ってんの?って感じだと思います。
本買ってあげてください。

2. 今週分(10/17~10/23)

初回は軽く序章を(P.1 ~P.11)
話としては機械学習、最適化の前説明として
 \sin波に微弱なランダムノイズを乗っけたものから、元の \sin波を推定すると…?
って話を中心に、多項式フィッティングのされ方について簡単な説明。

2.1 過学習について

いわゆる n多項式で近似する場合、点数が n-1点以下だと、解けちゃうのでサンプリング点については誤差0になっちゃうけど、形はよろしくない場合が多い。
これは、いわゆる過学習と呼ばれるケースで、人間の理解しやすさとか安全性を考えた場合、大体法則性をふんわり見出したいケースが多いので複雑な形状の関数が出てくるのは好ましくないという話。
フーリエ変換ナイキスト周波数の話みたいに、結局見えてる点の間をなるべく滑らかにつなぎたいという話になるので、サンプリング点で誤差が多少大きくなろうと、我々が感覚的に引くサンプリング点の間の線によりフィットさせるんだという話。
なので、多項式近似の場合は適切に次数を落としてやる必要があるということ。
ここで疑問が沸いたのは

  •  1, 2, \dots, N と次数を変えた関数を毎回全部試して探索する必要あるの?
  •  Nっていくつまで上げてみればいいんじゃ~!
  • 例えば k次だと物足りないけど、 k + 1次だと過学習みたいなケースどうするの?

2.1 過学習時の係数について

言われてみればと思ったが、1次元データで過学習しているケースでは、グラフ形状が上下に激しくビヨンビヨンするところがある。
これは、なんでかという話になると係数の値がデカくなる傾向があるということで、確かにビヨンビヨンする→傾きが大きい→係数でかいでしょ、ってのは納得。
これに着目して次の正則化項の話になる。

2.2. 正則化

例示されていた誤差関数を引用すると


\tilde{E}(\textbf{W}) = \frac{1}{2}\sum^{N}_{n=1} \{y(x_n, \textbf{W}) - t_n \}^2 + \frac{\lambda}{2}\|\textbf{W}\|^2 \cdots (1)

(1)式の第2項が正則化項で、 n次式の各次元の係数の二乗和を目標に対する誤差に加算し、目標関数としている。
当然ながら正則化項を0にするには、全部の係数を0にする必要があり、その場合は x=0の直線が出来上がる。
 \tilde{E}(\textbf{W}) を最小化する \textbf{W}を探すにあたって \lambda>0の値を大きくすると、より重み w_nの絶対値は小さくしなければならなくなる。
すると、ビヨンビヨンした形から直線により近づく感じで形状がシンプルな形に抑え込まれて次元を抑えたような表現が得られるという寸法。
しかも、 \lambdaは正の実数値で連続的に表現できるから、2.1で疑問に思っていた k 次と k-1次の間みたいなのはどうするんじゃーといった要望にも対応できそう。

やはり先人は偉大。

残った疑問としては

  • グラフのy方向のずれはバイアス項 w_0で対応できるが、x方向のずれはどうすんの?

ってとこ。単純はx方向のバイアスを表すのに、高い次元が必要じゃない?
と思ったけど、 X_m = x - m とかにして、 mも最適化対象に入れるとか?
この場合は m正則化項には入れなくてよさそう。
シフトに関しては制限をつけない方が望ましいので、y方向の w_0も普通は正則化項から外す(別の条件で管理)という記載が本書にはありましたね。
勾配(形状)にかかわる要素とそれ以外で分けるみたいな考え方をすればよさそうね。
本書の内容からずれるのでここではフォローは無かったですね。