オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【深層学習】CLIP #アルゴリズム編

Index

CLIP

テキスト情報から画像分類 / 物体認識を学習するフレームワーク.

画像とテキストからの情報抽出に、Attention (Transformer) を利用.

VirTex の改善手法.

Contrastive Language-Image Pre-training



従来の画像分類

機械学習・深層学習の画像分類 / 物体認識では、事前に決定された物体のカテゴリリストを予測するように学習する.

このカテゴリのリストは無限ではなく、データセットとして用意できる範囲であり、それは一般性を制限してしまう.

自然言語を教師データに

ラベルのついた教師データではなく、生の自然言語を画像予測のタスクの教師に利用する手法を導入する.

この手法では、テキストと画像のペアを用いて学習する.

従来の「画像に対応するラベルを用意する手法」と比べ、
アノテーションやラベリングの手間が少ないため、データセット作成のコストが少なくなる.

そのため、データセットの量を容易に増加・増強することが可能になる.

データセット / WebImageText

では、どのように、どのようなデータセットを作ったのか?

この論文では、WebImageText というデータセットを作成したと報告されている.

  • 4 億の画像とテキストのペアのデータセット.
  • インターネットから検索を行うことで、情報を取得.
  • 多様なデータが取得できることが望ましいので、50 万のクエリで検索.

  • WebImageText

学習 / Training

自己教師あり学習 の一つである対照学習 / Contrastive Learningを用いて、大規模なデータで事前学習を行う.

事前学習 / Pre Training

対照事前学習を用いたフレームワークを構築する.

画像を Embedding したベクトルと、テキストを Embedding したベクトルが、
「実ペアであるか」、「実ペアでないか」を予測する枠組みを考える.



まず、画像とテキストのペアを  N 個のバッチで用意する.



画像とテキストを比較するために、Image Encoder と Text Encoder でデータをベクトル化する.
(図中の、 I_N T_N)

Loss

各画像と各テキストのデータの組み合わせ分 ( N^{2} 個分) のペアについて考える.

このペアごとに損失 / Loss を計算する.

これは、いわゆる Multi-Class N-Pair Loss といわれている.

Metric Learning などに導入されている.



また、InfoNCE という名称で、対照学習 / Contrastive Learning で紹介されている.



下の論文でも利用されている.

  • Contrastive Learning of Medical Visual Representations from Paired Images and Text



このペアの類似を、コサイン類似度を用いて計算する.
(図中の、 I_N, T_N)



「実ペア」の類似度が高く、「実ペアでないペア」の類似度が低くなるように、ロス関数を設定して学習を行う.

ロス関数は、コサイン類似度の Symmetric Cross Entropy Loss を利用する.

Image Encoder

ResNet-50 を比較する対象として参戦させる.



Vision Transformer をベースに構築.

変更点としては、Transformer と Embedding (Patch / Position Embedding) の間に正規化を追加した.

Text Encoder

Transformer をベースに利用.

また、GPT-2 で行っている改善を導入.

  • GPT-2

  • 49152 個の語彙を持つ Byte Pair Encoding (BEP) でベクトルに変換.

  • 計算効率のため、最大シーケンス長は、76.

テキストシーケンスは、[SOS] と [EOS] トークンで囲むようにする.

Transormer 層からの [EOS] の出力をテキストの表現ベクトルとして利用する.

Masked Self Attention を利用している.

Zero Shot Prediction

従来の方法での画像分類 / 物体認識では、入力された画像に対し、 N 個の予測確率を算出していた.

では、このモデルでは、どのように予測するのか.



まず、予測したい画像が Image Encoder に入力され、ベクトル化される.



次に、「A photo of a {object} (xxx の写真)」のような文章が、分類されるカテゴリ分 ( N 個) 作られる.



そして、 N 個の文章を Text Encoder がベクトル化する.

この定型文のベクトルは、予測する前に準備しておくのがよい.





「Image Encoder にベクトル化された画像の情報」と各「Text Encoder にベクトル化された定型文の情報」同士のコサイン類似度を計算する.



類似度が最も大きい文章 (=定型文)に含まれている単語が、分類の予測結果となる.

実験

表現学習 / Representation Learning

Encode した CLIP 空間 (表現空間) のわかりやすさを確認.

様々なパフォーマンスの測定方法があるが、 Encode したベクトルを線形分類器で学習させることで、パフォーマンスを確認する.

参考

  • Learning Transferable Visual Models From Natural Language Supervision
    • [2021 OpenAI]
    • Abstract
    • 1 Introduction and Motivating Work
    • 2 Approach
      • 2.1 Natural Language Supervision
      • 2.2 Creating a Sufficiently Large Dataset
      • 2.3 Selecting an Efficient Pre-Training Method
      • 2.4 Choosing and Scaling a Model
      • 2.5 Training
    • 3 Experiments
      • 3.2 Representation Learning
    • arxiv.org

論文メモ
2.3. Selecting an Efficient Pre-Training Method : 対照学習について
2.4. Choosing and Scaling a Model : エンコーダについて



  • CLIP: Connecting Text and Images

書籍

Web サイト