ロス関数 - Shinichi0713/LLM-fundamental-study GitHub Wiki

InfoNCE(Information Noise-Contrastive Estimation)

InfoNCE(Information Noise-Contrastive Estimation)とは、**コントラスト学習(contrastive learning)でよく用いられる損失関数(loss function)**の一つです。
主に自己教師あり学習や表現学習の分野で、類似ペア(positive pair)と非類似ペア(negative pair)を区別するために使われます。


仕組み・目的

  • 目的
    与えられた「アンカー(anchor)」と「ポジティブ(positive)」のペアが、他の「ネガティブ(negative)」サンプルよりも似ている(近い)ように、エンコーダのパラメータを学習させること。
  • 使われる場面
    SimCLR、MoCo、CPC など、さまざまなコントラスト学習手法で使われています。

数式(簡易版)

バッチ内に $N$ 個のサンプルがあり、

  • $q$ … アンカー(例: クエリ特徴ベクトル)
  • $k^+$ … ポジティブ(例: 同じ画像の別変換の特徴ベクトル)
  • $k^-$ … ネガティブ(例: 他の画像の特徴ベクトル)

InfoNCE損失は、以下のように書けます:

$$ \mathcal{L} = -\log \frac{\exp(\text{sim}(q, k^+)/\tau)}{\exp(\text{sim}(q, k^+)/\tau) + \sum_{i=1}^{K} \exp(\text{sim}(q, k_i^-)/\tau)} $$

  • $\text{sim}(a, b)$:コサイン類似度などの類似度関数
  • $\tau$:温度パラメータ(スケーリング用)

直感的な意味

  • 「アンカー」と「ポジティブ」は似ていてほしい(類似度を高く)
  • 「アンカー」と「ネガティブ」は似ていないでほしい(類似度を低く)
  • これを損失関数として最小化することで、意味的に近いもの同士の特徴ベクトルが近づき、遠いもの同士は離れるように学習されます。

まとめ

  • InfoNCEは、コントラスト学習で「正例と負例を区別する」ための損失関数。
  • これにより、良い表現(特徴ベクトル)を自己教師ありで学習できる。
  • SimCLRやMoCoなど、現代の多くの表現学習手法で使われている。