【論文読み】SimVLMの論文を要約してみた

# はじめに

この記事では、**Vision and Language**のマルチモーダルAIである **SimVLM** の論文について解説します。

以下のリンクから論文を読むことができます。

https://arxiv.org/abs/2108.10904

::: note warn
**注意**
この記事はあくまで自主的な論文の要約です。扱っていない項目、誤りなどの可能性がありますがご容赦ください。
:::

# 1. SimVLMとは

**SimVLM**とは視覚情報と自然言語情報の特徴を同時に取り込むことで、多様なタスクに対応することが出来るマルチモーダルAIです。

SimVLMは以下のような背景により作成されました。

>現在におけるVision-Language Pretraining（VLP）の事前学習にはアノテーションに高品質な画像やテキストが必要であり、地域におけるバイアスなどの制約がVLPの学習の手順をさらに複雑にしている。このような課題が残る既存のモデルとは異なり、SimVLMは大規模な弱教師あり学習により学習の複雑性を減少させることを目的として作成された。SimVLMはGPT-3のようにテキスト生成を自然に行うだけでなく、BERTのように文脈情報を双方向に処理することも可能とする。

簡単に説明すると、データセットにノイズがある状態でも様々なタスクに高性能な精度を示すVLPモデルとして作成されたということですね。


また具体的なタスクとしては以下になります。

**1. Visual Question Answering（VQA）**
これは画像と質問文を入力として、出力に質問文に対応する回答を出力するタスクです。

**2. キャプション生成**
これは画像を入力として、出力には画像の様子を説明する文章を出力するタスクです。

**3. 画像推論**
画像とテキストを入力として、画像内における物体の関係性（合計や色、形など）を推論、テキストとして出力するタスクにです。

**4. マルチモーダル翻訳**
これは画像を入力として、画像内の説明を他言語に翻訳したテキストとして出力するタスクです。

# 2. モデル構造

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523467/f2f399ce-04a0-e7df-2cd8-5fde02231080.png)

SimVLMの構造は主に **Transofomerを基にしたEncoder-Decoder（PrefixLM）** モデルになります。

**Vision-Transformer** や**CoAtNet** から連想し、画像を直接Encoderに入力している。

具体的には以下の手順で処理される。

>1.画像には**N×Nパッチ化**を施し、ResNetの最初の3層を用いて畳み込み処理を行いEncoderにおける次元数に適用させ、**パッチ数×次元数**に変形し仮トークンとして扱う。

>2.テキストには基本的なトークン化を行い、埋め込み層に入力し、**トークン数×次元数**に変形する。

>3.位置情報を取り込むために、画像の特徴量とテキストの特徴量それぞれに対して、**絶対位置埋め込み**を行う。

>4.エンコーダに入力後、画像に対応するトークンに対して、相対的な位置情報を取り込むため、**相対位置埋め込み**を行う。

>5.エンコーダの出力をデコーダの **Key** と **Value**に渡し、デコーダの入力を **query**として**PrefixLM**を用いて適切な画像と文脈間の特徴を学習する。

>6.デコーダにヘッドを追加し、対応するタスクを解く。

比較的理解が難しい **PrefixLM** や **相対位置埋め込み** の仕組みについて知りたい方は、

[作者の記事（【実装】T5（Text-to-Text Transfer Transformer）をスクラッチ開発してみた）](https://qiita.com/Yuhei0531/items/ca23b198e7ab6e27eac0)を参考にしてください。

# 3. データセット

SimVLMはFast(er) R-CNNのような物体検出モジュールに依存せず、生の画像パッチ入力のみで動作するため、ゼロショット学習におけるポテンシャルがあります。またSimVLMではノイズが含まれる画像-テキストによる大規模データセットを用いてゼロから事前学習が行わます。

具体的には、画像と代理テキストを使用しており、最小限の処理を施したウェブクローリングを行うことでデータを収集しています。




# 4. 実験

## 4.1. 事前準備
ここでは、ViTの設定に従いパラメータの大きさが異なる"Base"、"Large"、"Huge"が用意されます。C4を含む異なるデータセットを混ぜ、100万ステップの事前学習を行っています。この2つは4096個の画像とテキストペア、512個のテキストのみで構成されるデータセットです。これは512個のTPUv3 chipsで学習が行われています。

事前学習後、6つのVision-Languageベンチマークで評価される。VQAv2、SNLI-VE、NLVR2による3つの識別タスク、CoCo captioning、NoCaps、Multi30kによる3つの生成タスクです。

## 4.2. 既存アプローチとの比較

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523467/efb79b06-02c0-5c85-e9b9-880b05871e86.png)


