Softmax 訓練

前一頁說明如何將 softmax 層納入推薦系統的深層類神經網路。本頁面會進一步說明這個系統的訓練資料。

訓練資料

softmax 訓練資料包含查詢功能 \(x\) 和使用者互動的項目向量 (表示為機率機率) \(p\)。在下圖中以藍色標示。模型變數是不同層中的權重。在下圖中,這些屬性會標示為橘色。模型通常會使用隨機梯度下降的所有變化版本來訓練。

強調 Softmax 深層類神經網路訓練的圖片

負面取樣

由於損失函式會比較兩個可能向量向量\(p, \hat p(x) \in \mathbb R^n\) (真值和模型的輸出結果),因此如果語料庫的大小 \(n\) 過大,可能會計算損失的梯度 (單一查詢 \(x\)) 可能會產生昂貴的成本。

您可以將系統設定為僅針對正項目 (在真值向量中啟用的項目) 計算漸層。不過,如果系統只以正向的訓練進行訓練,模型可能會折疊,如下所述。

摺疊
飛機折疊的半型圖片,其中顯示 3 個代表查詢的方形群組,以及代表項目的圓圈。每個群組的顏色都不同,因此查詢只會與同一群組中的項目互動。在下圖中,假設每種顏色代表的不同類別查詢和項目。每個查詢 (以正方形表示) 最多只會與相同顏色的項目 (以圓形表示) 互動。例如,每個類別在 YouTube 中都有不同的語言。 一般使用者通常會使用一種語言的影片來操作。

模型可能會瞭解如何指定特定顏色的查詢/項目嵌入相對於彼此的位置 (以正確方式擷取該顏色中的相似度),但嵌入不同顏色的嵌入項目可能會嵌入嵌入空間的相同區域。這種情境稱為「折疊」,可能會產生不良的建議做法:在查詢時,模型可能會錯誤預測其他群組的商品最高分數。

負示例是針對特定查詢標示為「不相關」的項目。在訓練期間顯示模型的負值範例,可訓練將不同群組嵌入的模型互相分散。

建議您使用所有項目進行取樣,而不必使用所有項目來計算漸層 (費用可能太高) 或僅使用正值 (導致模型折疊)。更準確地說,您可以使用下列項目計算概略梯度:

  • 所有正面項目 (在目標標籤中出現的項目)
  • 負面項目示例 (\(j\) \({1, …, n}\))

有取樣的取樣策略不同:

  • 你也可以統一取樣。
  • 您可以為分數較高的 j 值提高 \(\psi(x) . V_j\)。實際來說,這些範例對漸層的貢獻最大:這些範例通常稱為硬式負值。

矩陣分解與 Softmax 相比

DNN 模型可解決矩陣分解的許多限制,但訓練及查詢通常較為昂貴。下表摘要說明這兩種模型之間的部分重要差異。

矩陣分解 Softmax DNN
查詢功能 容易加入。 可加入。
冷啟動 您可以輕鬆處理不雅用語的查詢或項目。可以使用一些經驗法則 (例如:針對新查詢、類似查詢的平均嵌入)。 輕鬆處理新查詢
摺疊 調整 WALS 中未觀察到的權重,即可輕鬆折疊。 容易收合。需要使用排除取樣或重力等技巧。
訓練擴充性 可輕鬆擴充至極大型公司 (或可能有數億個以上項目),但前提是輸入矩陣是稀疏的情況。 較容易擴充至規模龐大的語料庫。但您可以使用一些技巧,例如雜湊、負值取樣等。
服務擴充性 嵌入 U、V 為靜態,且一組預選項目可以預先計算及儲存。 項目嵌入 V 具有靜態性且可以儲存。

查詢嵌入通常需要在查詢時計算,這使得模型的提供成本更高。

摘要說明:

  • 對大型企業來說,矩陣分解通常是更好的選擇。易於調度資源、以更便宜的價格查詢,且較不折疊。
  • DNN 模型可以更有效地擷取個人化偏好設定,但查詢的難度較低,查詢成本也較高。DNN 模型偏好使用矩陣分解以獲得評分,因為 DNN 模型可以使用更多功能,更準確地擷取關聯性。此外,通常可以接受 DNN 模型折疊,因為您很關心如何優先假設預先篩選的候選組合具有關聯性。