那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

知乎搜索中文本相關性和知識蒸餾的工作實踐

深度學習自然語言處理 ? 來源:深度學習自然語言處理 ? 作者:申站 ? 2021-01-18 17:20 ? 次閱讀

導讀:大家好,我是申站,知乎搜索團隊的算法工程師。今天給大家分享下知乎搜索中文本相關性和知識蒸餾的工作實踐,主要內容包括:

知乎搜索文本相關性的演進

BERT在知乎搜索的應用和問題

知識蒸餾及常見方案

知乎搜索在BERT蒸餾上的實踐

01

知乎搜索文本相關性的演進

1. 文本相關性的演進

51d17038-58b2-11eb-8b86-12bb97331649.jpg

我們首先來介紹下知乎搜索中的文本相關性。在搜索場景中,文本相關性可以定義為?戶搜索query的意圖與召回 doc 內容的相關程度。我們需要通過不同模型來對這種相關程度進行建模。整體而言,文本的相關性一般可以分為兩個維度,字面匹配和語義相關。知乎搜索中文本相關性模型的演進也是從這兩個方面出發并有所側重和發展。在知乎搜索的整個架構中,文本相關性模型主要定位于為二輪精排模型提供更高維/抽象的特征,同時也兼顧了一部分召回相關的工作。

2. Before NN

5203607a-58b2-11eb-8b86-12bb97331649.png

知乎搜索中的文本相關性整體演進可以分為三個階段。在引入深度語義匹配模型前,知乎搜索的文本相關性主要是基于TF-IDF/BM25的詞袋模型,下圖右邊是BM25的公式。詞袋模型通常來說是一個系統的工程,除了需要人工設計公式外,在統計詞的權重、詞頻的基礎上,還需要覆蓋率、擴展同義詞,緊密度等各種模塊的協同配合,才能達到一個較好的效果。知乎搜索相關性的一個比較早期的版本就是在這個基礎上迭代的。右下部分為在基于詞袋模型的基礎上,可以參考使用的一些具體特征。

3. Before BERT

533732d2-58b2-11eb-8b86-12bb97331649.png

基于 BM25 的詞袋模型不管如何設計,主要還是只解決文本相關性中的字面匹配這部分問題。第二階段引入的深度語義匹配模型則聚焦于解決語義相關的問題,主要分為兩部分:雙塔表示模型和底層交互模型。微軟的DSSM(左下)是雙塔模型的典型代表。雙塔模型通過兩個不同的 encoder來分別獲取query和doc的低維語義句向量表示,然后針對兩個語義向量來設計相關性函數(比如cosine)。DSSM擺脫了詞袋模型復雜的特征工程和子模塊設計,但也存在固有的缺陷:query和doc的語義表示是通過兩個完全獨立的 encoder 來獲取的,兩個固定的向量無法動態的擬合doc在不同 query的不同表示。這個反應到最后的精度上,肯定會有部分的損失。

底層交互模型一定程度上解決了這個問題。這個交互主要體現在 query 和 doc term/char 交互矩陣(中)的設計上,交互矩陣使模型能夠在靠近輸入層就能獲取 query 和 doc 的相關信息。在這個基礎上,后續通過不同的神經網絡設計來實現特征提取得到 query-doc pair 的整體表示,最后通過全連接層來計算最終相關性得分。Match-Pyramid(右下)、KNRM(右上)是交互模型中比較有代表性的設計,我們在這兩個模型的基礎上做了一些探索和改進,相比于傳統的 BM25 詞袋模型取得了很大的提升。

4.BERT

540a2aca-58b2-11eb-8b86-12bb97331649.jpg

BERT模型得益于 transformer 結構擁有非常強大的文本表示能力。第三階段我們引入了 BERT希望能夠進一筆提高知乎搜索中文本相關性的表型。BERT 的應用也分為表示模型和交互模型。

對于交互模型來說,如下左圖,query和doc分別為sentence1和sentence2直接輸入到BERT模型中,通過BERT做一個整體的encoder去得到sentence pair的向量表示,再通過全連接層得到相似性打分,因為每個doc都是依賴query的,每個query-doc pair都需要線上實時計算,對GPU機器資源的消耗非常大,對整體的排序服務性能有比較大的影響。

基于上述原因,我們也做了類似于DSSM形式的表示模型,將BERT作為encoder,訓練數據的中的每個query和doc在輸入層沒有區分,都是做為不同的句子輸入,得到每個句向量表示,之后再對兩個表示向量做點乘,得到得到相關度打分。通過大量的實驗,我們最終采用了 BERT 輸出 token 序列向量的 average 作為句向量的表示。從交互模型到表示模型的妥協本質是空間換時間,因為doc是可以全量離線計算存儲的,在線只需要實時計算比較短的 query ,然后doc直接通過查表,節省了大量的線上計算。相比于交互模型,精度有一部分損失。

