SigLIP
ビジョン・ランゲージモデル向けのメモリ効率に優れたシグモイド損失アプローチであるSigLIPを解説します。Ultralytics YOLOプロジェクトのスケーリングとトレーニングを改善する仕組みを学びます。
SigLIPは、Sigmoid Loss for Language Image Pre-Trainingを意味し、ビジョン・ランゲージモデルのトレーニングにおいて非常に効率的なアプローチです。Google Researchの研究者によって最初に導入されたこの手法は、AIモデルが画像と対応するテキスト説明の関係を学習する方法を根本的に変えます。従来の確率関数をより単純な二値分類アプローチに置き換えることで、SigLIPでは、メモリオーバーヘッドを大幅に抑え、計算効率を高めながら、大規模なマルチモーダルアーキテクチャをトレーニングできます。
アーキテクチャの理解#
視覚データとテキストデータを組み合わせる標準的な機械学習パイプラインでは、モデルが正しく学習するために、通常、特定のバッチ内にあるすべてのデータをグローバルに捉える必要があります。SigLIPは、すべての画像とテキストのペアを独立した二値分類問題として扱うことで、このボトルネックを解消します。標準的なシグモイド関数を使用し、モデルは特定の画像とテキスト説明が一致するかどうかを予測するだけです。
この損失関数の局所的なアプローチにより、モデルのトレーニング中に必要なメモリは二次関数的ではなく線形にスケールします。その結果、エンジニアは、PyTorchなどのフレームワークでサポートされる標準的なハードウェア構成上で、はるかに大きなバッチサイズを利用できます。これにより、GPUリソースを指数関数的に増加させることなく、多様なデータセットでのパフォーマンスが向上します。
SigLIPとCLIPの違い#
最新のAIアーキテクチャを検討する際には、以前のモデルであるCLIP(対照的言語・画像事前学習)とSigLIPを区別することが重要です。
- CLIP: ソフトマックス損失関数に依存しており、モデルはバッチ内のすべてのテキスト説明と画像を同時に比較する必要があります。そのため、バッチサイズが増加すると、ディープラーニングのトレーニング中に深刻なメモリボトルネックが発生します。
- SigLIP: ペア単位のシグモイド損失を使用します。単一の画像とテキストのペアが正しい一致か誤った一致かを評価するだけでよいため、スケーラビリティに優れ、人工知能ワークフローの最適化時に複数のデバイスへ容易に分散できます。
実世界での利用例#
SigLIPのメモリ効率に優れた設計は、テクノロジー業界のさまざまな実用的アプリケーションにとって強力な基盤となります。
- ゼロショット画像分類: SigLIPは、トレーニング中に明示的には一度も見ていない新しいクラスへ画像を分類することに優れています。これは、カテゴリが頻繁に変わる動的な画像分類システムで非常に有用であり、継続的な手動データラベリングが不要になります。
- セマンティック検索エンジン: SigLIPは、高精度なマルチモーダル埋め込みを生成することで、高度な検索システムを支えます。ユーザーは複雑なテキストクエリを入力し、膨大で構造化されていない画像データベースを高い精度で検索できます。
このような複雑なビジョンタスク向けのカスタムデータを管理する際、チームは多くの場合、Ultralytics Platformを利用して、クラウド上のデータセットアノテーションを効率化し、高度なモデルであるUltralytics YOLO26を高速エッジ推論にデプロイする前に、テキストと画像から得られる洞察をシームレスに統合します。
実装例#
SigLIPが基本レベルでどのように損失を計算するかを理解するには、基本的なPyTorch操作を使用してそのプロセスをシミュレートできます。このスニペットは、ペア単位のシグモイドアプローチが従来のマルチクラス確率ロジックをどのように置き換えるかを示しています。
import torch
import torch.nn.functional as F
# Simulate image and text embeddings from a vision-language model
image_embeddings = torch.randn(4, 256)
text_embeddings = torch.randn(4, 256)
# Calculate pairwise similarities (logits)
logits = torch.matmul(image_embeddings, text_embeddings.T)
# SigLIP uses a binary formulation: 1 for positive pairs, -1 for negative pairs
labels = torch.eye(4) * 2 - 1
loss = -F.logsigmoid(labels * logits).mean()
print(f"Calculated SigLIP Loss: {loss.item():.4f}")この効率化されたアプローチを活用することで、IEEEやACMなどの機関で論文を発表している研究者を含む幅広いAIコミュニティは、マルチモーダル学習の限界を引き続き押し広げ、次世代のビジョンAIに向けた新しいモデルのトレーニングに関するヒントとベストプラクティスを確立しています。









