行列分解

行列分解は、単純なエンベディング モデルです。フィードバック マトリックス A \(\in R^{m \times n}\)( \(m\) はユーザー数(またはクエリ)、 \(n\) はアイテム数)に基づいて、モデルは次のことを学習します。

  • ユーザー エンベディング マトリックス \(U \in \mathbb R^{m \times d}\)。行 i はユーザー i のエンベディングです。
  • アイテム エンベディング マトリックス \(V \in \mathbb R^{n \times d}\)。行 j はアイテム j のエンベディングです。

繰り返しの映画の例を使用した行列分解のイラスト。

エンベディングは、積がフィードバック 行列 A を適切に近似するように \(U V^T\) 学習されます。\((i, j)\) のエントリ \(U . V^T\) は、\(\langle U_i, V_j\rangle\) ユーザー \(i\)とアイテム \(j\)のエンベディングの単なるドット積で、 \(A_{i, j}\)に近い値になるようにします。 \(A_{i, j}\)

Objective Functions 関数の選択

直感的な目的関数の一つに、距離の 2 乗があります。これを行うには、観測されたエントリのすべてのペアで、二乗誤差の合計を最小限に抑えます。

\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \sum_{(i, j) \in \text{obs}} (A_{ij} - \langle U_{i}, V_{j} \rangle)^2.\]

この目的関数では、観測されたペア(i、j)のみを合計します。つまり、フィードバック マトリックス内のゼロ以外の値を合計します。ただし、1 つの値を合計することだけはおすすめできません。すべての行列のマトリックスでは損失が最小限に抑えられ、効果的なレコメンデーションができず、一般化が不十分なモデルが生成されます。

3 つの行列の図: 観測された行列分解、加重分解、特異値分解。

観測されない値をゼロとして扱い、行列内のすべてのエントリの合計を求めることもできます。これは、Frobenius の二乗と \(A\) その近似値 \(U V^T\)の最小化に相当します。

\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \|A - U V^T\|_F^2.\]

二次問題を解くには、行列の特異値分解SVD)を使用できます。ただし、実際のアプリケーションでは、マトリックス \(A\) が非常にスパース的であるため、SVD は優れたソリューションではありません。たとえば、特定のユーザーが視聴したすべての動画と比較した YouTube のすべての動画について考えてみましょう。解 \(UV^T\) (入力行列のモデルの近似に対応)はほぼゼロになり、一般化パフォーマンスが低下します。

一方、加重行列分解では、目的を次の 2 つの合計値に分解します。

  • 観測されたエントリの合計。
  • 監視されていないエントリの合計(ゼロとして処理されます)。

\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \sum_{(i, j) \in \text{obs}} (A_{ij} - \langle U_{i}, V_{j} \rangle)^2 + w_0 \sum_{(i, j) \not \in \text{obs}} (\langle U_i, V_j\rangle)^2.\]

ここで、 \(w_0\) は、目標が一方または両方が占有しないように、2 つの項に重み付けするハイパーパラメータです。このハイパーパラメータの調整は非常に重要です。

\[\sum_{(i, j) \in \text{obs}} w_{i, j} (A_{i, j} - \langle U_i, V_j \rangle)^2 + w_0 \sum_{i, j \not \in \text{obs}} \langle U_i, V_j \rangle^2\]

ここで、 \(w_{i, j}\) はクエリ i とアイテム j の頻度の関数です。

目的関数を最小化する

目的関数を最小限に抑える一般的なアルゴリズムには、次のようなものがあります。

  • 確率的勾配降下法(SGD)は、損失関数を最小限に抑える一般的な方法です。

  • 重み付き交互最小二乗WALS)は、この目的に特化したものです。

目的は、2 つの行列 U と V の 2 次指標にあります(ただし、問題は凸集合ではありません)。WALS は、エンベディングをランダムに初期化してから、次の要素を交互に繰り返し使用します。

  • 問題の修正と \(U\) 解決。 \(V\)
  • 問題の修正と \(V\) 解決。 \(U\)

各ステージは(線形システムの解を介して)正確に解くことができ、分散できます。この手法では、各ステップで損失が減少することが保証されているため、収束が保証されています。

SGD と WALS の比較

SGD と WALS にはメリットとデメリットがあります。各オプションの比較については、以下の情報をご覧ください。

シンガポール ドル

柔軟性が高い - 他の損失関数も使用できます。

同時読み込みが可能

時間がかかる - 収束が速くなります。

観測されないエントリを処理しにくい(ネガティブ サンプリングまたはグラビティを使用する必要がある)。

ウォール

損失の二乗のみに依存。

同時読み込みが可能

SGD よりも速く収束します。

監視されていないエントリを処理しやすくなる。