CoOp:CLIPのテキストテンプレートはどう決めればいい?
3つの要点
✔️ CLIPのPromptエンジニアリングが実用上大きな課題となる
✔️ そのPrompt エンジニアリングをEnd-to-Endで自動的に学習するCoOpを提案する
✔️ CoOpの有効性とロバスト性を11つのデータセットを用いて示した
Learning to Prompt for Vision-Language Models
written by Kaiyang Zhou, Jingkang Yang, Chen Change Loy, Ziwei Liu
(Submitted on 2 Sep 2021 (v1), last revised 21 Sep 2021 (this version, v2))
Comments: Published on arxiv.
Subjects: Computer Vision and Pattern Recognition (cs.CV); Artificial Intelligence (cs.AI); Machine Learning (cs.LG)
code:
本記事で使用している画像は論文中のもの、またはそれを参考に作成したものを使用しております。
はじめに
本記事では、CoOp(Context Optimization)を提案した論文について紹介します。
OpenAIが発表したCLIPがインターネット上にある画像と言語キャプションがセットとなっているデータを大量に学習したマルチモーダルなモデルである。CLIPの派生研究であるDALL-EやStyleCLIPがSNSを大きく賑わせた。
CLIPは画像Encoderと言語Encoderと二つのEncoderを持つ。それぞれが画像と言語キャプション(以降Promptで表す)を表現空間に射影して、その類似度を図ることで分類を行う。
しかし、CLIPの論文にPromptは経験に基づいて人間が用意するものであった。異なるデータセットに対して異なるPromptを用意する必要があり、そのチューニングを行うために計算リソースを要する。特にPromptの小さな変化が分類精度に大きく影響する。例えば(Fiture1)、Caltech101のデータセットにおいて’a photo of [CLASS]’と’a photo of a [CLASS]’と'a'があるかないかだけで、約5%の差がでる。
従って実用上、CLIPのPrompt エンジニアリングが大きな課題となる。タイトルの『CLIPのテキストテンプレート(Prompt)はどう決めればいい?』という問いに対して一つの答えがある。それが本日で紹介するCoOPという自動的にPrompt エンジニアリングを行う手法である。学習済みのCLIPを用いてEnd-to-EndでPromptの学習ができるのが特徴の一つである。
提案手法:CoOp
本論文で提案するCoOpはCLIPをベースにしているため、CLIPのZero-Shot推論を定式化する。
式(1)では、fとw_iはそれぞれ画像とPromptを画像Encoderと言語Encoderで表現空間に射影したものである。w_iはCLASS iから得られたPrompt表現を表す。そして表現空間上でfと各w_iのコサイン類似度(<・,・>)を計算する。得られたコサイン類似度に1/τ係数をかけた後ソフトマックス関数に適用して、分類カテゴリ確率を算出する。ただし、画像Encoderと言語Encoderと1/τ係数は事前学習済みCLIPのものを使う。
Figure2は提案手法CoOpの全体図を示す。CLIPにおいて言語Encoderに入力するPromptを学習する部分がCoOpの提案である。
ここで提案手法CoOpのPromptを学習する部分について説明します。
言語Encoderに入力するPromptを式(2)のように拡張する。[V]_m(m=1,2...M)は言語Embeddingの次元(512 for CLIP)を持つベクトルである。MはデザインするPromptのトークン数を決めるハイパーパラーメーターであり実験では16に指定した。
Prompt tを言語Encoder g(・)に入力すれば提案手法CoOpの定式化が式(3)のようになる。
提案手法CoOpは、PromptにおけるCLASSを示す単語を中央におくことも、それぞれのCLASSに対して異なるパラメータのVを用意することも可能である。本研究ではこの2つを組み合わせた4種類のCoOpを用いて実験を行った。
実験:CLIPと比較
Few-Shot Learning
新たなデータセットに対して提案手法CoOpはCLIPのPromptを少数のサンプルで学習することを実現した。実験ではFew-Shot学習の設定で学習した提案手法CoOpのPromptをCLIPの論文で用いた11種類の画像分類データセットで2つのベースラインと比較した。一つ目はCLIPの論文でデザインしたPromptを用いてZero-Shot CLIPである。二つ目はCLIPの論文で提案したLinear Probe CLIPでCLIPに線形分類器を追加したものである。
結果(Figure3.)から、提案手法CoOpがFew-Shot学習にて良い結果残したことが分かる。一枚目の図は11つのデータセットを平均したものである。デザインしたCLIPのPromptに対して平均2つのサンプルで2回の更新で学習したPromptがより良い結果を示した。またほとんどのデータセットにおいては提案手法の方がLinear probe CLIPより優れていることがわかる。
次にZero-shot CLIPとLinear Probe CLIPとそれぞれ比較して考察を行った。まずZero-Shot CLIPと比較して、提案手法CoOpが16Shotを学習した際に向上させた精度をFigure4.に示した。7/11のデータセットにおいて10%の精度向上を実現した。またImageNetは1000クラス分類であるため5%の精度向上が大きい。
次にLinear Probe CLIPと比較してみると8/11のデータセットにおいて提案手法CoOpが優れている。特に平均して両方8Shot学習した際は提案手法CoOpがLinear Probe CLIPと比較して精度が10%以上優れていることがわかった。これらの結果より提案手法CoOpがデータセットに関連したPromptを学習できることが言えると著者たちが主張した。
Robustness to Distribution Shift
CLIPと異なって提案手法CoOpは特定のデータ分布で学習している。よって疑似相関を学習して未知なデータ分布に汎化できないリスクが考えられる。ここでImageNetで学習した提案手法をCoOpをImageNetのデータ分布を変化させたTargetデータセットImageNetV2, ImageNet-Sketch,ImageNet-A,ImageNet-RにおいてZero-Shot CLIPとLinear Probe CLIPと比較して検証した。
Zero-Shot CLIPとLinear Probe CLIPより提案手法CoOpの方がTargetデータセットにおいて良い精度を示していることがわかる。ただし、CoOpはSourceデータセットImageNetにおいての精度が既にベースラインより5%ほど優れているためTable1.の結果は妥当だと筆者が考えている。
Further Analysis
最後に追加して複数の比較実験を紹介する。CLIPのPromptは一意に定められないためことが、CLIPの論文でも言及され、複数のPromptを同時に用いる方法をPrompt Ensemblingを提案した。本研究のCoOpはPrompt Ensemblingより優れたことをTable2.から読み取れる。
また提案手法CoOpのPromptの長さMを16にしたが、M=4,8の精度及び、提案手法CoOpに用いたVision backnoneの比較をFigure5.に示した。ViT-B/16を用いた精度が良くて、Promptに関しては式(2)に示した構造でM=16が最も良いことが分かる。
まとめ
画像-言語マルチモーダルな事前学習済みモデルは2021年に提案されたCLIPとALIGNをきっかけに大きく成長していくだろうと考えている。こういったモデルを扱う際に、言語Encoderに入力するPromptのデザインが避けられない。これは自然言語処理NLPにおいても人気な分野でもある。特にGPT-3以降Promptに関する研究の流れが強まっている(GPT-3の真価を引き出す方法)。これはpromptを用いることで事前学習の段階で下流タスクに関して学習できる仕組みが実現し、より汎用的な事前学習モデルの開発に繋がるからである。
こういった背景を踏まえて、CLIPにおけるPromptを学習するCoOpという手法を紹介させていただきました。
この記事に関するカテゴリー