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

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

3天內不再提示

如何改進雙塔模型才能更好的提升你的算法效果

深度學習自然語言處理 ? 來源:對白的算法屋 ? 作者:對白 ? 2021-11-05 15:38 ? 次閱讀

來自:對白的算法

今天寫點技術干貨來回饋一下我的粉絲們。本來想繼續(xù)寫對比學習(Contrastive Learing)相關類型的文章,以滿足我出一本AI前沿技術書籍的夢想,但奈何NIPS2021接收的論文一直未公開,在arxiv上不停地刷,也只翻到了零碎的幾篇。于是,我想到該寫一下雙塔模型了,剛進美團的第一個月我就用到了Sentence-BERT。

為什么呢?因為雙塔模型在NLP和搜廣推中的應用實在太廣泛了。不管是校招社招,面試NLP或推薦算法崗,這已經(jīng)是必問的知識點了。

接下來,我將從模型結構,訓練樣本構造,模型目標函數(shù)三個方面介紹雙塔模型該如何改進,才能更好的提升業(yè)務中的效果。

一、雙塔模型結構改進

e727d636-3de0-11ec-82a9-dac502259ad0.png

如圖所示,目前主流的雙塔模型結構主要可以歸為三類。

第一類在離線階段直接將BERT編碼的document映射為固定長度的向量,在線階段將query映射為固定長度的向量,然后通過打分函數(shù)計算最后的得分,例如:Sentence-BERT,DPR。

第二類

模型在離線階段將BERT編碼document得到的多個向量(每個向量對應一個token)全部保留,在線階段利用BERT將query編碼成多個向量,和離線階段保留的document的多個向量進行交互打分(復雜度O(mn)),得到最后的得分,代表工作,Col-BERT。

第三類

模型是前兩種的折中,將離線階段BERT編碼得到的document向量進行壓縮,保留k個(k《m)個向量,并且使用一個向量來表示query(一般query包含的信息較少),在線階段計算一個query向量和k個document向量的交互打分(復雜度O(k)),代表工作:Poly-BERT,PQ-BERT。

總結這類工作的主要思想是增強雙塔模型的向量表示能力,由于document較長,可能對應多種語義,而原始雙塔模型對query和document只使用一個向量表示,可能造成語義缺失。那么可以使用多個向量來表示document,在線階段再進行一些優(yōu)化來加速模型的推斷。

二、訓練樣本構造

檢索任務中,相對于整體document庫,每個query所對應的相關document是很少的一部分。在訓練時,模型往往只接收query對應的相關文檔(正樣本)以及少量query的不相關文檔(負樣本),目標函數(shù)是區(qū)分正樣本和負樣本。然而在模型推斷時,模型需要對document庫中的所有document進行打分。如果模型在訓練時讀取的document和document庫中的一些document之間的語義距離相差較大,則可能造成模型在推斷階段表現(xiàn)不佳。因此,如何構造訓練樣本是一個重要的研究方向。

方法一:(1) 首先介紹一個比較簡單的trick,In-batch negatives。顧名思義,在訓練時,假設一個batch中包含b個query,每個query(q_i)都有一個對應的正樣本dp_i和負樣本dq_i,那么在這個batch中,每個q_i除了自己所對應的負樣本,還可以將batch中其他query所對一個的正樣本和負樣本都作為當前query所對應的負樣本,大大提高了訓練數(shù)據(jù)的利用率。實驗表明,該trick在各種檢索任務上都能提高模型的效果。

方法二:(2) 上述方法的目標是在訓練過程中利用更多的負樣本,讓模型的魯棒性更強。然而訓練過程能遍歷的負樣本始終是有限的,那么如何在有限的訓練樣本中構造更有利于模型訓練的負樣本是一個重要的研究問題。

ANCE提出了一種迭代式生成負樣本的思路:隨著訓練的進行,模型對于文本的表示也會變化,之前對于模型較難的負樣本可能變得不那么難,而之前沒見過的負樣本對于模型可能會較難區(qū)分。該工作以此為出發(fā)點,同時進行train和inference,在訓練的同時,利用上一個checkpoint中的模型進行inference,對訓練數(shù)據(jù)生成新的負樣本,在inference完成后,使用新的負樣本進行訓練。這樣可以漸進的訓練模型,保持負樣本的難度,更充分的訓練模型。

e78a1a26-3de0-11ec-82a9-dac502259ad0.png

方法三:(3) 除了利用模型本身來生成負樣本,還可以利用比雙塔模型復雜的交互模型來生成訓練數(shù)據(jù)。RocketQA提出了基于交互模型來增強數(shù)據(jù)的方法。由于交互模型的表現(xiàn)更強,作者使用交互模型來標注可能成為正樣本的文檔(這些文檔未經(jīng)過標注),以及篩選更難的訓練雙塔模型的樣本。具體的訓練過程如下圖所示:

e79edc68-3de0-11ec-82a9-dac502259ad0.png

總結:這類工作從訓練數(shù)據(jù)著手,彌補原有的訓練模式對于缺少負樣本優(yōu)化的不足。個人角度認為這類工作提升可能更為顯著。

