推薦系列(二):生成候選者概述
生成候選者概述
在上一節介紹了推薦系統的基本框架:
可以看到,生成候選人(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向量的相似度來得到,相似度量方法常見的有三種:餘弦距離,點積,以及歐式距離;
- 根據具體的推薦業務及側重點,選擇合適的相似度量方法;