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

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

この方法は画像に限定されません。通常、類似のデータポイントが類似していないデータセットで使用できます。
human
引っ張って動作する方法がわかりませんでした。私たちは何を引っ張ったり押したりしていますか？そして、コードや数学の観点からどのように機能しますか？
gpt
それは、微分と呼ばれるプロセスに関係しています。つまり、派生物を見つけることを意味します。特定のポイントで別の関数が上下するかどうかを示す関数です。たとえば、 `f（x）= x`の導関数は` f '（x）= 1`です。これは、常に1：1の比率で上昇しているためです。これは、さまざまな機能に対して実行できます。特に、 `f（x）`および `g（x）`の導関数がわかっている場合、チェーンルールと呼ばれる式を使用して `f（g（x））`の導関数を取得することもできます。ニューラルネットワークはたまたま微分可能な機能で作られているため、部品またはそのすべての派生物を採取できます。

これを「プッシュ」と「プル」に使用するために、ニューラルネットワークに2つの画像を配置します。画像が猫と犬のものであるとしましょう。そのため、2つの間の距離を増やしたいと思います。ネットワークから1つのニューロン重量を選択し、変数「X」にし、ネットワークと他のすべてのパラメーターに基づいてネットワークの出力を計算する関数を構築します。`n（x）`と呼びましょう。猫と犬の出力の間の距離は、 `f（x）= n（cat）-n（犬）`です。（もちろん、実際の出力には1つ以上の寸法がありますが、単純化しています。）今、2つの出力をさらに離れて移動するように、重量を微調整したいと考えています。そのために、派生物を単に取ることができます！`f '（x）`が陽性の場合、それは体重を増やすとさらに離れて動くことを意味するので、それを行う必要があります。負の場合は、それらを近づけて移動するため、代わりに体重をわずかに減らしたいと思います。これをすべてのニューロンに十分に適用すると、ネットワークはすぐにかなり良い猫犬分離器に収束します！