三、訓練目標改進

訓練目標上的改進比較靈活,有多種不同的改進方式,首先介紹利用交互模型改進雙塔模型的工作。

相對于雙塔模型,交互模型的表現(xiàn)更好,但復雜度更高,因此很多工作的idea是通過模型蒸餾將交互模型的文本表示能力遷移到雙塔模型中,這方面有很多類似的工作。這里選取一個SIGIR2021的最新文章作為代表。

e7b3f6fc-3de0-11ec-82a9-dac502259ad0.png

如上圖所示,該模型不僅蒸餾了一個交互模型(monoBERT),同時還蒸餾了一個基于雙塔的改進模型ColBERT。該模型使用monoBERT作為teacher,對模型的CLS位置向量進行蒸餾,使用ColBERT作為teacher,對模型的除了[CLS]位置的向量進行蒸餾,目標函數(shù)為以下三部分的加和:

e8167462-3de0-11ec-82a9-dac502259ad0.png

最后的打分函數(shù)是monoBERT和ColBERT的組合,即,首先使用document和query的CLS位置向量輸入MLP,輸出一個分數(shù),同時使用document和query的其他位置表示向量輸入到和ColBERT相同的打分函數(shù)中,最后使用兩個分數(shù)的和作為最后打分。

前文所述的工作都是將query和document的文本映射到稠密向量空間中,然后進行匹配。另外還有的工作是直接利用文字進行匹配。Doc2query使用一個基于seq2seq的預訓練語言模型(比如T5),利用標注的document,query對進行finetune,目標是輸入document輸出對應的query,然后將輸出的query和document本身進行拼接,擴展document。然后利用傳統(tǒng)的檢索方法,比如BM25,對擴展過的document建立索引并查找。過程示意如下圖所示。在MSMARCO上的一些實驗表明,這個方法可以和基于向量的搜索一起使用,提高模型的表現(xiàn)。

e8338908-3de0-11ec-82a9-dac502259ad0.png

四、雙塔模型預訓練

一般的預訓練模型使用的目標函數(shù)主要是MLM或者seq2seq,這種預訓練目標和雙塔的匹配任務還是有一些不一致。并且已有的預訓練模型即使有匹配任務(比如NSP),也是使用交互而非雙塔的工作方式。為了使用預訓練提高雙塔模型的效果,SimCSE通過對比學習,提升模型對句子的表示能力。

該方法的實現(xiàn)很簡單,假設提取一個batch的句子,通過模型自帶的dropout,將每個句子輸入到預訓練模型中,dropout兩次,將同一個句子dropout后的結果作為正樣本,不同句子的dropout結果作為負樣本,拉近正樣本的距離,拉遠負樣本的距離,每個句子的向量由BERT的CLS位置向量表示。如下圖所示:

e88ab17e-3de0-11ec-82a9-dac502259ad0.png

模型雖然很簡單,但是在句子匹配任務上取得了很好的效果。該模型在檢索任務上的效果還需實驗。

還有的工作是針對檢索任務的預訓練。ICLR2020一篇論文Pre-training Tasks for Embedding-based Large-scale Retrieval提出了一些預訓練任務,這些任務主要是針對Wikipedia的,不一定具有普適性。如下圖所示,紫色d框出來的代表document,q1,q2,q3代表不同任務構造的的query,q1是ICT,即利用document所在的一句話作為query,q2是BFS,即利用document所在網(wǎng)頁的第一段中的一句話作為query,q3是WLP,使用document中的某個超鏈接頁面的第一句話作為query。任務目標是匹配q1,q2,q3和d。

e8b6746c-3de0-11ec-82a9-dac502259ad0.png

Condenser

傳統(tǒng)的MLM預訓練任務如下圖所示,該任務沒有特別強制訓練CLS位置的向量表示能力。為了將整個序列的信息壓縮到CLS位置上,Condenser將模型分成兩部分,第一部分和普通的Transformer一樣,第二部分使用經(jīng)過更多交互后的[CLS]位置向量(黃色部分)來預測[MASK]的token,強制模型的[CLS]編碼可以具有還原其他token的能力。

e932122a-3de0-11ec-82a9-dac502259ad0.png

編輯:jq

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

    關注

    87

    文章

    28877

    瀏覽量

    266239
  • 編碼
    +關注

    關注

    6

    文章

    915

    瀏覽量

    54651
  • CLS
    CLS
    +關注

    關注

    0

    文章

    9

    瀏覽量

    9682
  • nlp
    nlp
    +關注

    關注

    1

    文章

    481

    瀏覽量

    21935

原文標題:業(yè)界總結 | 如何改進雙塔模型,才能更好的提升你的算法效果?

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

