ランキング損失、対比損失、マージン損失、トリプレット損失、ヒンジ損失、およびすべての混乱した名前を理解する

私のポストの成功の後、カテゴリカルクロスエントロピー損失、バイナリクロスエントロピー損失、ソフトマックス損失、ロジスティック損失、焦点損失およびすべての混乱した名前を理解し、トリプレット損失が私の主な研究テーマ(マルチモーダル検索)でクロスエントロピー損失を上回っていることを確認した後、私はランキング損失関数を説明する同様のポストを書くことにしました。

ランキング損失は、さまざまな分野、タスク、ニューラルネットワークの設定(シャムネットやトリプレットネットのような)で使用されます。 そのため、彼らは対照的な損失、証拠金損失、ヒンジ損失またはトリプレット損失などの異なる名前を受け取ります。

ランク付け損失関数:メトリックラーニング

クロスエントロピー損失や平均二乗誤差損失などの他の損失関数とは異なり、その目的は、ラベル、値、または このタスクは、多くの場合、メトリック学習と呼ばれる場合。

ランク付け損失関数は、トレーニングデータの点で非常に柔軟です:それらを使用するには、データポイント間の類似性スコアが必要です。 そのスコアはバイナリ(類似/類似していない)にすることができます。 例として、どの顔画像が同じ人物に属しているか(類似している)、どの顔画像が(類似していない)を知っている顔検証データセットを想像してみてくださ ランキング損失関数を使用して、2つの顔画像が同じ人に属しているかどうかを推測するようにCNNを訓練することができます。

ランク付け損失関数を使用するには、最初に2つ(または3つ)の入力データポイントから特徴量を抽出し、それぞれの埋め込み表現を取得します。 次に,これらの表現間の類似性を測定する計量関数,例えばユークリッド距離を定義した。 最後に,入力が類似している場合には両方の入力に対して同様の表現を生成するように特徴抽出器を訓練し,二つの入力が類似していない場合には二つの入力に対して遠い表現を生成するように訓練した。
私たちは表現の値についても気にせず、それらの間の距離についてのみ気にしません。 しかし、この訓練方法論は、異なるタスクのための強力な表現を生成することが実証されています。

順位損失の定式化

順位損失には異なる名前が使用されますが、それらの定式化は単純で不変です。 トレーニングデータポイントのペアまたはトレーニングデータポイントのトリプレットを使用する場合、二つの異なる設定に対して二つの種類のランキング損失を区別します。
それらの両方は、トレーニングデータサンプルの表現間の距離を比較します。

ビデオフォーマットを好むなら、私はこの投稿からビデオを作りました。 スペイン語でも利用可能:

ペアワイズランキング損失

画像の顔の検証のためのネットを訓練するためのペアワイズランキングロス設定の例。 この設定では、Cnnの重みが共有されます。 シャムネットと呼んでいます しかし、ペアワイズのランキング損失は、他のセットアップで、または他のネットで使用することができます。

正のペアの場合、損失は、ネットがペア内の2つの要素の間に距離がない両方の表現を生成し、損失(したがって、対応するネットパラメータの更新)がその距離とともに増加する場合にのみ、\(0\)になります。

負のペアの場合、2つのペア要素の表現間の距離がマージン\(m\)より大きい場合、損失は\(0\)になります。 しかし、その距離が\(m\)より大きくない場合、損失は正になり、正味パラメータが更新されて、これら2つの要素のより遠い表現が生成されます。\(m\) 損失値は、\(r_a\)と\(r_n\)の間の距離が\(0\)の場合、最大\(m\)になります。 マージンの機能は、負のペアのために生成された表現が十分に遠い場合、その距離を拡大する努力が無駄にならないため、さらなる訓練はより困難なペアに焦点を当てることができるということです。

トリプレットランキングレッスンレッスン

画像顔検証のためのネットを訓練するための三重項ランキング損失設定の例。 この設定では、Cnnの重みが共有されます。 私たちはそれをトリプルネットと呼んでいます。

この損失の3つの状況を分析してみましょう:

