[論文筆記] VILLA


Posted by Ivan Fang on 2021-06-17

Paper Information

  • 原文:Large-Scale Adversarial Training for Vision-and-Language Representation Learning
  • 機構:Microsoft Dynamics 365 AI Research, University of Maryland
  • 時間:2020 年

Introduction

  • VILLA 在做的,就是利用 adversarial training 讓 V+L (vision-and-language) 模型發現自己的盲點並加強。進而得到更 robust 的模型。
  • 受到 BERT 的啟發,近年來 V+L 模型也開始流行 pre-training + fine-tuning 的訓練方法。而 VILLA 也不例外,VILLA 共可分成兩個階段:
    • task-agnostic adversarial pre-training (APT)
    • task-specific adverserial fine-tuning (AFT)
  • VILLA 並不是直接將 perturbation 加到 image 或 text 上,而是加到它們的 embedding space 上。

Model Architecture

  • 符號定義:
    • $D$:training data
    • $x_{img},\ x_{txt}$:input image, input text
    • $g_{bu}(\cdot),\ g_{emb}(\cdot)$:image feature extractor (e.g. Faster R-CNN), word embedding function (e.g. BERT)
    • $z_{img} = g_{bu}(x_{img}),\ z_{txt} = g_{emb}(x_{txt})$:object embedding, word embedding
    • $\tilde{z}_{img},\ \tilde{z}_{txt}$:$z_{img},\ z_{txt}$ 再經過 multi-layer Transformer 的結果
    • $\tilde{z}_{img},\ \tilde{z}_{txt}, \tilde{z}_{cls} = f_{\theta}(x_{img}, x_{txt})$
  • VILLA 中的 adverserial training (AT),就是要做以下的事:
    $$
    \min_{\theta} E_{(x_{img}, x_{txt}, y) \sim D} [L_{std}(\theta) + R_{at}(\theta) + \alpha \cdot R_{kl}(\theta)]
    $$
    • $L_{std}(\theta) = L(f_{\theta}(x_{img}, x_{txt}), y)$:cross entropy loss on clean data,用於更新 V+L 模型的參數。
    • $R_{at}(\theta)$:label-preserving AT loss,用於更新 $\delta$。
    • $R_{kl}(\theta)$:adversarial KL divergence loss,用於產生更強大的 $\delta$。
    • $\alpha$:自定義的常數。
  • $R_{at}(\theta)$ 的細節如下,一次只會在一個 modality 上加 perturbation:
    $$
    R_{at}(\theta) = \max_{||\delta_{img} \le \epsilon||} L(f_{\theta}(x_{img} + \delta_{img}, x_{txt}, y)) + \max_{||\delta_{img} \le \epsilon||} L(f_{\theta}(x_{img}, x_{txt} + \delta_{txt}, y))
    $$
    • $L$:cross entropy loss
    • 注意,為了書寫方便,這裡直接寫成 $x + \delta$。實際上 $\delta$ 是加在 embedding space,也就是 $z$ 上。
  • $\delta_{img}$ 的更新方式如下:
    $$
    \delta_{img, t+1} = \prod_{||\delta_{img}|| \le \epsilon}(\delta_{img, t} + \alpha \frac{g(\delta_{img, t})}{||g(\delta_{img,t})||_{F}})
    $$
    • $\delta_{img}$ 與 $\delta_{txt}$ 的更新方式一樣。
    • $g(\delta_{img,t}) = \bigtriangledown_{\delta_{img}}L(f_{\theta}(x_{img} + \delta_{img},\ x_{txt},\ y))$
    • $F$:利用 Forbenious Form 限制 $\delta_{img}\ \delta_{txt}$ 的範圍。
    • $\prod_{||\delta_{img}|| \le \epsilon}$:performs projection on $\epsilon$-ball。
  • 為了讓 $\delta$ 更強一點,VILLA 還加了 KL divergence 的機制,也就是讓加了干擾後的輸出結果要與原本的輸出結果有一段差距:
    $$
    R_{kl}(\theta) = \max_{||\delta_{img}|| \le \epsilon} L_{kl} (f_{\theta}(x_{img} + \delta_{img},\ x_{txt}), f_{\theta}(x_{img},\ x_{txt})) + \
    \max_{||\delta_{txt}|| \le \epsilon} L_{kl} (f_{\theta}(x_{img},\ x_{txt} + \delta_{txt}), f_{\theta}(x_{img},\ x_{txt}))
    $$
    • $L_{kl}(p,\ q) = KL(p||q) + KL(q||p)$
  • 正常來講,應該在 $\delta$ 更新 $K$ 次、找出最適當的 $\delta$ 後才更新 V+L 模型。但這麼做會太慢。因此,作者改成每更新一次 $\delta$ 就跟著更新 V+L 模型,只是 learning rate 會乘以 $\frac{1}{K}$ 而已。整個的更新過程如 Algorithm 1 所示。
    • line 4:初始化參數。
    • line 7:更新 V+L 模型。learning rate 要乘以 $\frac{1}{K}$。
    • line 9-13:更新 $\delta$。

Experiements & Results

  • 作者將 VILLA 套用在 UNITER 上,得到的實驗結果如 Table 1 所示。
  • 實驗細節如下面所示:
    • 注意,前面的 steps 是先用一般的方式下去訓練,後面的 steps 才是用 adversarial training。
  • ablation study 如 Table 2、Table 3 所示。
    • VILLA-pre:只有 adversarial pre-tranining。
    • VILLA-fine:只有 adversarial fine-tuning。
    • VILLA:兩個都有。

#cv #vqa #Adversarial Training







Related Posts

pygame 開發之打磚塊遊戲

pygame 開發之打磚塊遊戲

金魚系列,盒模型篇

金魚系列,盒模型篇

測試

測試


Comments