toaruharunohi’s diary

機械学習系会議の論文/資料の要約

要約: Neural Optimizer Search with Reinforcement Learning

http://proceedings.mlr.press/v70/bello17a/bello17a.pdf

ICLR17のoral枠のNeural Architecture Search with Reinforcement Learningの手法を応用してOptimizer自体を最適化することを目指した研究

Optimizerの更新規則の表現方法

この論文では、Optimizerの更新規則自体を最適化することを目指す。
その上で、Optimizerの更新規則を以下の式を(場合によっては再帰的に)用いて表現することとする:
f:id:toaruharunohi:20170731222746p:plain
ここで、u_1とu_2は入力変数が1つの関数を、bは入力変数が2つの関数を、op_1とop_2は入力として何を使うかを表現している。
例えばSGDを表現したい場合、u_1とu_2にはidentity mapping(つまり入力をそのまま出力させるだけの関数)を、bには積を、op_1とop_2にはそれぞれ勾配と定数(例えば1など)を設定すれば良い。
RMSPropを表現したい場合、u_1にはidentity mappingを、u_2にはSquare rootを、bにはu_1(op_1) / u_2(op_2)を、op_1とop_2にはそれぞれ勾配と勾配の二乗の移動平均を設定すれば良い。
またADAMを表現したい場合、上記の式を1度使うだけでも表現できるし、以下のように再帰的に二度使うことによって表現することも可能である。
f:id:toaruharunohi:20170731223707p:plain

Controllerの定義

Controller(optimizerのデザインを出力するモデル)は、毎回の試行に際しOptimizerの更新規則を出力する。
この論文ではRNNを用いてControllerを構成する。RNNは毎回5n個(nは学習時には固定)の要素を出力し、その出力を元に更新規則を定義する。(以下の図を参照)
f:id:toaruharunohi:20170731224401p:plain

Neural Architecture Search with Reinforcement Learningで用いられている方法と感覚的には近い。

Controllerの学習方法

前段のNeural Architecture Search with Reinforcement LearningではREINFORCEを用いて学習を行なっていたが、この論文では学習が高速化されるということでTrust Region Policy Optimizationを使用したと述べられている。
学習はNeural Architecture Search with Reinforcement Learningで用いられた分散技術を利用して行う。

Optimizerの良さは、二層構造の単純なCNNを学習させて得られる精度を見て判断している。
というのも単純なモデルの学習がうまくできるOptimizerはより複雑なWide Residual Networkなどでもうまく動くだろうということでそうしたとのこと。 また学習は5 epoch回すだけにしたと述べられている。実験はCPU100個で1日以内に終了したとのこと。

実験

学習の設定

u_1、u_2、b、op_1、op_2として使ったものは以下の通り:
f:id:toaruharunohi:20170731225644p:plain
ここでm、v、γのhatはそれぞれg、g2、g3移動平均

実験はCifar10で行なって得られた結果のみが掲載されている。

結果

時間経過に伴ったReward Functionの推移。どんどんRewardが増えていっている。
f:id:toaruharunohi:20170731230638p:plain

最終的に得られたOptimizerの更新規則の中で、以下の二つが良さげだったとのこと:
f:id:toaruharunohi:20170731231035p:plainf:id:toaruharunohi:20170731231040p:plain

これら二つの更新規則を用いて300 epoch分学習させた場合の精度曲線はそれぞれ以下の通り:
f:id:toaruharunohi:20170731231120p:plain f:id:toaruharunohi:20170731231122p:plain

得られたOptimizerをより深いモデルへ応用

上記二つの更新規則を用いてWide ResNetを学習させた場合の精度曲線はそれぞれ以下の通り:
f:id:toaruharunohi:20170731232213p:plain f:id:toaruharunohi:20170731232215p:plain

至極いい感じ。

GNMT(Google Neural Machine Translation)への応用

GNMTを学習させる際に、Neural Optimizer Searchで得られた良さげな更新規則の一つを用いた場合の結果:
f:id:toaruharunohi:20170731231441p:plain