Vision-Languageモデルの事前学習の質を検証するために、まず一般的なマルチモーダルタスクでSimVLMを、LXMERT、VL-T5、UNITER、OSCAR、Villa、SOHO、UNIMO、およびVinVLが比較対象に含まれます。**表1** から分かるように、SimVLMは全ての既存モデルを凌駕し、検討した全てのタスクで新しい**SoTA**を達成しました。このことは、SimLVMのような生成的な事前学習がMLMベースのモデルに引けを取らないこと、そして弱教師あり学習を伴う簡易なフレームワークは高品質なマルチモーダル表現を学習するのに十分といえるアプローチであることを示しています。

:::note info
**まとめ**
SimVLMは複数のベンチマークにおいて **SoTA**を達成し、Vision-Languageなマルチモーダル表現における事前学習の性能の高さを示した。
:::

## 4.3. Zero-Shot学習
以前の項目でも話したようにSimVLMは弱教師あり学習におけるZero shot学習のポテンシャルがあります。

以降の項目では、各タスクにおけるZero shot学習への適応について記述します。

## 4.3.1. Zero-Shot/Few-Shot 画像キャプション生成

ここでは事前学習にWebクローリングで得たノイズ付きでデータセットを用いて、画像キャプションタスクを実施しました。

データセットのZero-Shot学習ではSimVLMに画像をパッチとして直接入力、Few-Shot学習ではデータセットの1%を使用して5エポック学習を行いキャプションを生成しました。また、その際に`A picure of`のような接頭辞を置くことで、生成の質が向上することが判明しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523467/22e7046b-7e47-b444-9417-10c8ef79899f.png)


表2から分かるように、CoCo captionにおいて教師あり学習が行われた既存のモデルと比較して、Few-ShotのSimVLMは遜色がない性能を示しました。またNoCapsにおいても、事前学習済みモデルと比較して、上回る性能を示しました。

これにより、SimVLMは抽象的な画像や暗い画像といった人間でも識別、説明が困難な画像の特徴を捉えることができ、実世界の概念を知るだけでなく、画像の細かな表現を提供することを示しました。

:::note info
**まとめ**
SimVLMはZero-Shot/Few-Shot 画像キャプション生成において既存の教師ありベースラインと同等の性能を示した。これは画像の細やかな表現を捉えていることを示している。
:::

## 4.3.2. Zero-Shotマルチモーダル翻訳

既存の事前学習において、異なるデータ空間へ翻訳を可能としていることが判明しています。この研究では、VLPモデルを利用した新しいマルチモーダル翻訳の評価を行いました。テキストデータは画像データと比べて、安価に収集が可能であるため、事前学習済みSimVLMに対してテキストのみのデータセットを使用してファインチューニングを行い、Zero-Shot翻訳のポテンシャルを評価しました。

具体的には、SNII-VEとMulti30kを利用し検証しました。SNLI-VEでは3つのテキストのみで評価を行った。学習時はエンコーダへの入力として接頭辞と翻訳対象が入力され、デコーダに翻訳後のテキストが入力されます。これにより、デコーダへ新たに接続したヘッドにおける最終トークンの埋め込みに対して学習が行われるようにファインチューニングされました。

推論時には、エンコーダへの入力として画像を入力し、デコーダの入力として対応する翻訳文が入力され評価されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523467/3c0027cf-2944-03a5-308b-f885fa66d595.png)

表3から分かるように、SimVLMは教師あり学習ベースラインに対して遜色がない性能を示しています。

モデルの画像における翻訳タスクの健全性の検証のため、画像に対してマスクをかけて翻訳タスクを評価したところランダムに近い結果しか得られませんでした（平均スコア：34.31/34.62）。これは、反対に翻訳タスクにおいて画像の特徴が有意に働いているということを示しています。

