Embedding-based Retrieval in Facebook Search - 1 - 論文學習


 

Embedding-based Retrieval in Facebook Search

ABSTRACT

在社交網絡(如Facebook)中的搜索提出了與傳統的web搜索不同的挑戰:除了查詢文本之外,考慮到搜索者的上下文以提供相關結果是很重要的。搜索者的社交圖譜是上下文的一個組成部分,也是Facebook搜索的一個獨特方面。盡管基於嵌入的檢索(embedding-based retrieval ,EBR)已經在網絡搜索引擎中應用多年,但Facebook的搜索仍然主要基於布爾匹配模型。在本文中,我們討論了將EBR應用到Facebook搜索系統的技術。本文介紹了為建模用於個性化搜索的語義嵌入而開發的統一嵌入框架,並在一個典型的基於inverted索引的搜索系統中提供基於嵌入的檢索服務。我們討論了整個系統端到端優化的各種技巧和經驗,包括ANN參數優化和全棧優化。最后,我們介紹了我們在兩個選定的關於建模的最新主題上的進展。我們通過在線A/B實驗觀察到的顯著指標收益,在Facebook搜索上評估了EBR的效果。我們相信本文將提供有用的見解和經驗,以幫助人們開發基於嵌入的搜索引擎檢索系統。

 

1 INTRODUCTION

搜索引擎已經成為幫助人們在線獲取大量信息的重要工具。在過去的幾十年里,人們開發了各種技術來提高搜索質量,特別是在包括Bing和谷歌在內的網絡搜索引擎中。由於從查詢文本中准確計算搜索意圖和表示文檔的語義是困難的,搜索技術大多基於各種term匹配方法[1],它在關鍵字匹配可以解決的情況下表現良好。對於語義匹配[12]來說,它仍然是一個具有挑戰性的問題,其目的是解決預期結果不完全匹配查詢文本但能夠滿足用戶搜索意圖的情況。

在過去的幾年里,深度學習在語音識別、計算機視覺和自然語言理解[10]方面取得了重大進展。其中的嵌入(embedding),也被稱為表征學習(representation learning),已被證明是成功的技術,有助於[2]的成功。本質上,嵌入是一種將ids的稀疏向量表示為密集特征向量的方法,也稱為語義嵌入,因為它通常可以學習語義。一旦了解了嵌入,它就可以作為查詢和文檔的表征,應用於搜索引擎的各個階段。由於該技術在計算機視覺和推薦系統等其他領域的巨大成功,作為下一代搜索技術[13],其已成為信息檢索界和搜索引擎行業的一個活躍的研究課題。

一般來說,搜索引擎包括一個以低延遲和低計算成本檢索一組相關文檔為目標的召回層(通常稱為檢索層,retrival)和一個以更復雜算法或模型將最需要的文檔排序為目標的精確層(通常稱為排序,ranking)。雖然嵌入可以同時應用於兩個層,但通常在檢索層利用嵌入的機會更大,因為檢索層位於系統的底部,這往往是瓶頸。嵌入式技術在檢索中的應用稱為基於嵌入的檢索,簡稱EBR。簡單地說,基於嵌入的檢索是一種利用嵌入來表示查詢和文檔,然后將檢索問題轉化為嵌入空間中最近鄰(NN)搜索問題的技術。

EBR在搜索引擎中是一個具有挑戰性的問題,因為要考慮的數據規模非常大。與通常在每個會話中考慮數百個文檔的ranking層不同,retrival層需要處理搜索引擎索引中的數十億甚至萬億個文檔。嵌入式的龐大規模對嵌入式的訓練和服務都提出了挑戰。其次,與計算機視覺任務中的基於嵌入的檢索不同,搜索引擎通常需要將基於嵌入的檢索和基於詞匹配的檢索結合起來,在retrival層對文檔進行評分。

Facebook搜索作為一種社交搜索引擎,與傳統搜索引擎相比有着獨特的挑戰。在Facebook搜索中,搜索意圖不僅依賴於查詢文本,而且還受到發出查詢的用戶和搜索者所在的上下文的嚴重影響。正因為如此,基於嵌入的檢索在Facebook搜索中並不是一個文本嵌入問題,這在IR社區[13]中得到了積極的研究。相反,它是一個更復雜的問題,需要理解文本、用戶和上下文。

為了在Facebook搜索中部署基於嵌入的檢索,我們開發了一些方法來解決modeling、serving和full-stack optimization方面的挑戰。在modeling方面,我們提出了統一的嵌入模型,這是一種雙面模型,一邊是由查詢文本、搜索者和上下文組成的搜索請求,另一邊是文檔。為了有效地訓練模型,我們開發了從搜索日志中挖掘訓練數據的方法,並從搜索器、查詢、上下文和文檔中提取特征。為了快速迭代模型,我們在離線評估集上采用召回度量來比較模型。