ADAMより良さげ。
なおGNMTの学習は本来ADAM+SGDで行われているため、強いていうならそちらの値との比較もほしいところ。

その他感想

  1. Neural Architecture Searchよりも実験が小規模であり、そこまで計算資源がないチームでも頑張れば再現実験ができそう。
  2. Controllerの出力が可変長でないのであればBayesian Optimizationを使うだけで十分である気もする。

要約: Bayesian Learning via Stochastic Gradient Langevin Dynamics

https://www.ics.uci.edu/~welling/publications/papers/stoclangevin_v6.pdf

著者はMax WellingとYee Whye Tehの二人。

θをモデルパラメータとしてもつxの確率分布p(x|θ)を考える。
またθは事前分布p(θ)を持つとする。
データX={x1, x2, …, xN}を観測した場合に得られるθの事後分布p(θ|X)からパラメータθをサンプリングすることを考える。

Langevin Dynamics

Langevin Dynamics (ランジュバン動力学)はMCMCの一種である。事後分布p(θ|X)からパラメータθをサンプリングしたい場合に利用可能な手法の一つである。
具体的には、パラメータθを以下のΔθtを用いてθt+1t+Δθtというように変化させていく:
f:id:toaruharunohi:20170622184928p:plain

ここでNは全サンプルの数である。
また、ノイズを除いた部分はp(X|θ)p(θ)の微分値となっていることに注意したい。
これをMetropolis-Hastings法と組み合わせることによってp(θ|X)からパラメータθをサンプリングすることができる。なおεを小さくすると棄却率が0に近づいていくらしい(離散化誤差が減少するため)。
詳細はMCMC Using Hamiltonian Dynamicsを参照。

Stochastic Gradient Langevin Dynamics

Langevin DynamicsにおけるΔθtを得るためには、全サンプルについてのp(xit)の勾配を計算して足し合わせる必要がある。
しかしデータセットの規模が大きい場合には全サンプルについて毎回計算することは大変である。
そこで、以下のように確率的に選択したサンプルだけを用いてΔθtを計算するStochastic Gradient Lengevin Dynamicsを提案:
f:id:toaruharunohi:20170622190812p:plain

ここでεtは次の条件を満たすように設定する:
f:id:toaruharunohi:20170622190819p:plain

なお著者らは、εが0に近づくとLangevin DynamicsではMetropolis-Hastings法の棄却率が0に近づくことを踏まえてStochastic Gradient Lengevin DynamicsではMHを無視することとしている。

t→∞において得られるθtが実際に事後分布p(θ|X)から得られるサンプルに近づいていくことの説明

全体の勾配をg(θ)、確率的に選択したサンプルを用いて計算した勾配をh(θ)として定義する:
f:id:toaruharunohi:20170622192838p:plain
f:id:toaruharunohi:20170622192844p:plain

また、ε0<<1であり、ステップtsとts+1を、以下の式を満たすような部分列の先頭と最後のindexとする:
f:id:toaruharunohi:20170622194919p:plain

この時、g(θ)の勾配が滑らかに変化し、またminibatchがランダムに選択されるということを仮定すれば、ステップtsからts+1までの確率的な勾配の和は以下が成り立つ:
f:id:toaruharunohi:20170622193218p:plain
f:id:toaruharunohi:20170622193646p:plain

パラメータθがtsとts+1の間でそこまで変わらないとすると、二列目の式よりこの和はminibatchのランダム性に大きく依存すると考えられる。 また最後の式よりこの和は全体の勾配に対してO(ε0)の差分があることが言えるが、ΔθtにはO(√ε0)のノイズを加えることを考えると、Stochastic Gradient Langevin Dynamicsで得られるθの列は、step sizeがε0で固定されたLangevin Dynamicsで得られるものに近づいていくだろうと述べている。

勾配の大きいθから勾配の小さいθに進んでいくにつれて確率的最適化を行っているような状態から事後分布からのサンプリングを行っているような状態に自然に変化していくと言えるとも述べている。

人工データでの実験

