SigLIPとは?画像と文章をペア単位で学習し、マルチモーダル検索の学習効率を高める技術

SigLIPは、画像と文章の対応をシグモイド損失で学習する技術です。CLIPとの違い、損失を分割して計算する仕組み、実験結果、画像検索やゼロショット分類への応用と導入時の注意点を解説します。

参考文献

Sigmoid Loss for Language Image Pre-Training

Xiaohua Zhai, Basil Mustafa, Alexander Kolesnikov, Lucas Beyer

論文を見る

今回の論文

今回取り上げるのは、Google DeepMindのXiaohua Zhai、Basil Mustafa、Alexander Kolesnikov、Lucas Beyerによる「Sigmoid Loss for Language Image Pre-Training」です。2023年3月27日にarXivで初公開され、ICCV 2023で発表されました。研究分野は、画像と言語の表現学習です。論文ページと論文本文(v4)が公開されています。

選んだ理由は、画像と文章を同じ空間で検索する技術を、学習目標の設計から理解できるからです。モデルを大きくする以外にも、何を正解として、どの単位で損失を計算するかを変えることで、学習の実装や必要なメモリが変わります。画像検索アプリにも、限られた計算資源でモデルを調整する開発にもつながる論文です。

どんな技術か

SigLIPは、画像と文章をそれぞれベクトルに変換し、「この画像とこの文章は対応しているか」をペアごとに学習する技術です。学習後は、「雨の日の道路」のような文章から画像を探したり、画像と複数のカテゴリ説明を比較して分類したりできます。

中心となる工夫は、画像エンコーダの斬新な構造ではなく、シグモイドを使った損失関数です。CLIP型の学習では、ある画像に対してバッチ内の文章候補をまとめて比較し、正しい文章を選ぶように学習します。SigLIPでは、各組み合わせに対して対応する・しないを判定する形へ変えます。

たとえば「犬の画像」と「走っている犬」という組み合わせを正例にし、同じ画像と別の画像に付いていた文章を負例として扱います。各ペアの損失を独立した項として計算できるため、大きな候補集合を一度に保持せず、分割して処理しやすくなります。論文本文、3節

課題

画像検索の学習では、正しい画像と文章を近づけるだけでは足りません。すべての画像と文章を同じベクトルにすれば、正しいペアも近くなりますが、検索には使えなくなるからです。対応しないペアとの違いも学ばせる必要があります。

一般的なCLIP型の損失は、画像から文章、文章から画像という二つの方向でsoftmaxを計算します。各候補のスコアを候補全体の合計で正規化するため、分散学習では他のデバイス上の特徴量も扱う必要があります。素朴に実装すると、バッチにN組ある場合、N×Nの類似度行列がメモリ負担になります。

大きなバッチには負例を増やせる利点がありますが、画像エンコーダを動かすメモリに加え、特徴量の共有と損失計算にも資源が必要です。高性能なアクセラレータを持っていても、候補の比較処理が実際に収められるバッチサイズを制限することがあります。

これは画像・文章モデルを自社データで追加学習する際にも関係します。ただし、SigLIPの主な効率改善は学習時のものです。損失関数を変更しただけで、学習済みモデルの画像エンコードや検索が自動的に高速になるわけではありません。

用語解説

埋め込みと共通表現空間
画像や文章を数値のベクトルへ変換したものが埋め込みです。SigLIPでは、別々のエンコーダが出したベクトルを比較できるように学習します。これが文章で画像を検索できる理由です。
正例・負例
元データで対応している画像と文章が正例、それ以外の組み合わせが負例です。SigLIPの学習目標を理解するには、このラベルが「意味的に完全な正解」ではなく、収集したペアに基づく近似である点が重要です。
softmaxとシグモイド
softmaxは候補のスコアをまとめて、合計が1になる値へ変換します。シグモイドは一つのスコアを0〜1へ変換します。SigLIPは後者を使うため、あるペアの損失を計算するとき、全候補の正規化係数を必要としません。
バッチサイズ
一度のパラメータ更新で使うデータ数です。N組の画像・文章から全組み合わせを作ると、正例はN個、負例はN²−N個になります。バッチを増やすことは、入力を増やすと同時に比較ペアを急増させることでもあります。
ゼロショット分類
評価対象の分類タスク専用の追加学習をせず、画像とカテゴリ名を含む文章を比較して分類する方法です。SigLIP論文のImageNet評価は、画像と言語の対応をどれだけ他のタスクへ転用できるかを測っています。