建立用於搜索引擎的檢索模型有其獨特的挑戰,如如何建立一個有表示性的訓練任務來讓模型更有效、高效地學習。我們研究了兩個不同的方向,即hard mining來有效地解決表示和學習檢索任務的挑戰,以及ensemble embedding將模型划分為多個階段,每個階段有不同的recall和precision權衡。

在模型建立之后,我們需要在檢索堆棧中尋找有效、高效地為模型服務的方法。雖然將來自現有的檢索和嵌入KNN的候選相結合的方法可以很容易地構建出一個系統,但我們發現它並不理想,原因有以下幾個方面:1)從我們最初的實驗來看,它具有巨大的性能成本;2)由於雙重指標,維護成本較高;3)兩個候選集可能有很大的重疊,這使得整體效率低下。隨后,我們開發了一個混合檢索框架,將嵌入KNN和布爾匹配結合在一起來為檢索的文檔評分。為此,我們為嵌入向量量化部署Faiss[9]庫,並將其與基於倒排索引的檢索相結合,構建了一個混合檢索系統。除了解決上述問題外,該系統還有兩個主要優點:1)可以通過嵌入和詞匹配的聯合優化來解決搜索檢索問題;2)支持受限於term匹配的嵌入KNN,不僅解決了系統性能成本問題,而且提高了嵌入KNN結果的精度。

搜索是一個多階段的ranking系統,retrival是第一階段,其次是各個階段的ranking和filtering模型。為了對系統進行整體優化,最終返回新的好結果,抑制新的壞結果,我們進行了后期優化。具體說來,我們將embeddings嵌入到ranking層中,並建立了一個訓練數據反饋循環來主動學習識別來自基於嵌入的檢索的好的和壞的結果。圖1是一個基於嵌入的檢索系統的示例。我們通過在線A/B實驗觀察到的指標顯著增加,對在Facebook搜索的垂直領域的EBR進行了評估。

本文的組織結構如下。我們從建模開始,在第2節和第3節中介紹我們關於損失函數、模型架構、訓練數據和特征工程的解決方案。接下來,我們將在第4節中討論模型服務和系統實現的細節。在第5節中,我們將討論我們在后期優化中開發的技術,以端到端地釋放來自基於嵌入的檢索的能量。最后,我們將第6節奉獻給最新建模技術中選定的主題,然后是第7節的結論。

 

 

 

2 MODEL

將搜索檢索問題當作recall優化問題。具體來說,即給定一個搜索查詢,其目標結果集為T= ,模型返回的top K的結果為,希望通過top K的結果去最大化recall:

目標結果是基於特定條件的與給定查詢相關的文檔。例如,它可能是用戶點擊的結果,或基於human rating的相關文檔。

我們將recall優化規划為一個基於查詢與文檔之間距離的排序問題。查詢和文檔用神經網絡模型編碼成密集向量,我們使用余弦相似度作為距離度量。我們提出利用triplet loss[14]來近似recall目標來學習神經網絡編碼器,也稱為嵌入模型。

語義嵌入通常被表述為信息檢索中的文本嵌入問題,但對於Facebook搜索來說是不夠的。Facebook搜索是一種個性化搜索引擎,它不僅考慮文本查詢,還考慮搜索任務中搜索者的信息和上下文,以滿足用戶的個性化信息需求。以人名搜索為例,雖然Facebook上可能有數千個名為“John Smith”的用戶資料,但用戶用“John Smith”查詢的實際目標用戶很可能是他們的朋友或熟人。針對這一問題,我們提出了統一嵌入(unified embedding)的方法,在嵌入的生成過程中不僅考慮了文本信息,還考慮了用戶信息和上下文信息。

 

2.1 Evaluation Metrics

雖然我們的最終目標是通過在線A/B測試提供端到端質量改進,但重要的是開發離線指標,以便在在線實驗之前快速評估模型質量,並從復雜的在線實驗設置中隔離問題。我們建議對整個索引進行KNN搜索,然后使用公式1中定義的recall@K作為模型評價指標。具體來說,我們抽樣了10000個搜索會話來收集評估集的查詢和目標結果集對,並報告了10000個會話的平均recall@K。

 

2.2 Loss Function

對於給定的triplet ,其中表示查詢,表示相關的正文檔,表示負文檔。triplet損失被定義為:

D(u, v)表示向量u和v之間的距離度量, m是正負對之間的邊際,和N從訓練集中選擇的triplets的數量。這個損失函數的目的是使用距離邊際將正對和負對分開。 我們發現調整邊界值是十分重要的-最優邊界值在不同的訓練任務中有很大的差異,不同的邊界值導致5-10%的KNN召回方差。

我們認為,使用隨機樣本去形成triplet的負對可以近似召recall優化任務。原因如下。如果我們為訓練數據中的每個正例采樣n個負例,當候選集pool大小為n時,該模型將對top one 位置的recall進行優化。假設實際serving候選pool大小為N,我們將優化在top K≈N/ n位置的recall。在2.4節中,我們將驗證這一假設,並對不同的正和負標簽定義進行比較。

 

2.3 Unified Embedding Model

為了學習用來優化triplet損失的embeddings,我們的模型包含三個主要成分:一個查詢encoder ,用來生成一個查詢embedding;一個文檔encoder ,用來生成一個文檔embedding;以及一個相似度函數,用來生成查詢Q和文檔D之間的分數。encoder是一個神經網絡,用來將輸入轉換成一個低維的密集向量,作為embedding。在我們的模型中,兩個encoders f(.)和g(.)默認為兩個分開的網絡,但是可以選擇地分享部分參數。至於相似度函數,我們選擇cosine相似度,因為其是在embedding學習[7]中常用的函數之一:

因此在等式2中的損失函數中使用的距離是被定義為的cosine距離

 

encoders的輸入是統一嵌入與傳統文本嵌入模型的區別所在。統一嵌入編碼文本、社會和其他有意義的上下文特征來分別表示查詢和文檔。例如,對於查詢端,我們可以包括搜索者的位置及其社會聯系;而對於文檔端,我們可以包括關於Facebook群組的聚合位置和社會集群(以群組搜索為例)。

大多數特性都是高cardinality的分類特性,可以是one-hot或multi-hot向量。對於每個分類特征,在輸入編碼器之前,會插入一個embedding look-up層來學習和輸出其密集向量表征。對於multi-hot向量,采用多重嵌入加權組合的方法進行最終的特征級嵌入。圖2演示了我們的統一嵌入模型架構(unified embedding model architecture),我們將在第3節中討論更多關於特征工程的內容。

 

2.4 Training Data Mining

在搜索ranking系統中為檢索任務定義正標簽和負標簽是一個重要的問題。在這里,我們比較了幾種基於模型召回度量的選項。對於負例,我們在最初的研究中嘗試了以下兩種負例選項,同時使用點擊結果作為正例選項:

  • random samples: 對於每個查詢,我們從文檔池中隨機抽取文檔作為負例。
  • non-click impressions: 對於每個查詢,我們隨機抽取那些印象深刻但未點擊的結果作為負例。

使用non-click impressions作為負例訓練的模型比使用random 負例訓練的模型有着明顯更差的recall: 對於people嵌入模型來說,recall中有absolute 55% regression。我們認為,這是因為這些負例傾向於可能在一個或多個因素上匹配查詢的困難情況,而索引中的大多數文檔是根本不匹配查詢的簡單情況。如果所有的負例都是這樣的hard 負例,這將改變訓練數據對真實檢索任務的代表性,這可能會對所學的嵌入施加不可小覷的偏差。

我們還嘗試了不同的挖掘正例的方法,並有如下有趣的發現:

  • clicks: 將點擊結果視為正例是很直觀的,因為點擊表明用戶對結果的反饋可能與用戶的搜索意圖相匹配。
  • impressions:  這個想法是,我們把檢索當作近似ranker的方法,但可以快速執行。此后,我們希望設計檢索模型來學習返回同一組結果,這些結果將被ranker排列在較高的位置。在這個意義上,所有的結果顯示或對用戶來說印象深刻的都是檢索模型學習的正例。

我們的實驗結果表明,這兩種定義是同等有效的;在相同的數據量下,使用clicks vs impressions 訓練的模型得到了類似的召回。此外,我們用基於impressions的數據對基於clicks的訓練數據進行加強后的數據進行了實驗,但是我們沒有觀察到比基於clicks的模型更多的收獲。結果表明,增加impressions數據並不能提供額外的價值,增加訓練數據量也不能使模型受益。

我們的上述研究表明,將點擊作為正例和隨機采樣的作為負例的方法可以提供一個合理的模型性能。在此基礎上,我們進一步探索了hard mining策略,以提高模型對相似結果的區分能力。我們將在第6.1節中提供更多細節。

 

3 FEATURE ENGINEERING