02

BERT在知乎搜索的應用和問題

1.搜索業務架構中的BERT

544c0576-58b2-11eb-8b86-12bb97331649.jpg

在下圖中我們可以看到,BERT在知乎搜索業務的召回和排序階段都扮演了比較重要的角色。交互模型的主要服務于二輪精排模型,依賴于線上實時的計算query和doc,為精排模塊提供相關性特征。表示模型又分為在線和離線兩塊,在線表示模型實時的為用戶輸入的query提供句向量表示,離線表示模型為庫中的doc進行批量句向量計算。一方面,doc向量通過TableStore/TiDB 和Redis的兩級存儲設計,為線上排序做查詢服務;另一方面,使用 faiss 對批量doc 向量構建語義索引,在傳統的 term 召回基礎上補充向量語義召回。

2. BERT表示模型語義召回

549e1fdc-58b2-11eb-8b86-12bb97331649.jpg

下面詳細介紹下我們的語義召回模型。首先看個例子,對于「瑪莎拉蒂 ghlib」這個case,用戶真正想搜的是「瑪莎拉蒂 Ghibli」這款車,但用戶一般很難記住完整的名稱,可能會輸錯。在輸錯的情況下,基于傳統的term匹配方式(Google搜索的例子)只能召回“瑪莎拉蒂”相關的 doc,而無法進行這輛車型的召回,這種場景下就需要進行語義召回。更通用的來說,語義召回可以理解為增加了字面不匹配但是語義相關的 doc 的召回。

語義召回模型整體是BERT 相關性任務中雙塔表示模型的一個應用。BERT做為encoder來對query和doc進行向量的表示,基于faiss對全量 doc 向量構建語義索引,線上實時的用query向量進行召回。這個策略上線后,線上top20 doc中語義召回doc數量占總召回 doc 數量的比例能到達 5%+。

3. BERT帶來的問題

54c6aa42-58b2-11eb-8b86-12bb97331649.jpg

BEER 模型上線后,為不同的模塊都取得了不錯收益的同時,也給整個系統帶來了不少問題。這些問題整體可以歸結為線上實時計算、離線存儲、模型迭代三個方面。具體的見上圖。

4. 蒸餾前的嘗試

針對上述性能或存儲的問題,在對BERT 蒸餾之前,我們也進行了很多不同的嘗試。

5503b086-58b2-11eb-8b86-12bb97331649.jpg

BERT 交互模型的部署放棄了使用原生TF serving,而是在cuda 的基礎上用c++ 重寫了模型的加載和serving,加上混合精度的使用。在我們的業務規模上,線上實時性能提高到原來的約 1.5 倍,使BERT交互模型滿足了的最低的可上線要求。在這個基礎上,對線上的 BERT 表示模型增加 cache,減少約 60% 的請求,有效減少了GPU 機器資源的消耗。

另一個思路是嘗試給BERT在橫向和縱向維度上瘦身。橫向上,一方面可以減小serving 時 max_seq_length長度,減少計算量;另一方面可以對表示向量進行維度壓縮來降低存儲開銷。這兩種嘗試在離線和在線指標上都有不同程度的損失,因此被放棄。縱向上,主要是減少模型的深度,即減少 transformer層數。這對于顯存和計算量都能得到顯著的優化。前期嘗試過直接訓練小模型,以及使用BERT-base若干層在下游的相關性任務上進行fine-tune。這兩種方案,在離線指標上的表現就沒法達到要求,因此也沒有上線。

針對 doc數量過大,存儲開銷過大和語義索引構建慢的問題。在這方面做了一個妥協的方案:通過wilson score 等規則過濾掉大部分低質量的 doc,只對約 1/3 的doc 存儲表示向量和構建語義索引。該方案會導致部分文檔的相關性特征存在缺失。對于表示模型存在的低交互問題,嘗試Poly-encoder(Facebook方案)將固定的 768維表示向量轉為多個head的形式,用多個head做attention的計算,保證性能在部分下降的前提得到部分精度的提升。

03

智知識蒸餾及常見方案

1.知識蒸餾

5542ddb0-58b2-11eb-8b86-12bb97331649.jpg

