原著論文を読んだので備忘録がてらまとめた。
Baker et. al. (2017) "Desiginig Neural Network Architectures Using Reinforcement Learning"
https://arxiv.org/pdf/1611.02167.pdf
論文概要
- 畳み込みニューラルネット(CNN)は各層の定義の自由度が高く、その分エンジニアによる手作業(匠の技?)が必要
- 各層を{畳み込み層、プーリング層 、全結合層}いずれにするか
- 上記を選んだうえで、どのようなハイパーパラメータをセットするか(畳み込み層ならフィルタの数、フィルタサイズ、ストライド)
- 本論文では強化学習モデルにより上記の作業を自動化することに成功(MetaQNNモデル、添付Figure2参照)
- 層の種類とハイパーパラメータ候補(状態空間)から、各層においてどの種類の層とパラメータを強化学習により選択
- 例えば、Layer1でC(64,3,1)を選ぶと畳み込み層、3x3のフィルタを64枚、ストライドは1x1と設定
- 単純なQ学習だけだと、1)状態空間が広大であると学習が進まない、2)過度の最適化は局所最適に陥るリスクが高い、という問題があるので、2)に対してε-Greedyメソッドで過度の最適化を抑え、1)に対してexperimental replayメソッドで効率化を図る
- 結果として、既存のエンジニアによる手作業で構築されたCNNと比べ、4つのデータサンプル全てにおいて低エラー率のモデルを構築することができた(添付Table3参照)
#コメント
- エンジニアの作業を極小化して自動的に学習を進めるモデルは非常に面白い
- ただ、すべてを自動化する代償に計算時間が膨大になってしまっている
- 本論文では1モデルあたり、最大12層のCNNを5,000回の訓練回数で学習し、それを2700モデル繰り返す(5,000 x 2,700=135万回の訓練)
- CNNの訓練回数として1モデルあたり5,000は非常に少ない。本当にモデルあたりのパフォーマンスを上げるなら数十万回の訓練が必要。そうすると、数十万x2,700というとんでもない計算時間がかかる
- もちろん、experience replayを活用して過去のモデル評価結果を効率的に利用してはいるが、それでも訓練回数が劇的に減少するとは思えない
- また、既に強化学習ではなく、ベイジアンフレームワークを活用してハイパーパラメータの自動最適化するといったモデルがいくつか提唱されているみたいなのでそれと比較してみたい
- just ideaだが、遺伝的アルゴリズムxCNNも親和性が高い気がする