ソース:https://omoindrot.github.io/triplet-loss。 アンカーと正のペアのための三つの”ネガの種類”の表現。

ネガ選択

トリプレットランキング損失を伴うトレーニングの重要な決定は、ネガ選択またはトリプレットマイニングです。 選択された戦略は、トレーニングの効率と最終的なパフォーマンスに大きな影響を与えます。 明らかな感謝は、その結果の損失が\(0\)になるので、簡単な三つ子での訓練は避けるべきであるということです。

最初の戦略は、オフライン三重項マイニングを使用しました,これは三重項が訓練の開始時に定義されていることを意味します,または各エポックで. その後、オンライントリプレットマイニング、つまりトレーニング中にすべてのバッチに対してトリプレットが定義されることが提案され、トレーニン
ネガ選択の最適な方法は、タスクに大きく依存します。 しかし、私はこの記事でそれに入るつもりはありません,その目的は、唯一の概要の損失をランキングするための異なる名前とアプローチであるため、. トリプレットマイニングの詳細な分析については、Oliver moindrotのブログ記事を参照してください。

ディープラーニングにおけるトリプレット損失は、ディープランキングとFaceNetを使用したきめ細かい画像類似性の学習で導入されました。

このgithubには、クロスエントロピー損失、ペアワイズランキング損失とトリプレットランキング損失、およびそれらの訓練のためのPytorchコードを持つMNISTで訓練されたモデルからのいくつかの興味深いプロットが含まれています。

ランク損失に使用されるその他の名前

ランク損失は、上記で説明したものが本質的であり、同じ定式化またはマイナーなバリエーションを持つ多くの異な ただし、異なる名前が使用されているため、混乱する可能性があります。 ここでは、それらの名前が使用される理由を説明します。

  • : この名前は、特定の順序でアイテムをランク付けするようにモデルを訓練する情報検索フィールドから来ています。
  • 証拠金損失:この名前は、これらの損失がサンプル表現の距離を比較するために証拠金を使用するという事実から来ています。
  • コントラスト損失:コントラストは、これらの損失が二つ以上のデータポイント表現を対照的に計算されているという事実を指します。 この名前は、多くの場合、ペアワイズのランキング損失のために使用されていますが、私は三つ子とのセットアップでそれを使用して見たことがあ
  • トリプレット損失:トリプレットトレーニングペアを使用するときに損失名としてよく使用されます。
  • ヒンジ損失:最大マージン目標としても知られています。 それは分類のためのSvmを訓練するために使用されます。 それはマージンまで最適化するという意味で同様の定式化を持っています。 そのため、この名前はランキングの損失に使用されることがあります。

シャムとトリプレットネット

シャムとトリプレットネットは、ペアワイズランキングロスとトリプレットランキングロスが使用されるトレーニングセッ しかし、これらの損失は他の設定でも使用できます。
これらの設定では、ペアまたはトリプレット内の学習サンプルの表現は、共有重みを持つ同一のネット(同じCNNを持つ)で計算されます。

シャムネット

は、重みが共有されている2つの同一のCnnによって構築されます(両方のCnnは同じ重みを持ちます)。 これらのネットのそれぞれは、画像を処理し、表現を生成します。 これらの表現が比較され、それらの間の距離が計算されます。 次に,類似画像によって生成される表現間の距離が小さく,非類似画像の表現間の距離が大きいように,ペアワイズランキングロスを使用してネットワークを訓練する。

シャムネット設定では、ペア内の両方の要素の表現は同じCNNによって計算されるので、CNNの\(f(x)\)であるため、ペアワイズ順位損失を次のように書くこ:

トリプレットネット

アイデアはシャムネットに似ていますが、トリプレットネットには三つの枝(共有重みを持つ三つのCnn)があります。 モデルは、対応するアンカー画像に正と負の画像を同時に与え、三重項ランキング損失を使用することによって訓練されます。 これにより、ネットはどの画像がアンカー画像と似ていて異なっているかをよりよく知ることができます。三重項ネットの場合、同じCNN\(f(x)\)が3つの三重項要素の表現を計算するために使用されるので、三重項順位損失を次のように書くことができます :