下面簡單介紹下知識蒸餾。從下圖中看,我們可以把知識蒸餾的整體形式簡化為:大模型不考慮性能問題盡量學習更多的知識(數據),小模型通過適量的數據去高效地學習大模型的輸出,達到一個知識遷移的效果。實際 serving 使用的是小模型。

556b0740-58b2-11eb-8b86-12bb97331649.jpg

知識蒸餾為什么能有效?關鍵點在于 soft target 和 temperature。soft target對應的是teacher模型的輸出,類似于概率分布,知識蒸餾從hard target轉為soft target的學習有利于模型更好的去擬合標簽,引入temperature則是為了進一步平滑標簽,讓模型去學習到類別和類別中的知識。這里需要注意的是,temperature 的選取不宜過大,太大的 temperature 會導致不同類別之間的差異被完全平滑掉。

2.BERT蒸餾方案

5592633a-58b2-11eb-8b86-12bb97331649.jpg

對與BERT的蒸餾我們做了大量的調研,并對目前主流的蒸餾方案做了歸納分類。基于任務維度來說,主要對應于現在的pretrain + fine-tune 的兩段式訓練。在預訓練階段和下游任務階段都有不少的方案涉及。技巧層面來分的話,主要包括不同的遷移知識和模型結構的設計兩方面。后面我會選兩個典型的模型簡單介紹一下。

3. 蒸餾-MiniLM

55e2c29e-58b2-11eb-8b86-12bb97331649.jpg

MiniLM是基于預訓練任務的蒸餾,其是一種通用的面向Transformer-based預訓練模型壓縮算法。主要改進點有三個,一是蒸餾teacher模型最后一層Transformer的自注意力模塊,二是在自注意模塊中引入 values-values點乘矩陣的知識遷移,三是使?了 assistant ?絡來輔助蒸餾。

4.蒸餾-BERT to Simple NN

562d325c-58b2-11eb-8b86-12bb97331649.jpg

BERT to Simple NN更多的是做了一些loss形式的設計,使其訓練方式更高效。

04

知乎搜索再BERT蒸餾上的實踐

1.BERT蒸餾上的實踐和收益

5650a430-58b2-11eb-8b86-12bb97331649.jpg

前面的介紹中我有提到,在做 BERT蒸餾前其實已經做了很多嘗試,但是多少都會有精度的損失。因此,我們做蒸餾的第一目標是離線模型對?線上 BERT精度?損。但對BERT-base 直接進行蒸餾,無論如何都沒辦法避免精度的損失,所以我們嘗試用更大的模型(比如BERT-large/Robert-large/XLNET)來作為 teacher 進行蒸餾。這些多層的模型均在我們知乎全量語料先做pretrain,再做fine-tune,得到微調后的模型再做蒸餾。

2.蒸餾-Patient KD

5697a07e-58b2-11eb-8b86-12bb97331649.jpg

我們對交互模型和表示模型都做了蒸餾,主要采用了Patient KD模型的結構設計,Student模型基于BERT-base的若干層運用不同的策略進行參數的初始化,去學習Robert-large大模型的方案。

其中知識遷移主要有三部分:student的預測與真實標簽的交叉熵、student與teacher的預測的交叉熵和中間隱層的向量之間的normalized MSE。

3.BERT交互模型蒸餾

56d60756-58b2-11eb-8b86-12bb97331649.jpg

對于我們選的teacher模型Robert-large,單純預訓練模型其nDCG指標為0.914,線上之前使用的BERT-base 是0.907,若對BERT-base的若干6層直接去做fine-tune能達到的最高指標是0.903,對比于BERT-base精度會損失很多。

我們這塊做了一些嘗試,基于Robert-large從24層蒸餾到6層的話能到0.911,能超過線上BERT-base的效果。

訓練數據方面,我們經歷了點擊日志數據挖掘到逐漸建立起完善的標注數據集。目前,相關性任務訓練和蒸餾主要均基于標注數據集。標注數據分為 title和 content兩部分,Query 數量達到 10w+ 的規模,標注 doc 在 300w ~ 400w 之間。

4. BERT表示模型蒸餾

5757fc8e-58b2-11eb-8b86-12bb97331649.jpg

在BERT表示模型上,蒸餾時我們希望對向量維度和模型層數同時進行壓縮,但蒸餾后得到的student模型表現不及預期。所以最后上線的方案中,表示模型層數還是維持了12層。在蒸餾時,為了提高精度,選取交互模型作為teacher進行蒸餾。因為交互模型是query和doc之間的打分,交互模型得到的logits與表示模型點乘后的打分在數量值會有較大差值,所以用pairwise形式通過teacher差值擬合來進行loss的計算。

