假設您有一個嵌入模型,您會如何決定要推薦哪些商品給使用者?
在放送時,針對某項查詢,請執行下列其中一項操作:
- 對於矩陣分解模型,查詢 (或使用者) 嵌入是以靜態方式知道,系統可以直接從使用者嵌入矩陣上查詢。
- 如果是 DNN 模型,系統會在服務時間,在特徵向量 \(x\)上執行網路,藉此計算查詢嵌入項目 \(\psi(x)\)。
取得查詢嵌入值 \(q\)後,請在嵌入空間中搜尋與 \(q\) 相近的項目嵌入值\(V_j\) 。這是最鄰近問題。舉例來說,您可以根據相似度分數 \(s(q, V_j)\)傳回前 K 個項目。
您也可以在相關項目推薦內容中使用類似的方法。舉例來說,當使用者觀看 YouTube 影片時,系統可以先查詢該項目的嵌入內容,然後尋找嵌入空間中相近的其他項目\(V_j\) 嵌入內容。
大規模擷取
為了計算嵌入空間中最相近的項目,系統可以為每個潛在候選項目逐一評分。對於超大型語料庫而言,完整的評分可能會耗費高昂成本,但您可以使用下列其中一種策略來提高效率:
- 如果已知靜態查詢嵌入資料,系統就能離線執行完整評分,預先計算並儲存每個查詢的最佳候選清單。這是推薦相關項目的常見做法。
- 使用近似最鄰近搜尋。 Google 在 GitHub 上提供一項名為 ScaNN 的開放原始碼工具 (可調整鄰近度)。這項工具可大量執行有效率的向量相似度搜尋。