技術の仕組み

画像と文章を別々にベクトル化します

論文では、画像側にVision Transformer、文章側にTransformerを使います。画像をパッチへ分けて処理するモデルと、文章をトークン列として処理するモデルが、それぞれ埋め込みを出します。

出力ベクトルをL2正規化し、長さを1にそろえてから内積を計算します。こうすると、ベクトルの大きさより方向の一致を比較できます。学習では両者が同じ意味に近い方向を向くよう、エンコーダのパラメータを更新します。

通常のSigLIPでは両方のエンコーダを学習します。論文には、学習済み画像エンコーダを固定し、文章側を学習するSigLiTも登場します。画像表現を固定する場合は画像埋め込みを事前計算でき、画像側の繰り返し計算を省けます。この二つは、計算条件の異なる構成です。

全候補から一つを選ぶ代わりに、各ペアを判定します

画像iの埋め込みをx_i、文章jの埋め込みをy_jとすると、Algorithm 1のロジットは次の形です。

s_ij = t × dot(x_i, y_j) + b
z_ij = +1(対応するペア)、-1(対応しないペア)
L = -(1/N) × Σ_i Σ_j log sigmoid(z_ij × s_ij)

tはスコアの尺度を調整する学習可能な正の値、bは判定の基準を調整する学習可能なバイアスです。対応するペアはスコアを上げ、対応しないペアは下げるほど、損失が小さくなります。ここでは論文の擬似コードに合わせた記号を使っています。

重要なのは、一つのペアの損失に他の候補のスコア合計が登場しないことです。各項を別々に計算して足し合わせられます。ただし、エンコーダのパラメータは共有されるため、ペアごとに別のモデルを作るわけではありません。

負例の数が正例より大幅に多いので、初期状態で両者を同程度に対応すると予測すると、負例から大きな修正が入ります。論文は、尺度をt=10、バイアスをb=-10から始めて、この偏りに伴う初期の過大な更新を緩和します。バイアスは飾りではなく、ペアの不均衡を扱うための設計です。論文本文、Algorithm 1・3.2節

損失をチャンクごとに計算します

複数デバイスを使う場合、まず各デバイスが自分の画像と文章の特徴量で損失を計算します。次に文章の特徴量を隣のデバイスへ受け渡し、別の負例との損失を加えます。この処理を繰り返すことで、全組み合わせを扱えます。

全体のバッチサイズをN、デバイスごとのバッチサイズをnとすると、論文の実装では一時的な類似度行列をN²要素からn²要素へ抑えます。これは行列を一括保持するメモリを削る工夫であり、全ペアを評価する計算量そのものを線形に変える工夫ではありません。特徴量の通信や最終的な集約も残ります。論文本文、図1・3.3節

推論では、事前計算した画像と文章を比較します

画像検索なら、登録画像のベクトルを先に計算して保存し、検索時は入力文章だけをベクトル化します。内積の高い画像を返す構成にできます。ゼロショット分類なら、「a photo of a dog」のようなカテゴリ説明のベクトルと、入力画像を比較します。

共通のtが正でbも共通なら、内積にtを掛けてbを加えても順位は変わりません。そのため、順位を求める検索と、閾値で対応の可否を決める処理は分けて考えられます。シグモイド後の値を、そのまま業務上の正答確率と見なせるかは別の検証が必要です。

実験と結果

バッチを極端に大きくしても、改善は続きませんでした

