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

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

AutoAugment:Learning Augmentation Strategies from Dataを読んだのでメモ

はじめに

AutoAugment:Learning Augmentation Strategies from Dataを読んだのでメモ. 学習対象のデータに合わせて最適なdata augmentationの方法を強化学習的に得ようという試み. 得られたpolicyで学習されたモデルは現状のSoTAモデルを上回る精度を達成. また,あるデータセットから得られたpolicyは他のデータセットにおいても有効で,policyのtransferabilityも示した.

AutoAugment

大まかな流れとしては,現在与えられているdata augmentationのpolicy Sを使ってモデルを学習し,学習されたモデルのvalidation dataにおける精度Rを報酬としてpolicy gradientによってSを更新していく.policy gradientは以前強化学習の勉強の際にブログにまとめたので詳細は割愛.

強化学習を使うため,まず探索空間を定義する.まずpolicy Sは5つのsub-policyから成り立つものとし,各sub-policyは二つのdata augmentationをデータに適用する.さらに各data augmentationはそのdata augmentationをデータに適用するか否かの確率と,data augmentationのmagnitude(例えば画像の回転などの場合には回転角など)の2つのパラメータを持つ.Figure 2に具体的なpolicyの例が載っている.学習する際にはある単一のデータに対しsub-policyが5つの中からランダムに選ばれ,そのsub-policyが持つdata augmentation二つが自身の持つ確率に従ってデータに適用される.

この論文ではdata augmentationの候補として16の変換を考え,変換のmagnitudeを10段階に,data augmentationを適用するか否かの確率値を11段階に離散化して探索を行う.sub-policyが5つと各sub-policyは二つのdata augmentationを利用するため,結果として探索空間の広さは(16\times10\times11)^{10}\approx2.9\times10^{32}となる.

探索は,controller RNNとProximal Policy Optimization(PPO)を使って行う.PPOは以前勉強してまとめたので割愛.controller RNNは30の要素(5つのsub-policyの持つ2つのdata augmentationに対し,各data augmentationの種類と確率,強度の5\times 2\times 3)の推定をsoftmaxで行う. ちなみにcontroller RNNの入力は前回のsoftmaxの結果で,5つのsub-policyが被らないようにする.

controller RNNは強化学習の枠組みで学習されるが,報酬は学習したモデルのvalidation精度で,モデルの構造自体はWide-ResNet-40-2を使う.ミニバッチ内のサンプルごとに5つのsub-policyからランダムにつのsub-policyを選び,選ばれたsub-policyに従ってデータ拡張を行いchild modelの学習をする. 細かい学習のパラメータ等は割愛し,最終的にcontroller RNNからサンプルされたpolicyの中から最も良い5つのpolicyを選び,本番の学習に用いる.選ばれるのは5つの"policy"なので,25のsub-policyが含まれることに注意

まとめ

色々と面白い考察がされていたがここでは割愛.AutoAugmentは強力な反面計算時間が1000から15000GPU hoursとなかなか手に負えない感じ.なので後続研究として軽量化したものが多々出ている.