리뷰할 paper는 ImageBERT: Cross-modal Pre-training with Large-scale Weak-supervised Image-Text Data 입니다.
순서는 논문과 동일한 순서로 되어 있습니다.
Key word
Text-Image Retrieval, Visual Question Answering(VQA), Visual Commonsense Reasoning(VCR)등 image와 text를 둘다 처리하는 task에 관심이 많아 지고 있는데요.
NLP에서 성공을 보인, pre-training을 활용한 방법을 language + vision cross modal task에도 적용하고 하는 노력이 있었습니다.
이 논문에서 이러한 cross-modal pre-training 방법들을 비교하고, 자신들이 제안한 방법들을 소개합니다.
Transformer가 제안된 후, 많은 논문들이 이를 활용하여 cross-modal 문제를 풀고자 하였습니다. 이들을 중심으로 related work을 분석하였습니다.
NLP의 경우, wiki와 같이 매우 방대한 data-set(wiki, book, …)을 얻을 수 있지만, cross-modal에서는 이러한 방대한 data-set을 얻기 어렵습니다.
많이 사용하는 data-set으로 CC(3M), SBU(1M)가 있지만, 충분하다고 볼 수 없습니다.
이를 보완하기 위해서, 논문에서는 web-site에서 LAIT(Large-scale weAk-supervised Image-Text)(10M)를 만들었습니다. LAIT를 만드는 방법은 아래 그림과 같이 5단계로 이루어 집니다.
[Example of LAIT]
[Discarded Example of LAIT]
ImageBERT model 구조는 아래와 같습니다. BERT와 비슷하게 Transformer를 basic structure로 사용하였으면, visual token과 textual token을 input으로 사용하였습니다.
visual token과 textual token은 서로 다른 방법으로 embedding된 후, BERT로 들어갑니다.
$ c^{(i)} = (\frac{x_{tl}}{W},\frac{y_{tl}}{H},\frac{x_{br}}{W},\frac{y_{br}}{H},\frac{(x_{br}-x_{tl})(y_{br}-y_{tl})}{WH})\\ r^{(i)} = extracted\ features\ of\ the\ i_{th}\ RoI\\ v^{(i)} = ImageEmbed(r^{(i)})\\ s^{(i)} = SegmentEmbed(i)\\ p^{(i)}_{img} = PositionEmbed(c^{(i)})\\ p^{(i)}_{seq} = PositionEmbed(i)\\ e^{(i)} = LN(v^{(i)} + s^{(i)} + p^{(i)}_{img} + p^{(i)}_{seq}) $
data-set의 출처가 다르고, quality & noise distribution이 서로 다르기 때문에, 아래와 같은 multi-stage pre-training을 사용하였습니다.
학습의 순서는 large-scale out-of-domain data-set으로 먼저 학습하고, 이후에 점차 small scale in-domain data-set으로 학습을 진행합니다.
linguistic information과 visual content를 학습하기 위하여, 4가지 task를 사용하였습니다.
$$ L_{MLM}(θ) = −E_{(v,w)∼D} log Pθ(w_{mT}|w_{\mT}, v) $$
$l_{θ}(v^{(i)}_{mI})$
$f_{θ}(v^{(i)}_{mI})$
$$ L_{MOC} (θ) = −E_{(v,w)∼D}{\sum^{M−1}_{i=0}CE(l_{θ}(v^{(i)}_{mI}), f_{θ}(v^{(i)}_{mI}))} $$
$ r_{θ}(v^{(i)}_{mI}) $
$ h_{θ}(v^{(i)}_{mI} $
$$ L_{MRFR} (θ) = −E_{(v,w)∼D}{\sum^{M−1}_{i=0}\lVert h_{θ}(v^{(i)}_{mI}) - r_{θ}(v^{(i)}_{mI})} \rVert_2^2 $$
$s_θ(v, w)$
$y ∈ {0, 1}$
$$ L_{ITM}(θ) = −E_{(v,w)∼D}[y \log s_θ(v, w) + (1 − y) \log (1 − s_θ(v, w))] $$
Fine-tuning은 MSCOCO and Flickr30k data-set으로 진행하였으며, input sequence는 pre-training과 동일합니다. Fine-tuning과정에서는 mask를 사용한 task들은 사용하지 않고, ITM만 사용하였습니다. 3가지 loss를 사용하여 실험을 진행하였습니다.
$ L_{BCE}(θ) = −E_{(v,w)}[y \log c_θ(t_{(v,w)}) + (1 − y) \log (1 − c_θ(t_{(v,w)}))] $
$ L_{CE}(θ) = −E^{(j)}_{(v,w)}{\sum^{P-1}_{j=0}}CE(s(t^{(j)}_{(v,w)}), l^{(j)}_{(v,w)}) $
$ L_{Triplet}(θ) = −E^{(j)}_{(v,w)}{\sum_(n^-∈N)} \max [ 0, s(t_{(v,w)^+} ), s(n^-_h)] $
Zero-shot result of pre-train model: 1-stage pre-training을 사용한 방법과 비교하여, comparable results를 보입니다. 추가적으로, fine-tuning에서는 더 좋은 결과를 보여주기 때문에, multi-stage pre-training이 single-stage pre-training 보다 useful한 지식을 학습 한다고 되어 있습니다.
our multi-stage pre-training strategy learns more useful knowledge during pre-training, and can consequently contribute to the fine-tuning stage on the downstream tasks.
Flickr30k와 MSCOCO에서 모두 state-of-the-art를 달성하였습니다. pre-training에서 quality & noise distribution가 다른 data-set을 사용할 경우, data-set을 나누어 학습하는게 하나로 학습하는 것보다 좋다는 것을 알 수 있습니다.
Pre-train dataset: LAIT, CC, SBU를 조합한 test들에서, 제안한 multi-stage pre-trining이 가장 좋은 성능을 보였습니다.
Global image features: RoIs가 전체 image의 정보를 담지 못 할때를 대비하여, Global image feature를 추가하는 방법을 실험하였습니다. Table4.1의 결과와 같이 유의미한 성능 개선은 보이지 않았습니다.
Pre-train loss: MRFR task를 유의미성을 Table4.2를 통해 보여줍니다. MRFR task는 다른 task보다 어려운 task에 속하는데, 이를 통해서 어려운 task를 추가하는 것이 더 좋은 model을 얻는데 도움이 된다는 것을 알 수 있습니다.
Number of objects (RoIs) from image: 지금까지 한 실험들은 모두 100개의 RoI를 사용하였습니다. RoI의 수가 성능에 미치는 영향을 Table4.3을 통해 보여줍니다. 많은 objects가 더 좋은 결과를 내는데 도움이 되는 걸 알 수 있습니다.
Fine-tune loss: Fine-tuning에 사용한 여러 loss의 결과를 Table4.4를 통해 보여줍니다. 개인적으로는 Triplet loss가 가장 좋을거라고 생각했습니다. 하지만 결과적으로 Binary only가 가장 좋은 결과를 보여줍니다.
이 논문의 특징을 정리하면, 아래 3가지로 요약할 수 있습니다.