距離測度および距離を最小化すべきかあるいは最大化すべきかを指定する目標に基づいて損失を計算する損失層を表す.
ContrastiveLossLayer[margin]
Trueであるターゲットについて,それを超えると損失が0になる距離を指定する.
ContrastiveLossLayer
距離測度および距離を最小化すべきかあるいは最大化すべきかを指定する目標に基づいて損失を計算する損失層を表す.
ContrastiveLossLayer[margin]
Trueであるターゲットについて,それを超えると損失が0になる距離を指定する.
詳細とオプション
- ContrastiveLossLayerは,類似入力はベクトル空間内でクラスタを形成し非類似入力はバラバラになるようなベクトル空間への入力から埋込みについて学ぶために,NetPairEmbeddingOperatorと組み合せて使われることが多い.
- ContrastiveLossLayerは,NetGraph等で使用するために次のポートを開放する.
-
"Input" 距離を表す実数 "Target" 距離が最大化されるべきときはTrue,最小化されるべきときはFalse "Loss" 実数 - ContrastiveLossLayer[margin]は次の損失を計算する.
- ContrastiveLossLayer[…][<|"Input"in,"Target"target|>]は,層を適用して明示的に損失を計算する.
- ContrastiveLossLayer[…][<|"Input"{in1,in2,…},"Target"{target1,target2,…}|>]は,それぞれの iniと targetiについて明示的に損失を計算する.
- NumericArrayが入力として与えられると,出力はNumericArrayになる.
- ContrastiveLossLayerは,学習済み埋込みのための訓練ネットワークを構築するためにNetGraph内で使われることが多い.
- 特定のネットワークの訓練中に,ContrastiveLossLayer[…]オブジェクトをNetTrainの第3引数として与えることができる.
- 適切な場合には,NetTrainは,明示的な損失指定が与えられていなければ,自動的にContrastiveLossLayerを使う.
- Options[ContrastiveLossLayer]は層を構築する際のデフォルトオプションのリストを与える.Options[ContrastiveLossLayer[…]]はデータについて層を評価する際のデフォルトオプションのリストを与える.
- Information[ContrastiveLossLayer[…]]は層についてのレポートを与える.
- Information[ContrastiveLossLayer[…],prop]はContrastiveLossLayer[…]の特性 prop の値を与える.使用可能な特性はNetGraphと同じである.
例題
すべて開く すべて閉じる例 (2)
指定されたマージンでContrastiveLossLayerを作る:
ContrastiveLossLayer[1.5]loss = ContrastiveLossLayer[]loss[<|"Input" -> 0.1, "Target" -> True|>]ターゲットがTrueのとき,入力距離がデフォルトのマージンの0.5未満の場合にのみ損失が非零になる:
loss[<|"Input" -> 0.1, "Target" -> True|>]
loss[<|"Input" -> 0.6, "Target" -> True|>]ターゲットがFalseのとき,損失は入力距離に比例する:
loss[<|"Input" -> 0.1, "Target" -> False|>]アプリケーション (1)
合成データ集合をその位相のみに基づいて埋め込む多層パーセプトロンを訓練する.まず,平面上で密である螺旋状の多様体に基づいて訓練データを作る:
points = Table[r -> AngleVector[{r + RandomReal[5.5], r + RandomReal[0.1]}] / 15, {r, 0, 6Pi, .002}];Graphics[Point[Values@points], Frame -> True]mlp = NetChain[{200, Ramp, 100, Ramp, 20, Tanh, 1}, "Input" -> 2];lossNet = NetPairEmbeddingOperator[mlp]ペアになった点のサンプルを取り,その多様体についてのパラメータ化の違いがPiよりも大きい場合にそれらをTrueと関連付ける生成器を作る:
sampler[n_] := Block[{a, b},
a = RandomSample[points, n];
b = RandomSample[points, n];
Thread[Transpose[Values /@ {a, b}] -> Thread[Abs[Keys[a] - Keys[b]] > Pi]]];sampler[4]生成器を使って点のサンプルを取り,もとのパラメータ化が近い場合にそれらが同じであると分類するネットワークを訓練する:
trained = NetTrain[lossNet, sampler[#BatchSize]&, LossFunction -> ContrastiveLossLayer[], BatchSize -> 512, TimeGoal -> 120]trainedMlp = NetExtract[trained, "Net"];ネットによってカラーマップとして訓練された1D埋込みをプロットする:
ArrayPlot[Flatten /@ trainedMlp /@ CoordinateBoundsArray[1.3 * {{-1, 1}, {-1, 1}}, .05], ColorFunction -> Hue
]テクニカルノート
関連するガイド
テキスト
Wolfram Research (2017), ContrastiveLossLayer, Wolfram言語関数, https://reference.wolfram.com/language/ref/ContrastiveLossLayer.html.
CMS
Wolfram Language. 2017. "ContrastiveLossLayer." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/ContrastiveLossLayer.html.
APA
Wolfram Language. (2017). ContrastiveLossLayer. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ContrastiveLossLayer.html
BibTeX
@misc{reference.wolfram_2026_contrastivelosslayer, author="Wolfram Research", title="{ContrastiveLossLayer}", year="2017", howpublished="\url{https://reference.wolfram.com/language/ref/ContrastiveLossLayer.html}", note=[Accessed: 15-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_contrastivelosslayer, organization={Wolfram Research}, title={ContrastiveLossLayer}, year={2017}, url={https://reference.wolfram.com/language/ref/ContrastiveLossLayer.html}, note=[Accessed: 15-September-2026]}