機械学習とかコンピュータビジョンとか

CVやMLに関する勉強のメモ書き。

BATCHENSEMBLE: AN ALTERNATIVE APPROACH TO EFFICIENT ENSEMBLE AND LIFELONG LEARNINを読んだのでメモ

はじめに

BATCHENSEMBLE: AN ALTERNATIVE APPROACH TO EFFICIENT ENSEMBLE AND LIFELONG LEARNINを読んだのでメモ.

気持ち

簡単にモチベーションを言えば,通常のモデルアンサンブルはアンサンブルする分だけモデルを個別に用意する必要があるが学習にも推論にも時間がかかる. そのため,コストを減らすために一つのモデルに少量のパラメータを追加することでアンサンブルを実現する.

Method

まずベースとなるモデルの各層における重みをW\in\mathbb{R}^{m\times n}とする. ここではいわゆる全結合のニューラルネットを例に説明するが,畳み込み層などへの拡張も簡単にできる.

各層は追加の学習パラメータとしてr_i\in\mathbb{R}^ns_i\in\mathbb{R}^mを持つ. 添字i1からMまでのインデックスでMはアンサンブルの数(モデルの数)を表す. すなわち,通常のM個のモデルを用意するアンサンブルに対し,提案する手法は各層につきM個の追加の学習パラメータs_i,r_iを持つだけとなる.

各層はこの追加パラメータを使って次のように重みを計算する.

\displaystyle
\bar{W}_i=W\circ F_i,\ \text{where}\ F_i=s_ir_i^\top

すなわちrank-1の行列ともとの重みの要素積でi番目のモデルの重みを作り出すというもの. これは入力のベクトルをx_nとすれば全結合層の計算を次のように計算を展開できる.

\displaystyle
(W^\top(x_n\circ s_i))\circ r_i

すなわち層への入力時点でx_ns_iの要素積をとり,出力でr_iとの要素積をとるとかけ,演算量の点で非常にリーズナブルとなる. 結果として通常の独立にM個のモデルを容易するより計算コストが低い.

このモデルはいわゆるlifelong learningのようなタスクが時々刻々と変化していく問題においても,タスク毎にr_i,s_iを用意することで応用が効く.

通常のモデルアンサンブルと比較したときの欠点としては学習時に入力されたバッチサイズのM倍のサンプルを計算することになるという点. 通常のモデルアンサンブルならM個のモデルは非同期に勝手に学習すればいいので1モデル分の学習で済むが,提案する方法ではM個のモデルに対し共通する重みWがあるため,個々のモデルs_i,r_i毎に学習するわけにはいかなくなる. ただし,data parallelや分散学習などはできるのでそれはマシーンパワーで解決しろとのこと.

まとめ

実装の簡便さや性能が十分出ることから非常に使い勝手の良い手法なよう. ただ,時間があってマシンが限られる場合には従来の方法が好まれる気がするのでその辺は使い分けかなと.