廣告行業中那些趣事系列10:推薦系統中不得不說的DSSM雙塔模型

                                                                                                                                                                       本篇一共4189個字


最新最全的文章請關注我的微信公衆號:數據拾光者。

摘要:本篇主要介紹了項目中用於商業興趣建模的DSSM雙塔模型。作爲推薦領域中大火的雙塔模型,因爲效果不錯並且對工業界十分友好,所以被各大廠廣泛應用於推薦系統中。通過構建user和item兩個獨立的子網絡,將訓練好的兩個“塔”中的user embedding 和item embedding各自緩存到內存數據庫中。線上預測的時候只需要在內存中計算相似度運算即可。DSSM雙塔模型是推薦領域不中不得不會的重要模型。

 

 

目錄

01 爲什麼要學習DSSM雙塔模型

02 DSSM模型理論知識

03 推薦領域中的DSSM雙塔模型

04 實戰廣告推薦的雙塔模型

05 總結

 

 

01 爲什麼要學習DSSM雙塔模型

 

我們標籤組主要的服務對象是廣告主,服務目標是爲廣告主提供更好的廣告轉換效果。這裏涉及到兩種建模:一種是自然興趣建模,根據用戶操作終端行爲獲得user-item關聯,給不同的數據源打標獲得item-tag關聯,最後將上面兩種關聯進行join操作得到user-tag的關聯實現給用戶打上興趣標籤,這裏相當於是從標籤維度爲廣告主推薦人羣;另一種就是商業興趣建模,在自然興趣建模的基礎上,從廣告維度爲廣告主推薦人羣,那麼就需要目前大火的DSSM雙塔模型了。

 

拿上一篇講的Youtube視頻推薦系統舉例,一般推薦系統中有兩個流程:第一步是召回模型,主要是進行初篩操作,從海量視頻資源池中初步選擇一部分用戶可能感興趣的視頻數據子集,從數量上看可能是從千萬級別篩選出百級別;第二步是精排模型,主要作用是對上面找到的百級別的視頻子集進一步精篩,從數量上看可能是從百級別篩選出幾十級別。然後根據得分高低排序,生成一個排序列表作爲用戶的候選播放列表從而完成視頻推薦任務。

 

我們廣告推薦領域中使用的DSSM雙塔模型是從廣告維度爲廣告主推薦一定數量的人羣,從數量上看是從百億級別人羣中找出百萬級人羣用於投放廣告,所以是召回模型。

 

02 DSSM模型理論知識

 

1. DSSM模型的原理

DSSM(Deep Structured Semantic Models)也叫深度語義匹配模型,最早是微軟發表的一篇應用於NLP領域中計算語義相似度任務的文章。

 

DSSM深度語義匹配模型原理很簡單:獲取搜索引擎中的用戶搜索query和doc的海量曝光和點擊日誌數據,訓練階段分別用複雜的深度學習網絡構建query側特徵的query embedding和doc側特徵的doc embedding,線上infer時通過計算兩個語義向量的cos距離來表示語義相似度,最終獲得語義相似模型。這個模型既可以獲得語句的低維語義向量表達sentence embedding,還可以預測兩句話的語義相似度

 

2. DSSM深度語義匹配模型整體結構
DSSM模型總的來說可以分成三層結構,分別是輸入層、表示層和匹配層。結構如下圖所示:

 

圖1 DSSM模型結構圖

 

2.1 輸入層

輸入層主要的作用就是把文本映射到低維向量空間轉化成向量提供給深度學習網絡。NLP領域裏中英文有比較大的差異,在輸入層處理方式不同。

 

(1) 英文場景

英文的輸入層通過Word Hashing方式處理,該方法基於字母的n-gram,主要作用是減少輸入向量的維度。舉例說明,假如現在有個詞boy,開始和結束字符分別用#表示,那麼輸入就是(#boy#)。將詞轉化爲字母n-gram的形式,如果設置n爲3,那麼就能得到(#bo,boy,oy#)三組數據,將這三組數據用n-gram的向量來表示。

 

使用Word Hashing方法存在的問題是可能造成衝突。因爲兩個不同的詞可能有相同的n-gram向量表示。下圖是在不同的英語詞典中分別使用2-gram和3-gram進行Word Hashing時的向量空間以及詞語碰撞統計:

圖2 不同詞典下n-gram向量空間和詞語碰撞統計

 

可以看出在50W詞的詞典中如果使用2-gram,也就是兩個字母的粒度來切分詞,向量空間壓縮到1600維,產生衝突的詞有1192個(這裏的衝突是指兩個詞的向量表示完全相同,因爲單詞儲量實在有限,本來想找幾個例子說明下,結果沒找到)。如果使用3-gram向量空間壓縮到3W維,產生衝突的詞只有22個。綜合下來論文中使用3-gram切分詞。

 