マルチモーダル検索のランキング損失

私の研究では、画像やテキストのマルチモーダル検索にトリプレットランキング損失を使用してきました。 トレーニングデータは、関連付けられたテキストを含む画像のデータセットで構成されます。 目的は,クロスモーダル検索のために同じ空間内の画像と単語の埋め込みを学ぶことである。 これを行うには、まずWord2VecやGloVeなどのアルゴリズムを使用して、テキストのみから単語の埋め込みを学習して凍結します。 次に、同じ空間に画像を埋め込むようにCNNを訓練することを目指しています: アイデアは、マルチモーダル埋め込み空間内の同じポイントに画像とそれに関連するキャプションを埋め込むことを学ぶことです。

それを行う最初のアプローチは、クロスエントロピー損失を使用して画像からテキスト埋め込みを直接予測するようにCNNを訓練することでした。 結果は良かったが、後で私達は三重項のランキングの損失の結果を使用してよりよいことが分った。

設定は以下の通りです。固定テキスト埋め込み(グローブ)を使用し、画像表現(CNN)のみを学習します。 したがって、アンカーサンプル\(a\)は画像であり、正のサンプル\(p\)はその画像に関連付けられたテキストであり、負のサンプル\(n\)は別の「負の」画像のテキ 負のテキストを選択するために、我々は、正のテキストの埋め込みとグローブスペース内の距離を使用して、さまざまなオンライン負のマイニング戦略を トリプレットマイニングは、確立されたクラスがないので、この問題では特に賢明です。 画像の多様性を考えると、私たちは多くの簡単な三つ子を持っています。 しかし、別の画像に関連付けられたテキストはアンカー画像にも有効である可能性があるため、ハードネガを慎重に採掘する必要があります。

マルチモーダル検索パイプラインのトリプレットランキングロストレーニング。 テキストグローブの埋め込みは固定されており、CNNでは、画像を負のテキストよりも正のテキストに近い位置に埋め込むように訓練しています。

この設定を用いて,三重項ランク付け損失訓練とクロスエントロピー損失訓練を比較するためにいくつかの定量的結果を計算した。 ここでは実験の詳細を説明するつもりはありませんが、設定は(paper、blogpost)で使用されているものと同じです。 基本的に、我々はいくつかのテキストクエリを行い、自己監督された方法でソーシャルメディアデータから学習するときにテキスト検索パフォーマンスによ 三重項順位損失を使用した結果は、クロスエントロピー損失を使用するよりも有意に優れています。

Instacities1Mのテキスト平均精度による画像検索。

テキスト埋め込みを予測するために、クロスエントロピー損失または平均二乗誤差損失の代わりに三重項ランキング損失を使用するもう一つの利点は、事前に計算され固定されたテキスト埋め込みを脇に置くことができることです。 これにより、RNN、LSTMを使用してテキストを処理することができ、CNNと一緒に訓練することができ、より良い表現につながります。

同様のアプローチは、COCOのマルチモーダル検索システムやキャプションシステムを訓練するために使用されています。

  • 制約損失層。 ペアワイズランキング損失計算に限定されます。 例えば、シャムネットワークを訓練するために使用することができます。

  • PyCaffeトリプレットランキング損失層。 David Luによってトリプレットネットワークを訓練する。

パイトルチ

  • Cosine Embeddingloss。 これは、距離メトリックとして余弦距離を使用するペアワイズの順位付け損失です。 入力は、pair要素の特徴、それが正または負のペアであるかどうかを示すラベル、およびマージンです。

  • マージンランキングロス 前者に似ているが、ユークリッド距離を使用する。

  • トリプレットマルギンロス ユークリッド距離を使用した三重項順位付け損失。

テンソルフロー

  • 対照的です。 ペアワイズランキングの損失。

  • トリプレット_セミハード_ロス。 セミハードネガティブマイニングによるトリプレット損失。

コメントを残す

メールアドレスが公開されることはありません。