上一節將說明如何使用矩陣分解 學習嵌入矩陣分解的限制包括:
- 使用副業的難易度 (亦即,除了 查詢 ID/項目 ID)。因此,您只能使用 訓練集內的使用者或項目
- 建議的關聯性。如第 1 行 Colab 熱門商品推薦給所有人 計算相似度量最好 使用者興趣。
深層類神經網路 (DNN) 模型可以解決這些矩陣的限制 。DNN 可以輕鬆整合查詢功能和項目功能 (因為網路輸入層的靈活性), 掌握使用者的特定興趣,並提高 最佳化建議。
建議使用 Softmax DNN
其中一個 DNN 模型為 softmax、 會將問題視為多類別預測問題,其中:
- 輸入內容即為使用者查詢內容。
- 輸出結果是機率向量,大小等於 語料庫中的項目,代表與模型互動的機率 每個項目;例如使用者點按或觀看 YouTube 影片。
輸入
DNN 的輸入內容可包含:
- 稠密功能 (例如自上次觀看以來的觀看時間與時間)
- 稀疏功能 (例如觀看記錄和國家/地區)
有別於矩陣分解方法,您可以新增側面特徵,例如 年齡或國家/地區。我們將用 x 來表示輸入向量
模型架構
模型架構會決定模型的複雜度和表達能力。 透過新增隱藏層和非線性活化函式 (例如 ReLU), 模型就能從資料中擷取更複雜的關係不過 增加參數數量也會讓模型 訓練成本較高我們會將最後一個隱藏的輸出內容 加入 圖層。
Softmax 輸出:預測機率分佈
該模型透過 softmax 對應最後一層 ( ) 的輸出內容 納入機率分佈 的流程,其中:
- 是 softmax 函式 提供者:
- 是模型權重的權重矩陣 softmax 層
softmax 圖層會對應分數向量 (有時也稱為 logits) 機率分佈
損失函式
最後,定義用來比較以下各項的損失函式:
- ,softmax 層的輸出內容 (機率分佈)
- ,為真值,代表使用者擁有的商品 互動 (例如使用者點按或觀看的 YouTube 影片)。 這可表示為正規化的多鏡頭分配 ( 機率向量)。
例如,假設您要比較的是 兩項機率分佈
Softmax 嵌入
項目 機率的計算依據: 、 其中 是不依賴 的正規化常數。
換句話說, 因此項目的記錄機率 為 (達到正數常數) 兩個維度向量的內積, 可以解釋 做為查詢和項目嵌入
- 是最後一個隱藏層的輸出內容。我們稱之為查詢的嵌入 。
- 是連接最後一個隱藏層到輸出 j 的權重向量。我們稱之為項目 的嵌入項目。
DNN 和矩陣分解
在 softmax 模型和矩陣分解模型中 系統就會學習 每項商品 。我們稱之為 項目嵌入矩陣 因式分解現在是 softmax 層的權重矩陣。
但查詢嵌入不同。非學習 每項查詢 只要一個嵌入,系統就會學習 從查詢特徵 到嵌入 因此,您可以將這個 DNN 模型想成一般化矩陣 因式分解,也就是以非線性方式取代查詢 函式 。
你可以使用項目功能嗎?
你可以將相同的提案套用到項目端嗎?換言之,我們不會學習 模型就會學習 將項目功能對應至嵌入項目?可以。請使用雙塔 包含兩個類神經網路
- 一種類神經網路對應查詢功能 查詢嵌入
- 一種類神經網路對應項目特徵 已對應至項目嵌入
模型的輸出結果可以定義為 。 請注意,此模型已不再是 softmax 模型。新的模型會預測 每個組合一個值 而不是每個查詢的可能性向量