CLIPとその起源について解説。Zero-shot Learning、クロスモーダル、Contrastive Learning
初めまして、みずぺーといいます。
このnoteを機に初めて私を知った方のために、箇条書きで自己紹介を記述します。
年齢:28歳
出身:長崎
大学:中堅国立大学
専門:河川、河川計画、河道計画、河川環境
転職回数:1回(建設(2年9か月)→IT系年収100万up(現職3か月))
IT系の資格:R5.4基本情報技術者試験合格💮、R5.5G資格
本日はZERO-SHOT-LEANINGの起源であるCLIPの起源を紹介しつつ、Vision&Languageについて解説を行いたいと思います。
この内容は
上記のブログ記事を参考にさせていただいております。
CLIPとは
2021年にopenAIによって発表された研究です。
「画像を与えられた時に最も類似度が高い選択をすることで分類問題を解く」というモデルです。
つまり訓練データがなくても画像分類を行うことができるモデルです。
画像と言語の分散表現を学習することで訓練データなしに分類を行うことができるようになってます。
言語モデルの表現を学ぶことでゼロショット転移性を持つ(訓練データにない分布を行うことができるようになった)
と、突然CLIPの説明をしましたが、CLIPの前に説明をしておくべき事項が3点あります。
Zero-shot Learning
画像と文章のクロスモーダル
Contrastive Learning
です。一つずつ解説します。
Zero-Shot-Learningとは
ゼロショットラーニングは明確な定義は論文によって難しいとされています。
わかりやすい理解の仕方としては、
Many-shot Learning
One/Few-shot Learning
のデータの数の軸で話を展開していくのが良い気がします。
Many-shot Learning
例えば犬や猫を分類させたい場合は、まず多くの数の犬の画像を数百枚、猫の画像を数百枚用意します。
そして用意した画像を学習済みのモデルにファインチューニングさせて学習を行うと思います。
One/Few-shot Learning
One/Few-shotの典型例は顔認証です。
Many-shotのように、一人当たり数百枚の写真を入れて、顔認証を行うことは容易ではありません。
そのため、One-shot Learningではクラスが同一かどうかを決めていることに注意すること。
そのためタスクの訓練を工夫すれば、タスク固有の訓練データは減らせるという点です。
Zero-shot Learning
訓練データから漏れたデータを区別するにはどうすればいいのか??
この根底を2012年に発表されています。
Zero-data Learning
これは学習データがないことをまずは意味しています。
さらに、クラスやタスクの説明のみが提供されている状態です。
そして、Zero-shot Learningは学習データがなく、訓練データから漏れた分類をどう扱うのかを定めたモデルです。
画像とテキストのクロスモーダル
クロスモーダルのアプローチ
まずは未知のクラスが与えられた際に、未知であるという外れ値を検出します。
イメージは大規模なキャンバスに点をプロットして最近傍点を探します。
DeViSE
画像だけを学習しただけではラベル付は現在が来るとされています。
そのため、本技術においてはテキストデータを活用して精度を高めようとされています。
Visual N-Grams
本誌では二つのことが主に描かれてあります。
何百万ものクラスを人が手作業でアノテーションして学習させるのは非効率的
画像と紐づいたユーザーコメントから画像を推論する方法を検討
Contrastive Learning
次元削減からの始まり
まずは平面上にサンプルをマッピングします。
マッピングした上で、似ているサンプルは近づけて、似ていないサンプルは遠ざけるようにします。
SimCLR
クロスモーダルという、画像とテキストで二つから完結するモデルではありません。
画像で完結するモデルとなっており、Augumentationを取り入れています。
つまり、画像のみであり、教師あり学習とは違い自己教師あり学習と呼ばれています。
CLIPの誕生
クロスモーダルなZero-shot learning
SimCLRは画像をData augmentationして2種類の画像を作り、類似度を最大化しています。
それとは違い、CLIPは画像とテキストのクロスモーダルのため、1枚の画像とそれに対応するキャプションの類似度を最大化するContrarive Learningになります。
プロンプトエンジニアリング
CLIPでは推論の際には最も類似度が高いテキストを選択します。
その中で重要となるのがテンプレートです。
「このテンプレートであれば、画像を精度よく表せます。」となるように学習させるのが、プロンプトエンジニアリングです。
さらにプロンプトエンジニアリングの精度を上げるためにアンサンブル学習を行っています。
このCLIPのアンサンブル学習とは、A Photo of a big {label}、A Photo of a small {label}というような、複数のプロンプトを用いて、精度を上げていくことを言います。
CLIPとZero-data Learning、Visual N-Grams
CLIPはMany-shotのようなタスク固有の学習データはありません。
ただ、ユーザーがファインチューニングしなくても、学習済みモデルに飛行機の画像とプロンプトを与えれば飛行機だと推測できます。
要するに、CLIPの登場は画像とテキストのクロスモーダルなContrative Learningにより画像からその文脈を認識し分類ができます。
これまでのアノテーションによる多くの時間を費やすことなく、画像とテキストを結びつけることによりweb上のキャプションと画像から自動で学習を行うことができます。
CLIPの欠点
このようにweb上の画像とキャプションから自動で学習を行うことができることにより人の手間をなくしたCLIPですが欠点もあります。
それは学習を行うのに大量のGPUと画像を消費すると言うことです。
研究によればCLIPは4億枚の画像を学習させており、それが1500万枚に減らしたところ精度が37.6%に減ったと言うことです。
結局は多くの画像とGPUを保有した企業が基盤を作成することになり、寡占状態となるかもしれません。
CLIPの今後
CLIPの改良
CLIPの画像側に自己教師あり学習を組み合わせて、simCLRを画像側に追加したものとなります。
もう一つはDeCLIPと呼ばれます。
具体的には類似ペアから最近某及び自己教師あり学習を行います。
CLIPよりも7.1倍少ないデータで同じ精度を保つことができます。
生成モデルへの応用
訓練済みのCLIPは生成AIとの相性が非常に良く、DALL・E2では、テキストから非常に緻密な画像を生成することが可能になってます。
この記事が気に入ったらサポートをしてみませんか?