在維度壓縮方面我們做了對比實驗,BERT模型輸出做 average pooling 后接全連接層分別壓縮至8維到768維。如圖所示,128維和64維的表現跟768維差別不大,在上線時選擇維度為64和128進行嘗試,兩者在線上表現沒有太明顯的差異,最終選擇了64維的方案,把模型的維度壓縮了12倍,存儲消耗更低。

5. 蒸餾的收益

蒸餾的收益主要分為在線和離線兩部分。

579a5d40-58b2-11eb-8b86-12bb97331649.jpg

在線方面:

交互模型的層數從12層壓縮到6層,排序相關性特征P95減少為原本的1/2,整體搜索入口下降40ms,模型部署所需的GPU機器數也減少了一半,降低了資源消耗。

表示模型語義索引存儲規模title減為1/4,content維度從768維壓縮至64維,雖然維度減少了12倍,但增加了倒排索引doc的數量,所以content最終減為1/6,

語義索引召回也有比較大的提升,title減少為1/3,content減少為1/2。精排模塊需要線上實時查詢離線計算好的向量,所以查詢服務也有提升。

離線方面:

表示模型語義索引的構建時間減少為1/4,底層知乎自研的TableStore/TIDB存儲減為原來的1/6,LTR訓練數據和訓練時間都有很大的提升,粗排早期用的是BM25等基礎特征,后來引入了32維的BERT向量,提升了精排精度。

責任編輯:xj

原文標題:知乎搜索文本相關性與知識蒸餾

文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 文本
    +關注

    關注

    0

    文章

    118

    瀏覽量

    17134
  • 相關性
    +關注

    關注

    0

    文章

    4

    瀏覽量

    1307
  • 自然語言
    +關注

    關注

    1

    文章

    291

    瀏覽量

    13401

原文標題:知乎搜索文本相關性與知識蒸餾