加えて、MNLIデータセットからSNLI-VEデータセットに対して、ファインチューニングを行うことで別の言語や、データ空間における翻訳も可能であることが示唆されました。具体的にはMulti30kのWMT 2016のドイツ語画像キャプションタスクを評価に利用し、SimVLMを英語-ドイト語テキストのみの翻訳データでファインチューニングを行った後、エンコーダに画像を入力し、翻訳文を評価します。

表3から分かるように、SimVLMは教師あり学習ベースラインのスコアに匹敵する性能を示しました。

これら2つの結果は、ノイズ付きのデータ取り入れることで、Zero-Shotマルチモーダル翻訳にポテンシャルが発現することを示しています。


:::note info
**まとめ**
SimVLMは画像キャプションを用いたマルチモーダル翻訳において、教師ありベースラインと同等の性能を示した。また、画像のマスク化を行ったところ、スコアが大幅に下がった。これはSimVLMの画像を用いた翻訳タスクにおいて画像の特徴が精度向上に寄与していることを示している。
:::
# 4.3.3. Open-ended VQA
VQAのベンチマークでは識別タスクにおける候補が3129個定められいるが、事実上の制限があることは確かです。

実世界に応用する際、狭い候補セットを用意し多くの返答に対応するというopen-endedなVQAタスクは挑戦的な課題といえるでしょう。

SimVLMは制約のない応答生成という挑戦的な課題に対して、解決策を提供します。結果として、接頭辞と画像を結合し、応答を生成するタスクにおいて、PrefixLM lossを使用してSimVLMをファインチューニングを行いました。

表4では生成的なアプローチと分類タスクについて比較する。Karpathyのテストsplitにおける珍しい回答を持つ質問に対するモデルのパフォーマンスを評価します。ここで、Out-domainとは3129の候補に含まれないベストスコアの回答として定義されます。

結果として、SimVLMは全ての識別タスクと生成タスクにおいて他既存モデルの性能を上回る結果を示しました。

しかし、このセットにおいて主に珍しい回答のみに焦点を当てており、一般的な未知の回答に対する評価は不明である。そこで、2085個（3129個の内の2/3）のIn-dominの回答をランダムに選択し、ベストスコアの回答が選択されたセットに含まれているかどうかに基づき、訓練データと検証データの二つをそれぞれで分割します。その後、SIｍVLMをIn-domainの訓練データのみでファインチューニングを行い、検証データ全体で評価を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523467/88e03ec0-2af3-d8fb-4d87-7a449f8ea8f3.png)


表4を見ると分かりますが、`Partial Train`の項目で、生成タスクにおけるSimVLMはOut-domainなデータに対して1000以上の回答において尤もな性能を示しました。


上記の実験では、生成された回答と人間のラベルの完全適合をスコア計算に用いているが、この場合にモデルが異なる形式や同義語を生成し適切な回答を生成しているにも関わらず、適切に評価が行われない可能性を考慮しなければなりません。

また、SimVLMは候補セットに含まれないOut-domainな回答を生成できることが示されたため、さらにファインチューニングを行わないZero-Shot学習が行えるかどうかを調べます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523467/61210878-b432-1da1-7f21-9d091c643cae.png)

（d）の結果よりSimVLMはプロンプト文を完成させ回答を行えることを示しました。しかし、それにもかかわらず実際の質問に対して意味のある答えを生成できないことも同時に確認しました。

理由としては、データセットにおけるテキスト記述が短くノイズが多いなどの事前学習データの質の悪さが影響していると考えられます。これを検証するため、知識豊富なwikipediaデータセットを用いてファインチューニングを行ったところ、（e）に示したように関連する回答を生成できました。

:::note info
**まとめ**
SimVLMは制約のないVQAタスクにおいて、Out-domainの回答を含む質問を基準に分割したデータセットを用いてファインチューニングを行った結果、既存のモデルの性能を上回った。これは、SimVLMは知らない単語や知識を含む回答を提供できることを示している。
:::

# 4.4. 分析

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523467/25fabe9d-aa1b-72fb-af28-f14026c9c2f0.png)


