More Related Content Similar to Efficient Neural Architecture Searchvia Parameter Sharing
Similar to Efficient Neural Architecture Searchvia Parameter Sharing (8) Efficient Neural Architecture Searchvia Parameter Sharing2. 自己紹介
• 名前
• 伊藤 多一(いとう たいち)
• 仕事
• 1998~2004:ポスドク@韓国(理論物理)
• 2004~2013:(株)アイズファクトリーでデータ分析
• 2013~ 現在:(株)ブレインパッドでデータ分析・研究開発
• 最近気になっている分野
• 強化学習
• 量子コンピュータ
• 株価
3. 論文について
Efficient Neural Architecture Search via Parameter
Sharing
Authors:
Hieu Pham(Google Brain, Carnegie Mellon Univ.)
Melody Y. Guan (Stanford Univ.)
Barret Zoph, Quoc V. Le, Jeff Dean (Google Brain)
arxiv: https://arxiv.org/abs/1802.03268
github: https://github.com/melodyguan/enas
⇒著者の一人Melody Y. Guan氏によるTensorFlow実装(Python2系)
5. 0. 概要
• 既存のNAS(Neural Architecture Search)に⽐べて、計算コストが格段に
少なくて処理が速い新アルゴリズム(ENAS)を提唱
• 基本的アイデアは、アーキテクチャ探索の各ステップで現れる候補モデル間で
ネットワーク重みを共有すること
• 候補モデルごとにネットワーク重みが収束するまで学習しないで済むから、
計算コストが⼤幅に削減できる(GPU時間で既存手法の1000分の1)
• アーキテクチャを探索するコントローラは、⽅策勾配法を使って期待報酬を
最⼤化する部分グラフを選ぶよう学習する
• 著者の一人は、Jeff Dean(MapReduce, TensorFlowの開発者)
6. 1. 導入
• NASの解説
• ニューラルネットワークのアーキテクチャを⾃動で探索する⼿法(AutoMLの一つ)
• 画像分類と言語モデルのアーキテクチャ探索に上手く適用できた
• NASのアルゴリズム
• RNNによるコントローラを使って、候補アーキテクチャ(child model)を抽出
• child model を重みが収束するまで学習してその性能を評価する
• その性能指標を guiding signal として、より良いアーキテクチャを抽出するよう
RNNコントローラを学習する
• 以上を繰り返す
• NASの課題:
• 計算コストが⾼く、処理時間も⻑い(450個のGPU使って3-4⽇間かかる)
• 性能評価にしか使わない child model を収束するまで学習してしまうのがボトルネック
7. 1. 導入
• ENAS(Efficient NAS)
• NASの効率(efficiency)を改善する手法として
• すべての child models がネット―ワーク重みを共有するよう強制する
• この共有により、child model を収束するまで学習する無駄を回避
• 転移学習の前例から、特定のタスクのために特定のモデルで学習されたネットワーク重
みが、他タスクのため他モデルにおいて、そのままか少しの修正で転用できることが分
かっている
• 異なる child models 間でネットワーク重みを共有しながら学習しても上手くいくと期
待できる
• 実験してみたら、重み共有によりNASのパフォーマンスが著しく向上した
• CIFAR-10 の画像分類(エラー率)NAS 2.65% ⇒ ENAS 2.89%(同程度)
• Penn Treebank の言語モデル (パープレキシティ)NAS 62.4 ⇒ ENAS 55.8(改善)
• 計算コスト(GPU-hours)NAS 1,350-1,800 ⇒ ENAS 0.45(1000分の1に縮⼩)
9. 2. 方法
• リカレントセル(recurrent cell)の設計
• DAG、リカレントセル、コントローラの出⼒、の対応(下図)
• リカレントセルの探索空間
• 計算グラフのノード数:N
• 各ノードで選べる活性化関数:4種類(tanh, ReLU, そのまま, sigmoid)
• 異なるアーキテクチャ数:4N × N! ⇒ N=12 の場合、1015 通り
10. 2. 方法
• ENASの学習とアーキテクチャの導出
• ENASの学習は、コントローラ(パラメータ θ)と child models(パラメータ ω)
の学習からなる
• コントローラは、100個の隠れ層からなるLSTMであり、ソフトマックス分類器を
介して⾃己回帰的に(前ステップで抽出したノードをそのステップの入力として)
ノードを抽出する
• child model のパラメータ ω は、全ての child models で共有されている
• 学習は、コントローラと child models の学習を交互に繰り返す
• 第1フェーズ:ωを学習する
• 第2フェーズ:θ を学習する
• 第1フェーズと第2フェーズを交互に繰り返す
11. 2. 方法
• 第1フェーズの詳細
• 標準的な交差エントロピー損失L(m; ω)の方策分布 π(m,θ) から生成される child model
m に関する期待値の ω 勾配をモンテカルロ法で計算する
• この勾配に確率的勾配法(SGD)を適用して ω を更新する
• M=1(child model が1個)の場合でも学習が進むことが分かっている
12. 2. 方法
• 第2フェーズの詳細
• 報酬関数 R(m; ω) の child model m ~ π(m,θ) に関する期待値を最大化するように
θ を更新する
• 具体的には、REINFORCEアルゴリズムによる方策勾配法とAdamを使って更新を実施
• 過学習を避けるため、報酬関数 R(m; ω) は検証用データについて計算する
• 報酬関数は、検証用データで計算したモデル精度として定義する
RNN:パープレキシティの逆数
CNN:判別正解率
• アーキテクチャの導出
• ⽅策 π(m,θ) のもとで幾つかのモデル(アーキテクチャ候補)を生成する
• 検証用データからサンプリングした単一のミニバッチについて、モデルごとに報酬を計算
(計算コストが節約できる)
• 報酬が最大となるモデルを選択して再学習する
QをR(m;ω)で置き換える
13. 2. 方法
• 畳み込みネットワーク(CNN, convolutional network)の設計
• コントローラによる選択決定:
1. レイヤーにおける計算処理の選択(6種類から)
2. そのレイヤーとスキップ接続するレイヤーの選択
3. 1と2を交互に実施する
• 生成されるネットワークのパターン数
• 6L x 2L(L-1)/2 ⇒ 1.6 x 1029(L=12の場合)
6種類の計算処理
• convolution 3x3, 5x5
• separable convolution 3x3, 5x5
• max pooling 3x3
• average pooling 3x3
LSTMコントローラによる選択
選択されたCNNアーキテクチャ
(点線はスキップ接続)
14. 2. 方法
• 畳み込みセル(convolutional cell)の設計
• 畳み込みセルのノード数:B(node 1, node 2, ..., node B)
• コントローラによる選択決定:
• node1, node2 は入力とする(直近のネットワークのセルから選択)
• 残りの B-2 個のノードについて以下の選択決定を行う
• 当該ノードの入⼒として、直前までのノードから2ノードを選択
• それら2ノードに作用する計算処理を選択(5種類から)
• 縮⼩セル(reduction cell)の設計も同様に行う
5種類の計算処理
• identity(そのまま)
• separable convolution 3x3, 5x5
• average pooling 3x3
• max pooling 3x3
15. 2. 方法
• 生成されるセルのパターン数
• 畳み込みセル:(5 x (B-2)!)2
• 畳み込みセル + 縮⼩セル:(5 x (B-2)!)4
• B=7 の場合 1.3 x 1011
パターン数の数え方
[ [ノードの選択数5]
× [(B-2) 個のノードのつなぎ方の数 (B-2)! ]
] ** [セルの入⼒ノード数 2]
16. 3. 実験
• Penn Treebank を使った言語モデル
• GPU 1個を10時間まわしてリカレントセルを探索
• パラメータ数の上限を 2,400万とした
• 性能評価はパープレキシティ(PPL)で測る
• 実験結果
パープレキシティ(PPL)
確率の逆数 ⇒選択肢の数
PPLが⼩さいほど高精度
18. 3. 実験
• CIFAR-10 を使った画像分類
• 実験結果(性能評価は、エラー率)
ネットワーク構造の探索
(macro search)
セル構造の探索
(micro search)
ENASの評価
• NASとの⽐較
• 精度では互角
• 計算コストは1,000分の1
• DenseNetとの⽐較
• 精度では負けてる
• パラメータ数が5分の1
21. 3. 実験
• ランダムサーチとの⽐較
• Penn Treebank(PPL):ランダム 81.2 > ENAS 55.8
• CIFAR-10(エラー率):
⇒ENASはランダムサーチよりも⾼精度のモデルを実現
• コントローラの更新を行わない場合
• ENAS macro で⽐較(エラー率)
• 更新なし 5.49% > 更新あり 4.23% ⇒コントローラの学習が決定的
ランダム macro 5.86% > ENAS macro 4.23%
ランダム micro 6.77% > ENAS micro 3.54%
22. 4. 関連研究と議論
• SMASH
• one-Shot Model Architecture Search through Hypernetworks
https://arxiv.org/abs/1708.05344
• hypernetworks(?)を使ってネットワーク重みを生成する
• hypernetworks を使うことで、候補アーキテクチャの重みが低ランク空間に制限される
⇒ 低ランク空間でパフォーマンスのよいアーキテクチャしか⾒つけられない
(ENASではこうした制限はない)
23. Tensorflow実装を試す https://github.com/melodyguan/enas
• アーキテクチャの出⼒
[2] → 第1層は ’2: sepconv 3x3’
[5 0] →第2層は ’5: max pool’ スキップなし
[5 1 0] →第3層は ’5: max pool’ 第1層とスキップ接続
• 試しにやってみた ※ちゃんとした検証ではないです
• ピザとお好み焼きの画像識別モデル
• 学習300、検証200、テスト200の画像ペア
• 人⼒モデル&転移学習モデルと⽐較
• 24層で90.5%の正解率
• 転移学習モデル(93.5%)には及ばなかった
[2]
[5 0]
[5 1 0]
[1 0 1 1]
[0 1 0 1 0]
[5 0 0 1 1 0]
[1 0 0 0 0 0 0]
[4 0 0 1 0 0 1 1]
[4 0 1 0 1 0 0 0 1]
[2 0 0 0 1 0 0 0 1 0]
[2 0 1 0 0 1 1 1 1 1 1]
[0 0 0 0 0 1 0 0 0 1 0 0]
[0 0 1 0 0 0 0 0 0 1 1 0 0]
[4 1 0 0 0 1 0 0 0 1 1 0 1 1]
[5 0 1 0 1 1 1 0 1 0 1 0 0 0 0]
[4 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0]
[4 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0]
[5 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0]
[5 0 0 1 1 0 0 1 0 1 1 1 0 0 1 1 1 0 0]
[4 0 0 1 0 1 0 1 1 0 0 1 0 0 1 1 0 0 1 0]
[0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0]
[2 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0]
[2 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0]
[5 0 0 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0]
ENASによる24層NNの
アーキテクチャ出⼒
24. 感想
• アイデアが素敵に思える
• LSTMを強化学習するという発想
• 転移学習から重み共有を思いつくところ
• 案件でも使えそう
• GPU1個を1⽇まわせば、それなりの結果がでる
• ただし、レイヤー数、フィルタ数はあらかじめ決める必要あり
• TensorFlow実装には、論文に書いてない工夫が随所にある
• スキップ接続の生成には attention mechanism を使ってる
• 人間があらかじめ考えてる部分も多い
• 他のモデル最適化と⽐べてどうなのか?
• ベイズ最適化
• その他の NN による手法