(2) 中文場景

中文輸入層和英文有很大差別,首先要面臨的是分詞問題。如果要分詞推薦jieba或者北大pkuseg,不過現在很多模型已經不進行分詞了,比如BERT中文的預訓練模型就直接使用單字作爲最小粒度了。

 

2.2 表示層

DSSM模型表示層使用的是BOW(bag of words)詞袋模型,沒有考慮詞序的信息。不考慮詞序其實存在明顯的問題,因爲一句話可能詞相同,但是語義則相差十萬八千里,比如“我愛女朋友”和“女朋友愛我”可能差距蠻大的(這個小夥伴們自己體會)。

 

下圖是DSSM表示層的結構:

圖3 DSSM模型表示層結構圖

 

最下面的Term Vector到Word Hashing將詞映射到3W維的向量空間中。然後分別經過兩層300維度的隱藏層,最後統一輸出128維度的向量。

 

2.3 匹配層

現在我們把query和doc統一轉換成了兩個128維的語義向量,接下來如何計算它們的語義相似度呢?通過cos函數計算這兩個向量的餘弦相似度就可以了,公式如下:

圖4 cos餘弦計算公式

 

3. DSSM模型的優缺點

先說說DSSM模型的優點:

  • 解決了LSA、LDA、Autoencoder等方法存在的字典爆炸問題,從而降低了計算複雜度。因爲英文中詞的數量要遠遠高於字母n-gram的數量;

  • 中文方面使用字作爲最細切分粒度,可以複用每個字表達的語義,減少分詞的依賴,從而提高模型的泛化能力;

  • 字母的n-gram可以更好的處理新詞,具有較強的魯棒性;

  • 使用有監督的方法,優化語義embedding的映射問題;

  • 省去了人工特徵工程;

  • 採用有監督訓練,精度較高。傳統的輸入層使用embedding的方式(比如Word2vec的詞向量)或者主題模型的方式(比如LDA的主題向量)做詞映射,再把各個詞的向量拼接或者累加起來。由於Word2vec和LDA都是無監督訓練,會給模型引入誤差。

 

再說說DSSM模型的缺點:

  • Word Hashing可能造成詞語衝突;

  • 採用詞袋模型,損失了上下文語序信息。這也是後面會有CNN-DSSM、LSTM-DSSM等DSSM模型變種的原因;

  • 搜索引擎的排序由多種因素決定,用戶點擊時doc排名越靠前越容易被點擊,僅用點擊來判斷正負樣本,產生的噪聲較大,模型難以收斂;

  • 效果不可控。因爲是端到端模型,好處是省去了人工特徵工程,但是也帶來了端到端模型效果不可控的問題。

 

03 推薦領域中的DSSM雙塔模型

 

1.  從NLP領域跨界到推薦領域的DSSM

DSSM深度語義匹配模型最早是應用於NLP領域中計算語義相似度任務。因爲語義匹配本身是一種排序問題,和推薦場景不謀而合,所以DSSM模型被自然的引入到推薦領域中。DSSM模型分別使用相對獨立的兩個複雜網絡構建用戶相關特徵的user embedding和item相關特徵的item embedding,所以稱爲雙塔模型。下面來一張酷炫的雙塔圖鎮樓:

圖5 酷炫雙塔圖

 

2. 樸素的DSSM雙塔模型,2015

雙塔模型最大的特點是user和item是獨立的兩個子網絡,對工業界十分友好。將兩個塔各自緩存,線上預測的時候只需要在內存中進行相似度運算即可。下面是2015年樸素的DSSM雙塔模型結構:

圖6 樸素的DSSM雙塔模型

 

3.  百度的雙塔模型

圖7 百度的雙塔模型

百度的雙塔模型分別使用複雜的網絡對用戶相關的特徵和廣告相關的特徵進行embedding,分別形成兩個獨立的塔,在最後的交叉層之前用戶特徵和廣告特徵之間沒有任何交互。這種方案就是訓練時引入更多的特徵完成複雜網絡離線訓練,然後將得到的user embedding和item embedding存入redis這一類內存數據庫中。線上預測時使用LR、淺層NN等輕量級模型或者更方便的相似距離計算方式。這也是業界很多大廠採用的推薦系統的構造方式。

 

4. 谷歌的雙塔模型,2019

