推薦系統中不得不說的DSSM雙塔模型

本文來自OPPO互聯網基礎技術團隊,轉載請註名做者。同時歡迎關注咱們的公衆號:OPPO_tech,與你分享OPPO前沿互聯網技術及活動。redis

本文主要介紹項目中用於商業興趣建模的DSSM雙塔模型。做爲推薦領域中大火的雙塔模型,由於效果不錯而且對工業界十分友好,因此被各大廠普遍應用於推薦系統中。數據庫

經過構建user和item兩個獨立的子網絡,將訓練好的兩個「塔」中的user embedding 和item embedding各自緩存到內存數據庫中。線上預測的時候只須要在內存中計算類似度運算便可。DSSM雙塔模型是推薦領域不中不得不會的重要模型。緩存

文章主要分爲如下幾部分:markdown

  • 爲何要學習DSSM雙塔模型網絡

  • DSSM模型理論知識ide

  • 推薦領域中的DSSM雙塔模型函數

  • 實戰廣告推薦的雙塔模型學習

  • 總結優化

1. 爲何要學習DSSM雙塔模型

OPPO標籤組主要的服務對象是廣告主,服務目標是爲廣告主提供更好的廣告轉換效果。這裏涉及到兩種建模。搜索引擎

一種是天然興趣建模,根據用戶操做終端行爲得到user-item關聯,給不一樣的數據源打標得到item-tag關聯,最後將上面兩種關聯進行join操做獲得user-tag的關聯實現給用戶打上興趣標籤,這裏至關因而從標籤維度爲廣告主推薦人羣。

另外一種就是商業興趣建模,在天然興趣建模的基礎上,從廣告維度爲廣告主推薦人羣,那麼就須要目前大火的DSSM雙塔模型了。

拿Youtube視頻推薦系統舉例,通常推薦系統中有兩個流程。

第一步是召回模型,主要是進行初篩操做,從海量視頻資源池中初步選擇一部分用戶可能感興趣的視頻數據子集,從數量上看多是從千萬級別篩選出百級別。

第二步是精排模型,主要做用是對上面找到的百級別的視頻子集進一步精篩,從數量上看多是從百級別篩選出幾十級別。而後根據得分高低排序,生成一個排序列表做爲用戶的候選播放列表從而完成視頻推薦任務。

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

2. DSSM模型理論知識

2.1 DSSM模型的原理

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

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

2.2 DSSM深度語義匹配模型總體結構

DSSM模型總的來講能夠分紅三層結構,分別是輸入層、表示層和匹配層。結構以下圖所示:

2.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時的向量空間以及詞語碰撞統計:

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

(2) 中文場景

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

2.2.2 表示層

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

下圖是DSSM表示層的結構:

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

2.2.3 匹配層

如今咱們把query和doc統一轉換成了兩個128維的語義向量,接下來如何計算它們的語義類似度呢?經過cos函數計算這兩個向量的餘弦類似度就能夠了,公式以下:

2.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排名越靠前越容易被點擊,僅用點擊來判斷正負樣本,產生的噪聲較大,模型難以收斂;

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

3. 推薦領域中的DSSM雙塔模型

3.1 從NLP領域跨界到推薦領域的DSSM

DSSM深度語義匹配模型最先是應用於NLP領域中計算語義類似度任務。由於語義匹配自己是一種排序問題,和推薦場景不謀而合,因此DSSM模型被天然的引入到推薦領域中。DSSM模型分別使用相對獨立的兩個複雜網絡構建用戶相關特徵的user embedding和item相關特徵的item embedding,因此稱爲雙塔模型。

3.2 樸素的DSSM雙塔模型,2015

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

3.3 百度的雙塔模型

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

3.4 谷歌的雙塔模型,2019

2019年穀歌推出本身的雙塔模型,文章的核心思想是:在大規模的推薦系統中,利用雙塔模型對user-item對的交互關係進行建模,從而學習【用戶,上下文】向量和【item】向量的關聯。針對大規模流數據,提出in-batch softmax損失函數與流數據頻率估計方法更好的適應item的多種數據分佈。

利用雙塔模型構建Youtube視頻推薦系統,對於用戶側的塔根據用戶觀看視頻特徵構建user embedding,對於視頻側的塔根據視頻特徵構建video emebdding。兩個塔分別是相互獨立的網絡。

4. 實戰廣告推薦的雙塔模型

4.1 廣告推薦業務場景

講了上面一大堆,就是爲了這一節構建我們廣告推薦的DSSM雙塔模型。對應到我們的廣告業務就是構建DSSM雙塔模型,用戶側輸入用戶對廣告的歷史行爲特徵(包括點擊、下載、付費等)從而獲得固定長度的user embedding,同理廣告側輸入廣告特徵獲得相同長度的ad embedding,分別存入redis內存數據庫中。

線上infer時給定一個廣告ad,而後分別和全量用戶求類似度,找到「距離最近」的user子集,對這部分人羣投放廣告從而完成廣告推薦任務。

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

模型總體結構以下圖所示,也分紅三層:輸入層、表示層和匹配層。

4.2.1 輸入層

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

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

4.2.2 表示層

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

4.2.3 匹配層

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

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

4.3 一點思考

DSSM雙塔模型有不少變種,好比CNN-DSSM、LSTM-DSSM等等。項目中表示層使用了兩層全鏈接網絡來做爲特徵抽取器。如今深度學習領域公認最強的特徵抽取器是Transformer,後續是否能夠加入Transformer。

5. 總結

本篇主要介紹了項目中用於商業興趣建模的DSSM雙塔模型。做爲推薦領域中大火的雙塔模型,最大的特色是效果不錯而且對工業界十分友好,因此被各大廠普遍應用於推薦系統中。

經過構建user和item兩個獨立的子網絡,將訓練好的兩個塔中的user embedding 和item embedding各自緩存到內存數據庫中。線上預測的時候只須要在內存中進行類似度運算便可。

首先,講了下DSSM語義匹配模型的理論知識,最先是應用於NLP領域中用於語義類似度任務;而後,由於都是排序問題,因此引入到推薦領域。從樸素的DSSM雙塔模型到各大長的雙塔模型;最後,講了下咱們使用DSSM雙塔模型實戰到廣告推薦場景。

6. 參考資料

1.LearningDeep Structured Semantic Models for Web Search using Clickthrough Data

2.Sampling-bias-corrected neural modeling for largecorpus item recommendations

相關文章
相關標籤/搜索