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

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

Unsupervised Data Augmentationを読んだのでメモ

はじめに

Unsupervised Data Augmentationを読んだのでメモ.

気持ち

ここ最近のsemi-supervised learningの基本的な考え方は,ラベルなしデータに対して適当な摂動\epsilonを加えた出力p_\theta(y|x,\epsilon)と元の出力p_\theta(y|x)の出力がなるべく同じになるようにするというもの.

この研究では,ガウスノイズやdropoutなどより現実的なノイズの方がより良い性能を出せるはずとして,state-of-the-artなdata augmentation手法をadversarial noiseを付与する代わりに利用したらうまくいったというもの.

Unsupervised Data Augmentation (UDA)

正直手法の中身は上で述べたものが全て.一応定式化としては,入力とその教師データをx,yとし,data augmentationによって変形されたデータを\hat{x}\sim q(\hat{x}|x)とする.教師を持つデータに関しては次の対数尤度の最大化を行う.

\displaystyle
\min_\theta\mathcal{J}_{da}(\theta)=\mathbb{E}_{x,y^\ast\in L,\hat{x}\sim q(\hat{x}|x)}[-\log p_\theta(y^\ast|\hat{x})]

教師のないデータは,VATと同様次のKLDを最小化する.

\displaystyle
\min_\theta\mathcal{J}_{UDA}(\theta)=\mathbb{E}_{x\in U}\mathbb{E}_{\hat{x}\sim q(\hat{x}|x)}[\mathcal{D}_{KL}(p_\theta(y|x)\|p_\theta(y|\hat{x})))]

Data augmentationには,state-of-the-artな方法を使ったとのことで,画像の分類問題に関してはAutoAugmentとCutoutとのこと.実験はtext classificationでも行なっているが自分は専門でなく手法を知らないので割愛.

一応,論文ではdata augmentationでsemi-supervised以外に,training signal annealing (TSA)というものも提案している.これは,ラベルつき学習データが少量の場合にモデルがすぐに過学習することを問題視したことから生まれたもので,ある程度高い尤度で予測できる様になったデータは無視をしようというもの.定式化としては次の様になる.

\displaystyle
\min_\theta\frac{1}{Z}\sum_{x,y\in B}[-\log p_\theta(y|x)I(p_\theta(y|x)\lt\eta_t)]

Iは指示関数で尤度が\eta_t以下の場合に1,それ以外は0を返す関数.Zは正規化定数でZ=\sum_{x,y\in B}I(p_\theta(y|x)\lt \eta_t)で計算される.この時\eta_tを学習の段階に応じて\frac{1}{k}から1までannealingしようというのがTSA.具体的には\eta_t=\frac{1}{k}+\lambda_t\ast(1-\frac{1}{k})でannealingしていく.ただし\lambda_tは0から1までlinear,log,expのどれかで変化させていく(詳しくはFigure 2).

まとめ

アイディアや手法は非常に単純なので追試等はしやすそう.ただ,実験はrealistic evaluation of semi-supervised learning algorithmsに沿ってやったと書いてはあるものの,バッチサイズが全然違っていてムムムというところ.論文から数値を持ってくるなら同じ条件で比較してほしい.こういうのを見ると教師ラベル付きのデータにもaugmentationを適用しているんじゃないかとか思ってしまう(というか定式化をみるとそうなっているので,もしそうならますます比較に意味がなくなってくる).