パターン認識と機械学習 下(第6章:その5)

以下の本を読みます。上巻を読むこともあります。何か問題点がありましたらご指摘いただけますと幸いです。

パターン認識と機械学習 下 (ベイズ理論による統計的予測)

パターン認識と機械学習 下 (ベイズ理論による統計的予測)

前回:その4 /次回:まだ
f:id:cookie-box:20180305232608p:plain:w60

前回 6.4.1 節のあらすじです。

f:id:cookie-box:20181209153534p:plain:w720
ガウスカーネルの場合と指数カーネルの場合で2列にまとめてみたんですが、内容がほぼ一緒なのであまり2列に分けた意味ありませんでしたね。

f:id:cookie-box:20180305231302p:plain:w60

まだ事前分布じゃん! あと本当に2列に分けた意味ないな!

f:id:cookie-box:20180305232608p:plain:w60

早く事後分布に更新しましょう。…の前に、前回はガウスカーネル及び指数カーネルを考えていましたが、6.4.2 節では (6.63) 式の形式のものが広くつかわれているとありますね。(6.63) 式のパラメータを色々な値に変えてプロットしたものが図 6.5 だと。

f:id:cookie-box:20180305231302p:plain:w60

(6.63) 式は、\theta_2 = \theta_3 = 0 ならガウスカーネルだな。図6.5 の一番左上がそうだ。図 6.5 の上段真ん中は形だけはその左と同じで、縦方向に  \sqrt{\theta_0} 倍に拡大されているだけだな。上段一番右は…\theta_1 が16倍になってて、つまり、「ガウスカーネルの分散」が16分の1になっているから、「近い点どうしは相関が強いはず」の「近い点」の範囲が4分の1に狭くなっているんだな。だから左側2枚より波打ってる。逆に左下は「近い点」の範囲が4倍になってなだらかになってるな。残り2つは…?

f:id:cookie-box:20180305232608p:plain:w60

下段真ん中は一番左上の図の分散共分散行列のすべての成分に定数 \theta_2=10 が加わっています。「近い点どうしは相関は強いはず」に加えて、「全ての点どうしはある程度相関が強いはず」というのが加わった感じですね。なのでサンプルされた点列はプラス側だったら全体的にプラス側、マイナス側だったら全体的にマイナス側に出ていますよね。一番右下は線形項がある場合ですね。1次元の内積なのでただの積ですが…この図の左端と右端の点どうしが一番負の方に相関が強くなるはずですね。なので実際描かれているグラフも両端で符号が逆側になっているのが多いです。ゼロ付近では線形項の効果はあまりなく、両端に行くほど近い点どうしの相関が強くなっていくはずです。定数項と線形項は、(6.63) 式の下にかいてあるように考えている線形基底関数モデルが通常の線形モデルと同じ項をもつようにするためにあるような気がしますけど。

f:id:cookie-box:20180305231302p:plain:w60

事前分布はもう飽きてきたな。この図 6.5 をどうやって事後分布に更新するの?

f:id:cookie-box:20180305232608p:plain:w60

6.4.2 節では、仮定として y_n \equiv w^{\top}\phi(x_n) は直接観測できず、観測可能なのは y_nガウス分布にしたがうノイズ \varepsilon_n が加わった目標変数 t_n のようですね。t_{1:N} の事前分布を求めるには (6.61) 式の積分をすればよく、分散共分散行列の各要素は (6.62) 式になりますね。そして、いま求めたいのは p(t_{N+1}|t_{1:N}) です。N 個の観測値を得たときの、次のまだ見ぬ観測値 t_{N+1} に対する分布です。…が、6.4.2 節を最後まで見る限り、どうも w が更新されている式はありませんね。

f:id:cookie-box:20180305231302p:plain:w60

は? じゃあ w の分布は (6.50) 式の事前分布  p(w) = N(0, \, \alpha^{-1}I) のままってこと? N 個の観測値が得られたのに重みは更新されないってどういうことだよ? それじゃ y_{1:N} の分布ごちゃごちゃしたままじゃん(下図)。回帰モデルだったら重みを求めるだろ普通。

