ディープ ニューラル ネットワーク モデル

前のセクションでは、行列分解を使用して、 学習します。行列分解には次のような制限があります。

  • 付随する機能(つまり、 クエリ ID やアイテム ID など)が含まれます。そのため モデルにクエリを発行できるのは トレーニング セットに存在するユーザーまたはアイテムです。
  • 推奨事項の関連性。最初のモジュールで説明したように Colab 人気のアイテムは誰にでもおすすめされる傾向があり、特に 類似性の尺度として ドット積を使用します特定のユースケースに 向上します

ディープ ニューラル ネットワーク(DNN)モデルは、行列に関するこれらの制限に対処できます。 できます。DNN はクエリの特徴とアイテムの特徴を簡単に組み込める (ネットワークの入力レイヤの柔軟性により)、 ユーザーの特定の興味や関心を捕捉して おすすめします。

レコメンデーション用のソフトマックス DNN

考えられる DNN モデルの一つに、softmax があります。 このモデルでは、この問題を次のマルチクラス予測問題として扱います。

  • 入力はユーザークエリです。
  • 出力は、確率ベクトルまたは確率ベクトルに等しい データとやり取りする確率を表す 各項目たとえば特定の映画や番組をクリックしたり YouTube 動画。

入力

DNN への入力には以下が含まれます。

  • 情報密度の高い機能(総再生時間、最後に再生してからの経過時間など)
  • スパースな機能(再生履歴、国など)

行列分解のアプローチとは異なり、 年齢または国。入力ベクトルを x とします。

ソフトマックス ディープ ニューラル ネットワークの入力レイヤをハイライト表示した画像
図 1. 入力レイヤ x。

モデル アーキテクチャ

モデル アーキテクチャによって、モデルの複雑さと表現性が決まります。 隠れ層と非線形活性化関数(ReLU など)を追加することで、 モデルはデータ内のより複雑な関係を捉えることができます。ただし、 パラメータの数を増やすと通常、モデルの予測が困難になります。 費用も高くなります最後の隠れ状態の出力は \(\psi (x) \in \mathbb R^d\)でレイヤ。

ソフトマックス ディープ ニューラル ネットワークの隠れ層をハイライト表示した画像
図 2. 隠れ層の出力( \(\psi (x)\))。

ソフトマックス出力: 予測確率分布

このモデルは、ソフトマックス レイヤを使用して最後のレイヤ \(\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\) ( ロジット) 確率分布に変換します

ソフトマックス ディープ ニューラル ネットワークでの予測確率分布を示す画像
図 3. 予測された確率分布 \(\hat p = h(\psi(x) V^T)\)。
で確認できます。

損失関数

最後に、以下を比較する損失関数を定義します。

  • \(\hat p\): ソフトマックス レイヤの出力(確率分布)
  • \(p\): ユーザーが持っているアイテムを表すグラウンド トゥルース 操作した YouTube 動画(ユーザーがクリックまたは視聴した YouTube 動画など)。 これは、正規化されたマルチホット分布( です。

たとえば、2 つのモデルを比較して、 2 つの確率分布です

ソフトマックス ディープ ニューラル ネットワークの損失関数を示す画像
図 4. 損失関数。

ソフトマックス エンベディング

アイテムになる確率は \(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\)のエンベディングと呼びます。
で確認できます。
ソフトマックス ディープ ニューラル ネットワークのエンベディングを示す画像
図 5.アイテム \(j\)、 \(V_j \in \mathbb R^d\) の埋め込み

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}}\)。