首頁/ 遊戲/ 正文

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

篩選場景的特點是具有明確的篩選約束條件。在這一場景下,我們需要關注的目標是在有約束的情況下使用者的興趣,同時關注點選率、轉化率以及商業收益。

02

主流Embedding演算法介紹

Embedding相當於對one-hot做了平滑,而one-hot相當於對embedding做了max-pooling。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

Embedding可以被劃分為四類:

第一種是基於矩陣分解的方式,其中的代表方法是SVD;

第二種是基於內容的Embedding,它包含如word2vec、fasttext等靜態Embedding和如ELMo、GPT、BERT等動態Embedding;

第三種是基於物品序列的Embedding,代表方法是item2vec;

最後一類是基於圖的Embedding,分為淺層圖模型和深層圖模型。淺層圖模型有deepwalk、Node2vec、EGES,深層圖模型有GCN、GraphSAGE等。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

首先來介紹一下靜態表徵。

從名字我們就可以看出,靜態表徵方法主要是對一個詞生成Embedding,且它在生成之後是固定的。

這類方法的優勢是我們可以提前確定詞向量,在後面線上使用的時候就相當於“查字典”的操作,比較方便。

它的劣勢也很明顯,針對一詞多義的情況,靜態表徵無法解決。

靜態表徵方法中具有代表性的模型是word2vec,它透過神經網路建立上下文和目標詞的語言模型,得到的隱藏層權重可以用來表示每個詞的詞向量。

Word2vec有兩個架構:

CBOW和Skip-gram。

CBOW的輸入是中心詞的上下文詞,輸出是中心詞。

它的訓練樣本可以透過滑動視窗進行建立。

Skip-gram是將中心詞作為輸入,輸出是中心詞的上下文。

由於每個詞是透過one-hot的方式進行表徵,one-hot值和隱藏層的權重相乘就可以得到詞的唯一Embedding表示。

透過這一方法,我們可以用得到的Embedding來作為中心詞的向量表徵。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

word2vec的最佳化策略有兩種。第一個是層次softmax,第二個是負取樣。層次softmax根據詞頻建立一棵二叉樹,把N分類問題變成了logN次二分類問題。負取樣每次讓一個訓練樣本更新網路中一小部分權重來降低整個梯度下降過程的計算量。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

之前提到靜態表徵對一詞多義無能為力。例如“bank”這個詞,它即可以表示河岸又可以表示銀行,但它在靜態表徵訓練的詞向量表中對應了唯一的Embedding。動態表徵代表模型之一是ELMo。ELMo可以看作一個前向語言模型和後向語言模型的拼接,它的目標是最大化前向和後向的對數似然機率。由於採用LSTM作為特徵抽取器,相較於現在流行的Transformer特徵提取器,它的特徵抽取能力有限。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

Bert可以被理解為多個transformer encoder的堆疊。由於Bert是雙向語言模型,若使用傳統語言模型的訓練方式會出現see itself的問題,所以Bert借鑑了完形填空的方式,使用Masked Language Model的方式做預訓練。又由於bert是一個通用語言模型,它會涉及句子層面的下游任務,所以bert的預訓練任務中還加入了Next Sentence Prediction。所以Bert的預訓練是一個多工學習。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

序列Embedding比較經典的模型是盒馬Embedding,是item2vec的改進版。盒馬沒有完全使用item id來作為商品的表徵,而是考慮到item的屬性資訊,例如product id、brand id、category id等。將這些資訊組成的列表作為商品的表徵。這種方法的好處是將屬性對映至同一向量空間,即使有item的某些屬性維度缺失,依然可以透過其他維度來計算item的Embedding。所以,這種做法在冷啟動階段會有很好的效果。

阿里的EGES是一個圖Embedding,它透過使用者行為序列來構建商品關係圖,然後使用deepwalk來生成一些序列。基於生成的序列,它使用skip-gram模型,增加了商品的side information並基於不同商品的side information不同權重來訓練生成商品的Embedding表徵。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

接下來介紹兩個業界比較經典的Embedding模型:Airbnb Embedding和YoutubeNet。

Airbnb Embedding的主要特點是分群Embedding,以及改進的負取樣方法。分群Embedding是指模型沒有直接使用item id,而是使用了商品相關屬性的拼接,相當於對item進行了聚類。在改進的負取樣中,Airbnb Embedding將下單行為作為正樣本,結合自身業務對負取樣的策略進行調整。

