human
MLの分野に新しい人のために、機械学習の対照学習を簡単な用語で説明できますか？
gpt
もちろん！猫と犬のイメージを区別できるモデルを構築したいとしましょう。多くの猫と犬の写真で構成されるデータセットを収集します。次に、[0.123、0.045、0.334、...]などの数値のシーケンスを作成する選択肢のニューラルネットにそれらを配置します。問題は、モデルが猫や犬の画像に不慣れな場合、これらの表現が非常にランダムになることです。かつては猫と犬の写真が非常に似たような表現を持っている可能性があります（その数は互いに近くにあります）が、他の人では2つの猫の画像がはるかに離れている可能性があります。簡単に言えば、モデルは猫や犬を引き離すことができません。これは、対照学習が登場する場所です。

対照的な学習のポイントは、サンプルのペア（この場合は猫と犬の画像）を採取し、モデルをトレーニングして、同様のペア（猫猫または犬の犬）の表現を互いに「引く」ことと「プッシュすることです。「異なるペア（猫犬）の表現。十分な数のステップでこれを行うと、モデルは猫や犬のためのユニークで信頼できる表現を作成できるようになります。

この方法は画像に限定されません。通常、類似のデータポイントが類似していないデータセットで使用できます。
human
引っ張って動作する方法がわかりませんでした。私たちは何を引っ張ったり押したりしていますか？そして、コードや数学の観点からどのように機能しますか？
gpt
対照的な学習では、「プル」と「プッシュ」は、ニューラルネットワークによって生成された表現（前述の数値のシーケンス）を調整することを指し、同様のサンプルが互いに近く、表現空間では異なるサンプルがはるかに離れています。。
これは、サンプルの各ペアの表現を比較し、それらがどれだけ近いか離れているかを測定するスコアを計算する損失関数を使用して達成されます。目標は、同様のペアのこのスコアを最小化し、異なるペアに対して最大化することです。
数学的な詳細は異なる場合がありますが、一般的なアプローチは対照的な損失を使用することです。これは次のように計算されます。

loss =（1 -y） * d^2 + y * max（margin -d、0）^2

どこ：

    -Dは、2つのサンプルの表現間のユークリッド距離です
    -yは、2つのサンプルが類似しているか（y = 1）か異なる（y = 0）かを示すバイナリラベルです
     - マージンは、異なるペアの表現間の最小許容距離を設定するハイパーパラメーターです

この損失関数は、同様のペアの表現が近くに近くにあることを促進します（つまり、Dは小さい）。一方、近くの異なるペアの表現を罰します（つまり、Dは大きいがマージン未満）。
この損失を最適化するために、確率的勾配降下などの勾配ベースの最適化方法を使用して、ニューラルネットワークのパラメーターを更新できます。アイデアは、時間の経過とともに、ネットワークによって生成される表現は、類似のサンプルと異なるサンプルを分離するのがますます良くなり、異なるクラスを区別するモデルの能力が向上するということです。
human
ユークリッド距離について詳しく教えてください。