生成候選者概述
在上一節介紹了推薦系統的基本框架:
可以看到,生成候選人(generate candidate)是推薦的第一階段,也被稱作retrieve。給定查詢,系統生成一組相關候選者。下表顯示了兩種常見的候選生成方法:
類型 | 定義 | 實例 |
---|---|---|
基於內容的過濾 | 使用項目之間的相似性來推薦與用戶喜歡的項目類似的項目 | 如果用戶A觀看過兩個可愛的貓視頻,則系統可以向該用戶推薦可愛的動物視頻 |
協同過濾 | 同時使用查詢和項目之間的相似性 來提供推薦 | 如果用戶A類似於用戶B,並且用戶B喜歡視頻1,則系統可以向用戶A推薦視頻1(即使用戶A沒有看到任何類似於視頻1的視頻) |
Embedding Space
基於內容和協作過濾都將每個項目和每個查詢(或上下文)映射到公共嵌入空間中的嵌入向量 。通常,嵌入空間是低維的(d遠小於語料庫的大小),並且捕獲事物或查詢集的一些潛在結構。類似的項目(例如通常由同一用戶觀看的YouTube視頻)最終會在嵌入空間中靠近在一起。“親密度”的概念由相似性度量定義。
額外資源: projector.tensorflow.org是一個可視化嵌入的交互式工具。
相似度量
相似性度量是一種函數 ,輸入一對embedding 向量並返回一個標量來衡量它們的相似性。embedding 向量可以用於候選生成,如下所示:給定查詢嵌入,系統查找項目嵌入 接近 q,即具有高相似性的向量對。
爲了確定相似程度,大多數推薦系統依賴於以下一個或多個相似度量方法:
- 餘弦(cosine);
- 點積(dot product);
- 歐氏距離(Euclidean distance);
餘弦|Cosine
衡量兩個向量之間角度的餘弦,
點積|Dot product
兩個向量的點積是 。它也是由(角度的餘弦乘以規範的乘積)。因此,如果embedding向量被標準化後,則點積和餘弦這兩種方法等價。
歐氏距離|Euclidean distance
這是歐幾里得空間的通常距離, 。距離越小意味着相似性越高。注意,當embedding向量被歸一化時,平方歐幾里德距離與點積(和餘弦)一致,因爲在這種情況下。
比較相似度量
考慮上圖中的示例。黑色矢量表示查詢embedding向量。其他三個embedding向量(項目A,項目B,項目C)表示候選項目。使用不同的相似性度量方法,得到的項目排序有不同的結果。
使用三個相似性度量來確定項目順序:餘弦,點積和歐幾里德距離,答案如下:
答案
項目A長度最長,其標量最大,使用點積方法排名最高。項目C與查詢向量具有最小角度,因此根據餘弦相似性排名最高。物品B在距離上最接近查詢,因此使用歐幾里德距離排名最高:
如何選擇相似度量方法?
與餘弦相比,點積相似性對embedding向量的範數更加敏感。也就是說,embedding向量的範數越大,相似性越高並且項目被推薦的可能性越大,因此給出的建議如下:
- 在訓練集中經常出現的項目(例如,熱門流行的視頻)往往具有大範數的嵌入向量。如果需要捕獲流行度信息,那麼更應該選擇點積這種方法。但是,這種方法將導致流行的item最終可能會主導推薦。在實踐中,可以使用其他變體的相似性度量,而不太強調項目的範數。例如,定義
- 在訓練期間很少出現的項目,可能不會經常被更新。因此,如果它們以大規範初始化,則系統可以推薦出稀有項目而不是更相關的項目。爲了避免此問題,需要注意embedding向量的初始化,並使用適當的正則化。
總結
- 候選者的生成對於推薦系統是第一步,也是最關鍵的一部分,召回的事物好壞之間影響後續的推薦進程;
- 如何獲得候選者,一般是根據embedding向量的相似度來得到,相似度量方法常見的有三種:餘弦距離,點積,以及歐式距離;
- 根據具體的推薦業務及側重點,選擇合適的相似度量方法;