収録日:20210207
発表者:@yohei_kikuta
聞き手:@smochi_pub
内容:
- DALL·E の理解に向けてシリーズ第二弾
- DALL·E のデモページで、結果として生成した画像の reranking で CLIP というモデルが使用されていた
- これは DALL·E と同時期に発表されたモデルで、論文とコード(と学習済みモデル)が公開されている
- vision における zero-shot (この論文では unseen dataset に対して予測することを指す) 学習の方法としても興味深いので読んでみることにした
- CLIP の論文紹介
- モチベーション
- Web 上のテキストから大量に学習することができるようになった NLP と同様のことが visoin でも実現可能か?
- Vision Transformer でやったような画像を再構築するような方法はうまくいかないので、(image, text) のペアの情報を使う
- 出力のクラス数を固定せず zero-shot にも使えるようにしたい
- モデルの説明
- 画像からキャプションを予測するような方法はそんなにうまくいかなかった(計算量が多いことに加えて、exact に単語を予測するのも難しすぎる)
- 先行研究からも contrastive (対照的、ここでは画像とテキストそれぞれの特徴量を比べて学習するものを指す) の pre-training がよさそう
- Contrastive Language-Image Pre-training で CLIP
- データとしては (画像, その画像を説明するテキスト) のペア
- 画像とテキストそれぞれに Encorder を準備する (例えば vision Transoformer と Transformer)
- 抽出した特徴量をどちらも同じ次元 d にするように変換
- これをバッチ数 N だけやると (N, d) の特徴量行列ができるので、特徴量次元をつぶすように行列積を計算して (N, N) の行列を作る
- この対角成分が元々の (画像, テキスト) ペアとなるので、対角成分が 1 で非対角成分は 0 として画像とテキスト方向それぞれで cross entropy loss を計算して足す
- これを loss として学習することで 画像とテキストの特徴量が正しいペアのものを選び出すことのできるモデルを学習
- 予測の際は、一つの画像特徴量と候補となるテキスト M 個のテキスト特徴量を使って「正しい」テキストを選ぶ
- 例えば ImageNet 1000 クラス分類モデルの場合、テキスト M 個は ImageNet 1000 クラスのテキストになって 1000 クラス分類問題になる
- モデル自体の構造や重みの再学習をすることなく、テキスト M 個を適切に準備することで汎用的なタスクを解くことができる
- この方法は pre-training で用いたテキストの分布に依存するので、予測性能を高める際にはテキストを
a photo of {class name}
のようにするなどいろいろな工夫が必要 - zero-shot の予測が可能(テキストの準備はタスクに合わせてやる必要があるが)なので、様々な downstream タスクでモデル性能を評価する
- 様々な工夫はしているが、アイデアとしてはそこまで新しいものはなく、先行研究での結果を取り入れつつそれを大量のデータで試したという感じ
- 実験
- pre-training は Web から収集した 4 億の (画像、テキスト) のペアを使用。このデータは WebImageText と呼んでいる
- どういうクエリを使って画像を集めたかに関しては、Wikipedia でよく出てくる単語と WordNet を使っているとのこと
- zero-shot での ImageNet 1000 クラスで top-1 acc. が 76.2% という性能を発揮
- 全くフェアな比較では無いが、テキストの N-gram を作っておいて画像とのマッチ度合いを測ることで zero-shot を実現する Visual N-Grams は 11.5%
- 論文の Figure 5 が様々なタスクでの zero-shot 予測の結果で、教師あり学習をした ResNet-50 と比べて 16/27 タスクで上回った
- 上回りやすいのは例えば名詞だけでなく動詞でも情報を入力できる action recognition など
- 一方で下回りやすいのは衛生画像分類のような専門的で複雑なタスクや抽象的なタスク
- 学習した画像特徴量を使って logistic regression の教師あり学習をすることで、特徴量抽出器としての性能も検証
- 画像の encoder しか使っておらず、テキスト特徴量と一緒に学習したことでより良い特徴量が抽出できるようになっているかを調べる。これ別にそこまでよくならないんじゃないの?と思ったけど、結果を見るとかなり良さそう
- 論文の Figure 10 とか Figure 11 が結果で、EfficientNet-NoisyStudent とかと比べて明確に良い結果
- 論文の Figure 13 とかも(期待通りではあるけど)面白くて、ImageNet ではないようなスケッチ画像とかでも高い判別性能を誇っている
- その他にも大量に実験してるけど割愛
- pre-training は Web から収集した 4 億の (画像、テキスト) のペアを使用。このデータは WebImageText と呼んでいる
- モチベーション
- zero-shot (正確には unseen dataset に対する予測だけど) がかなりできるようになっていて凄いなと思った
- 昔 out of distribution のこととかやってて普通の classification では難しいなと感じてたので
- これでいつ DALL·E の論文が出ても理解できるな!早く出してくれ!
参考情報:
- DALL·E:https://openai.com/blog/dall-e/
- Learning Transferable Visual Models From Natural Language Supervision:https://cdn.openai.com/papers/Learning_Transferable_Visual_Models_From_Natural_Language_Supervision.pdf
- 公式実装:https://github.com/openai/CLIP
- Learning Visual N-Grams from Web Data:https://arxiv.org/abs/1612.09161
- 菊田が論文を読んだときのメモ:yoheikikuta/paper-reading#57
話してるときに「out of distribution に対してどのようにアプローチするのかを説明する」的な話をしましたが、これをちゃんと説明しておくと、真に out of distribution のタスクに関してはうまくいきません(例えば、どこにも公開してない自分の抽象画を input にして何かしらのクラスを予測するとかは当然無理)。 あくまで豊富な pre-training のデータで学習できた抽象的な semantics が通用する場合には機能する、という感じですかね。