ココアのお勉強ブログ

技術職の一般人です。趣味でコード書いたりソフト触ったり。

Auxiliary Training: Towards Accurate and Robust Models 自分用メモ

論文リンク

http://openaccess.thecvf.com/content_CVPR_2020/html/Zhang_Auxiliary_Training_Towards_Accurate_and_Robust_Models_CVPR_2020_paper.html

アブスト

既存手法のほとんどはモデルの精度と頑健性のトレードオフに陥っている。
回転のような処理があると画像の劣化(破損)が見られ、加えてぼかし、雨、ノイズ等のような要因が増えるとニューラルネットに対して大幅な精度低下を招いてしまう。
つまり、少しでも上記のような変化を画像に加えると精度が落ちてしまうということだ。
モデルの頑健性を高めようとするときによく使用されるのは Data Augmentation だが、劣化させた(Data Augmentation処理を施した)画像を学習データにそのまま加えると、元の綺麗な画像だけで学習した時よりも精度の低下を引き起こす。
また、それぞれ異なる画像処理を施した劣化画像は相互に影響を及ぼしてしまう。
例えばガウスノイズを加える処理をData Augmentationとして用いるとモデルはノイズによる劣化に強くなるが、コントラストや彩度が異なる画像に対しては頑健性が低下する。
綺麗な画像上で精度を低下させることなくモデルの頑健性を高めることが最近の研究のトレンドになっているが難しい。

本研究では、劣化させた学習サンプルに対して補助分類器(auxiliary classifiers)を導入する学習方法を提案する。
学習段階では、主分類器が補助分類器からロバストな情報を学習できるようにするために、入力を意識した自己蒸留(input-aware self distillation)という新しい蒸留法を提案する。
これに伴い、劣化させた画像の負の影響からモデルを守るために、新しい正規化手法である選択的バッチ正規化(selective batch normalization)を提案する。
また主分類器と補助分類器の重みが同一になるように、L2ノルムペナルティを適用する。

技術や手法のキモ

本研究では、2種類の学習サンプルからなるニューラルネットワークの学習フレームワークを提案している。
以下の図は本手法の全体の流れをまとめてある。

まず2種類の学習サンプルについて、
1つ目は劣化処理を行っていない綺麗な画像。
2つ目は綺麗な画像に劣化処理(ノイズ、ぼかし等のような処理)を加えた画像。

特徴抽出層は共有するが、分類層のコピーである補助分類器を主分類器の学習補助として追加する。

第1段階

学習の第1段階では、代表的な特徴を得るために、2種類の画像を同じconv層(特徴抽出層)に入力した後、それぞれ個々の分類器がある種類の劣化からの学習サンプルによってのみ学習される。
難しい言い方をしてしまったが以下の図を例にすると、

  • 綺麗な画像は綺麗な画像用の主分類器に

  • ノイズ劣化画像はノイズ画像用の補助分類器に

  • ぼかし劣化画像はぼかし画像用の補助分類器に

送られるということである。

第2段階

第2段階では、主分類器と補助分類器間の重みが同一の重みになるように、L2ノルム損失を用いてペナルティを与える。
その結果、補助分類器は不要となるので削除し、主分類器のみで良くなる。そのため、元のネットワークの形を変更せずに済む。

さらに、モデルの学習のために、入力を意識した自己蒸留(input-aware self distillation)と選択的バッチ正規化(selective batch normalization)を導入している。

input-aware self distillation

input-aware self distillation では,主分類器をteacher model、補助分類器をstudent modelと見なす。綺麗な画像から劣化した画像へ知識を伝達し、主分類器が補助分類器から頑健な情報を学習できるようにする。

selective batch normalization

selective batch normalization は、綺麗な画像と劣化画像の平均と分散をそれぞれ計算し、綺麗な画像のみでパラメータを更新することで、劣化画像からの負の影響を抑えることができる。
(Zhouらが、batch normalizationを行ったモデルが、batch normalizationを行わないモデルよりも優れた性能を発揮しない可能性があることを示した(特にData Augmentationを利用した場合)。)

※各記号については後述。

batch normってなんだっけ?→Normalization Layers

X_cを学習データセットとする。まだ画像処理を行っていない綺麗な画像である。

Tは画像劣化処理のセット。

X_jは劣化画像を施した学習データセットとする。

綺麗なデータと劣化データを合わせたものをXとする。

f(x;\theta_f)を特徴抽出器の処理出力、g(x;\theta_g)を分類器の処理出力とする。

通常の学習法だと以下のように損失関数を最小化することになる。

今回の学習法だと以下のように損失関数を最小化することになる。

さらにペナルティ関数Ωとして

を追加する。

以上を用いて補助学習(auxiliary training)の損失関数は以下で定義される。

α, λ, γはハイパーパラメータ。
論文では補助学習(auxiliary training)はそこまでハイパーパラメータに敏感ではないと書いてあった。
特にγは以下の補助学習(auxiliary training)のアルゴリズムにもあるように、第1段階ではγ=0、第2段階ではγ=1としている(第2段階でL2ノルム損失を用いてペナルティを与えるため)。

結果

CIFAR100、ImageNetでの実験により、提案した補助学習によって精度と頑健性の両方において改善が確認された。
平均して、補助学習はCIFAR100で従来の学習方法と比較して、精度が2.21%向上し、頑健性が21.64%向上した。

感想

ぶっちゃけるとinput-aware self distillationが何で学習に良いのかよく分からなかった。