矩陣分解

矩陣分解是簡單的嵌入模型由於 回饋矩陣 A Rm×n,其中 m 是 「使用者人數」(或查詢數量) 和「項目數量」 n 模型會學習:

  • 使用者嵌入矩陣 URm×d, 其中資料列 i 是使用者 i 的嵌入項目。
  • 這是項目嵌入矩陣 VRn×d, 其中第 j 列是項目 j 的嵌入項目。

插圖:以週期性電影為例,說明矩陣分解。

學會從這些嵌入判斷出產品 UVT 是 意見表 A.您會發現 (i,j) 項目 U.VT 就是點號商品 Ui,Vj 使用者嵌入的項目 i 和 item j,也就是您想要靠近 Ai,j

選擇目標函式

其中一項直覺的目標函式為平方距離。方法如下 盡可能減少所有觀察項目組合的平方錯誤總和:

minURm×d, VRn×d(i,j)obs(AijUi,Vj)2.

在這個目標函式中,您只會加總觀察到的組合 (i、j), 也就是意見矩陣中的非零值不過 將多個值超過一個值,不是個好主意 — 能將損失降至最低,並無法產生無法有效建議的模型 而且一般而言不善

三個矩陣的插圖:僅觀察的矩陣分解、加權分解及單數值分解。

或許您可以將未觀察的值視為零,然後加總 矩陣的項目這樣有助於將 平方佛羅貝尼斯 A 及其約略值 UVT之間的距離:

minURm×d, VRn×dAUVTF2.

想要解決這個二次方程式問題 矩陣的單數值分解 (SVD)。不過 由於在實際應用程式中 矩陣 A 可能非常稀疏例如 與特定使用者看過的所有影片相比。 解決方案 UVT (與模型的概略值對應) 可能趨近於零,最後成為不佳 一般化效能

相較之下,加權矩陣分解則會將目標分解 轉換為下列兩個總和:

  • 已觀察項目的總和。
  • 未觀察項目的總和 (視為零)。

minURm×d, VRn×d(i,j)obs(AijUi,Vj)2+w0(i,j)obs(Ui,Vj)2.

以下的 w0 超參數會將這兩個字詞加權。 系統就不會確立目標。 調整這個超參數非常重要。

(i,j)obswi,j(Ai,jUi,Vj)2+w0i,jobsUi,Vj2

其中 wi,j 是查詢頻率和項目 j 的函式。

將目標函式降到最低

目標函式最小化的演算法包括:

  • 隨機梯度下降 (SGD) 是一種將損失函式降到最低的通用方法。

  • 加權交替最小正方形 (WALS) 是專門用於這項設定的 的特定目標

目標是 U 和 V 這兩個矩陣的二次方程式 (請注意 然而,這個問題並不是互通的)。WALS 的運作方式是 然後隨機交錯:

  • 正在修正 U 與解決 V的問題。
  • 正在修正 V 與解決 U的問題。

每個階段都能精確解決 (利用線性系統的解法),並能 發布。這個技巧保證會收斂,因為每個步驟 保證能減少損失

SGD 與 WALS

SGD 和 WALS 有優缺點。 請參閱以下資訊,瞭解兩者的比較結果:

SGD

相當靈活 — 可以使用其他損失 函式

可以平行處理。

較慢—不要以最快的速度交匯。

較難處理未觀察的項目 (需要 使用負取樣或重力)。

WALS

只仰賴損失正方形。

可以平行處理。

傳輸速度比 SGD 更快。

處理未觀察的項目更輕鬆。