前のページでは、レコメンデーション システムのためにディープ ニューラル ネットワークに softmax レイヤを組み込む方法を説明しました。このページでは、このシステムのトレーニング データについて詳しく説明します。
損失
softmax トレーニング データは、クエリ機能 \(x\) と、ユーザーが操作したアイテムのベクトル(確率分布として表されます) \(p\)で構成されます。次の図では、青色の印が付けられています。モデルの変数は、さまざまなレイヤの重みです。次の図では、オレンジ色でマークされています。モデルは通常、確率的勾配降下法の任意のバリアントを使用してトレーニングされます。
ネガティブ サンプリング
損失関数は 2 つの確率ベクトル\(p, \hat p(x) \in \mathbb R^n\) (それぞれグラウンド トゥルースとモデルの出力)を比較するため、コーパスサイズが \(n\) 大きすぎる場合は損失の勾配(1 つのクエリ \(x\))の計算に高いコストがかかることがあります。
正のアイテム(グラウンド トゥルース ベクトルでアクティブなアイテム)に対してのみ勾配を計算するシステムを設定できます。ただし、システムがポジティブなペアでのみトレーニングする場合、後述するように、モデルの折りたたみがうまくいかない可能性があります。
このモデルは、特定の色のクエリ/アイテムのエンベディングを相対的に配置する方法を学習する可能性があります(その色内の類似性を正確にキャプチャします)が、さまざまな色のエンベディングがエンベディング空間の同じ領域に偶然存在する可能性があります。このような現象は折りたたみとして知られ、疑わしいレコメンデーションにつながる可能性があります。つまり、クエリの実行時に、モデルが別のグループからのアイテムのハイスコアを誤って予測することがあります。
ネガティブ サンプルとは、特定のクエリに「無関係」というラベルの付いた項目のことです。トレーニング中にモデルのネガティブ サンプルを示すことで、異なるグループのエンベディングを互いから遠ざける必要があることがモデルに伝わります。
すべてのアイテムを使用して勾配を計算する(コストが高すぎる)か、正のアイテムのみを使用する(モデルの折りたたみが発生しやすい)代わりに、ネガティブ サンプリングを使用できます。より正確には、次の項目を使用して近似勾配を計算します。
- すべての肯定的なアイテム(ターゲット ラベルに表示されるアイテム)
- 否定的なアイテムのサンプル(\(j\) インチ \({1, …, n}\))
ネガティブをサンプリングするためのさまざまな戦略があります。
- 均一にサンプリングできます。
- スコアが j のアイテム j に高い確率を設定できます \(\psi(x) . V_j\)。直感的に説明すると、勾配に最も大きく影響するサンプルです。多くの場合、こうしたサンプルはハードネガティブと呼ばれます。
行列分解と Softmax の比較
DNN モデルは行列分解の多くの制限を解決しますが、通常はトレーニングとクエリのコストが高くなります。次の表は、2 つのモデルの重要な違いをまとめたものです。
行列分解 | ソフトマックス DNN | |
---|---|---|
クエリ機能 | 含めるのが難しい場合。 | 含めることができます。 |
コールド スタート | 語彙外のクエリやアイテムを簡単に処理しない。一部のヒューリスティック(新しいクエリの場合、類似クエリの平均エンベディングなど)を使用できます。 | 新しいクエリを簡単に処理。 |
折り加工 | WALS で観測されない重みを調整することで、折りたたみを簡単に削減できます。 | 折りたたみ防止機能。ネガティブ サンプリングやグラビティなどの手法を使用する必要があります。 |
トレーニングのスケーラビリティ | 非常に大規模なコーパス(数億個以上のアイテムなど)にも容易に拡張できますが、入力行列が疎である場合に限ります。 | 非常に大きなコーパスへのスケーリングが困難。ハッシュ化、ネガティブ サンプリングなど、いくつかの手法を使用できます。 |
スケーラビリティの提供 | エンベディング U、V は静的であり、候補のセットを事前に計算して保存できます。 | アイテムのエンベディング V は静的で、格納できます。 通常、クエリ エンベディングはクエリ時に計算する必要があるため、モデルの処理コストが高くなります。 |
概要は次のとおりです。
- 大規模なコーパスでは、行列分解が一般的に適しています。 スケーリングが容易になり、クエリが低コストで、折りたたみが起こりにくくなっています。
- DNN モデルでは、パーソナライズされた設定をより適切にキャプチャできますが、トレーニングが難しく、クエリのコストが高くなります。DNN モデルはスコアリングの行列分解よりも推奨されます。DNN モデルでは、より多くの特徴を使用して関連性をより正確にキャプチャできるためです。また、一般的には、事前にフィルタリングされた関連性のある候補のセットをランク付けすることを重視するため、DNN モデルの折りたたみは可能です。