2019年穀歌推出自己的雙塔模型,文章的核心思想是:在大規模的推薦系統中,利用雙塔模型對user-item對的交互關係進行建模,從而學習【用戶,上下文】向量和【item】向量的關聯。針對大規模流數據,提出in-batch softmax損失函數與流數據頻率估計方法更好的適應item的多種數據分佈。利用雙塔模型構建Youtube視頻推薦系統,對於用戶側的塔根據用戶觀看視頻特徵構建user embedding,對於視頻側的塔根據視頻特徵構建video emebdding。兩個塔分別是相互獨立的網絡。

圖8 谷歌的雙塔模型

 

 

04 實戰廣告推薦的雙塔模型

 

1. 廣告推薦業務場景

講了上面一大堆,就是爲了這一節構建咱們廣告推薦的DSSM雙塔模型。對應到咱們的廣告業務就是構建DSSM雙塔模型,用戶側輸入用戶對廣告的歷史行爲特徵(包括點擊、下載、付費等)從而得到固定長度的user embedding,同理廣告側輸入廣告特徵得到相同長度的ad embedding,分別存入redis內存數據庫中。線上infer時給定一個廣告ad,然後分別和全量用戶求相似度,找到“距離最近”的user子集,對這部分人羣投放廣告從而完成廣告推薦任務。

 

2. 廣告推薦的DSSM雙塔模型結構

模型整體結構如下圖所示,也分成三層:輸入層、表示層和匹配層。

圖9 廣告推薦的DSSM雙塔模型結構

 

2.1 輸入層

模型訓練分成兩座不同的“塔”分別進行,其實也就是兩個不同的神經網絡。其中一座塔是用於生成user embedding。輸入用戶特徵訓練數據,用戶特徵包括用戶稠密特徵和用戶稀疏特徵,其中用戶稠密特徵進行one-hot編碼操作,用戶稀疏特徵進行embedding降維到低維空間(64或者32維),然後進行特徵拼接操作。廣告側和用戶側類似。

 

關於裏面的特徵,不在於你要什麼,而在於你有什麼。整個工程超級複雜的就是這塊的特徵工作。這裏不再贅述。

 

2.2 表示層

得到拼接好的特徵之後會提供給各自的深度學習網絡模型。用戶特徵和廣告特徵經過各自的兩個全連接層後轉化成了固定長度的向量,這裏得到了維度相同的user embedding和ad embedding。各塔內部的網絡層數和維度可以不同,但是輸出的維度必須是一樣的,這樣才能在匹配層進行運算。項目中user embedding和ad embedding 維度都是32。

 

2.3 匹配層

模型訓練好了之後會分別得到user embedding和ad embedding,將它們存儲到redis這一類內存數據庫中。如果要爲某個特定的廣告推薦人羣,則將該廣告的ad embedding分別和所有人羣的user embedding計算cos相似度。選擇距離最近的N個人羣子集作爲廣告投放人羣,這樣就完成了廣告推薦任務。模型訓練過程中將cos函數得到的結果進入sigmoid函數和真實標籤計算logloss,查看網絡是否收斂。模型評估主要使用auc指標。

 

小結下,本節講了下我們使用DSSM雙塔模型完成廣告推薦任務。模型整體結構分成輸入層、表示層和匹配層。首先在輸入層處理數據獲取特徵;然後在表示層通過深度學習網絡得到user embedding和ad embedding;最後在匹配層進行廣告推薦。

 

3. 一點思考

DSSM雙塔模型有很多變種,比如CNN-DSSM、LSTM-DSSM等等。項目中表示層使用了兩層全連接網絡來作爲特徵抽取器。現在深度學習領域公認最強的特徵抽取器是Transformer,後續是否可以加入Transformer。

 

 

總結

本篇主要介紹了項目中用於商業興趣建模的DSSM雙塔模型。作爲推薦領域中大火的雙塔模型,最大的特點是效果不錯並且對工業界十分友好,所以被各大廠廣泛應用於推薦系統中。通過構建user和item兩個獨立的子網絡,將訓練好的兩個塔中的user embedding 和item embedding各自緩存到內存數據庫中。線上預測的時候只需要在內存中進行相似度運算即可。首先,講了下DSSM語義匹配模型的理論知識,最早是應用於NLP領域中用於語義相似度任務;然後,因爲都是排序問題,所以引入到推薦領域。從樸素的DSSM雙塔模型到各大長的雙塔模型;最後,講了下我們使用DSSM雙塔模型實戰到廣告推薦場景。

 

參考資料

【1】LearningDeep Structured Semantic Models for Web Search using Clickthrough Data

【2】Sampling-bias-corrected neural modeling for largecorpus item recommendations

 

最新最全的文章請關注我的微信公衆號:數據拾光者。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章