1. 程式人生 > >廣告行業中那些趣事系列10:推薦系統中不得不說的DSSM雙塔模型

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

摘要:本篇主要介紹了專案中用於商業興趣建模的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

最新最全的文章請關注我的微信公眾號:資料拾光者。