f:id:cookie-box:20181205233338p:plain:w240

f:id:cookie-box:20180305232608p:plain:w60

あ、いえ、w 自体を更新してはいないというだけです。w は間接的に更新されています。何も観測していない下での目標変数の同時分布 p(t_{1:N+1}) を既に観測した t_{1:N} で条件付ける形で(式 6.66, 6.67)。しかし、更新後の w の分布は直接あらわれていません。ここから w の分布を逆算することはできるかもしれませんが、する意味もありません。いま興味があるのは t_{N+1} の分布であって、w の分布には正直興味がないんです。

f:id:cookie-box:20180305231302p:plain:w60

そこまでいうとなんか w がかわいそう!

f:id:cookie-box:20180305232608p:plain:w60

未知の点 x_{N+1} に対応する目標変数の予測分布の平均と分散は以下ですね。

 m(x_{N+1})=\bigl( \begin{array}{ccc} k(x_1,x_{N+1}) & \cdots & k(x_N,x_{N+1}) \end{array} \bigr)  \left( \begin{array}{cccc} k(x_1,x_1) + \beta^{-1} &k (x_1,x_2) &  \cdots & k(x_1,x_N) \\ k(x_2, x_1) & k(x_2,x_2)+\beta^{-1} & \cdots & k(x_2, x_N) \\ \vdots & \vdots & & \vdots \\ k(x_N, x_1) & k(x_N, x_2) & \cdots & k(x_N, x_N) +\beta^{-1}\end{array} \right)^{-1} \left( \begin{array}{c} t_1 \\ \vdots \\ t_N \end{array} \right)
 \sigma^2(x_{N+1})=k(x_{N+1},x_{N+1})+\beta^{-1}
 \quad -\bigl( \begin{array}{ccc} k(x_1,x_{N+1}) & \cdots & k(x_N,x_{N+1}) \end{array} \bigr)  \left( \begin{array}{cccc} k(x_1,x_1) + \beta^{-1} &k (x_1,x_2) &  \cdots & k(x_1,x_N) \\ k(x_2, x_1) & k(x_2,x_2)+\beta^{-1} & \cdots & k(x_2, x_N) \\ \vdots & \vdots & & \vdots \\ k(x_N, x_1) & k(x_N, x_2) & \cdots & k(x_N, x_N) +\beta^{-1}\end{array} \right)^{-1} \left( \begin{array}{c} k(x_1,x_{N+1}) \\ \vdots \\ k(x_N,x_{N+1}) \end{array} \right)
もし観測値が1つしか得られていない状況で未知の点の値を予測すると \displaystyle m(x_{N+1})=\frac{k(x_1,x_{N+1})}{k(x_1,x_1)+\beta^{-1}}t_1 なので、これは既知の観測値をその観測値への事前分散で割って、未知の点からみてその点との間の共分散をかけた値になっていますね。また、 \displaystyle \sigma^2(x_{N+1})=k(x_{N+1},x_{N+1})+\beta^{-1} -\frac{k(x_1,x_{N+1})^2}{k(x_1,x_1)+\beta^{-1}} で、この最後の項を除くと「何も知らない下での x_{N+1} における目標変数の分散」になっているので、最後の項は既に観測値を1つ知っているために分散が小さくなったという効果になりますね。既に値が観測されている点との間のカーネル関数が大きい(既に値が観測されている点に近い)点では分散が小さくなりますが、そうでない点では分散が大きいままになります。それが図 6.8 に示されていますね。この図 6.8 は、x軸のそれぞれの点で m(x)\sigma^2(x) を計算してプロットしたものだと思います。どの既知の点からも遠い図の右側の方がグレーの帯が太くなっています。なんだか未知の点における予測分布が既知の観測値に支配されている感じがしないでしょうか?

f:id:cookie-box:20180305231302p:plain:w60

うーん、まあ何となくは? あれでもさ、観測値を得る前ってなんか糸くずみたいにごちゃごちゃしてなかった? 上の絵みたいに。こんな帯みたいな感じじゃなくなかった?

