字節跳動廣告召回端到端算法 - Deep Retrieval 算法


廣告召回現狀

現有的廣告召回模型一般會分兩步:

1. 首先用一個雙塔模型去學習user embedding 和 ad embedding

2. 然后對於每個user embedding,用諸如HNSW、ball tree等方法召回相似向量

缺點:模型訓練和向量召回是分離的,召回無法反饋到訓練

 

Deep Retrieval 算法介紹

模型結構

DR的模型包含了D層,每層K個節點。每層都是一個MLP+softmax,但是如上圖b所示,這些多層感知器不是連接在一起的,而是每層都輸出一個概率分布。

訓練樣本

用(x, y)表示一個訓練樣本,x 表示user, y表示item(會綁定一條或多條上圖中的路徑)

前向傳播過程

損失函數

在現實世界中一種商品往往不只屬於一個類別,如蛋糕既可以屬於食品也可以屬於禮物,因此DR中的一個item允許對應多條path

Beam search for inference

在看論文Sequence to Sequence Learning with neural networks時看到了beam search算法,特此記錄一下該算法的基本思想
 
在CS領域,beam search是一種啟發式搜索,在優化領域,其屬於一種最佳優先算法,最佳優先算法是一種圖搜索算法,其會將所有可能的解依據啟發式規則進行排序,該規則用來衡量得到的解與目標解到底有多接近。但是對於beam search與最佳優先算法有有一些地方不同,beam search只會保存一部分解作為候選解,而最佳優先算法則會將所有解都作為候選,其具體過程如下所述:
beam search是使用寬度優先搜索來構建它的搜索樹。在每一層,其都會生成一系列的解,然后對這些解進行排序,選擇最好的K個解作為候選解,這里的K我們稱為集束寬度。只有被選中的這些解可以向下繼續擴展下去。因此,集束寬度越大,被裁減掉的解越少。由於存在裁減,目標解有可能會被裁減掉,因此該算法是不完全的,即無法保證能夠找到全局最優解
 
看到一個很通俗易懂的回答回答來源(蕭瑟的回答),在此也貼出一下。
 
在seq2seq中在test階段使用了beam search來尋找解碼時最優的結果,我們假設集束寬度為2,詞典大小為3(a,b,c),那么其解碼過程如下所示:
 
生成第1個詞的時候,選擇概率最大的2個詞,假設為a,c,那么當前序列就是a,c;
生成第2個詞的時候,我們將當前序列a和c,分別與詞表中的所有詞進行組合,得到新的6個序列aa ab ac ca cb cc,然后從其中選擇2個得分最高的,作為當前序列,加入aa cb
后面不斷重復這個過程,直到遇到結束符為止。最終輸出2個得分最高的序列

Learning

Penalization

Multi-task Learning and Reranking with Softmax Models

1. deep retrieval 中輸入的 user vec 怎么得到?

deep retrieval 還是需要一個雙塔模型來輔助的,這user vec就是來自於雙塔模型的user tower,那么DR模型在訓練的時候會更新user tower嗎?

2. DR 模型好像是無法利用到廣告側的feature的,這會影響效果嗎?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM