字节跳动Deep Retrieval召回模型笔记
今天講講字節的一個召回的文章:《Deep Retrieval: An End-to-End Learnable Structure Model for Large-Scale Recommendations》(公眾號后臺回復【dr】可下載)
召回因為候選集個數多,一般用MIPS的思路做,這樣的問題在于:
1、向量最大內積模型表達 能力有限,缺少特征交互;
2、ANN的時候會通過聚類減小候選集(IVFAQ),但是這個聚類建立索引的過程,跟召回模型的訓練是分開的,效果肯定不好;可能存在召回模型學好了,但是檢索不出來的情況。
召回的時間復雜度:T*N <= Bound,目前的思路是在inference階段減小候選集N(如TDM,beam search),這樣就需要確定一個item的空間劃分結構,這個結構是和模型訓練階段做joint learning的。因為空間結構是離散的,所以joint learning其實是一種EM算法,將空間結構當做是latent variable。細看,其實TDM也是這種范式,M step訓練item embedding,E step通過聚類得到空間結構。
回到字節這篇paper DR上來
DR在item空間結構劃分上,字節的DR用了一種矩陣結構,矩陣里面的路徑對應item。
結構
使用一個D x K維的矩陣來作為索引結構。模型預測需要走D步,每一步有K種選擇。走到最后會有K^D可能的路徑(也可以叫做編碼),每一條路徑可以代表一個包含多個item的集合,每個item反過來也可以同時在多條路徑的集合里面。路徑可以看做是一個聚類結果。
不同的路徑之間可能有交叉(有交叉的應該比較類似)
Objective
1、Structure Objective
每一層是一個MLP,輸出K個概率,表示包含這個節點的概率,假設每個item對應的路徑π固定。
1、emb(x)輸入第一層MLP,生成K維的概率;
2、將路徑上所有的embedding 全部concatenate起來,扔進去第d層的MLP內;
最后的概率是路徑上所有概率的乘積:
如果每個節點表示一個類別,多個類別乘起來,不過這不是獨立的,所以怪怪的。
損失函數是log likehood,這里用(xi, yi)表示user,item,用π表示item->K^D條路徑的映射。Π(yi)表示item yi對應的path
2、Multi-path structure Objective
每個節點屬于多個路徑,而不是單個,這是因為很多item都會被歸到多個類里面去。比如巧克力和cake,既是food也是gift。而在TDM中,每個葉子節點只能表示一個item,一個item也只能包含在一個內部節點中。
DR將一個item對應J個path去。這個看到后面就很清楚了,其實一個item在EM算法的框架里面是可以對應K^D的路徑的,但是每條路徑對應的概率不同,現在是截斷,取top J條。這里的π也表示item->path的路徑,只不過現在有J個映射
Learning
這里面item對應的路徑是離散的,無法通過梯度下降去優化。Item->path的映射可以與聚類有點類似。所以用EM算法 train
下面是一個整體流程:
其中:
表示item在這個路徑上所有概率的加權(item對應所有user加權)
每個item v, 通過beam search,在每一層選出J個node,最后得到J個路徑。遍歷所有item后就得到了item->path的map π
這里,將multi-path objective變換為遍歷所有的item v,里面是item v對應的所有user->item pair
為了保證數值穩定性,這里用凸函數求了一個上界
其中
表示item v對應的user->item總數
正則化
DR這里的EM step貌似和我理解的是反的。我理解E step是得到隱含變量的概率(也就是item對應的top J path的概率);而M step是優化參數。字節的DR在E step是優化參數,M step是得到隱含變量的概率。在E step,優化的structure model可能出現overfit,導致某個path的概率很大;所以在M step,所有的item都到這個path去,導致無法聚類。所以在M step引入了path對應的item總數作為正則。
討論
其實有幾點的還是比較迷惑的,作者最后也說了
1、structure model的probability只是用了user側的特征,沒有用item的特征;
2、只是用了positive example來做;
還有一點是這個模型沒法用item側的特征,類似于YouTubeDNN,屬于單側建模
總結
以上是生活随笔為你收集整理的字节跳动Deep Retrieval召回模型笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring同类调用事务不生效-原因及三
- 下一篇: AutoML 在表数据中的研究与应用