敵対的学習

machine-learning

手法

\mathcal{L}_{\Theta}\left(\left\{ x_{i} \right\}_{i=1}^{N} \right) + \lambda \mathcal{R}_{\Theta}\left(\left\{ x_{i} \right\}_{i=1}^{N} \right)

を最小化する ($\lambda = 1$ は正則化パラメータ)。

Virtual adversarial training

VAT (Virtual Adversarial Training): 入力 $x_{i}$ についての予測分布とそれを微小変化させた $x_{i} + r_{i}$ についての予測分布の KL 距離を最小化する。

\begin{aligned}
\mathcal{L}_{\Theta}\left(\left\{ x_{i} \right\}_{i=1}^{N} \right)
 &=
\frac{1}{N} \sum_{i=1}^{N} \mathcal{D}_\mathrm{KL}\left( p_{\Theta}(\cdot \mid x_{i}) \parallel p_{\Theta}(\cdot \mid x_{i} + r_{i}) \right)
 \\
 &= \frac{1}{N} \sum_{i=1}^{N} \sum_{k} p_{\Theta}(y_{k} \mid x_{i}) \ln \frac{p_{\Theta}(y_{k} \mid x_{i})}{p_{\Theta}(y_{k} \mid x_{i} + r_{i})} 
\end{aligned}
  • $N$: ミニバッチのサンプルサイズ
  • $p_{\Theta}(\cdot)$: $\Theta$ で規定される予測分布 (多クラス分類を想定、例えば人工神経回路網で構成)

変位量の決め方

KL 距離を最大化する $r_{i}$ を使う。

r_{i} = \mathrm{argmax}_{r} \mathcal{D}_\mathrm{KL}\left( p_{\Theta}(\cdot \mid x_{i}) \parallel p_{\Theta}(\cdot \mid x_{i} + r) \right)

ただし $| r_{i} | \leq \epsilon$ とする ($\epsilon = 1$)。

山登り法 (?) で求める。

def perturbate(x, epsilon=1, xi=10, ip=1):
    d = sample_random_vector()                # 適当に初期値を決める (例えば、標準多変量正規分布をつかう)
    d = normalized(d)                         # 正規化
    for i in range(ip):
        r = d * xi                            # 変位量
        kld = compute_kl_divergence(x, x + r) # KL 距離を計算
        d = compute_gradients_by_r(kld)       # r についての勾配
        d = normalized(d)                     # 正規化 (*)
    r = d * epsilon                           # 最終的な変位量
    return r

普通に山登り法と考えると (*) で d = normalized(r + d * alpha) みたいにしたほうが自然な気がする。

Regularized information maximization

RIM (Regularized Information Maximization):

  • すべての $x_{i}$ についての予測分布の平均分布のエントロピーは大きく
  • ある $x_{i}$ についての予測分布のエントロピーの平均は小さく
\begin{aligned}
\mathcal{R}_{\Theta}\left(\left\{ x_{i} \right\}_{i=1}^{N}\right)
 &= -\left\{ H\left(\bar{p}_{\Theta}(\cdot \mid x_{i}) \right) - \frac{1}{N} \sum_{i=1}^{N} H\left(p_{\Theta}(\cdot \mid x_{i}) \right) \right\}
 \\
 &= \sum_{k} \bar{p}_{\Theta}(y_{k}) \ln \bar{p}_{\Theta}(y_{k}) - \frac{1}{N} \sum_{i=1}^{N} \sum_{k} p_{\Theta}(y_{k} \mid x_{i}) \ln p_{\Theta}(y_{k} \mid x_{i})
\end{aligned}

ここで

\bar{p}_{\Theta}(y) = \frac{1}{N} \sum_{i=1}^{N} p_{\Theta}(y \mid x_{i})

とおいた。

参考文献

  1. Takeru Miyato, Shin-ichi Maeda, Masanori Koyama, Ken Nakae, Shin Ishii. 2015. Distributional smoothing with virtual adversarial training.
    • http://musyoku.github.io/2016/12/10/Distributional-Smoothing-with-Virtual-Adversarial-Training/
  2. Weihua Hu, Takeru Miyato, Seiya Tokui, Eiichi Matsumoto, Masashi Sugiyama. 2017. Learning discrete representations via information maximizing self augmented training.
    • http://musyoku.github.io/2017/03/11/Learning-Discrete-Representations-via-Information-Maximizing-Self-Augmented-Training/