統一嵌入模型的優點之一是可以整合文本以外的各種特征,從而提高模型的性能。我們一致地觀察到,統一嵌入比文本嵌入更有效。例如,ecents搜索從文本切換到統一嵌入時,召回率提高了+18%,groups搜索的召回率提高了+16%。統一嵌入的有效性在很大程度上取決於識別和構建信息特征的成功與否。表1顯示了通過將每個新的特征類別添加到group嵌入模型(以文本特征為基准)而實現的增量改進。在本節中,我們將討論對主要模型改進做出貢獻的幾個重要特性。

Text features.  Character n-gram[7]是用於文本嵌入的一種常用的文本表示方法。與word n-gram相比,它的優點有兩個方面。首先,由於詞匯量有限,嵌入查找表的尺寸較小,在訓練時可以更有效地學習。其次,子詞表征對於我們在查詢(例如拼寫變化或錯誤)和文檔(由於Facebook的大量內容庫存)方面遇到的詞匯之外的問題來說是健壯的。我們比較了用Character n-gram訓練的模型和用word n-gram訓練的模型,發現前者可以產生更好的模型。然而,在character trigrams之上,包括word n-gram表征還提供了較小但一致的模型改進(+1.5%的召回增益)。注意,由於word n-gram的cardinality通常非常高(例如,查詢trigrams的cardinality為352M),因此需要散列來減少嵌入查找表的大小。但是即使存在哈希碰撞的缺點,添加word n-ngrams仍然會帶來額外的好處。

對於Facebook實體,提取文本特征的主要字段是人名實體的名稱或非人名實體的標題。與布爾項匹配技術相比,我們發現使用純文本特征訓練的嵌入尤其擅長處理以下兩種情況:

  • Fuzzy text match. 例如,模型能夠學習在查詢“kacis creations”和Kasie’s creations頁面之間進行匹配,而基於term的匹配則不能。
  • Optionalization. 在查詢“mini cooper nw”的情況下,該模型可以學習通過為一個可選的term匹配刪除“nw”來檢索預期的Mini cooper owner/drivers club 組。

Location features. 位置匹配在許多搜索場景中都具有優勢,比如搜索local business/groups/events。為了讓嵌入模型在生成輸出嵌入時考慮locations,我們在查詢和文檔側特征中都添加了位置特征。在查詢方面,我們提取了搜索者的城市、地區、國家和語言。對於文檔端,我們添加了公開可用的信息,例如由管理員標記的顯式group位置。結合文本特征,該模型能夠成功學習查詢與結果之間的隱式位置匹配。表2顯示了文本嵌入模型和文本+位置嵌入模型在groups搜索中返回的top相似文檔的side-by-side比較。我們可以看到,具有位置特征的模型可以學習將位置信號融合到嵌入中,將與來自Louisville, Kentucky 的搜索者所在位置相同的文檔排名到更高的位置。

 

Social embedding features.  為了利用豐富的Facebook社交圖改進統一的嵌入模型,我們訓練了一個獨立的嵌入模型,其基於社交圖來嵌入用戶和entities。這有助於將綜合的社交圖整合到一個統一的嵌入模型中,否則可能無法獲得完整的社交圖信息。

 

 

4 SERVING

4.1 ANN

由於以下優點,我們在我們的系統中部署了基於inverted索引的ANN(近似近鄰)搜索算法。首先,由於嵌入向量的量化,它具有較小的存儲成本。其次,它更容易被集成到現有的基於inverted索引的檢索系統中。我們利用Faiss庫[9]來量化向量,然后在我們現有的inverted表掃描系統中實現高效的NN搜索。

嵌入量化主要有兩種成分,一種是Coarse quantization,通常通過K-means算法將嵌入向量量化成coarse簇;另一種是Product quantization[8],它進行了細粒度量化,從而能夠高效地計算嵌入距離。我們需要調整以下幾個重要參數:

  • Coarse quantization.  Coarse quantization有不同的算法。比較IMI[11]算法和IVF[15]算法是有用的。調優coarse簇的數量num_cluster非常重要,這將同時影響性能和召回。
  • Product quantization.有多種Product quantization算法的變體,包括vanilla PQ, OPQ, PQ與PCA變換。PQ的字節數pq_bytes是一個需要調優的重要參數。
  • nprobe. nprobe是一個參數,用於決定將有多少簇分配給查詢嵌入,查詢嵌入將進一步決定將掃描多少coarse簇。該參數將影響性能和召回。

