天天看點

推薦算法煉丹筆記:做向量召回 All You Need is 雙塔

推薦算法煉丹筆記:做向量召回 All You Need is 雙塔

作者:十方,公衆号:煉丹筆記

對于基于向量召回,那就不得不提到雙塔。為什麼雙塔在工業界這麼常用?雙塔上線有多友善,真的是誰用誰知道,user塔做線上serving,item塔離線計算embeding建索引,推到線上即可。

下面我就給大家介紹一些經典的雙塔模型,快速帶大家過一遍,如果想了解細節,強烈建議看論文。

DSSM

推薦算法煉丹筆記:做向量召回 All You Need is 雙塔

先說雙塔模型的鼻祖,這是微軟在CIKM2013發表的一篇工作,它主要是用來解決NLP領域語義相似度任務的。word hashing真的是DSSM的騷操作了,不同于現有的RNN,Bert等模型,該方法直接把文本映射成了遠低于vocab size的向量中,然後輸入DNN,輸出得到一個128維的低維語義向量。Query和document的語義相似度就可以用這兩個向量的cosine相似度來表示,進一步我們可以通過softmax對不同的document做排序。這就是最初的DSSM。如果把把document換成item或是廣告,就演變成了一個推薦模型。

論文位址:https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/cikm2013_DSSM_fullversion.pdf

看下百度雙塔,左邊user,右邊廣告,是不是很符合百度價值觀,簡單可依賴。

雙塔模型的優勢,總結如下:

  • 可以離線計算item的embedding
  • 線上計算user(&context)的embedding
  • 線上計算相似度
  • 實時性好

說來說去,主要就是實時性好,cos的表達是有限的,很難提取交叉特征,是以雙塔還是比較适用于召回場景。

YouTube雙塔

推薦算法煉丹筆記:做向量召回 All You Need is 雙塔

YouTube最新正在使用的視訊召回雙塔模型。這個模型在整體上就是最普通的雙塔。左邊是user塔,輸入包括兩部分,第一部分seed是user目前正在觀看的視訊,第二部分user的feature是根據user的觀看曆史計算的,比如說可以使用user最近觀看的k條視訊的id emb均值,這兩部分融合起來一起輸入user側的DNN。右邊是item塔,将候選視訊的feature作為輸入,計算item的 embedding。之後再計算相似度,做排序就可以了。YouTube這個模型最大的不同是,它的訓練是基于流資料的,每一天都會産生新的訓練資料。是以,負樣本的選擇隻能在batch内進行,batch内的所有樣本作為彼此的負樣本去做batch softmax。這種采樣的方式帶來了非常大的bias。一條熱門視訊,它的采樣機率更高,是以會更多地被當做負樣本,這不符合實際。是以這篇工作的核心就是

減小batch内負采樣帶來的bias

論文位址:https://dl.acm.org/doi/pdf/10.1145/3298689.3346996

EBR (facebook kdd 2020)

推薦算法煉丹筆記:做向量召回 All You Need is 雙塔
這篇論文真的強推

,模型結構沒啥好說的,簡單的雙塔,兩邊塔的輸入都是文本特征、社交特征和位置特征,其中社交特征和位置特征是他們在實驗中發現對效果提升比較好的兩種特征。這篇工作的

兩個核心亮點

是hard negative mining和embedding ensemble。Hard negative mining是指,他們發現

如果将随機負樣本這種比較easy的樣本與上次召回中排名101-500名的比較hard的樣本以100:1的比例去訓練模型(為什麼是101-500?)

,得到的效果會比較好。Embedding ensemble是指,可以将不同負樣本訓練得到的模型做融合來進行召回。融合的方式可以是相似度結果的直接權重或者是模型的串行融合,比如先用easy負樣本訓練模型進行初步的篩選,再用hard負樣本訓練模型進行最終的召回。另外他們還提到雖然使用unified的特征,就是輸入中包含社交特征和位置特征,來進行召回效果會比較好,但是召回結果在一定程度上也會損失文本的比對,是以也可以先通過隻輸入文本特征的模型來做篩選再用輸入unified特征的模型來召回,這樣可以保證文本的比對。

論文位址:https://dl.acm.org/doi/pdf/10.1145/3394486.3403305

莫比烏斯 (百度 KDD2019)

推薦算法煉丹筆記:做向量召回 All You Need is 雙塔

百度可不止有簡單可依賴的模型,也有複雜可依賴的。整個架構分為兩個階段,資料增強階段是綠色箭頭的部分,采樣并利用樣本中的使用者請求與廣告構造出更多樣本,教師網絡計算相似度後将低相似度的樣本輸入學生網絡去預測CTR,通過采樣的方式得到高CTR低相似度的樣本存入buffer,這類樣本我們稱之為bad case。第二個階段是橙色箭頭表示的CTR模型訓練階段,将原先采樣得到的原始樣本也存入buffer,利用buffer中的三種樣本去訓練CTR模型。雖然百度提出了這樣一種架構,但是召回和排序的直接統一在實作的過程中還是比較困難的,因為面臨的候選廣告集數量太大,在性能方面還是難以保證。但是Mobius的這種将商業名額提前引入召回階段的思想是非常具有探索價值的,比如文章中提到将cosine相似度直接乘上一個商業名額作為系數,就是一個很簡單的方式。

論文位址:http://research.baidu.com/Public/uploads/5d12eca098d40.pdf

大家對雙塔有什麼看法呢?加群讨論吧!關注我們的公衆号:煉丹筆記

推薦算法煉丹筆記:做向量召回 All You Need is 雙塔

更多幹貨,歡迎關注公衆号:煉丹筆記