SimVLMはVision-Languageモデルにおける優れた性能を発揮しているため、単一モダリティのタスクでどれだけ優れているかを問うのは当然と言えます。付録Cの表7で、SimVLMを既存のVLPモデルとGLUEベンチマークで比較します。トークンタイプの埋め込みを使用せずに、完全にフォーマットされた入力を分類するようにモデルをトレーニングします。表を見るとSimVLMは既存のVLP手法よりも優れており、BERTと競合しています。これは、モデルが優れた言語理解能力を持っていることを示しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523467/91b4f4fa-df85-6d53-2c8b-09fdfa980516.png)


さらに、表5の全結合層の識別タスクに従ってImageNetのTop1精度も計算します。なお、SimVLMはCnstrasitve Lossなどの識別的なタスクで事前トレーニングしていないため、エンコーダの出力のAverage poolingを画像特徴として使用します。結果は、当社のモデルが高品質な画像表現も学習していることを確認しています。

また、各モデルの構成要素からの寄与を調査するために、埋め込み次元が512で8層のSimVLM "small" モデルに対してアブレーション研究を行います。VQAに関しては、表6で比較を行います。最初に、エンコーダ・デコーダモデルを、モデルサイズが同等のデコーダーモデルと比較し、後者がVQAで著しく劣ることがわかります。これは、双方向エンコーディングを単方向デコーディングから分離する帰納バイアスが、マルチモーダルなVision-Language表現の学習にとって有益であることを示唆しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3523467/a4566814-45b6-172a-776a-433081fc67aa.png)


次に、事前学習の効果を研究します。その結果、PrefixLMがspan corruptionおよびnaive LMを上回り、画像テキストおよびテキストのみのデータに対して統一された定式を使用する重要性を示しています。

さらに、データセットの寄与を削除します。弱く整列した画像テキストデータは、視覚的およびテキスト表現のギャップを埋めるために必要ですが、テキストのみのコーパスもモデルの品質を向上させます。これは、前者のテキスト信号が非常にノイズが多いため、モデルが後者に依存してより良い言語理解を獲得するためでしょう。

さらに、ALIGNとCC-3Mデータセットを10％使用して実験し、データのスケーリングの重要性を確認します。畳み込みの効果を研究し、VLパフォーマンスに重要であることを見出します。最初の2/3/4つのResNet Convブロックを使用する実験を行い、経験的に3つの畳み込みブロックの構成が最も効果的であることが判明しました。これは、画像とテキストが異なる粒度を持っているため、文脈化されたパッチを利用することが有益であることを示しています。


:::note info
**まとめ**
1.GLEUベンチマークにおいて、SimVLMはBertと同等のと競合している。また既存VLPモデルの精度を上回っている。これはSimVLMが高い言語能力を獲得していることを示している。

2.ImageNetを用いた画像認識の分野において、SimVLMは既存VLPモデルと競合している。これはSimVLMが高い画像認識能力を獲得していることを示している。

3.実験の結果、画像特徴を捉えるにはResNetのブロックを3層用いることが効果的であると判明した。
:::

# まとめ
ここまで読んでくださり、ありがとうございます。

今回は、SimVLMの論文を要約してみました。SimVLMは画像とテキストを用いてマルチモーダルAIの一つとして、推論、翻訳、キャプション生成といったマルチタスクが可能である、視覚情報を得たAIの新たな可能性だと作者は考えます。これから先、強化学習などの分野と融合し、人や周囲の景色から自主的に対話を行うという人間に近い動作を可能とする可能性もあるとすれば、とても楽しみですね。

自分なりに理解できる範囲でまとめてみましたが、抜けている部分や解釈が異なる部分があるかもしれませんが、何卒ご容赦ください。

今回、初めての英語論文の翻訳を行いましたが、想定以上に時間がかかりました。これからは定期的に論文の要約を行い、読むスピードや理解を深められたらと思います。

**次回：** [【実装】SimVLM（Simple Visual Language Model）をスクラッチ開発してみた](https://qiita.com/Yuhei0531/items/0e17a011d6aae9092ce6)

# 参考文献
[SimVLM: Simple Visual Language Model Pretraining with Weak Supervision](https://arxiv.org/abs/2108.10904)