Open shimopino opened 3 years ago
[arXiv:1909.12220] Implicit Semantic Data Augmentation for Deep Networks
Yulin Wang, Xuran Pan, Shiji Song, Hong Zhang, Cheng Wu, Gao Huang
2019-09-26
背景色の変化や外観の色の変化など、画像に対して意味的なデータ増強を行うことが可能な implicit semantic data augmentation (ISDA) を提案した。
同一クラス内で背景やテクスチャといった意味合いを変化させるデータ増強は、先行研究により画像認識で効果を発揮することがわかっている。
こういったデータ増強を行う例としてGANを使用することが考えられるが、GANの学習は不安定であり、生成されるサンプルを制御することも難しい。
本研究では、学習時や推論時に追加のネットワークを必要とせず、学習サンプルを生成したりすることもなく、意味合いを含むデータ増強を行う手法 implicit semantic data augmentation (ISDA) を提案している。
深層学習モデルを学習させることで得られる特徴空間には、意味に対応して線形的に特徴空間内の方向を分離できることがわかっている。つまり特徴空間内で、サンプルの特徴ベクトルを任意の方向に変化させれば、その方向に対応した意味を含むサンプルを得ることができる
本手法は2つの要素で構成されている。
特徴空間中で意味のある方向に特徴ベクトルを変化させることで、学習データを増強することを考える。
イメージとしては、人に関するデータを増強するために「メガネをかける」という方向に特徴ベクトルを変化させながら、「プロペラがある」というような人のクラスには関係のない方向に特徴ベクトルを変化させないようにすることを目指す。
そこで平均が0であり、同一クラス内の共分散行列に比例する共分散を有する正規分布からランダムにベクトルをサンプリングする。これで共分散行列は、同一クラス内におけるサンプル間の変動を補足することができ、意味に関する情報も含まれていると仮定している。
深層学習モデルを使用して入力データから得られた特徴ベクトルをaiとしたとき、この特徴ベクトルを意味のある方向に変化させる方向を得るために、クラス条件付きで得られた共分散行列に基づく正規分布からサンプリングを行う。
実装上では、特定のクラスに属するすべてのミニバッチから統計量を計算する。
あとは以下のように、特徴ベクトルに対して以下の分布からサンプリングを行うだけでいい。
なお学習の初期段階では、共分散行列の推定をしても有効な情報を得られていないため、学習中に徐々にλを大きくしている。
まず単純な実装方法としては、特徴ベクトルaiをM回適用したあとで、合計でMxN個のデータセットを使用して、クロスエントロピーの最小化を行います。
しかしこの実装方法の場合には、Mが増大してしまうと急激に計算コストが上昇してしまう。そこで本研究ではこの損失関数に上限を設けることで、効率的に計算できるようにしている。
Mを無限大に近づけた際に、増強されたすべての特徴量に対するクロスエントロピーの期待値を考える。これは以下のような損失関数として表現できる。
もしもこの損失関数を効率的に計算することができれば、増強された特徴ベクトルを明示的にサンプリングすることなく、直接最適化することができる。
しかし実際には完全な形式で計算することは難しいため、損失関数に対して上界を設けた式を導入することで効率的な計算を可能としている。
Proposition 1 増強された特徴ベクトルが与えらた際、損失関数の上界は以下で与えられる。 証明 1 式(3)から以下のような式を得ることができる。 イェンセンの不等式より以下のように変形可能
Proposition 1 増強された特徴ベクトルが与えらた際、損失関数の上界は以下で与えられる。
証明 1 式(3)から以下のような式を得ることができる。 イェンセンの不等式より以下のように変形可能
これで直接損失関数を最適化させるのではなく、この上界に対して最適化を行っていくことが可能となる。
ImageNetデータセットを使用して、本手法の有効性を検証している。結果として、どのモデルに適用した場合であっても、ベースラインを超える制度を発揮していることがわかる。
またResNetベースのモデル以外にも適用できるのか検証している。結果としてDenseNetなどの残差構造を使用していないモデルであっても、ベースラインよりも高い性能を発揮していることがわかる。
また他のデータ増強手法と組み合わせることで、どの程度精度が変化するのかを検証している。結果としては、CutoutやAutoAugmentなどの手法と組み合わせることで、更に高い精度に達成していることがわかる。
学習中の精度を確認しても見てみても、最終的に学習率を落とした段階で他の手法よりも高い精度に達成していることがわかる。
また近年提案されている様々な損失関数と、意味的なデータ増強をGANで行った場合と結果の比較を行った。
また実際に増強された特徴ベクトルを画像に復元し、その画像がどのような増強されたのかを検証している。結果として、
https://github.com/blackfeather-wang/ISDA-for-Deep-Networks
論文へのリンク
[arXiv:1909.12220] Implicit Semantic Data Augmentation for Deep Networks
著者・所属機関
Yulin Wang, Xuran Pan, Shiji Song, Hong Zhang, Cheng Wu, Gao Huang
投稿日時(YYYY-MM-DD)
2019-09-26
1. どんなもの?
背景色の変化や外観の色の変化など、画像に対して意味的なデータ増強を行うことが可能な implicit semantic data augmentation (ISDA) を提案した。
2. 先行研究と比べてどこがすごいの?
同一クラス内で背景やテクスチャといった意味合いを変化させるデータ増強は、先行研究により画像認識で効果を発揮することがわかっている。
こういったデータ増強を行う例としてGANを使用することが考えられるが、GANの学習は不安定であり、生成されるサンプルを制御することも難しい。
本研究では、学習時や推論時に追加のネットワークを必要とせず、学習サンプルを生成したりすることもなく、意味合いを含むデータ増強を行う手法 implicit semantic data augmentation (ISDA) を提案している。
3. 技術や手法の"キモ"はどこにある?
深層学習モデルを学習させることで得られる特徴空間には、意味に対応して線形的に特徴空間内の方向を分離できることがわかっている。つまり特徴空間内で、サンプルの特徴ベクトルを任意の方向に変化させれば、その方向に対応した意味を含むサンプルを得ることができる
本手法は2つの要素で構成されている。
3.1 Semantic Transformations in Deep Feature Space
特徴空間中で意味のある方向に特徴ベクトルを変化させることで、学習データを増強することを考える。
イメージとしては、人に関するデータを増強するために「メガネをかける」という方向に特徴ベクトルを変化させながら、「プロペラがある」というような人のクラスには関係のない方向に特徴ベクトルを変化させないようにすることを目指す。
そこで平均が0であり、同一クラス内の共分散行列に比例する共分散を有する正規分布からランダムにベクトルをサンプリングする。これで共分散行列は、同一クラス内におけるサンプル間の変動を補足することができ、意味に関する情報も含まれていると仮定している。
深層学習モデルを使用して入力データから得られた特徴ベクトルをaiとしたとき、この特徴ベクトルを意味のある方向に変化させる方向を得るために、クラス条件付きで得られた共分散行列に基づく正規分布からサンプリングを行う。
実装上では、特定のクラスに属するすべてのミニバッチから統計量を計算する。
あとは以下のように、特徴ベクトルに対して以下の分布からサンプリングを行うだけでいい。
なお学習の初期段階では、共分散行列の推定をしても有効な情報を得られていないため、学習中に徐々にλを大きくしている。
3.2 Implicit Semantic Data Augmentation (ISDA)
まず単純な実装方法としては、特徴ベクトルaiをM回適用したあとで、合計でMxN個のデータセットを使用して、クロスエントロピーの最小化を行います。
しかしこの実装方法の場合には、Mが増大してしまうと急激に計算コストが上昇してしまう。そこで本研究ではこの損失関数に上限を設けることで、効率的に計算できるようにしている。
Mを無限大に近づけた際に、増強されたすべての特徴量に対するクロスエントロピーの期待値を考える。これは以下のような損失関数として表現できる。
もしもこの損失関数を効率的に計算することができれば、増強された特徴ベクトルを明示的にサンプリングすることなく、直接最適化することができる。
しかし実際には完全な形式で計算することは難しいため、損失関数に対して上界を設けた式を導入することで効率的な計算を可能としている。
これで直接損失関数を最適化させるのではなく、この上界に対して最適化を行っていくことが可能となる。
4. どうやって有効だと検証した?
ImageNetデータセットを使用して、本手法の有効性を検証している。結果として、どのモデルに適用した場合であっても、ベースラインを超える制度を発揮していることがわかる。
またResNetベースのモデル以外にも適用できるのか検証している。結果としてDenseNetなどの残差構造を使用していないモデルであっても、ベースラインよりも高い性能を発揮していることがわかる。
また他のデータ増強手法と組み合わせることで、どの程度精度が変化するのかを検証している。結果としては、CutoutやAutoAugmentなどの手法と組み合わせることで、更に高い精度に達成していることがわかる。
学習中の精度を確認しても見てみても、最終的に学習率を落とした段階で他の手法よりも高い精度に達成していることがわかる。
また近年提案されている様々な損失関数と、意味的なデータ増強をGANで行った場合と結果の比較を行った。
また実際に増強された特徴ベクトルを画像に復元し、その画像がどのような増強されたのかを検証している。結果として、
5. 議論はあるか?