人工的に作った確率分布を用いたパラメータθのサンプリング実験:
f:id:toaruharunohi:20170622200609p:plain
上二つの図より綺麗に事後分布が得られることがわかる。また、左下の図より途中までは勾配についてのNoiseが支配的であるが途中から追加するノイズの方が支配的になることがわかる(なお図中のθ1とθ2は二つあるモデルパラメータの一方ともう片方を意味している)。 この実験結果から実際に途中から事後分布からのサンプリングの様相を呈しているのではないかと想像することができる。
このほかにLogistic RegressionとICAについても実験を行っている。

後続の論文

Stochastic Gradient Riemannian Langevin Dynamics on the Probability Simplex
Approximation Analysis of Stochastic Gradient Langevin Dynamics by using Fokker-Planck Equation and Ito Process

要約: Using Deep Learning to Reveal the Neural Code for Images in Primary Visual Cortex

https://arxiv.org/pdf/1706.06208.pdf

この論文では、猿に見せた画像を入力として猿のV1(一次視覚野)のニューロン355個それぞれの発火を予測するようなCNNの学習を試みている。

予測のために用いたモデルは以下: f:id:toaruharunohi:20170621194543p:plain

発火予測実験を通じて以下の結果を得ている:

  • 学習されたモデルにより予想されたニューロンの発火率は、実際にニューロンが発火したかどうかと非常に高い相関(r=0.56±0.02)があった。
  • 線形モデルを用いた場合に得られる相関はr=0.008±0.003とCNNを用いて予測した場合と比べてかなり低かった。
  • 実験で発火を予測する対象とした355個のニューロンのうち、54個はかなり理論値に近い予測精度を発揮するモデルを学習させることができた。
  • 方位選択性のあるニューロンはそうでないニューロンに比べCNNによる発火予測の精度が高かった。

さらに、Deep Dream風の手法を用いて各ニューロンを予測する出力変数がどのような画像に反応するかを可視化した結果が以下: f:id:toaruharunohi:20170621194624p:plain

単純なものに反応するようなニューロンもある一方で、抽象的なものに反応するようなニューロンもあるということが予想できるような新たな結果が得られている!

要約: Multi-view Recurrent Neural Acoustic Word Embeddings

https://arxiv.org/pdf/1611.04496.pdf

音声データと文字列データについて、両者の共通空間への射影をそれぞれ学習させる研究。 目標は文字列cとして表現される単語を発音する音声データxがあった時に、両者を音声データの共通空間への射影f(x)と文字列データの共通空間への射影g( c)を用いてそれぞれ共通空間に飛ばし、その空間におけるf(x)とg( c)のcosine類似度が大きくなるようfとgを学習させることである。

評価関数

以下の4種類の評価関数を使用してfとgを学習させる。 f:id:toaruharunohi:20170619233637p:plain f:id:toaruharunohi:20170619233646p:plain また、marginをadaptiveに設定することも試している: f:id:toaruharunohi:20170619234614p:plain ここで、editdisはLevenshtein距離(編集距離)である。このmargin設定法はobj0についてのみ試しているとのこと。

射影のためのNetwork

f:id:toaruharunohi:20170619233707p:plain

実験

学習したモデルが音声データ/文字列データの類似度を計測する能力があるかを確認するために実験を三つ行っている。

二つの音声データが与えられ、それが同じ単語を発音しているかどうかを見分ける実験

f:id:toaruharunohi:20170619234217p:plain

音声データと文字列が与えられ、それらが同じ単語のものかどうかを見分ける問題

f:id:toaruharunohi:20170619234246p:plain

文字列二つが与えられた場合に、その文字列のLevenshtein距離と学習したモデルによって計算された類似度の間にどの程度相関があるかを計測する実験

f:id:toaruharunohi:20170619234408p:plain

可視化

t-SNEを用いた特徴量の可視化も行っている。同じ単語を発音している音声データは同じような場所に、またLevenshtein距離の近い文字列は同じような場所に射影されることがわかる。

要約: Bayesian Optimization with a Finite Budget: An Approximate Dynamic Programming Approach

https://papers.nips.cc/paper/6188-bayesian-optimization-with-a-finite-budget-an-approximate-dynamic-programming-approach.pdf