收藏 人收藏

    評論

    相關推薦

    通過兩級OPA656實現(xiàn)微弱光電信號的放大,如何才能更好的抑制噪聲呢?

    我現(xiàn)在通過兩級OPA656實現(xiàn)微弱光電信號的放大,但是通過示波器檢測時發(fā)現(xiàn)一級噪聲可以達到50mv,二級放大后噪聲可達到200多mv。一級噪聲這么大完全可以把信號噪聲給淹沒了,如何才能更好的抑制
    發(fā)表于 09-06 08:13

    圖像識別算法提升有哪些

    引言 圖像識別是計算機視覺領域的核心任務之一,旨在使計算機能夠自動地識別和理解圖像中的內容。隨著計算機硬件的發(fā)展和深度學習技術的突破,圖像識別算法的性能得到了顯著提升。本文將介紹圖像識別算法
    的頭像 發(fā)表于 07-16 11:12 ?409次閱讀

    ai大模型算法有什么區(qū)別

    AI大模型算法是人工智能領域的兩個重要概念,它們在很多方面有著密切的聯(lián)系,但同時也存在一些明顯的區(qū)別。 定義和概念 AI大模型通常是指具有大量參數(shù)和復雜結構的人工智能模型,它們能夠處
    的頭像 發(fā)表于 07-16 10:09 ?845次閱讀

    【大語言模型:原理與工程實踐】揭開大語言模型的面紗

    更好地擬合訓練數(shù)據(jù),并在推理和泛化時表現(xiàn)出色。此外,特征復用通過共享參數(shù)提高效率和性能,使得大語言模型能夠更有效地利用學到的特征。最后,優(yōu)化效果則通過使用更復雜的優(yōu)化算法和更長的訓練時
    發(fā)表于 05-04 23:55

    為什么深度學習的效果更好?

    ,這些原則和進步協(xié)同作用使這些模型異常強大。本文探討了深度學習成功背后的核心原因,包括其學習層次表示的能力、大型數(shù)據(jù)集的影響、計算能力的進步、算法創(chuàng)新、遷移學習的
    的頭像 發(fā)表于 03-09 08:26 ?502次閱讀
    為什么深度學習的<b class='flag-5'>效果</b><b class='flag-5'>更好</b>?

    Spring Boot和飛騰派融合構建的農業(yè)物聯(lián)網(wǎng)系統(tǒng)-改進自適應加權融合算法

    接上集: 上次實驗我們已經(jīng)完成多傳感器融合算法的設計,本次實驗注意完成改進自適應加權融合算法設計。 一、背景 通過利用溫室控制系統(tǒng)來管理溫室內的各種設備并控制溫度、濕度,可以更好地探索
    發(fā)表于 01-06 12:18

    如何提升單片機開發(fā)技術?

    學習 單片機開發(fā)技術的基礎是電子電路原理和C語言編程。我們需要通過學習相關的教材和課程,加強對電子電路原理和C語言編程的掌握。只有扎實的基礎知識,才能更好地進行單片機開發(fā)。 二、參與實際項目開發(fā) 實踐
    發(fā)表于 01-05 10:14

    拆解大語言模型RLHF中的PPO算法

    由于本文以大語言模型 RLHF 的 PPO 算法為主,所以希望你在閱讀前先弄明白大語言模型 RLHF 的前兩步,即 SFT Model 和 Reward Model 的訓練過程。另外因為本文不是純講強化學習的文章,所以我在敘述的
    的頭像 發(fā)表于 12-11 18:30 ?1837次閱讀
    拆解大語言<b class='flag-5'>模型</b>RLHF中的PPO<b class='flag-5'>算法</b>

    請問如何才能得到AD9234和AD9735的spice模型?

    請問如何才能得到AD9234和AD9735的spice模型?謝謝!
    發(fā)表于 12-01 06:14

    模板匹配算法改進及在自動發(fā)牌機中的應用

    電子發(fā)燒友網(wǎng)站提供《模板匹配算法改進及在自動發(fā)牌機中的應用.pdf》資料免費下載
    發(fā)表于 11-08 09:53 ?0次下載
    模板匹配<b class='flag-5'>算法</b>的<b class='flag-5'>改進</b>及在自動發(fā)牌機中的應用

    模型算法總結

    本文將繼續(xù)修煉回歸模型算法,并總結了一些常用的除線性回歸模型之外的模型,其中包括一些單模型及集成學習器。 保序回歸、多項式回歸、多輸出回歸、
    的頭像 發(fā)表于 11-03 10:39 ?517次閱讀
    <b class='flag-5'>模型</b><b class='flag-5'>算法</b>總結

    中國計算機大會現(xiàn)場王海峰揭秘文心大模型4.0

    王海峰表示,基于更強平臺、更優(yōu)數(shù)據(jù)、更好算法,我們訓練出規(guī)模更大、效果更好的文心大模型4.0。通過飛槳與文心的協(xié)同優(yōu)化,
    的頭像 發(fā)表于 10-29 11:35 ?658次閱讀

    STM32和DSP兩個做運動控制算法,哪一個的控制效果更好一點?

    哪一個的控制效果更好一點
    發(fā)表于 10-15 13:36

    中值濾波算法和均值濾波算法有什么區(qū)別,哪個效果更好?

    兩者的主要區(qū)別是什么?哪個更好
    發(fā)表于 10-15 11:02

    怎么評估一個濾波算法的濾波效果?

    怎么評估一個濾波算法的濾波效果
    發(fā)表于 10-10 07:31