論文はImageNetのゼロショット分類と、36言語の画像・文章検索を評価するXM3600などを使っています。損失関数だけでなく、バッチサイズや画像側の固定・更新による違いを調べています。

SigLiTのバッチサイズ比較では、16k未満の条件でシグモイド損失がsoftmax損失を上回り、大きなバッチでは差が縮まりました。約100万組まで学習を拡張できましたが、32k付近から改善幅が小さくなっています。最大値が必ず32kだったという意味ではなく、より大きくしても追加の利益が限定的だったという結果です。

両エンコーダを学習するSigLIPでも、WebLIの英語ペアを使った比較で32k付近が良好な条件でした。多言語実験の表2では、バッチ32kのXM3600平均検索スコアが34.9%、240kでは32.7%となり、候補数を増やすほど性能が高くなるわけではありませんでした。論文本文、図2・表2

限られたデバイス数での学習を検証しています

Baseモデルを4個のTPUv4で学習する比較では、収められたバッチサイズがCLIP型では2,048、SigLIPでは4,096でした。論文の実装・モデル条件で、損失計算のメモリ削減が実際のバッチ容量に結びついています。

また、学習済みViT-g/14を固定したSigLiTは、4個のTPUv4、約2日の文章側学習でImageNetゼロショット精度84.5%を達成しました。この数字には画像エンコーダの既存の学習成果が含まれます。画像と文章の両方をゼロから2日で学習した結果と解釈してはいけません。論文本文、表1・4.2節・4.4節

以上から得られるのは、ペア単位の損失が、性能と学習時のメモリ制約の両方に関わるという知見です。一方で、異なるデータやハードウェアで同じ精度・所要時間になることまでは保証されません。

何に使える?

以下は、画像と文章を比較できる仕組みに基づく応用案です。論文が個別の業務システムで実証した結果ではありません。

説明文から画像素材を検索します

商品画像、社内の写真、デザイン素材を、「木製の丸いテーブル」のような文章で検索する用途です。画像側をあらかじめベクトル化すれば、手作業で全画像に検索タグを付ける負担を減らせる可能性があります。商品IDや権限のように画像から判断できない条件は、別のメタデータ検索で絞り込みます。

ラベルが少ない分類の出発点にします

カテゴリごとの説明文を用意して、画像と比較することで、専用の学習データがない段階でも分類の試作ができます。たとえば設備写真を大まかな種類に分ける用途が考えられます。ただし、微細な傷や社内固有の型番を識別できるとは限らず、実画像で精度を確認し、必要なら追加学習します。

画像を含むRAGの検索候補を作ります

図や写真を持つ資料から、質問と対応しそうな画像を候補として取り出す構成に応用できます。その後、資料本文や画像を回答用のモデルへ渡します。SigLIPは回答生成器ではないため、検索と説明の役割を分ける設計です。細かな表の読み取りや数値の抽出には、OCRや別の文書理解処理も必要です。

開発や事業へのヒント

小規模な開発では、学習より検索体験の検証から始めます

まず利用条件を確認した学習済みモデルで、代表的な画像と実際の検索文を比較すると、少ない開発量で用途との相性を測れます。「正しい画像が上位5件に入るか」と「文章検索だけでは区別できない条件は何か」を記録すると、モデル調整より先にメタデータや検索画面を改善すべき場合も見えてきます。

特に日本語では、英語中心のモデルと多言語モデルを混同せず、使用するチェックポイントの学習条件を確認します。表2の多言語平均だけで、自社の日本語の商品説明に十分な性能があるとは判断できません。

追加学習では、ペアの品質を改善対象にします

自社の画像と文章を使う場合、文章が画像の何を説明しているかをそろえることが重要です。同じ画像に対して、ある説明は色、別の説明は用途だけを述べていると、学習目標がばらつきます。