我們構建了一個離線pipeline來有效地調優這些參數。此外,我們需要進行在線實驗,根據離線調優,從選擇的候選對象中確定最終的設置。下面我們將分享我們從ANN調優中得到的技巧和教訓。

  • Tune recall against number of scanned documents.  首先,我們比較了設置相同num_cluster和nprobe的不同的Coarse quantization算法的recall。然而,從更多的數據分析中我們發現聚類是不平衡的,特別是IMI算法,大約有一半的聚類只有少量的樣本。這將導致對於相同的num_cluster和nprobe設置,掃描的文檔數量不同。因此,我們使用掃描文檔的數量作為一個更好的度量來近似ANN調整中的性能影響,如圖3所示。我們使用1-recall@10來測量ANN的准確性,1-recall@10是ANN搜索前10個結果中exact KNN搜索得到的top結果的平均recall。

 

 

  • Tune ANN parameters when there is non-trivial model change. 我們觀察到,ANN的性能與模型特征有關。例如,當我們在non-click impressions訓練的模型中使用ensemble技術時,我們發現,雖然模型顯示出比基線更好的召回,但在對兩者進行量化后,召回比基線更差。當模型訓練任務發生重大變化時,例如,增加更多的hard 負例時,應始終考慮調整ANN參數。
  • Always try OPQ. 在應用量化之前對數據進行變換通常是有用的。我們使用PCA和OPQ[5]對數據進行變換,觀察到OPQ通常更有效,如表3和圖3所示。OPQ的一個警告是:由於它應用了嵌入式的旋轉,我們可能還需要重新調整num_cluster和nprobe以掃描類似的文檔。

  • Choose pq_bytes to be d/4. Product quantization將向量壓縮為x字節編碼。對於x的選擇,與嵌入向量的維數d有關。較大的x會導致更高的搜索精度,但代價是增加內存和延遲。實證結果表明,在x > d/4之后,精度的提高是有限的。
  • Tune nprobe, num_clusters, and pq_bytes online to understand the real perf impact.雖然調優ANN離線算法和參數來得到一個合理的對性能 vs 召回的權衡的理解是十分重要的, 但我們發現更重要的是部署幾個ANN在線算法和參數的配置以獲得更好的對 從embedding-based檢索到真正的系統的性能影響的理解。這對於離線調優中確定容量預算和減少參數搜索范圍具有重要意義。

 

4.2 System Implementation

為了將基於嵌入的檢索集成到我們的服務堆棧中,我們在Unicorn[3]中實現了對NN搜索的一流支持,這是一個支持Facebook大多數搜索產品的檢索引擎。Unicorn將每個文檔表示為術語袋,術語袋是表示文檔二進制屬性的任意字符串,按照慣例使用它們的語義進行命名。例如,居住在Seattle的用戶John的terms是 text:John 和location:Seattle。terms可以附加payloads。

查詢可以是這些terms上的任何布爾表達式。例如,下面的查詢將返回姓名中包含john和smithe並居住在Seattle或Menlo Park的所有人:

 

為了支持NN,我們擴展了文檔表征,包含了embeddings,每個embeddings都有一個給定的字符串鍵(key),並添加了一個(NN <key>:radius <radius>)查詢操作符,它匹配所有<key> embeddings在查詢embedding的指定半徑(radius)內的文檔。

在建立索引時,對每個文檔嵌入(embedding)被量化,並將其轉換為一個term(用於coarse cluster)和一個payload(用於quantized residual)。在查詢時,(nn)在內部被重寫為與最接近查詢嵌入(probes)的coarse cluster相關的terms的(or),為了匹配文檔,檢索term payload以驗證半徑(radius)約束。probes的數量可以通過一個附加屬性指定:nprobe。通過根據已有的原語實現NN支持,而不是編寫單獨的系統,我們繼承了現有系統的所有特性,比如實時更新、高效的查詢規划和執行,以及支持多跳查詢(參見[3])。

后者允許我們支持top-K NN查詢,其中我們只選擇最接近查詢的K個文檔,然后評估查詢的其余部分,而不是根據半徑進行匹配。然而,從我們的實驗研究,我們發現半徑模式可以更好地權衡系統性能和結果質量。一個可能的原因是,radius模式支持有約束的NN搜索(受匹配表達式的其他部分的約束),而top K模式提供了更輕松的操作,需要掃描整個索引來獲得top K結果。因此,我們在當前的產品中使用基於半徑(radius)的匹配。

 

4.2.1 Hybrid Retrieval. By having the (nn) operator as part of

我們的布爾查詢語言現在可以支持混合檢索表達式,包含任意的嵌入和terms組合。這可以用於基於模型的模糊匹配,在重用和受益於檢索表達式的其他部分的同時,可以改進諸如拼寫變化、可選性等情況。例如,一個拼寫錯誤的查詢john smithe正在尋找一個在Seattle或Menlo Park的叫john smith的人;檢索表達式類似於上面的表達式。

