>100 Views
April 22, 19
スライド概要
2019/04/15
Deep Learning JP:
http://deeplearning.jp/seminar-2/
DL輪読会資料
【DLHacks LT】The Neural Process Family −Neural Processes関連の実装を読んで動かしてみる− Presenter: Tatsuya Matsushima @__tmats__ , Matsuo Lab 1
この発表について • Neural Processes関連の実装がDeepMindから公開されたので,読んで動かしてみる • Github: https://github.com/deepmind/neural-processes • Colabで動くようにもなっている • Neural Process Family • Conditional Neural Processes (CNPs) • Neural Processes (NPs) • Attentive Neural Processes (ANPs) • 論文の詳細はDL輪読資料を読むと良さげ • [DL輪読会]Conditional Neural Processes https://www.slideshare.net/DeepLearningJP2016/dlconditional-neural-processes • [DL輪読会]Attentive neural processes https://www.slideshare.net/DeepLearningJP2016/dlattentive-neural-processes 2
NP Familyのお気持ち NP Familyでやりたいこと • データセット何らかの構造を共有しており,新たなcontextのデータセットが得られた場 合に,contextのデータセット全体を入力しとして,targetに対する予測を行う • 例) パラメータを持つ関数から,データセットごとにパラメータが違う関数からデータがやっ てくる(ただし関数形はずっと同じ).few-shot learning • MAMLなどメタ学習手法とやりたいことは似ている • meta-trainとmeta-testの関係 • 出力された関数に関して不確実性もモデリングしたい • データが少ない部分に関してはちゃんと不確実性が高いようにモデリングしたい 3
Conditional Neural Processes (CNPs) Conditional Neural Processes • https://arxiv.org/abs/1807.01613 (Submitted on 4 Jul 2018) • Marta Garnelo, Dan Rosenbaum, Chris J. Maddison, Tiago Ramalho, David Saxton, Murray Shanahan, Yee Whye Teh, Danilo J. Rezende, S. M. Ali Eslami • DeepMind • https://github.com/deepmind/neural-processes/blob/master/conditional_neural_process.ipynb • 著者実装 • DeepMindが実装公開するのめずらしい... 4
CNPsの全体像 Encoder (e) • contextのデータ点(xとyのペア)で共通のネットワーク • ここではMLP Aggregator (a) • contextの情報を集約して一つの変数にする • ここでは,mean aggregation(Encoderの出力の平均)を用いている Decoder (d) • ターゲットのxに対する予測yの分布を出力 • 分布のパラメータを出力する (ここではMLPでガウス分布のパラメータを出力) 5
1D Regressionのデータセット Gaussian Kernelを用いたガウス過程(GP)を使ってデータを作成 (1D Regression) • Gaussian Kernel k(x, x′)$ = σf2 exp | x − x′$|2 − 2l 2 ) ( Knn′$ = k(xn, xn′)$ • Gaussian Kernelを使って関数をサンプリング f ∼ p( f ) = N( f | 0,K ) • ここでは各iterationごとにGPのパラメータは固定 6
1D Regressionのデータセット Data generator • Gaussian kernel x − x′$ | x − x′$|2 l2 σf2 exp | x − x′$|2 − 2l 2 ) ( あとでコレスキー分解するので 7
1D Regressionのデータセット Data generator • 関数をサンプル ・・・ 共分散行列をコレスキー分解 ガウス分布にスケールとしてかける ・・・ queryはcontextの(x,y)のペアとtargetのx 8
CNPsの実装 Encoder(e)とAggregator(a) • contextのペア(x,y)を入力 としてrepresentationを出力 contextのxとyをconcat 適当なMLPに通す(e) meanを取ることで集約 9
CNPsの実装 Decoder(d) • representationとtargetのxを ・・・ 入力として分布のパラメータ を出力 representationと ・・・ targetのxをconcat 適当なMLPに通す(d) 分布のパラメータを出力 ガウス分布 10
CNPsの実装 モデル全体 ・・・ • contextの(x,y)のペアを入力 targetのxに対する分布を出力 • 対数尤度の最大化として学習 学習時はtargetのyの 対数尤度を出力 対数尤度の最大化 としてlossを定義 11
CNPs実装を回した結果 • なんかうまくできているような気もする (context数は最大10とした) • データが少ないところでの不確実性の評価ができてる • GPのように滑らかではない 0 iter 20,000 iter そもそもGPみたいにGaussianカーネルの 仮定をしてないので当然といえば当然 40,000 iter 100,000 iter 200,000 iter 12
Neural Processes (NPs) Neural Processes • https://arxiv.org/abs/1807.01622 (Submitted on 4 Jul 2018) • Marta Garnelo, Jonathan Schwarz, Dan Rosenbaum, Fabio Viola, Danilo J. Rezende, S.M. Ali Eslami, Yee Whye Teh • DeepMind • https://github.com/deepmind/neural-processes/blob/master/attentive_neural_process.ipynb • 著者実装 • contextのデータペアから潜在変数を推論するのがCNPsとの差分 これ 13
1D Regressionのデータセット Gaussian Kernelを用いたガウス過程(GP)を使ってデータを作成 (1D Regression) • iterationごとにカーネルパラメータはランダムに設定する(CNPsの実験との違い) • 各iterationごとに関数の形状は共通している(ガウスカーネル) • CNPの実験より難しくなっているはず • contextを使って新しいカーネルパラメータにadaptする必要がある 14
NPsの全体像 Encoder (e) • Deterministic PathとLatent Pathを用意 • Deterministic PathはCNPsと同じ • Latent Pathは q(z | sc) を推論 Aggregator (a) • 各ペアのcontextを集約して一つの変数にする • ここではmean aggregationを利用 Decoder (d) • ターゲットのxに対する予測yの分布を出力 • 分布のパラメータを出力する (ここではMLPでガウス分布のパラメータを出力) 15
CNPsの実装 EncoderのLatent Path • 分布として出力 contextのxとyをconcat 適当なMLPに通す(e) meanでaggregate 分布のパラメータを出力 16
NPsの実装 モデル全体 ・・・ • train時はtargetのペアから作成した Prior posteriorをcontextから作成した priorに近づける項を追加 posterior ・・・ targetの 対数尤度 kl項 17
NPs実装を回した結果 • なんかうまくできているような気もする (context数は最大50とした) • 分散の評価はそれなりにちゃんとできてそう • この場合モデルの評価ってどうすれば 0 iter 20,000 iter いいんですかね 40,000 iter 100,000 iter 200,000 iter 18
Attentive Neural Processes (ANPs) Attentive Neural Processes • https://arxiv.org/abs/1807.01622 (Submitted on 17 Jan 2019) • Hyunjik Kim, Andriy Mnih, Jonathan Schwarz, Marta Garnelo, Ali Eslami, Dan Rosenbaum, Oriol Vinyals, Yee Whye Teh • DeepMind • https://github.com/deepmind/neural-processes/blob/master/attentive_neural_process.ipynb • 著者実装 • Mean aggregationによるunder-fittingを避けるためにattentionを導入したのがNPsとの差分 • aggregationで使っているcross-attentionをuniformにすればNPsと同じになる • 論文中になんでmean aggregationのせいなのかはあんまり説明がないような気が…. 19
ANPsの全体像 Encoder (e) • Deterministic PathとLatent Pathを用意(NPsと同じ) • self-attentionをかける(ただし1D regressionではやってない) Aggregator (a) • Deterministic Pathにkey(contextのx)と query(targetのx)を用いたcross-attentionをかける Decoder (d) • ターゲットのxに対する予測yの分布を出力 • 分布のパラメータを出力する (ここではMLPでガウス分布のパラメータを出力) 20
ANPsのattention Aggregator (a)にcross-attentionを用いる • Encoderの中でattentionのlayerを通す • 実装のDeterministicEncoderの中 21
ANPs実装を回した結果 • Colab走りきらなかったごめんなさい(あとで追加します) (context数は最大50とした) • colab参照 0 iter 40,000 iter 100,000 iter 20,000 iter 200,000 iter 22
感想 • ハイパラいっぱいふってみて実験してみたい • カーネルの形状を事前知識として与えずに,データから学習させたい気持ちはわかる • MAMLとかのmeta-learning系の研究そうだもんね • NPのLatent PathとDeterministic Pathを共存させる意味はなんだったのだろう • 論文的には,両方使ってもいいしどちらかでも良い,みたいな書きかた • グローバルな潜在変数を持つモデル vs one-step adaptationどちらがいつ良いのだろうか • DeepMindはグローバルな潜在変数のモデル推し(NP,GQNなど) • UCバークレー(BAIR)はone-step adaptation推し(MAMLベースの手法) 23