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

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

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

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

前回:その5
f:id:cookie-box:20180305232608p:plain:w60

まだ 6.4.5~6.4.7 節を残していますが、「第6章 カーネル法」のここまでの内容についてふり返っておきたいと思うんです。6.1~6.4 節はそれぞれ以下のような内容だったと思います。

  • 線形基底関数モデル y(x)=w^{\top}\phi(x) における正則化項付き二乗和誤差最小化問題は、 \{w_n\}最適化問題から \{a_n\} \equiv \{-\lambda^{-1}(w^{\top}\phi(x_n) - t_n)\}最適化問題に読み替えることができる。つまり、特徴  \phi(x) の重みを解くのではなく、カーネル関数 k(x_n, x)=\phi(x_n)^{\top} \phi(x) の重みを解くことができる(6.1節 双対表現)。
  • つまり、このような問題設定下では、線形基底関数モデルの特徴  \phi(x) を設計する代わりに、カーネル関数 k(x, x') を設計することができる(特徴を明示的に扱うことを回避することができる)。もちろんカーネル関数を直接設計する場合は自由な関数を選んでいいということではなく、それがある特徴の内積となっている \Leftrightarrow 入力空間からの任意のサンプルデータセットのグラム行列(各成分が  k(x_n, x_m) である行列)が半正定値である必要がある(6.2節 カーネル関数の構成)。
  • 回帰モデルの入力変数/重みパラメータ/目標変数が確率的であると考えるとき、未知の点における(平均)解は既知の点の値をその点までの距離に依存する関数(動径基底関数;RBF)で重みづけして足し上げたものになる。 特に線形基底関数モデルの重みパラメータ分布をベイズ更新する問題設定では、この重みを与える RBF は「等価カーネル」とよばれる。なお、この等価カーネルは元の特徴の内積ではない。内積が等価カーネルとなるような新しい特徴を選べばその内積にはなっている(6.3節 RBFネットワーク)。
  • 線形基底関数モデルの重みパラメータ分布をベイズ更新する問題設定において、「まだ何も観測していない下での目標変数の分布」を観測した点によって条件付けるという考え方で解くと、その事前分布の分散共分散行列の各成分は  k(x_n, x_m) = \alpha^{-1} \phi(x_n)^{\top} \phi(x_m) となる(6.4節 ガウス過程)。

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

確かにここまでそんな内容だったな。

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

ここでハヤトに質問です。つまり、カーネル関数って何ですか?

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

えっ?

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

6.1~6.4 節のどの節も、それぞれ「このような関数はカーネル関数である」を主張しています。そのような箇所を抜粋すると以下です。

  • 「ここでは、線形回帰モデルで、パラメータが以下のような正則化された二乗和誤差を最小化することで求められるようなものを考える。(中略)なおここで、(6.1) で定義されるカーネル関数 (kernel function)  k(x, x') を使った」(下巻2~3ページ)
  • 「関数  k(x, x') が有効なカーネルであるための必要十分条件は、任意の \{x_n\} に対して、要素が k(x_n, x_m) で与えられるグラム行列 K が半正定値であることである」(下巻5ページ)
  • 「最後に、等価カーネル (3.62) は、通常のカーネル関数が満たすべき重要な性質を満たしていることを注意しておく(→6章)。すなわち、等価カーネル非線形関数のベクトル \psi(x)内積で表現できる。 k(x,z) = \psi(x)^{\top} \psi(z)」(上巻159ページ)
  • 「まずは線形回帰の例に立ち返り、関数 y(x,w) の上での分布を考えることで、予測分布を再導出することにする。(中略)ここで、K は、 K_{nm} = k(x_n, x_m) = \alpha^{-1} \phi(x_n)^{\top} \phi(x_m) を要素にもつグラム行列であり、k(x, x')カーネル関数である」(下巻15~16ページ)
6.1 節と 6.4 節では、「このような状況で現れるこの関数はカーネル関数である」という具体例にみえます。6.2 節は状況はいくぶん曖昧ですが、第6章で唯一「この条件を満たせばカーネル関数である」を数学的に与えています。6.3 節の等価カーネルカーネル関数扱いなのか判断しにくいんですが、上巻157ページにおいて「カーネル関数」と呼称されています。

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

うーんその中だと 6.2 節が最も一般的に「カーネル関数とは」を説明してるんじゃない? つまり、カーネル関数ってのは、2つの変数(ベクトル)をとる関数でグラム行列が半正定値になるようなやつなんだろ?

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

そうですね。ハヤトは、機械学習カーネル関数とは何か人に尋ねて、そのように回答されたらうれしいですか?

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

うれしいかどうかっていわれると…だから何?って感じはするな。知りたいのはそういうんじゃないっていうか。それで何ができるかとかのが大事じゃない?

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

なので、カーネル法について記述されている別の書籍も参照するべきだと思ったんです。すると、以下の「学習システムの理論と実現」という本にちょうどカーネル法に関する章があるのを見つけたのでこれを読むことにしました。あ、プロデューサーさんがこの本を選んだ理由は「たまたま部屋から発掘されたから」だそうです。「そういえばかなり昔に買った」「目次をみたらカーネル法があってラッキー」だそうです。

学習システムの理論と実現

学習システムの理論と実現

  • 作者: 渡辺澄夫,萩原克幸,赤穂昭太郎,本村陽一,福水健次,岡田真人,青柳美輝
  • 出版社/メーカー: 森北出版株式会社
  • 発売日: 2005/07/25
  • メディア: 単行本
  • 購入: 2人 クリック: 10回
  • この商品を含むブログ (9件) を見る

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

買った本の目次くらい確認しとけよ…あともっと本を整理しろよ…。

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

上の本の「第3章 カーネルマシン」の内容を興味があるところだけかいつまんでまとめます。多少話の順番が前後していますし、解釈でかいています。

  • 出力が  y \in \{-1, 1\} であるときの線形基底関数モデル  y(x)={\rm sgn}\bigl[f(x) \bigr] = {\rm sgn} \bigl[ w^{\top}\phi(x) \bigr] の誤り訂正学習(線形分離可能ならば有限回の学習で収束する)では、w=0 を初期値とすれば解は  \displaystyle w = \sum_{n=1}^{N} a_n \phi(x_n) になるので、PRML正則化項付き二乗和誤差最小化問題のときと同様、特徴  \phi(x) を設計するのではなく、カーネル関数 k(x_n, x)=\phi(x_n)^{\top} \phi(x) を直接設計することもできる。
  • 同じ状況でのマージン最大化も同じ解の形にかける(証明略)ので、この場合もカーネル関数を直接設計することができる。
  • もちろんカーネル関数に自由な関数を選んでいいということではなく特徴の内積の形になっていなければならないが、カーネル関数が満たすべき条件は Mercer の定理で与えられる。これを満たすカーネル関数を Mercer カーネルという。
  • 入力空間 X に対して Merser カーネルを何か1つ選ぶと、Mercer カーネルの固有関数の線形和でかけるような関数全体の集合に、ある内積を入れて関数のヒルベルト空間  \mathcal{H} をつくることができる。このヒルベルト空間には、任意の x \in X f \in \mathcal{H} に対して  \langle f, K_x \rangle_\mathcal{H} = f(x) となるような K_x が存在することがわかる(というか Mercer カーネルがそれになる)。このような K_x をもつヒルベルト空間を再生核ヒルベルト空間(RKHS)という。だから何なのかというと、RKHS である  \mathcal{H} では、学習データ  \{(x_n, y_n)\}_{1 \leqq n \leqq N} に対するあるクラスの正則化項付き最小化問題の  \mathcal{H} 内での最適解 f が、各学習データの入力変数に対する  K_{x_n} の和でかけることが保証されている(レプリゼンタ定理)。
これ以降に、カーネル関数の例やカーネル関数を用いた手法の例が簡単ですが PRML より1つ1つ丁寧にかかれているようです。

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

えっと、その1点目と2点目はカーネル関数の具体例みたいだけど、PRML と若干違うんだな。PRML から具体例が増えたって感じだ。3点目はカーネル関数が満たすべき条件だけど、それは PRML の 6.2 節にもあったよな。ここで新たにわかったのは、その条件に「Mercer の定理」という名前が付いていたってことか(※)。4点目は長いなー。ヒルベルト空間? って何??

学習システムの~の本で出てくる Mercer の定理(48ページ)は PRML と少し表現が異なりますが、49ページに補足されている通り PRML 5ページで出てくる表現と等価です。ただし、学習システムの~の方には、PRML にはない「k が対称関数」という条件が追加されています。これは、k が実カーネルなら必要で、k が複素カーネルなら不要(半正定値を課すだけでエルミート性をもつため)な条件です。以下のサイトを参考にさせていただきました。
My_NoteBook/情報工学_カーネル法_Note.md at master · Yagami360/My_NoteBook · GitHub
f:id:cookie-box:20180305232608p:plain:w60

数学的側面についても調べたのでいつかプロデューサーさんにやる気が出たら別途まとめたいですが、4点目の言いたいことは気持ち的にはこうですかね。

あなたは手元に
  • 学習データ  \{(x_n, y_n)\}_{1 \leqq n \leqq N} x \in X, \, y \in \mathbb{R} )と、
  • それをつかって解きたい y = f(x)最適化問題  \underset{f}{\rm minimize} \; G\bigl(\{(x_n, y_n, f(x_n) )\}_{1 \leqq n \leqq N} \bigr) と、
  • X における適当に選んだ Mercer カーネル k(x, x')
をもっているとします。つまり、あなたはなるべくよい関数 f を探したいわけですが、もしあなたが最小化したい目的関数  G がレプリゼンタ定理(※)の目的関数の形にあてはまっているなら、
  •  \displaystyle f(x) = \sum_{n=1}^{N} a_n k(x_n, x)\{a_n\} を最適化することが、
  •  k の固有関数 \psi_m \, (m = 1, 2, \cdots) の線形和でかける関数全体  \mathcal{H} の中から最適な f を探すこと
と同じになります。選んだ  k によっては \psi_m は可算無限個になりますが、それでもです。なので、このことを利用するととてもとてもたくさんの関数の候補の中から一番よい f を探すことができます。有限個の  \{a_n\}_{1 \leqq n \leqq N} を求めるだけでです。
つまり、PRML での「正則化項付き二乗和誤差最小化」も、学習システムの~で出てきた「誤り訂正学習」も「マージン最大化」も、この主張の個別の具体例だったというわけです。

レプリゼンタ定理の主張はこうです。k を Mercer カーネルとし、k の定める再生核ヒルベルト空間を \mathcal{H} とおくと、正則化問題  \displaystyle \underset{f \in \mathcal{H}}{\rm minimize} \; G_{\rm emp} \bigl(\{(x_n, y_n, f(x_n) )\}_{1 \leqq n \leqq N} \bigr) + G_{\rm reg} \bigl( \langle f, f \rangle_{\mathcal{H}} \bigr) の解  f \in \mathcal{H} はサンプル点におけるカーネル関数の重み付き和  \displaystyle f(x) = \sum_{n=1}^{N} a_n k(x_n, x) で表されます。ここで G_{\rm emp} は実数値関数で、G_{\rm reg}: \mathbb{R} \to [0, \infty) は狭義単調増加関数です(学習システムの~ 61ページ参照)(この本に証明はないです)(より一般的な表現もありえます)。
ついでに Mercer カーネル k が定める再生核ヒルベルト空間だけかくと、 k の固有展開を  \displaystyle k(x, x') = \sum_{m=1}^{\infty} \gamma_m \psi_m(x) \psi_m(x') としたときに、\{ \psi_m \} の線形和でかける関数全体の集合  \mathcal{H} であって、 \displaystyle f(x) = \sum_{m=1}^{\infty} c_m \psi_m(x) , \; \displaystyle g(x) = \sum_{m=1}^{\infty} d_m \psi_m(x) \in \mathcal{H} に対して  \displaystyle \langle f, g \rangle_{\mathcal{H}} \equiv \sum_{m=1}^{\infty} \frac{c_m d_m}{\gamma_m} という内積を定義した空間です(学習システムの~ 59ページ参照)(ただしこの本の 59~60 ページの説明では無限和になっていないですが、おそらく特徴空間が何次元かを意識してこうかいているのであって、無限和でも成り立つ話のはずですたぶん)。
f:id:cookie-box:20180305231302p:plain:w60

これまで出てきた具体例を一般的にかくとこうなるってこと?

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

カーネル関数で何ができるか」ですよ。僕たちは PRML の 6.1 節で、正則化項付き二乗和誤差最小化の双対問題で、初めてカーネル関数に出会いました。正則化項付き二乗和誤差最小化がカーネル関数によっても解けることは明確でしたが、反面、あまりそのありがたさもわからなかったんです。わざわざ双対問題にする必要があったのかと思ってしまいましたし、よくわからない高次元空間で解を探すよりも特徴を明示的に設計した方がよいような気がしてしまったので。続く 6.2 節ではカーネル関数に主役が移り、さまざまなカーネル関数の例が提示されましたが、ここで出てきた疑問は「どのような問題ならばこれらのカーネル関数をつかうことができるのか」です。カーネル関数をつかえる(※)のは 6.1 節のように最適解が「サンプル点におけるカーネル関数の重み付き和」でかけるような問題に限られます(※ 無限個のパラメータをつかってもよいなら最適解が 6.1 節の形になっていなくてもよいですが、それは全くありがたくないので)。ただ、6章の続きを読んでも、このようにかける問題の全体像がわからなかったんです。

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

既に答えを知っているのにわざわざ双対問題にする必要があるのかってのもそうだけど、全体的に「カーネル関数はあなたがすでに知っている問題にも現れるんですよ」って説明の仕方だからなんか目新しくなくてつまんないなって思ったんだよな。でも、PRML では一般的な議論を避けて個別事例の双対性を示していくスタンスだったからそうならざるをえなかったんだな…。

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

逆に「学習システムの理論と実現」にあるレプリゼンタ定理から出発するともう少しわかりやすかったんです。「再生核ヒルベルト空間」という特定の性質をもつ関数空間から関数を探すならば、「サンプル点に対応する再生核(=カーネル関数)がつくる部分空間」の中に目的関数を最小にする関数があるんです。これは本来可算無限個の重みを求めなければならなかったところが有限個の重みを求めるので済むので、とてもお得です。だから再生核ヒルベルト空間がほしいんです。それは再生核となる Mercer カーネルを与えれば定まります。だから Mercer カーネルがほしいんです。僕たちが Mercer カーネルを選ぶのは「それなら内積の形でかけるから」とか「個別データの特徴よりもデータ間の類似度の方が設計しやすいから」とかではないんです(※ とかでも正しいです)。「再生核がほしいから」なんです。Mercer カーネルを1つ選んだとき、そこに再生核ヒルベルト空間が広がるんです。

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

ごめんよくわかんない。

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

ちなみに Mercer の定理やレプリゼンタ定理の証明までしたかったら学習システムの~の本にもそこまでは触れていないので、真面目に関数解析の勉強をしてください。また、カーネル法の入力は文字列や記号でもよいということですが、入力空間が満たすべき(=カーネル関数が級数展開できる)条件を知るには、より一般の測度空間を扱うための知識も必要です。

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

無理無理無理。

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

PRML の 6 章の残りですが、軽く流しましょう。6.4.5 節ですが、ガウス過程回帰を分類につかいたいということですね。出力が \{0,1\} の2値分類ならば、モデルの出力にロジスティックシグモイド関数を適用すればどちらのラベルであるかの確率に変換できます。変換する前の出力に対する事前分布はガウス過程回帰のときと同じです。学習データ点が N 点手に入ったときの未知の点に対する予測は (6.76) 式なんですね。解析的に解けないらしいです。

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

解けないのかよ! なんか解けるように上手くやってるのかと思ったのに!

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

ロジスティックシグモイド関数ガウス分布の重畳積分の近似公式が上巻の (4.153) 式にあって、これを利用して事後分布をガウス分布で近似するらしいですね。しかも解き方は3つあって、変分推論法、EP法、ラプラス近似ということです。分類問題をベイズ的に解くのはどれが定番というのはないのでしょうかね。多クラス分類にも対応できるかとか、計算量の違いとか特色があるんでしょうか。6.4.6 節ではこの内ラプラス近似がピックアップされていますね。…とばしていいですかこの節?

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

Mercer の定理やレプリゼンタ定理で力尽きてるだろこれ…。

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

最後の 6.4.7 節が「ニューラルネットワークとの関係」ということなんですが、この節はあくまで「ガウス過程とニューラルネットとの関係」であって「カーネル法ニューラルネットとの関係」という話ではないですね。内容としては、

  • ニューラルネットワークも、ベイズ的に重みの分布を更新することができる。
  • ニューラルネットの生成する関数がしたがう分布は、隠れ層のニューロン数を無限に増やした極限では 6.4.1, 6.4.2 節同様にガウス過程に近づくことが示されているが、この極限では出力ベクトルの成分間が独立になってしまうことに注意。
  • 特定の活性化関数を用いた場合のガウス過程の分散共分散行列は導かれているが、この場合のカーネル関数はもはや差 x-x' の関数とはならないことに注意。
  • 重みの事前分布を超パラメータで調整することも考えられる。超パラメータは「どのようなスケールの出力を出すか」「どのような範囲の入力に反応するか」を左右する。6.4.3 節では、共分散が超パラメータの関数であるときに超パラメータを最尤推定する手法を扱ったが、このときと同様、ニューラルネットの重みの事前分布を支配するパラメータも解析的に厳密に最適化はできないことに注意。

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

ニューラルネットも重みをベイズ更新すればガウス過程ととらえられるのか。で後ろ3点は、全部注意かよ。

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

本には注意とはかいてませんけどね。

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

…2段落目の最後の方の「『統計的な強度を借りる』」って何? カギカッコ付いてるから、正式な用語じゃなくて比喩的なフレーズなんだろうけど、意味わかんなくない?

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

原著をあたった方がわかりやすいかと思ってみてみたんですが、そのまま ‘borrow statistical strength’ だったんですよね。

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

何の解決にもなってないな。

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

でも、例えばニューラルネットの出力が身長と体重の2変数だったとして、身長を算出するために1つ手前の層の出力にかける重みが学習データ中の身長からのみ影響を受けるかというとそうではなくて体重からも間接的に影響を受けるはずですよね。…そんなニューラルネットの学習があるのかどうか知りませんが…。

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

そういえばジュンさっきこの節はあくまで「ガウス過程とニューラルネットとの関係」であって「カーネル法ニューラルネットとの関係」という話ではないっていってたけど、じゃあカーネル法ニューラルネットは何か関係あるの?

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

パーセプトロンの学習がレプリゼンタ定理にあてはまるクラス(解がサンプル点におけるカーネル関数の重み付き和でかける)であることは6章の演習問題 6.2 にそれを示せという問題があるんです。これの示し方は誤り訂正学習のときと同じです。w の初期値をゼロベクトルにすれば w = \sum_{n=1}^{N} \eta t_n \phi(x_n) になります。ただニューラルネットとの関係というには多層パーセプトロンとの関係が知りたいですよね。PRML の中でその話が出てくるかは見つけていませんが、最近発売された以下の雑誌にカーネル法ニューラルネットワークとの関係の話があるらしいです。

(次章も読むなら)つづく