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を使うだけで十分である気もする。