該表達式將無法檢索有問題的用戶,因為term text:smithe將無法匹配該文檔。我們可以通過(nn)操作符對該表達式進行模糊匹配: 

其中model-141795009是嵌入的key。在這種情況下,如果查詢(john smith)嵌入和文檔(john smith)嵌入之間的余弦距離小於0.24,目標用戶就會被檢索到。

 

4.2.2 Model Serving.  我們以以下方式服務嵌入模型。對雙邊嵌入模型進行訓練后,將模型分解為查詢嵌入模型和文檔嵌入模型,分別為這兩個模型服務。在查詢嵌入方面,我們將該模型部署在實時推理的在線嵌入推理服務中。對於文檔,我們使用Spark進行批量離線模型推理,然后將生成的嵌入和其他元數據一起發布到forward索引中。我們做了額外的嵌入量化,包括coarse quantization和PQ ,以將其發布到inverted索引中。

 

4.3 Query and Index Selection

為了提高EBR的效率和質量,我們進行了查詢和索引選擇。我們應用查詢選擇技術來克服過度觸發、巨大的容量成本和垃圾增加等問題。對於某些查詢——當EBR沒用和不能為查詢提供任何額外的價值時,我們就不會觸發EBR(即不使用它),如簡單的查詢與搜索者正在尋找一個特定的目標搜索和點擊,或查詢與訓練的嵌入模型有着顯然不同的查詢意圖。在索引方面,我們做了索引選擇以提高搜索速度。例如,我們只選擇每月活躍用戶、最近事件、熱門頁面和群組。

 

5 LATER-STAGE OPTIMIZATION

Facebook搜索排名是一個復雜的多階段排名系統,每個階段都在前一階段的基礎上逐步提煉結果。在這個堆棧的最底部是檢索(retrival)層,其中應用基於嵌入的檢索。然后通過一堆排序(ranking)層對檢索層的結果進行排序和過濾。每個階段的模型都應該針對上一層返回的結果的分布進行優化。然而,由於當前的排名階段是為現有的檢索場景設計的,這可能會導致基於嵌入的檢索返回的新結果被現有的排序器排序為次優。為了解決這個問題,我們提出了兩種方法:

  • Embedding as ranking feature.  將嵌入的相似性傳播到funnel的下方不僅有助於ranker識別基於嵌入檢索的新結果,而且還為所有結果提供了一個通用的語義相似性度量。我們探討了幾種基於嵌入的特征提取方法,包括查詢與結果嵌入的余弦相似度、Hadamard product和原始嵌入。從我們的實驗研究來看,余弦相似特征始終表現出比其他選擇更好的性能。
  • Training data feedback loop.  基於嵌入的檢索雖然可以提高檢索的recall,但與term匹配相比,它可能具有較低的精確度。為了解決精確度問題,我們建立了一個基於human rating pipeline的閉環反饋回路。特別是,在啟用基於嵌入的檢索之后,我們記錄了結果,然后將這些結果發送給人類評分者,以標記它們是否相關。我們利用這些人類評分數據對關聯模型進行再訓練,使其能夠在保留相關結果的同時,從基於嵌入的檢索中過濾出不相關的結果。其被證明在基於嵌入檢索的recall改善中是一個得到高精確度的有效方法。

 

6 ADVANCED TOPICS

基於嵌入的檢索需要廣泛的研究來不斷提高性能。我們研究了嵌入建模的兩個重要領域:hard mining 和embedding ensemble,以繼續推進基於嵌入的檢索解決方案。

 

6.1 Hard Mining

檢索任務的數據空間在文本/語義/社交匹配程度上具有不同的數據分布,為嵌入模型設計一個訓練數據集,以便在該空間上高效有效地學習非常重要。為了解決這個問題,hard mining是一個主要的方向,也是嵌入學習的一個活躍的研究領域。然而,大多數研究都來自計算機視覺領域,針對分類任務[6,14,16,17],而搜索檢索沒有“類”的概念,因此是一個現有技術不一定有效的獨特問題。在這個方向上,我們將我們的解決方案分為兩個部分:hard negative mining和hard positive mining。

6.1.1 hard negative mining. 在分析我們的people搜索的嵌入模型時,我們發現,在給定查詢的嵌入結果中,排名top K的結果通常具有相同的名稱,並且即使存在社交特征,該模型也並不總是將目標結果排得比其他結果高。這促使我們相信該模型還不能恰當地利用社會特征,這很可能是因為negative訓練數據太簡單了,因為它們是隨機樣本,通常有着不同的名字。為了使模型能夠更好地區分相似的結果,我們可以使用嵌入空間中更接近正樣本的樣本作為訓練中的hard negative。