YoutubeNet將使用者的連續特徵、序列特徵和離散特徵全部進行Embedding化後拼接到一起輸入一個DNN。在最後進行softmax層分類前的embedding就可以作為使用者的Embedding特徵。網路的目標是預測當前使用者對video的喜好程度,那麼在這種情況下softmax層得到的輸出就可以作為video的向量表示。他們會將video向量離線建立索引,在線上使用的時候直接將使用者Embedding和video Embedding做點乘操作即可。

03

Embedding在58商業搜尋實

接下來我來介紹一下Embedding技術在58商業搜尋的應用實踐。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

以本地服務搜尋流量變現為例,本地服務商業搜尋演算法的框架如上圖所示。當一個使用者請求到來後,首先進行query理解、候選帖子理解。之後進入檢索召回與搜尋匹配階段,最後輸入排序模組得到結果。Query理解中主要包含query改寫、term分析和意圖識別,重點關注長尾query和異構query。檢索召回階段使用了文字召回、tag召回、語義召回等召回通道。搜尋匹配階段透過語義相關性、文字相似性和tag相似性等指標進行融合,進而保證整個搜尋的相關性。在排序層,我們會兼顧一些業務指標和使用者體驗來進行最終排序。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

上圖展示了query理解的流程。業界比較常用的處理方式如下。首先,我們會對query做預處理,比如會清除標點和特殊字元,隨後對query進行分詞與改寫。Query改寫中包含query擴充套件和query歸一,即使用一些同義query或者高相關的query來對query進行擴召回。Term分析主要進行關鍵詞提取。意圖識別使用了58內部構建的虛擬類目體系(taxonomy)。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

下面我以query拓展為例介紹一下Embedding在搜尋的應用。做query拓展時,由於我們發現之前召回的帖子中相關的商業貼數量不足,但實際上我們的帖子庫存是充足的。在這種情況下,我們以業務目標為導向,使用pvr*asn指標來召回現有場景中已經具有較高相關性的召回結果作為候選擴充套件query。我們最初選擇ESIM而沒有選擇Bert,其原因是我們想要利用58內部較強的nlp基礎能力。ESIM是一個基於互動的模型,它的做法是query和doc在輸入端就進行資訊的融合,之後進行匹配訊號和訊號融合得到最終得分。基於互動的模型會使得query和doc之間的資訊互動比較充分,得到的結果準確性會比較高。初版的query拓展是可以非同步離線生成的,對於時間複雜度的要求較低。與基於互動的模型相對應的是基於表徵的模型,如dssm的雙塔模型,其做法是使用兩個塔對query和doc生成各自的向量,只在最後階段做訊號的融合。基於表徵的模型具備的優勢是在線上實時使用的時候僅需要做向量點乘操作即可,可以滿足低延時的要求,且模型遷移較方便。但是它的缺點在於向量生成是獨立的,導致訊號融合並不充分,對準確性有一些影響。所以最終我們在模型選型的時候選擇了基於互動的模型。

ESIM基於雙向LSTM對前提query和假設query進行特徵提取,區域性推理層透過假設隱狀態與前提隱狀態做attention,並將attention的輸出做差和乘,最後將向量拼接到一起輸入推理合成模組。推理合成會使用另一個雙向LSTM,並將提取的特徵向量進行池化操作,最後進行預測。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

但是在本類搜場景下,ESIM存在一個問題,因為這一場景具有類目約束,使用者會進入一個具體類目下進行搜尋。由於58的類目體系量級非常大,如果我們分類目進行建模成本特別高。而統一建模的問題在於query在不同類目下的搜尋意圖存在差異。我們的解決方式是將類目資訊加入前提query中,對query進行消歧。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

從業務上來看,第一版模型實際上做的是query到query之間的拓展。但是C端使用者輸入query中的搜尋詞特徵和B端商家在商品詳情頁描述中所提到的term在語義層面是有一些差異的。實際上,如上圖所示,B端商家提供的商品詳情頁中包含的知識非常豐富。所以,我們想進一步透過C端搜尋詞和B段詳情頁term建立一個模型來利用這些資訊提升query拓展效果。具體地,我們首先會對整個詳情頁的資訊進行term解析,之後透過fasttext來找到詳情頁中與query相關性較高的候選term。然後我們基於一個已經經過fine-tune訓練完成的bert模型,得到query和候選相關拓展詞的相關性排序。最終我們會選取相關性得分較高的詞作為最終拓展詞。Fine-tune訓練是使用兩個query作為輸入樣本的,其中共現的兩個query作為正樣本,負樣本就在不同的業務下進行隨機取樣。在計算損失函式時,我們將交叉熵平均值調整為最大值。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

