前のセクションでは、行列分解を使用して、 学習します。行列分解には次のような制限があります。
- 付随する機能(つまり、 クエリ ID やアイテム ID など)が含まれます。そのため モデルにクエリを発行できるのは トレーニング セットに存在するユーザーまたはアイテムです。
- 推奨事項の関連性。最初のモジュールで説明したように Colab 人気のアイテムは誰にでもおすすめされる傾向があり、特に 類似性の尺度として ドット積を使用します特定のユースケースに 向上します
ディープ ニューラル ネットワーク(DNN)モデルは、行列に関するこれらの制限に対処できます。 できます。DNN はクエリの特徴とアイテムの特徴を簡単に組み込める (ネットワークの入力レイヤの柔軟性により)、 ユーザーの特定の興味や関心を捕捉して おすすめします。
レコメンデーション用のソフトマックス DNN
考えられる DNN モデルの一つに、softmax があります。 このモデルでは、この問題を次のマルチクラス予測問題として扱います。
- 入力はユーザークエリです。
- 出力は、確率ベクトルまたは確率ベクトルに等しい データとやり取りする確率を表す 各項目たとえば特定の映画や番組をクリックしたり YouTube 動画。
入力
DNN への入力には以下が含まれます。
- 情報密度の高い機能(総再生時間、最後に再生してからの経過時間など)
- スパースな機能(再生履歴、国など)
行列分解のアプローチとは異なり、 年齢または国。入力ベクトルを x とします。
モデル アーキテクチャ
モデル アーキテクチャによって、モデルの複雑さと表現性が決まります。 隠れ層と非線形活性化関数(ReLU など)を追加することで、 モデルはデータ内のより複雑な関係を捉えることができます。ただし、 パラメータの数を増やすと通常、モデルの予測が困難になります。 費用も高くなります最後の隠れ状態の出力は \(\psi (x) \in \mathbb R^d\)でレイヤ。
ソフトマックス出力: 予測確率分布
このモデルは、ソフトマックス レイヤを使用して最後のレイヤ \(\psi (x)\)の出力をマッピングします。 結合されます \(\hat p = h(\psi(x) V^T)\)。ここで:
- \(h : \mathbb R^n \to \mathbb R^n\) はソフトマックス関数です。 提供元: \(h(y)_i=\frac{e^{y_i}}{\sum_j e^{y_j}}\)
- \(V \in \mathbb R^{n \times d}\) は重みの行列です。 作成します。
ソフトマックス レイヤはスコアのベクトルをマッピングします。 \(y \in \mathbb R^n\) ( ロジット) 確率分布に変換します
で確認できます。損失関数
最後に、以下を比較する損失関数を定義します。
- \(\hat p\): ソフトマックス レイヤの出力(確率分布)
- \(p\): ユーザーが持っているアイテムを表すグラウンド トゥルース 操作した YouTube 動画(ユーザーがクリックまたは視聴した YouTube 動画など)。 これは、正規化されたマルチホット分布( です。
たとえば、2 つのモデルを比較して、 2 つの確率分布です
ソフトマックス エンベディング
アイテムになる確率は \(j\) \(\hat p_j = \frac{\exp(\langle \psi(x), V_j\rangle)}{Z}\), ここで、 \(Z\) は \(j\)に依存しない正規化定数です。
つまり、 \(\log(\hat p_j) = \langle \psi(x), V_j\rangle - log(Z)\)、 つまり、項目の対数確率は \(j\) (加法定数まで) 2 つの \(d\)次元ベクトルのドット積。これは解釈可能な 特徴は次のとおりです。
- \(\psi(x) \in \mathbb R^d\) は、最後の隠れ層の出力です。これをクエリ \(x\)のエンベディングと呼びます。
- \(V_j \in \mathbb R^d\) は、最後の隠れ層を出力 j に接続する重みのベクトルです。これをアイテム \(j\)のエンベディングと呼びます。
DNN と行列分解
ソフトマックス モデルと行列分解モデルの両方で、 システムは 1 つのエンベディング ベクトルを \(V_j\) 1 アイテムあたり \(j\)。これが 行列内のアイテム エンベディング マトリックス \(V \in \mathbb R^{n \times d}\) 因数分解がソフトマックス レイヤの重みの行列になりました。
ただし、クエリのエンベディングは異なります。むしろ、 \(U_i\) クエリごとに \(i\)1 つのエンベディングを クエリ特徴から \(x\) エンベディング \(\psi(x) \in \mathbb R^d\)に変更できます。 したがって、この DNN モデルは行列を一般化したものと クエリ側を非線形関数で置き換えるという 関数 \(\psi(\cdot)\)。
アイテムの機能を使用できますか?
アイテム側にも、同じ考え方を適用できますか?つまり 1 アイテムにつき 1 つのエンべディングだけを エンベディングにアイテム特徴を渡せばよいでしょうか。はい。これを行うには、Two-Tower これは、次の 2 つのニューラル ネットワークで構成されています。
- 1 つのニューラルネットワークは \(x_{\text{query}}\) - クエリ エンベディング \(\psi(x_{\text{query}}) \in \mathbb R^d\)
- 1 つのニューラル ネットワーク マップアイテムの特徴 \(x_{\text{item}}\) からアイテムのエンベディング \(\phi(x_{\text{item}}) \in \mathbb R^d\)
モデルの出力は、モデルのドット積として \(\langle \psi(x_{\text{query}}), \phi(x_{\text{item}}) \rangle\)。 これはもはやソフトマックス モデルではなく、新しいモデルは、 ペアごとに 1 つの値 \((x_{\text{query}}, x_{\text{item}})\) (確率ベクトルの代わりに)を使用します \(x_{\text{query}}\)。