また、別々の画像に同じ商品説明が付く場合、それらを機械的に負例へ回すと、意味的には正しい対応を否定してしまいます。重複の管理や正例の定義を見直す必要があります。SigLIPは損失を分解できますが、ラベルの誤りを自動的に修正する技術ではありません。

メモリ効率と学習量を別々に管理します

論文のチャンク計算を取り入れるなら、ピークメモリだけでなく、1更新あたりの時間、通信量、累積して見たデータ数を測ります。バッチを大きくすると、同じデータ処理量でも更新回数は減るため、容量が増えたことだけで学習が改善したとは言えません。

画像側を固定して文章側だけを調整するSigLiTの考え方も選択肢です。ただし、既存の画像表現が対象の画像に合っていることが前提です。製品の微小な欠陥などを表現できていない場合は、文章側だけを学習しても十分ではない可能性があります。

限界

学習のメモリ負担を減らしても、画像と文章のエンコーダを学習するコストは残ります。全組み合わせを使えばペア計算はN²で増えますし、チャンク処理では通信と反復処理の実装が必要です。単にシグモイドへ置き換えるだけで、論文の分散実装と同じ効率を得られるわけではありません。

再現性にはデータも関わります。主要実験にはWebLIやLiTの画像・文章データが使われており、公開されたモデルやコードがあっても、論文と同じ学習データをそのまま利用できるとは限りません。著者の公開リポジトリでは、実装とモデルの情報を確認できます。

画像全体を一つの検索用ベクトルで比較する構成は、細部の位置関係、文字、数値を厳密に照合する用途では不足する可能性があります。ImageNet分類の精度は、図面照合や日本語の業務文書検索の精度を直接示していません。

さらに、負例は「別のデータに付いていた文章」に基づくため、意味的に対応するペアが混ざることがあります。シグモイド損失でもこの問題は残ります。検索の採否をスコア閾値で決める場合も、対象データで誤検出と見逃しを測って閾値を設定する必要があります。

よくある質問

Q. SigLIPとCLIPの一番大きな違いは何ですか?

A. この論文の中心的な違いは学習の損失です。CLIP型は候補全体をsoftmaxで正規化して正しい対応を選び、SigLIPは各ペアをシグモイドによる二値判定として扱います。画像・文章を別々にベクトル化して比較する基本構成は共通しています。

Q. SigLIPを使えば画像検索の推論も速くなりますか?

A. 損失関数だけを理由に速くなるとは言えません。推論速度は画像解像度、モデルサイズ、検索インデックスなどに依存します。登録画像の事前計算は有効な構成ですが、これはSigLIPだけに限定された工夫ではありません。

Q. 4個のTPUで84.5%なら、小規模な事前学習でも高精度になりますか?

A. 84.5%は、学習済みの大きな画像エンコーダを固定したSigLiTの結果です。既存の画像表現を使う効果が含まれるため、少量の自社データで両エンコーダをゼロから学習して同じ精度を得られるという意味ではありません。

Q. 日本語の文章で画像を検索できますか?

A. 多言語の画像・文章対応を学習したモデルは候補になります。論文にはmSigLIPの実験がありますが、使うチェックポイントの対応言語と入力長を確認し、日本語の検索文で上位候補の正しさを評価してください。

Q. シグモイドの値が0.9なら、90%の確率で正しい画像ですか?

A. そのように解釈するには校正の検証が必要です。学習時の正負の比率や、本番の画像・文章の分布によってスコアの意味は変わります。順位による検索から始め、採否を自動判断する場合は正解付きデータで閾値ごとの誤りを測ります。

今日の学び

この論文は、画像と言語の対応学習で、候補比較のメモリ負担とバッチサイズの制約を扱いました。ペアごとのシグモイド損失とチャンク計算によって、大きな類似度行列を一括保持する必要を減らしています。開発へのヒントは、モデルの大きさだけでなく、学習目標と処理単位を見直すことです。画像検索では共通表現を活かしつつ、学習時の効率、推論の速度、業務上の正しさをそれぞれ測ることが大切です。