f:id:cookie-box:20180305232608p:plain:w60

糸くずみたいな絵、つまり、さまざまな x において同時に取る値のありうるシナリオの1つを描くこともできるはずです。例えば未知の M 個の点に対して t_{N+M} の同時分布の共分散行列の分割を行えば t_{N+1:M} の平均ベクトルと共分散行列が得られます。それさえあればその糸くずみたいな絵を描いたのと同じ要領で M-N 変量正規分布から点をどんどんサンプリングすればいいだけです。もっとも、今度の糸くずみたいな絵は既に手に入っている N 個の観測値に寄り添ってまとまってくると思います。計算するの面倒そうですし、それを描いてもさほどありがたくなさそうですが。

f:id:cookie-box:20180305231302p:plain:w60

でも15ページで散々「関数に対する事前分布」「関数 (y,w) 上での分布」って言って、その事前分布としてガウス過程を導いたんだから、事後分布も関数の分布であってほしくない? このグレーの帯じゃ関数の分布じゃなくて各点での値の分布じゃん。

f:id:cookie-box:20180305232608p:plain:w60

まあそれはそうですね。

f:id:cookie-box:20180305231302p:plain:w60

なんか一貫してない気がするんだよな。まあいいけど…あ、そういえばこの21ページの「k(x,x') が有限の基底関数で定義される場合には、3.3.2 節で得られた、ガウス過程の観点から導いた線形回帰の結果を再び導くことができる」って何だろ。上巻を見なきゃか…あ、今日上巻もってないや。というか下巻だけでも持ち歩くの十分重いんだよな…。

f:id:cookie-box:20180305232608p:plain:w60

それならもう持ち歩く必要はありませんよ。PRML は先月無料で公開されましたから。

f:id:cookie-box:20180305231302p:plain:w60

英語じゃん! まあ背に腹は代えられないから読むけど…ってあれ? この 3.1 節の数式いまの状況と同じ…てかこの (3.55) 式、こっちではちゃんと尤度最大化で w 求めてるじゃん! w かわいそうじゃない! あ、しかも Figure 3.9 には糸くずみたいな事後分布も載ってる!

f:id:cookie-box:20180305232608p:plain:w60

なるほど。6.4.2 節ではそもそも w を求める必要がありませんでしたが、w に興味があったとしても基底関数が無限にあったら無限次元の w の事後分布をとらえることはできませんでしたね。でも基底関数が有限個なら Figure 3.7 のように wベイズ更新することができて、w の分布からのサンプリングで Figure 3.9 を描くことも容易(w の分布さえあれば)ですね。

f:id:cookie-box:20180305231302p:plain:w60

基底関数が有限個だったらパラメータ空間で解く解き方も、ガウス過程を考える解き方も、どっちの解き方もできるのか。どっちが楽なんだろ。この Figure 3.7 って前の時刻の分布に尤度かけていっているだけだよな。だったらパラメータ空間で解くのって楽そう? 一方で 6.4.2 節のガウス過程は…「最も大きな計算量を要する部分が、N \times N の行列の逆行列を計算する部分であり」? 確かにさっきジュンがかいた式何気に逆行列取ってるじゃん。計算量つらそう…。

f:id:cookie-box:20180305232608p:plain:w60

まあそれで無限の特徴を扱えるようになったと思えば…訓練データが大きい場合のための近似手法もあるようですね。

f:id:cookie-box:20180305231302p:plain:w60

6.4.3 節は、超パラメータの学習? ここでの超パラメータって何?

f:id:cookie-box:20180305232608p:plain:w60

おそらく観測ノイズの精度 \beta と、(6.63) 式の \theta_0, \theta_1, \theta_2, \theta_3 などではないでしょうか。

f:id:cookie-box:20180305231302p:plain:w60

それらを尤度最大化で推定することもできるってことか。それで、6.4.4 節は、その応用(?)みたいな感じで、各訓練データ点からの寄与度を推定することで、役に立たないゴミみたいなデータを除けるって話だな。

(次回があれば)つづく