Fast AutoAugmentを読んだのでメモ
はじめに
Fast AutoAugmentを読んだのでメモ. とにかく計算時間のかかるAutoAugmentを高速(CIFAR-10:5000->3.5, SVHN:1000->1.5, ImageNet:15000->450 GPU hours)にした論文.
Fast AutoAugment
Search Space
まずを入力空間
上のaugmentation operations
の集合とする.各operation
は確率
と強度
を持つ.
をsub-policyの集合とし,sub-policy
は
個のoperationの集合
として定義される.各operationは入力画像に対して
から順番に確率
に従って次のように適用される.
よってsub-policy の出力は
として定義される.の場合にはAutoAugmentと同じで,探索空間は
と
を区間
の連続値として扱うことを除いて等しい.
Search Strategy
まずを
上の確率分布とし,
をデータセットとする.パラメータ
を持つ分類モデル
が与えられた際,データセット
上での
の期待される精度と損失は
で定義される.
任意のペアと
が与えられた際,目標はモデルの汎化性能を向上させる事となる.ここでの考え方は
と
の分布を一致させるようなaugmentationのpolicyを見つける事で汎化性を向上させる.
ただ,当然二つの分布の密度関数をすべてのpolicyの候補において比較することは不可能なので,ここではあるデータセットがもう一方のデータセットのパターンにどれほど従うかを,両方のデータセットに対するモデルの予測を使って測る.
具体的には
を
と
の二つに分け,
の学習と
の探索に利用する.policyの探索のため,下記の目的関数を定義する.
ただし,モデルのパラメータは
上で学習した結果とする.この目的関数は近似的に
と
間の分布の距離を,モデルのパフォーマンスの最大化という観点で最小化している.
上記の目的関数はK-fold stratified shufflingとBayesian optimization methodを利用する.
- まずK-fold stratified shufflingにより
を
のK個に分割する.各
は二つのデータセット
と
から成る.以下,表記の簡略化のため
を省略する.
- 次に,
を使い,data augmentation等は使わずモデルを学習する.
- 学習後,
の間
個のpolicyの候補
をbaysesian optimizationにより探索空間
から探索する.より具体的には
での
を最小化するように買う率
と強度
を持つpolicy
を探索する.
肝としては,policyの探索の間モデルのパラメータを学習する必要は一切なく,これにより実行速度を大幅に改善している.また,それと同時にAutoAugmentのchild modelの概念をなくし,実際に学習したいネットワークに対して直接policyを探索する事を可能にしている.
探索終了後はの中から上位
個のpolicyを選び,それらを
とする.その後
を
にmargeし,
を得る.最終的には
を
全体に適用してモデルを学習する.
policyは学習済みモデルに対してモデルの損失を下げる(精度を上げる)ように探索されているため,次の関係を満たすことが期待される.
この辺りイマイチ理解ができていないのが,policyは学習されたモデルに対して損失が最小となるように学習するため,テストデータの分布を学習データに近づけるようなdata augmentationを選ぶようになっているというのが直感的なところで,その場合に得られたpolicyを使って学習することがなぜ改善をもたらすかよくわからない.勘違いしているのか理由があるのか.
Policy Exploration via Bayesian Optimization
policyの探索で全policy候補の精度評価をすることは不可能なので次のExpected Improvement (EI) criterionを利用する.
は過去に探索されたpolicyのquantileによって決められる閾値.この辺りは詳しくないので詳細は省くが,最適化にはHyperOptを使って並列化してやったとのこと.
まとめ
上でも述べたように,最適化しているpolicyの意味がイマイチピンとこない(学習と評価時の分布を近づけるようなaugmentationという気持ちはわかるがその方向が評価データ->学習データとなっているので).また,AutoAugmentと違いtransferabilityに関する評価がなかったのでその辺の挙動も気になる.ただ実装が公開されていて計算時間も現実的なので色々と試すことはできそう.