上圖展示了升級後的模型的query拓展效果。例如“刮大白”這一搜索詞,它所拓展出來的query有“刮膩子”、“牆面粉刷”,它們和原搜尋詞是同義的,包含這些拓展詞的帖子都會被展示出來。在準確率覆蓋率的評估中,這兩項指標都達到了80%以上。在上線之後,升級的模型在連線效率和變現效率上都有顯著的提升。

04

Embedding在58商業推薦實踐

下面介紹一下Embedding在58商業推薦中的應用。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

推薦系統的框架由召回層和排序層構成。

在召回環節,我們會包含多個召回通道,如規則類、傳統模型以及向量召回通道。

之後我們會對多通道召回結果做合併。

召回層之後是排序模組,我們採用的是多因子排序的方式,同時去預估ctr、cvr和相關性。

我們會對多因子進行融合,再對排序結果進行多樣性打散,最後得到最終得分。

針對Embedding,我主要介紹一下其在相關性預估中的應用。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

我們在推薦中為什麼引入相關性。在商業場景中,排序策略更關注業務收益,但是這會導致使用者體驗較差。我們希望能夠平衡使用者的體驗和業務收益,其中一個解決方案是在粗排和精排層分別做相關性建模。

在精排層,我們將使用者的行為表徵分為弱意圖和強意圖。弱意圖可以是點選、電話或者微聊;強意圖可以是搜尋、篩選等行為。我們對弱意圖的建模方式採用傳統的雙塔結構,而對強意圖採用了LR,並且會對搜尋、篩選的行為加上時間的衰減。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

弱意圖的雙塔結構的左塔是使用者,右塔是帖子。在使用者塔我們會對使用者行為做顯式加權,對帖子塔會將帖子的關鍵屬性拼接在一起作為輸入,相當於對帖子進行了聚類。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

上圖展示了我們對相關性預估問題做的幾點最佳化。針對冷啟動問題,如之前所述,我們採用了帖子的屬性編碼資訊拼接在一起來表徵這個帖子。在模型層面,我們將使用者和帖子共享embedding lookup table。在提取使用者embedding時我們還會考慮整個帖子的行為權重。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

針對粗排相關性,我們融合了DSSM,Airbnb embedding和YoutubeNet的思想,同時兼顧了業務收益目標。具體地,在帖子塔一側我們借鑑了Airbnb embedding的方式,在精排部分帖子屬性中加入了地域相關的維度約束,然後使用帖子屬性編碼去訓練帖子向量。最終預訓練完成的向量可以建立索引,在線上服務時不會去更新這些向量,而只是動態更新使用者向量。使用者塔一側會考慮到使用者的額外屬性資訊,借鑑YoutubeNet的做法,將使用者行為序列的Embedding和使用者屬性Embedding做拼接作為DNN的輸入。我們在雙塔向量互動前對向量融入了歷史統計因子,將其拼接到DNN的輸出向量後。雙塔的最終學習目標是最佳化點選率。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

我們在帖子編碼中加入地域屬性的原因是和業務強相關的。針對模型應用的二手車業務,大多數二手車使用者買車只會去關心本地帖子,所以本地傾向性明顯。所以在粗排階段,我們需要加入地域相關資訊進行約束,否則就會召回很多異地帖子,進而給精排的輸入增加很多不符合要求的候選帖子。其次,我們最開始的模型是使用預訓練完成的帖子向量作為表徵,然後透過使用者行為序列的Embedding做池化操作,進而直接和帖子向量進行相關性計算。但是這種方式在線上的實驗效果不理想,ctr指標是下降的。所以針對這個問題我們加入了DSSM

的結構,並確定了以點選率為目標對使用者塔進行學習。

為了兼顧整體收益,我們在最佳化中針對使用者的帖子相關性計算,融合了歷史統計因子,使其能夠達到兼顧使用者體驗和商業收益的目標。

針對冷啟動問題,我們同樣對帖子的屬性進行拼接作為編碼。

類似地,在使用者側我們採用了使用者分群的思想,按照使用者最近五次點選行為序列對使用者進行聚簇。

最後,針對粗排效能最佳化,我們是在帖子向量預訓練完成後,實時非同步地將向量流入索引中。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

上圖展現了線上實時資料流的搭建方案。資料流包含使用者和帖子向量的非同步生成部分,均包含離線存量資料和實時增量資料。相關性預估模組在粗排、精排和召回模組均有使用。

蘇永浩:Embedding技術在商業搜尋與推薦場景的實踐

我們針對相關性預估的效果進行了評估,結果如上圖所示。以品牌和價格兩個維度為例,我們進行了PCA降維進行視覺化評估。從結果圖中可以發現,我們得到的向量無論在品牌粒度還是價格粒度都有比較好的區分度。上線之後,我們無論在粗排還是精排的相關性預估指標都有較高的提升幅度,說明我們的相關性評估模型效果較好。