Online hard negative mining. 由於模型訓練是基於mini-batch更新的,因此可以動態且有效地在每批中選取hard negatives。每個batch包含n個positive對。然后,對於每個查詢,我們使用其他positive文檔生成一個小的文檔池,然后選取其中有着最高相似度分數的文檔作為hardest negatives去生成訓練triplets。實現在線hard negative mining是我們模型改進的主要貢獻之一。它持續改善了所有垂直搜索領域的嵌入模型質量:people搜索的召回率+8.38%;groups搜索的召回率+7%,和events搜索的召回率+5.33%。我們還觀察到,最佳設置是每個positive最多兩個hard negative。使用超過兩個hard negative將開始削弱模型的質量。

在線HNM的一個局限性是,隨機樣本中出現hard negative的概率可能很低,因此無法產生足夠hard的negative。接下來,我們看看如何基於整個結果池生成harder negative,也稱為offline Hard Negative Mining。

 

Offline hard negative mining. Offline hard negative mining 過程如下:

(1)每次查詢生成top K結果。
(2)基於hard selection strategy選擇hard negatives。
(3)利用新生成的triplets對嵌入模型進行再訓練。

(4)過程具有迭代性。

我們進行了大量的實驗來比較Offline hard negative mining和online hard negative mining。有一個發現乍一看可能是違反直覺的,那就是簡單地使用hard negative來訓練的模型不能比使用random negative來訓練的模型表現更好。進一步的分析表明,“hard”模型在非文本特征上有更多的權重,但在文本匹配方面比“easy”模型做得差。因此,我們努力調整采樣策略,最終得到一個優於在線HNM模型的模型。

第一個想法是關於hard selection strategy。我們發現使用hardest例子並不是最好的策略。我們比較了不同排名位置的抽樣,發現在排名101-500之間抽樣的模型獲得最好的recall。第二個想法是關於檢索任務優化。我們的假設是,在訓練數據中存在easy negatives仍然是必要的,因為檢索模型是在一個輸入空間上操作的,該空間包含具有各種hard級別的數據,其中大多數是easy negatives。因此,我們探索了幾種將random negative與hard negative整合在一起的方法,包括從一個簡單的模型中遷移學習。從我們的實證研究來看,以下兩種方法的有效性最高:

Mixed easy/hard training:  在訓練中混合random和hard的negative是有用的。增加easy negatives對hard negatives的比率將繼續提高模型的召回, 在easy:hard=100:1的比例時趨於飽和結果。

Transfer learning from "hard" model to "easy" model:  從“easy”到“hard”的遷移學習並沒有產生更好的模型,而從“hard”到“easy”的遷移學習進一步提高了模型的recall。

最后但並非最不重要的是,對訓練數據中的每個數據點進行詳盡的KNN計算是非常耗時的,而且由於計算資源有限,總模型訓練時間變得不現實。對於offline hard negative mining算法來說,有一個高效的top K生成是非常重要的。近似最近鄰搜索(Approximate nearest neighbor search)是一種實用的方法,可以顯著減少總計算時間。此外,對一個隨機碎片進行ANN搜索就足以產生有效的hard negatives,因為我們在訓練時只依賴於semi-hard negatives。

 

6.1.2 Hard positive mining.  我們的基線嵌入模型使用點擊或impressions作為積極因素,這是現有產品可以返回的。為了最大化基於嵌入檢索的互補增益,一個方向是識別尚未被產品成功檢索但為正例的新結果。為此,我們從搜索者的活動日志中挖掘失敗搜索會話的潛在目標結果。我們發現,用這種方法挖掘出的正樣本對模型訓練是有效的。僅使用hard positives訓練的模型可以達到與點擊訓練數據相似的模型召回水平,雖然其數據量僅為點擊訓練數據的4%。結合hard positives和impressions作為訓練數據可以進一步改善模型召回。

 

6.2 Embedding Ensemble

我們從HNM實驗中了解到,對於EBR模型訓練來說,easy的和hard的例子都很重要——我們需要hard的例子來提高模型的精度,但easy的例子對於表示檢索空間也很重要。使用random negatives訓練的模型模擬了檢索數據的分布,並在很大的K處進行了召回優化,但當K很小時,在top K處的精度較差。另一方面,為優化精度而訓練的模型,例如,使用non-click impressions作為negatives或offline hard negatives來訓練的模型,擅長對較小的候選集進行排名,但在檢索任務中失敗了。隨后,我們提出了一種多階段方法,將用不同硬度訓練的模型結合起來,其中第一階段模型側重於召回,第二階段模型側重於區分第一階段模型返回的更相似的結果。我們與[18]中的級聯嵌入訓練有着相同的spirit,它以級聯的方式將一組經過不同硬度訓練的模型集合起來。我們探索了不同形式的集成嵌入,包括加權級聯(weighted concatenation)和級聯模型(cascade model),並發現這兩種方法都是有效的。

