BATCHENSEMBLE: AN ALTERNATIVE APPROACH TO EFFICIENT ENSEMBLE AND LIFELONG LEARNINを読んだのでメモ
はじめに
BATCHENSEMBLE: AN ALTERNATIVE APPROACH TO EFFICIENT ENSEMBLE AND LIFELONG LEARNINを読んだのでメモ.
気持ち
簡単にモチベーションを言えば,通常のモデルアンサンブルはアンサンブルする分だけモデルを個別に用意する必要があるが学習にも推論にも時間がかかる. そのため,コストを減らすために一つのモデルに少量のパラメータを追加することでアンサンブルを実現する.
Method
まずベースとなるモデルの各層における重みをとする. ここではいわゆる全結合のニューラルネットを例に説明するが,畳み込み層などへの拡張も簡単にできる.
各層は追加の学習パラメータとしてとを持つ. 添字はからまでのインデックスではアンサンブルの数(モデルの数)を表す. すなわち,通常の個のモデルを用意するアンサンブルに対し,提案する手法は各層につき個の追加の学習パラメータを持つだけとなる.
各層はこの追加パラメータを使って次のように重みを計算する.
すなわちrank-1の行列ともとの重みの要素積で番目のモデルの重みを作り出すというもの. これは入力のベクトルをとすれば全結合層の計算を次のように計算を展開できる.
すなわち層への入力時点でとの要素積をとり,出力でとの要素積をとるとかけ,演算量の点で非常にリーズナブルとなる. 結果として通常の独立に個のモデルを容易するより計算コストが低い.
このモデルはいわゆるlifelong learningのようなタスクが時々刻々と変化していく問題においても,タスク毎にを用意することで応用が効く.
通常のモデルアンサンブルと比較したときの欠点としては学習時に入力されたバッチサイズの倍のサンプルを計算することになるという点. 通常のモデルアンサンブルなら個のモデルは非同期に勝手に学習すればいいので1モデル分の学習で済むが,提案する方法では個のモデルに対し共通する重みがあるため,個々のモデル毎に学習するわけにはいかなくなる. ただし,data parallelや分散学習などはできるのでそれはマシーンパワーで解決しろとのこと.
まとめ
実装の簡便さや性能が十分出ることから非常に使い勝手の良い手法なよう. ただ,時間があってマシンが限られる場合には従来の方法が好まれる気がするのでその辺は使い分けかなと.