05

精彩問答

Q

1:Embedding的效果如何評估?

A:首先,我們會根據不同維度,使用降維的方法視覺化地展現向量的區分度。其次,我們也會結合業務場景來關注某一維度的召回結果。同時,我們會根據召回向量的top相似貼做分析來進行效果評估。

Q2:使用者和物品雙塔使用的特徵不一樣,那麼兩者生成的向量為什麼可以計算相似性?

A:我們在資訊互動前會將使用者向量和帖子向量約束在同一個向量空間中,進而使得相似性是可以被計算的。如果你是分別對使用者向量和帖子向量進行離線生成,那麼在這種情況下相似度確實無法計算。

Q3:有沒有考慮ANN檢索?

A:沒有。因為在召回環節我們會得到與使用者query相關的候選帖子。我們直接檢索對應的帖子向量與使用者向量做點乘即可。

Q4:能否詳細介紹一下收益是如何最佳化的?

A:模型是以最佳化點選率為主要目標的,但我們不僅僅以點選率為目標,還兼顧了收益率等目標。可以理解為在整個大目標中,我們在召回、粗排、精排不同階段都會設定不同的收益目標。在這些模組中都會使用Embedding,所以最佳化收益可以根據業務目標,例如在粗排階段需要判斷優先考慮的是相關性還是收益率;類似地在精排階段也需要相應地調整策略。我們在粗排階段重點考慮了相關性,在精排階段重點考慮了收益目標。整個最佳化過程需要根據實驗結果進行分析。例如實驗結果表明ctr出現下降,而模型是以ctr為主要目標的,那麼這時候就要去分析哪個原因造成了ctr的下降。可能是對業務場景理解不足出現瞭如異地召回的情況。還可以以結果為導向,試著重新擬合一個模型來最佳化ctr,嘗試是否可以提升ctr指標。

Q5:預訓練的帖子向量多久會進行更新?

A:我們設定的更新間隔會比較長,如周粒度更新。因為帖子向量是全量構建索引的,以天粒度建立索引成本較高。我們現在的模型主要是對使用者向量進行實時更新來達到最佳化模型的目的。

Q6:模型更新的頻率是多大?資料長尾問題怎麼解決?

A:我們會實時的對使用者Embedding進行更新,但它是一個非同步更新的過程。針對資料長尾問題,我們使用帖子的屬性進行編碼來取代帖子id,這樣就可以有效地解決冷啟動問題。

Q7:為什麼沒有考慮將graph embedding運用在粗排或者精排模型上?

A:其實graph embedding在召回環節是使用了的,例如EGES。但本次分享主要是介紹相關性模組。

Q8:虛擬類目體系是如何構建的?

A:第一種最基本的方式就是請專家來進行構建,比如邀請產品、技術以及運營同事等,來生成taxonomy樹。虛擬類目體系的好處是不使用圖譜,而是使用了簡單的分類樹。對於第二種方式,如果你想建立文字相關的taxonomy樹,那麼根據語料文字庫中的關鍵詞,你可以自下而上地聚合上層的概念來構建關係樹。當然,你也可以自上而下地構建taxonomy樹,即使用上層概念來向下尋找實體。

Q9:使用者塔中加強使用者實時反饋的時候使用的是average-pooling,有沒有考慮過attention的方式?是不是attention的方式沒有帶來收益?

A:你所說的方法我們都進行過實驗,比如取歷史行為序列中的top訪問、最近訪問以及對行為序列做attention。實驗結果表明取最近訪問行為做average-pooling效果最佳。

Q10:能否再具體分析一下相關性建模的目的嗎?精排階段是否也可以考慮相關性?

A:我們在粗排和精排環節都會考慮相關性問題。在粗排階段,我們在兼顧收益的情況下重點關注結果的相關程度。具體地,我們會使用點選率和收益率拉取收益相對比較高的帖子。在精排階段,我們是計算了query和doc的相關性,這裡主要就考慮了兩者的相似度。計算出相似度得分後我們會對相關程度進行判定。這裡正負樣本的比例我們設定為1:4,比例可以透過人為設定一些規則來對正負樣本結果進行約束。整體上來看,我們在粗排階段優先保證了收益,在精排階段保證相關性。

Q11:相關性預估的樣本是從哪裡得到的?

A:相關性預估的樣本是從使用者的歷史行為記錄中得到的。比如使用者發生了點選、轉化、電話、微聊等行為就可以作為正樣本。

今天的分享就到這裡,謝謝大家。

集虎卡,開鴻運!最高拆522元驚喜福袋!

相關文章

頂部