N回しか関数実行ができないという設定のもとでのBayesian Optimizationのアルゴリズムを考える論文。 Bayesian Optimizationは基本的に次のステップだけを考えるgreedyなアルゴリズムであるが、この論文ではrollout[1]という近似DPアルゴリズムを活用して数ステップ分の先を考慮しながら選択を行う手法を提案している。

はじめに、N-step目までの報酬をなるべく大きくするためには1-step目の選択をどうするべきかを考える。
k-step目のrandom disturbanseをwr、control(方策と考えて良い)をur、状態をzr、得られる報酬をrk(zk, uk, wk)、動的システムの状態を吐き出す関数をF(zk, uk, wk)とすると、N-step目に得られる報酬をなるべく大きくするためには、以下の式を入れ子式に解いていき、最後に得られたu1=J1(z1)を1-step目の方策として採用すれば良いわけである: f:id:toaruharunohi:20170619221527p:plain (なお上記の期待値はrandom disturbanseについてとっている)

Bayesian OptimizationのN回目までの利得関数の和を最大化したい場合には、上記の報酬r_kとして対象とする利得回数をそのまま採用すれば良い。 が、上記の式をそのまま解くのは大変である。

そこで、入れ子式に最大値を求めていくことにより最適な方策を求めるという戦略を捨て、代わりに最適なpolicyと近そうなbase policy πをこちら側で定義して(後方の説明参照)、そのpolicyを用いて次のステップのxを選択するという戦略を採用する。こうすることで非常に計算の大変な入れ子式に最大値を求める処理を省略することが可能になる。
また、期待値を計算する際は実際に積分を計算することは困難なのでガウス-エルミート求積法による近似計算に置き換える。
まとめると以下の式中に出てくるH~n(Sn)で上記のJnを置き換えることになる: f:id:toaruharunohi:20170619223328p:plain なおαnガウス-エルミート求積法の係数である。またSnはサンプリングしたxとそのxをもとにGPからサンプリングした出力値fのペアの集合である:
f:id:toaruharunohi:20170619223701p:plain

base policyとしては、N-step目(最終step)でなければExpected Improvement(EI)を最大化するxを選択し、N-step目であればGPの平均値を最小にするxを選択するという戦略を採用している。

実験結果はいい感じ。

Reference

[1] D. P. Bertsekas. Dynamic programming and optimal control, volume 1. Athena Scientific, 1995

要約: One Model To Learn Them All

https://arxiv.org/pdf/1706.05137.pdf

Google Brainからの論文

多様なドメインからなる複数タスクを同時に学習することのできるMultiModel Architectureを提案。
MultiModelは「入力データから前半部の中間特徴量への変換器」と「後半部の中間特徴量からの出力データへの変換器」をタスクごとに用意し、「前半部の中間特徴量から後半部の中間特徴量への変換器」はタスク間で共有するというような構造になっている。
なおこの論文ではタスクごとに用意するNetはModality-Netと呼んでいる。 f:id:toaruharunohi:20170619195707p:plain

「前半部の中間特徴量から後半部の中間特徴量への変換器」は、①Modality-Netによって出力された中間特徴量をEncoderで変換→②EncoderとDecoderの出力をMixerで変換→③Mixerの出力をDecoderで変換、という流れで変換をしており、得られたDecoderの出力をModality-Netに入力することによって出力を生成する。
Encoder / Mixer / Decoderの図は以下。複雑。 f:id:toaruharunohi:20170619201254p:plain

実験ではMultiModelを用いて8種のタスクを同時に解くということに取り組んでいる。 タスクによっては精度が向上しているものの、ImageNet識別や英語からドイツ語への翻訳タスクのようにほぼ精度が変化していないタスクもあった。 f:id:toaruharunohi:20170619203939p:plain

確かに複数タスクで学習させることによってモデル正則化の効果を引き起こすことができるということは示唆できているかもしれないが、精度が上昇したタスクについてはそもそもそのタスクに対して複雑すぎるモデルを用いているのではという気もする。