こんにちは!ブレインズコンサルティングの大下です。
今回は、「あの論文を検証してみた!」のシリーズ第4回、Neural Processes の論文について解説します。 Neural Processes の論文を選んだモチベーションは、もともと確率とニューラルネットワークの合わせ技のモデルに興味があったところ、 Deepmind 社が、ICMLでガウス過程の深層学習版として提案した当論文が目に入って来たというところです。
検証環境
まずは、動作確認に使った検証環境を明記しておきます。
- Ubuntu 18.04.1 LTS (Bionic Beaver)
- CPU: Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz / 4 cores / 8 processors
- Memory: 48GiB
- HDD: 約193GiB (Available なサイズ)
- Python 3.6.5
- pycharm-community-2018.3.3
- pytorch 1.0.0
- Colaboratory(GPU)
本検証におけるアウトプット
- 当記事
- メモ用紙(極秘(笑))
省略語
Abbreviated | Full words |
---|---|
NN | Neural Network |
GP | Gaussian Process |
NP | Neural Process |
VAE | Variational Auto Encoder |
ELBO | Evidence Lower BOund (変分下界) |
概要
Neural Processes(NPs)は、ニューラルネットワーク(NN)とガウス過程(GP)のいいとこどりをしたニューラル潜在変数モデルの1種です。 ガウス過程(GP)のように、NPも関数(カーネル)上の分布を定義づけ、新しい観測データに対して、高速に適応する能力を持っているようです。(メタラーニングとしての側面を持つようです。)
NPは、よくある教師あり学習のように、学習・予測をすることもできますが、 複数の小データセットから、予測分布を推定することもできます。(以下は、Kaspar Martensより抜粋)
グラフィカルモデルと、計算グラフは、以下のように定義づけられています。(論文より抜粋)
ここで、 は、Context(文脈) を意味し、 は、Target(目的)を意味しています。 は、学習時にも予測時にものいずれも使用可能(既に取得済、観測済)で、 については、 は、学習時にも予測時にも使用可能(既に取得済、観測済)ですが、 は、学習時にしか使えない(取得できていない)ものとして考えます。
VAEの拡張
NPのELBO は、VAEをベースに拡張して構築されています。 ここでは、VAEからどのように、NPのELBOを導いているかを解明していきます。 (論文では、ロジックが飛んでいるため、その補足をします。)
VAEのELBO
基本的なVAEのELBO()は、以下のように表現できます。
\begin{align} \log p(Y) \geqq L = E_{q(z|Y)}[\log p(Y|z)] - KL[q(z|Y) || p(z)] \end{align}
ここで、 は、任意の確率分布(意味としては、p(z)の近似分布)でよいです。
この等式は、グラフィカルモデル(確率変数の接続構造)に依存しない点に注意します。
導出方法は、外部サイトの記事を参照ください。
条件付きVAEのELBO
条件付き分布 を使ったVAEでは、以下のように、 の変分下界(ELBO)を表現できます。
\begin{align} \log p(Y|X) \geqq L = E_{q(z|A)}[\log p(Y|z, X)] - KL[q(z|A) || p(z|X)] \end{align}
ここで、 は、任意の確率分布(意味としては、p(z|X)の近似分布)でよく、 は、任意の確率変数(ベクトル or リスト)でよい点に注意します。
また、基本的なVAEと同様に、この等式は、グラフィカルモデル(確率変数の接続構造)に依存しない点に注意します。
NPのELBOの導出
条件付き分布を使ったVAEのELBO の、 を以下のように定義します。 (はてブの数式の制約を回避するために、遠回りな定義になっています。)
\begin{align} Y &:= Y_T \\ \end{align}
\begin{align} X &:= X_G, Y_C = X_T, C \\ \end{align}
\begin{align} A &:= X_G, Y_G = C, T \\ \end{align}
ただし、
\begin{align} X_C &:= x_{1:m} \\ \end{align}
\begin{align} Y_C &:= y_{1:m} \\ \end{align}
\begin{align} X_T &:= x_{m+1:n} \\ \end{align}
\begin{align} Y_T &:= y_{m+1:n} \\ \end{align}
\begin{align} X_G &:= x_{1:n} = X_C, X_T \\ \end{align}
\begin{align} Y_G &:= y_{1:n} = Y_C, Y_T \\ \end{align}
\begin{align} C &:= X_C, Y_C \\ T &:= X_T, Y_T \\ \end{align}
ELBOの式に代入すると、
\begin{align} \log p(Y|X) \geqq L = E_{q(z|A)}[\log p(Y|z, X)] - KL[q(z|A) || p(z|X)] \end{align}
\begin{align} \log p(Y_T|X_T, C) \geqq L = E_{q(z|C, T)}[\log p(Y_T|z, X_T, C)] - KL[q(z|C, T) || p(z|X_T, C)] \end{align}
グラフィカルモデルを踏まえたELBOの検討
以降は、NPのグラフィカルモデルをシンプルにした下記のモデルを使って考えます。(本質的には、論文のグラフィカルモデルと同等である点に注意します。)
このグラフィカルモデルによる同時分布の分解式は、以下の通りです。
\begin{align} p(C, z, Y_t, X_t) = p(C)p(z|C)p(Y_t | z, X_t)p(X_t) \\ \end{align}
グラフィカルモデルと、導出したELBOの式(右辺)を比較参照すると、以下の点が疑問になります。
- ELBO()の第1項の について、 の分布に、 の観測(条件)の下で が影響するのか?
- は、head-to-tail モデルであるので、 の観測の下では、は独立。つまり、
- は、同時分布の分解式とベイズの定理から導出できます。
- ELBO()の第2項のKLの第2引数の について、 の分布に、の観測(条件)なく、 が影響するのか?
- は、head-to-head モデルであるので、 が未観測の(条件にない)場合、 は、独立である点に注意します。つまり、
- は、同時分布の分解式を に対して周辺化することで導出できます。
そこで、この2点の疑問について解消していきます。
ELBOの第1項
上記、グラフィカルモデルを用いて、 の第1項を簡略化できるか検討していきます。
グラフィカルモデルの同時分布(分解式)から、 の観測の下で、 が独立であることが導出できます。具体的な計算は、以下の通りです。
\begin{align} p(Y_t, C | z, X_t) &= \frac{p(Y_t, C, z, X_t)}{p(z, X_t)} \\ &= \frac{p(C)p(z|C)p(Y_t | z, X_t)p(X_t)}{p(z, X_t)} \\ &= \frac{p(z)p(C|z)p(Y_t | z, X_t)p(X_t)}{p(z, X_t)} \\ &= p(C|z)p(Y_t | z, X_t) \\ &= p(Y_t | z, X_t)p(C|z) \\ \end{align}
両辺を、 に対して周辺化すると( の変数で、積分すると) \begin{align} \int p(Y_t, C | z, X_t)dY_t &= p(C|z) \int p(Y_t | z, X_t)dY_t \\ p(C | z, X_t) &= p(C|z) \\ \end{align}
この式を、1つ前の式に代入すると
\begin{align} p(Y_t, C | z, X_t) &= p(Y_t | z, X_t)p(C|z) \\ p(Y_t, C | z, X_t) &= p(Y_t | z, X_t)p(C|z, X_t) \\ \end{align}
以上から、 の観測の下で、 が独立になります。 この導出方法は、(1変数)を(ベクトル変数、リスト、同時確率)に置き換えても成立するので、 についても同様に、 の観測の下で、 は、独立になります。
この条件付き独立性から、 が導けます。(つまり、 を省略できます。)
実際、計算すると、
\begin{align} p(Y_t | z, X_t)p(C | z, X_t) = p(Y_t, C | z, X_t) = p(Y_t | C, z, X_t)p(C | z, X_t) \\ \end{align}
両辺を、共通する で割って、以下の等式を得ます。(厳密には、 を保証するか、非ゼロになるように定義する必要があることに注意。)
\begin{align} p(Y_t | z, X_t) &= p(Y_t | z, C, X_t)) \\ \end{align}
また、、 と確率変数をベクトル(リスト、同時確率)とみなしても同じ議論が成立するので、
\begin{align} p(Y_T|z, X_T, C) = p(Y_T | z, X_T) \\ \end{align}
つまり、 の観測の下での の確率分布においては、(とは、における条件付き独立である) を条件から省略することができることを示しています。
ELBOの第2項
グラフィカルモデルを用いて、 の第2項を簡略化できるか検討していきます。
第2項・ の第2引数 について、周辺化することで、 を計算します。
\begin{align} p(z|C, X_T) &= \int p(z, y_T | C, X_T) dy_T \\ &= \int p(z|C)p(y_T|z, X_T)) dy_T \\ &= p(z|C) \int p(y_T|z, X_T)) dy_T \\ &=p(z|C) \\ \end{align}
ここで、1行目から2行目の式変形は、グラフィカルモデルによる同時分布の分解式から導出できる点に注意します。
以上より、 未観測の下での の確率分布においては、(未観測の下でとは独立である) を条件から省略することができることを示しています。
ELBO の簡略化
以上2つの結果から、第1項のでは、条件から を省略でき、第2項のでは、条件から を省略できるとわかりました。
これらを、 の式に代入し、以下の式を得ます。
\begin{align} \log p(Y_T|X_T, C) \geqq L = E_{q(z|C, T)}[\log p(Y_T|z, X_T, C)] - KL[q(z|C, T) || p(z|X_T, C)] \end{align}
\begin{align} \log p(Y_T|X_T, C) \geqq L = E_{q(z|C, T)}[\log p(Y_T|z, X_T)] - KL[q(z|C, T) || p(z|C)] \end{align}
この得られた不等式(or ELBO)が、今回の論文の 式(8) に一致することに注意します。
あとは、論文に記載されている通り、一般に、条件付き事前分布 の計算は困難であるため、近似分布 に置き換えたELBOを用いて、実装します。 (細かく言うと、 が に弱収束することを前提にするイメージですが、ここは、未確認&未証明です。)
先の不等式を、近似分布に置き換えて、以下の式を得ます。
\begin{align} \log p(Y_T|X_T, C) \geqq L = E_{q(z|C, T)}[\log p(Y_T|z, X_T)] - KL[q(z|C, T) || q(z|C)] \end{align}
この式が、論文の式(9) です。
学習に必要な分布
変分下界(ELBO)の式を構築できたので、具体的に学習に必要な分布の定義を行います。
学習に必要な分布は、以下の通りです。
- : 各 の真の条件付き分布(仮定)
- : NNによる近似分布
- : NNによる近似分布
分布の定義
以下のように、分布を定義します。
- (初期分布)
ただし、各記号は以下のように定義します。
- Const or Learnable (Deepmind社のコードでは、NNで学習させています。)
- (平均する関数)
上記定義に合わせた、計算グラフは、以下のようになります。(論文の計算グラフをもう少し、詳細化しました。)
補足
先の記述では、 が成り立つことを前提として定義していたので、ここで、導出しておきます。
以下のような、サブグラフを使って(に注目して)、導出します。
このグラフィカルモデルの同時分布の分解式を計算すると、以下のようになります。
\begin{align} p(z, Y_T, X_T) &= \prod_{t \in T} p(Y_t|z, X_t)p(z)p(X_t) \\ p(Y_T | z, X_T)p(z, X_T) &= \prod p(Y_t|z, X_t)p(z)\prod p(X_t) \\ &= \prod p(Y_t|z, X_t)p(z, X_T) \\ \end{align}
上記式を、共通項で、割って、無事、求める等式を得ます。
\begin{align} p(Y_T | z, X_T) &= \prod_{t \in T} p(Y_t|z, X_t) \\ \end{align}
どこが確率過程なの??
上記のようなグラフィカルモデル、計算グラフで、NNを使って確率モデルを実現できそうなことは、うすうす わかってきたのですが、 一体、どの部分を指して確率過程なのか?というところが疑問になります。
実は、当論文の「2. Model - 2.1. Neural processes as stochastic processes」に、記載されているのですが、個人的には結構わかりにくかったです。おそらく、わかる人には、すぐわかる書き方っぽい。。(わかりにくいけど、内容がちゃんとしているのは、やはりすごいです。)
ポイントを絞って、ひも解いてみたいと思います。(詳細は、論文を追ってみてください。)
まず、2つの確率過程によって生成される確率変数の集合と、その間の写像 を考えます。 ただし、写像 は、 を満たすような写像に限るとします。 この時、 は、確率過程になります。(で、が確率過程(と同一視可能)より)
この の確率過程をモデル化したのが、このNeural Processes になります。
では、この確率過程とNeural Processes のモデルがどうつながるかを、論文の2.1 節のポイントを絞って概説します。
確率過程と結合分布
ここで、 の確率分布をうまく定義することが目的です。 このうまく定義する確率分布の前提となるモデルが、これまで議論してきたグラフィカルモデルに繋がっていることを示します。
まずは、 に対して、 のように、 任意に選んだ有限個の確率変数に対する結合分布を以下のように記述します。 ( 上では、無限次元の結合分布を考えますが、まずは任意に選んだ有限個の確率変数に対する有限次元上の結合分布を考えます。)
\begin{align} \rho_T(y_1, \cdots, y_T) &:= \rho_T(Y_1=y_T, \cdots, Y_T = y_T) \\ &= \rho_T( F(X_1) = y_1, \cdots, F(X_T) = y_T) \\ \end{align}
ここで、 は、 に依存した有限結合分布です。
Kolmogorov's Extension Theorem より、この が、exchangeability と consistency を持つならば、 以下を満たす確率分布(は、確率過程 上の結合分布)が一意に存在することが言えます。 (exchangeability と consistency については、論文等をご参照ください。)
\begin{align} \rho_T(y_1, \cdots, y_T) = p(Y_1=y_1, \cdots, Y_T=y_T, \prod_{t=T+1}^{\infty}\mathbb{R}) \end{align}
つまり、に対する結合分布に対して、 上の興味がある任意の部分列 以外を周辺化した結合分布が、 上の結合分布に一致することを意味していいます。
結合分布とグラフィカルモデル
ここで、具体的に、をexchangeability と consistency を持つように定義することを考えます。
まず、consistency が成り立つように、 を、以下のように定義します。( は、 上の任意の確率測度としておきます。)
ここで、 が、 に対して exchangeability を持つために、以下のようなグラフィカルモデルを考えます。 (と が、で対応づくようにします。)
このモデルにおける各確率変数間の同時分布の分解式は、
\begin{align} p(y, f, x) = p(f)\prod_{t}p(y_t|f, x_t)p(x_t) \end{align}
の条件付き分布を計算すると、( を使います)
\begin{align} p(y, f | x) = p(f)\prod_{t}p(y_t|f, x_t) \end{align}
先の式に代入することで、このモデルでは、 を以下のように記述できます。
\begin{align} \rho_T(y_1, \cdots, y_T) &= \rho_T(y) \\ &= \int p(y, f | x)df \\ &= \int p(f)\prod_{t}p(y_t|f, x_t) df \\ \end{align}
このモデルでは、 は、 の条件の下で、独立です。 (つまり、)
結局、このように定義した、 は、exchangeability と consistency を持ちます。
結果、Kolmogorov's Extension Theorem より、上記のように定義した結合分布の集合(Collection) に対して、 唯一の が存在するため、 の右辺がこの に一致します。 (これは、Finetti's theorem (の条件付きバージョン)に対応するようです。)
具体的なモデル(実装)は、GPをベースに考えているため、 とします。
当節のグラフィカルモデルの を、 とすると、NPのグラフィカルモデルの右側が得られます。 ちなみに、残りのNPのグラフィカルモデルの左側は、 の生成過程をモデル化したものになります。 (結果的には、近似分布 を計算するためのモデルになります。)
関数のサンプリングとは?
いくつかの解説サイトで、関数のサンプリングというような言い回しがありますが、それは、 または、、 による ランダムな に対して、 を算出することを意味しているようです。
感想
この論文は、数学的な理論が背景にあり、読んでいて何か芸術性(美しさ)を感じました。 そして、グラフィカルモデルは、楽しかったです。
まとめ
- NP のELBO は、VAEを条件付きに拡張し、グラフィカルモデルの構造から分布を簡略化することで得られる
- NPにおける確率過程とは、確率過程 のことを指している
- ただし、確率過程は、確率過程 から、なんらかの変換(未知の変換)をした列とみなすことが前提
- つまり、が前提
- NPは、数学的な理論づけが、どこか美しい
- NPの実装・検証では、GPをベースにモデル化している
- 理論上は、GP以外の確率過程にも適用可能
- NPは、よくある教師あり学習の枠組みと、複数の小データセットからの推定(Few-Shot Learning)の枠組みも持つ
- Few-Shot の枠組みとしては、ベイズ更新を使う様子(これについては、またいつか・・・)
参考リンク
- [1807.01622] Neural Processes
- GitHub - deepmind/neural-processes: This repository contains notebook implementations of the following Neural Process variants: Conditional Neural Processes (CNPs), Neural Processes (NPs), Attentive Neural Processes (ANPs).
- Neural Processes · Issue #889 · arXivTimes/arXivTimes · GitHub
- Neural Processes as distributions over functions | Kaspar Märtens | Statistical Machine Learning for Health
- GitHub - kasparmartens/NeuralProcesses: Neural Processes implementation for 1D regression
- Neural Processes in PyTorch · Infinite n♾rm
- [DL輪読会]Attentive neural processes
- Attentive Neural Processes | OpenReview
- pixyzでAttentive Neural Processesを実装する - Qiita
- [1807.01613] Conditional Neural Processes
- Variational Autoencoder徹底解説 - Qiita
- https://qiita.com/sergeant-wizard/items/d5a60d9f9ec08ef2d907