文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    大連理工提出基于Wasserstein距離(WD)的知識蒸餾方法

    自 Hinton 等人的開創工作以來,基于 Kullback-Leibler 散度(KL-Div)的知識蒸餾一直占主導地位。 然而,KL-Div 僅比較教師和學生在相應類別上的概率,
    的頭像 發表于 01-21 09:45 ?120次閱讀

    【「基于大模型的RAG應用開發與優化」閱讀體驗】+Embedding技術解讀

    生成回答。在特定領域或任務中,可以通過微調Embedding模型來提高檢索的相關性和準確。Embedding在大模型RAG技術中發揮著至關重要的作用。它不僅實現了文本向量化,還為信息檢索和
    發表于 01-17 19:53

    #新年新氣象,大家新年快樂!#AIGC入門及鴻蒙入門

    和大數據技術的創新內容生成工具,正逐漸成為矚目的焦點。它為創意工作打開了全新的大門,尤其在文本和視覺內容創作方面表現卓越。對于初學者來說,可以通過學習相關基礎
    發表于 01-13 10:46

    AIGC入門及鴻蒙入門

    人工智能和大數據技術的創新內容生成工具,正逐漸成為矚目的焦點。它為創意工作打開了全新的大門,尤其在文本和視覺內容創作方面表現卓越。對于初學者來說,可以通過學習相關基礎
    發表于 01-13 10:32

    聲榮獲“2024年上海市專利工作示范單位”認定

    近日,上海市知識產權局印發《關于公布2024年上海市專利工作試點示范單位的通知》(滬局促[2024]44號),云聲(上海)智能科技有限公司獲“2024年上海市專利
    的頭像 發表于 12-06 20:16 ?498次閱讀

    正式公布三季度財報:月活躍用戶數穩步增長

    近日,公司正式公布了其2024年第三季度的業績報告,展示了公司在該季度的經營成果。 據報告顯示,盡管在第三季度的營收出現了同比下降,具體數字為下降17.32%至8.45億元人民
    的頭像 發表于 11-27 10:44 ?589次閱讀

    【AWTK使用經驗】如何在AWTK顯示阿拉伯文本

    。本篇文章將簡單介紹阿拉伯文本相關整形與排序規則,接著介紹在AWStudio設置阿拉伯語言翻譯的步驟。阿拉伯文本整形規則一般GUI顯示英文或者中文時,內存中存儲的字符
    的頭像 發表于 09-12 08:07 ?411次閱讀
    【AWTK使用經驗】如何在AWTK顯示阿拉伯<b class='flag-5'>文本</b>

    探索AC自動機:多關鍵詞搜索的原理與應用案例

    方法的效率會顯著下降,尤其是在需要與詞典進行詳盡對比的場景中。本文將介紹的Aho-Corasick(AC)自動機作為多模式匹配中的經典算法,不僅能夠處理大規模文本數據,還能確保搜索過程的實時和準確
    的頭像 發表于 08-26 15:55 ?962次閱讀
    探索AC自動機:多關鍵詞<b class='flag-5'>搜索</b>的原理與應用案例

    網狀告AI搜索:搜到我家論文題目和摘要,你侵權了!

    創業團隊秘塔AI搜索,被網給告了!足足28頁的侵權告知函,總結一句話就是:貴司的AI搜索,能搜到我家的學術文獻題錄及摘要數據,且沒經我司許可,嚴重侵權。
    的頭像 發表于 08-16 17:47 ?364次閱讀
    <b class='flag-5'>知</b>網狀告AI<b class='flag-5'>搜索</b>:搜到我家論文題目和摘要,你侵權了!

    全新AI產品&quot;直答&quot;亮相第十屆鹽Club新知青年大會

    知識的海洋中,每一次探索都是一次對未知的旅程。6月29日,第十屆鹽Club新知青年大會上,以其敏銳的科技洞察力,正式推出了全新AI產品——“
    的頭像 發表于 07-01 16:55 ?530次閱讀

    接觸與非接觸式測量相關性的方法

    接觸式測量和非接觸式測量是兩種常見的測量方法,它們在工業生產、科學研究和日常生活中都有廣泛的應用。本文將詳細介紹這兩種測量方法的基本原理、特點、應用領域以及它們之間的相關性。 一、接觸式測量
    的頭像 發表于 06-14 09:24 ?1947次閱讀

    【大語言模型:原理與工程實踐】大語言模型的評測

    評測任務則重點評估模型在提供方法論和實踐建議方面的能力。這類任務要求模型能像經驗豐富的導師或專家那樣,為用戶提供有價值的建議和解決方案。總之,這套綜合的評測框架為全面評估大語言模型的對話能力提供了有力
    發表于 05-07 17:12

    【大語言模型:原理與工程實踐】探索《大語言模型原理與工程實踐》2.0

    《大語言模型“原理與工程實踐”》是關于大語言模型內在機理和應用實踐的一次深入探索。作者不僅深入討論了理論,還提供了豐富的實踐案例,幫助讀者理解如何將理論知識應用于解決實際問題。書中的案
    發表于 05-07 10:30

    Chrome瀏覽器地址欄更新,運用機器學習提升相關性判斷準確

    據悉,谷歌成功將機器學習(ML)模型融入Chrome多功能框,以實現更為精準的內容推薦。舉例而言,若用戶在短時間內關閉某網頁,AI便會判定此頁非所需,進而降低其相關性得分。
    的頭像 發表于 04-30 11:15 ?562次閱讀

    請問TouchGFX能不能實現中文文本編輯及顯示?

    目前來看,TouchGFX顯示的中文好像都是固定的。但是如果我串口收到一個中文unicode的編碼,要將其顯示出來,或者用戶通過鍵盤,編輯任意中文文本的話,要怎么實現呢?
    發表于 04-09 08:23
    属鼠做生意办公桌摆貔貅好不好 | 金莎国际娱乐| 大发百家乐的玩法技巧和规则| 百家乐深圳广告| 澳门百家乐赌场网址| 百家乐娱乐平台真钱游戏| 免费百家乐计划工具| 大发888游戏代充值| 百家乐用品| 大发888游戏安装失败| 德州扑克发牌员| 太阳城在线娱乐网| 仁怀市| 百家乐官网小型抽水泵| 新葡京百家乐官网现金| 百家乐官网15人桌布| 二爷百家乐官网的玩法技巧和规则 | 大发888网址怎么找| 网上百家乐官网玩法| 百家乐官网赌博机假在哪里| 龙博百家乐官网的玩法技巧和规则| 如何看百家乐的路纸| 女神百家乐的玩法技巧和规则| 大发888娱乐真钱游戏 官方| 名门国际| 百家乐官网赌场赌场网站| 大中华百家乐官网的玩法技巧和规则 | 大发888官网sscbcgsesb| 亲朋棋牌手机版下载| 百家乐官网有免费玩| 百家乐官网网上真钱娱乐场开户注册| KK百家乐现金网| 威尼斯人娱乐城返佣| 皇冠网小说微博| 百家乐官网五湖四海娱乐场| 百家乐娱乐城介绍| 威尼斯人娱乐城代理加盟| 澳门威尼斯人娱乐| 自贡百家乐官网赌场| 波音百家乐自动投注| 大发888博必发|