Weighted Concatenation.  由於不同的模型為(查詢、文檔)對 提供不同的余弦相似度評分,我們使用余弦相似度的加權和作為度量來定義該對的親密程度。更具體說來,給定一個模型集,其對應的權重為,對於任何查詢Q和文檔D,我們定義Q和D之間的加權集成相似度分數為:

其中表示模型的Q查詢向量,表示模型的D文檔向量。

為了服務的目的,我們需要將多個嵌入向量分別集成到一個單一的表示形式中,以滿足上述度量屬性。我們可以證明在歸一化向量的一側應用加權乘法可以滿足這一要求。具體來說,我們是這樣構造查詢向量和文檔向量的:

 

綜上所述,我們以與第4節相同的方式進行集成嵌入。權重的選擇是經驗性的,可以根據評價數據集的性能來確定權重。

我們探討了第二階段嵌入模型的幾種模型選擇。實驗表明,使用non-click impressions訓練的模型的kNN召回效果最好(比基准模型提高4.39%)。然而,與單一模型相比,它在應用嵌入量化時准確度損失更大,因此在在線服務時實際效益降低。我們發現,為了在嵌入量化后獲得最好的召回,最好的策略是將一個相對容易的模型與offline hard negative mining模型集成,並對訓練的negatives的hardness水平進行了修改和調整。這個集成候選的離線模型改進略低,但能夠實現顯著的在線召回改進。

Cascade Model.  與加權集成的並行組合不同,級聯模型在第一級模型的輸出上以串行的方式運行第二級模型。我們比較了不同的第二階段模型選擇。我們發現,使用non-click impressions訓練的模型並不適合;總體上的改進比加權集成方法要小得多。而且,當需要用第二階段模型重新排序的結果數目增加時,增益就減小了。然而,在第二階段使用offline hard negative 模型,召回率比基線提高了3.4%。它是一個更適合級聯的候選模型,因為構建的訓練數據的離線HNM是完全基於第一階段模型的輸出。

此外,我們還探討了另一種級聯模型的組成。我們觀察到,雖然整體上統一嵌入比文本嵌入有更大的模型召回,但由於它的焦點轉移到社會和位置匹配,它產生了新的文本匹配失敗。為了提高模型的文本匹配能力,從而提高模型的精度,我們采用了級聯策略:通過文本嵌入預先選擇文本匹配候選對象,然后使用統一的嵌入模型對結果重新排序,返回最終的最優候選對象。與單獨使用統一的嵌入模型相比,該方法的在線性能得到了顯著提高。

 

7 CONCLUSIONS

將語義嵌入引入到搜索檢索中,利用深度學習研究的進步來解決語義匹配問題,具有長遠的好處。然而,由於建模困難、系統實現和跨棧優化的復雜性,尤其是對於一個大規模的個性化社交搜索引擎來說,也是一個具有很高挑戰性的問題。本文提出了一種構建用於社會搜索的語義的統一嵌入方法,並在一個經典的基於inverted索引的搜索系統中實現了基於嵌入的檢索。

統一嵌入模型和基於嵌入的檢索系統的實現只是第一步。要端到端優化系統,使其在結果質量和系統性能方面表現良好,還有很長的路要走。我們介紹了我們在模型改進、服務算法優化和后期優化方面的經驗。我們相信這將是寶貴的經驗,幫助人們在真實的搜索引擎中更快地進行嵌入式檢索。基於嵌入的檢索在產品中的成功應用,為利用最新的語義嵌入學習技術持續提高檢索質量打開了一扇門。我們介紹了我們在這一方向上的第一步進展和學習,特別是在 hard mining 和embedding ensemble方面。

有不斷改進這個系統的巨大的機會。在未來,主要有兩個方向要追求。一是go deep。在建模方面,我們可以應用最新的高級模型,如BERT[4],或者構建特定於任務的模型來解決特定的問題。我們可以在不同的階段進行更深入的研究,包括服務算法優化和排名模型改進,在full-stack failure analysis的指導下,識別在不同堆棧中的改進機會。另一種是go universal。我們可以利用預先訓練的文本嵌入模型,開發一個通用的文本嵌入子模型,以應用於不同的任務。此外,我們可以開發跨所有用例的通用查詢嵌入模型。

 


免責聲明!

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



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