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