端到端問答新突破:百度提出RocketQA,登頂MSMARCO榜首!

點擊左上方藍字關注咱們算法

開放域問答(Open-domain QA)一直是天然語言處理領域的重要研究課題。百度從面向端到端問答的檢索模型出發,提出了RocketQA訓練方法,大幅提高了對偶式檢索模型的效果,爲實現端到端問答邁出了重要的一步。RocketQA已逐步應用在百度搜索、廣告等核心業務中,並將在更多場景中發揮做用。編程

近日,百度提出了面向端到端問答的檢索模型訓練方法RocketQA,該方法針對模型訓練中存在的問題,經過跨批次負採樣(cross-batch negatives)、去噪的強負例採樣(denoised hard negative sampling)與數據加強(data augmentation)等技術,大幅提高了對偶式檢索模型的效果。RocketQA不只在多個問答相關數據集中取得了SOTA,同時也刷新了微軟MSMARCO數據集段落排序任務的榜單,超越谷歌、微軟、Facebook、阿里、美團、卡內基梅隆大學、清華大學、滑鐵盧大學等企業和高校位居第一,爲實現「端到端問答」邁出了重要的一步。服務器

論文名稱:RocketQA: An Optimized Training Approach to Dense Passage Retrieval for Open-Domain Question Answering網絡

論文地址:併發

https://arxiv.org/abs/2010.08191框架

下載安裝命令

## CPU版本安裝命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle

## GPU版本安裝命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu

開放域問答系統dom

開放域問答(Open-domain QA)是天然語言處理領域的重要研究課題。它的任務是,基於用戶用天然語言提出的問題,從海量候選文本中快速、精準地找出答案。開放領域問答在智能搜索、智能助手、智能客服等多個場景下,都發揮着重要做用。特別是近些年,隨着各類智能手機、智能音箱的普及,智能搜索快速進化,經過開放域問答系統直接給出惟一的精準答案(如圖 1 所示),能夠幫助用戶在這些小屏和無屏設備上更快速、準確地獲取有用信息。異步

圖1:百度搜索的TOP1結果:將問題的答案展示在搜索結果的首位,提高用戶體驗分佈式


傳統的開放域問答主要採用級聯的檢索式問答系統,包含了段落檢索、段落排序、答案定位等多個步驟。隨着近些年預訓練語言模型的發展,研究人員開始探索基於深度語義表示的對偶式檢索模型(dual-encoder),但願其可以替代傳統的檢索式問答系統中級聯的檢索和排序等模塊,與基於機器閱讀理解模型的答案定位一塊兒實現「端到端問答」。工具


不一樣於傳統的級聯式問答系統,「端到端問答」摒棄了傳統系統中繁雜的構件,系統複雜性大大下降,而且其中每一個模塊(段落檢索和答案定位)都是可學習的,這樣的設計可以讓整個系統實現端到端訓練。這意味着問答系統能夠基於用戶實時的反饋實如今線訓練,而不是隻在封閉的數據集上閉門造車。這是智能問答技術的發展趨勢,可能會引起問答系統的新一代技術變革。

基於此,百度從面向端到端問答的檢索模型出發,針對對偶式檢索模型訓練中存在的問題,提出了RocketQA訓練方法,並基於百度自研的預訓練模型ERNIE進行訓練,大幅提高了對偶式檢索模型的效果,爲實現端到端問答邁出了重要的一步。

圖2:基於稠密向量表示的對偶模型

RocketQA:一種對偶式

檢索模型加強訓練方法

不一樣於傳統的檢索模型使用基於關鍵詞的稀疏表示對問題和候選段落進行建模,基於深度語義表示的對偶式檢索模型(如圖 2 所示)經過兩個對稱的網絡分別對問題和候選段落進行編碼並計算語義類似度。這樣可以利用強大的網絡結構進行更深層次的學習,同時基於預訓練語言模型,使語義理解更加豐富。在過去的工做中,對偶模型大多采用批次內負採樣 (in-batch negatives) 的方式進行訓練,將批次內其餘問題的正確答案做爲當前問題的錯誤答案(負例),從而減小重複計算和提升訓練效率。然而,因爲檢索場景不一樣於常見的分類問題,對偶式檢索模型的訓練仍然存在以下的挑戰:


訓練場景和預測場景中樣本數量存在較大差別

在開放域問答的應用場景中,模型須要從大規模的候選集合中找出問題的答案。可是按照批次內負採樣的方法訓練時,每一個問題的候選段落個數與批次大小相同。受到單GPU顯存大小的限制,訓練過程當中見到的候選段落遠小於預測時的候選段落,從而致使模型即便在訓練時表現良好,在實際應用當中卻差強人意。


數據集中存在大量漏標註的正確答案
開放域問答場景下候選段落的數量每每很是大,標註出問題的所有正確答案几乎是不可能的。在MSMARCO數據集中,候選段落的總數爲880萬,但每一個問題平均只標註了1.1個正確答案。研究人員發現,在使用對偶模型檢索出的首條結果中,70% 的錯誤結果實際上是漏標的正確答案。這種狀況下,構造訓練數據中的強負例時很容易引入假負例(false negative),給模型訓練帶來負面影響。


相對於開放域全集,人工標註訓練數據的規模小、成本大
儘管目前已有較多大規模的問答數據集,可是相較於開放域的用戶問題來講,仍然是冰山一角。有限的標註數據集沒法覆蓋到全面的領域和類型,致使模型泛化性差。想要增大標註數據的規模和質量,須要很高的人工成本。


所以百度提出了一種對偶式檢索模型的加強訓練方法RocketQA,經過跨批次負採樣、去噪的強負例採樣與數據加強三項技術,解決上述挑戰。接下來將對這三個技術進行詳細的介紹。


2.1 跨批次負採樣(cross-batch negatives)


採用傳統的批次內負採樣方法訓練時,每一個問題的候選段落個數與批次大小相同。爲了進一步增長訓練過程當中候選段落的數量,百度提出了跨批次負採樣方法(如圖 3 所示)。該方法可以在使用多GPU並行訓練時,將其它GPU批次內的所有段落做爲當前問題的負樣本。這樣能夠直接複用各個GPU上已經計算好的段落表示,不額外增長計算量;同時基於飛槳分佈式訓練擴展工具包FleetX的all-gather算子實現,只須要使用不多的通訊量和內存開銷,就達到了增長每一個問題候選段落的目的。隨着GPU個數的增長,每一個問題的候選段落個數線性增長,訓練場景中的任務難度也更加接近真實場景。百度在MSMARCO數據集上進行了實驗,在使用跨批次負採樣後,隨着訓練時候選段落數量增長,模型的效果穩步提高(如圖 4 所示)。

圖3:批次內負採樣(上)和跨批次負採樣(下)的對比

圖4:MSMARCO數據集中,訓練階段候選段落的個數對模型效果的影響

2.2 去噪的強負例採樣(denoised hard negative sampling)


在對偶模型的訓練中,適當增長訓練數據中的強負例的難度,有助於提高模型效果。通常的作法是,從一個排序的候選段落中進行採樣,越靠前的負例對模型來講難度越大。可是因爲難以免的漏標註狀況,直接採樣很大機率會引入假負例。爲了解決這一問題,百度使用交互模型(cross-encoder)的打分做爲監督信息進行去噪。在選擇強負例時,避開交互模型給出高置信度的樣例。相較於對偶模型,交互模型具備結構上的優點,可以編碼更多的交互信息,從而給出可靠的監督信號,幫助對偶模型選取更可靠的強負例。如表1的第三行和第四行所示,去噪的強負例採樣能夠顯著提高模型效果。


2.3 數據加強(data augmentation)


交互模型能夠過濾強負例中的噪聲,也能夠用來選取未標註的正確答案。所以,當引入大量無標註的問題時,即可以利用交互模型以極低的成本獲得大量弱監督數據,進一步加強對偶模型的能力。在MSMARCO數據集的實驗中,百度引入了Yahoo!Answers和ORCAS數據集中的150萬未標註問題,用交互模型在對偶模型檢索出的候選段落上進行打分,並根據置信度選取正負樣本。如表1第四行和第五行所示,經過這種方式,對偶模型的效果獲得進一步提高。

表1:MSMARCO數據集中,去噪的強負例採樣與數據加強策略對模型效果的影響

2.4 訓練流程和實驗結果


上述三項技術是層層遞進的關係,將它們整合成一套完整的訓練方法,類比多級火箭,稱之爲RocketQA,其完整實現流程如圖5所示。在實現中,使用了百度研發並開源的大規模英文預訓練模型ERNIE初始化模型參數,而後使用標註數據進行微調。

圖5:RocketQA訓練流程

如表2所示,最終的實驗結果代表,RocketQA在微軟MSMARCO和谷歌Natural Question數據集的效果均大幅超過了已經發表的最好的檢索模型。同時,百度也在答案抽取任務上驗證了RocketQA檢索結果的有效性。如表3所示,在RocketQA作檢索的基礎上,使用訓練好的閱讀理解模型,百度在Natural Questions的答案抽取任務上取得了42.0的EM值,超過了已有的相關工做,而這其中的增益來自檢索效果的提高。

表2:RocketQA在微軟MSMARCO和谷歌Natural Questions數據集上段落檢索的效果

表3:RocketQA在Natural Questions數據集上作閱讀理解任務的效果

RocketQA在MSMARCO

段落排序任務中奪得第一

MSMARCO(Microsoft Machine Reading Comprehension)是微軟提出的大規模閱讀理解數據集,包含約100萬問題、880萬相關段落以及人工標註的問題答案。數據集的問題來自Bing搜索引擎的日誌, 是真實搜索場景中用戶提出的問題,段落來自Bing的搜索結果。基於MSMARCO數據集,微軟舉辦了包括閱讀理解、段落排序在內的多個問答相關任務的評測任務。因爲數據集規模大、貼近真實場景,MSMARCO的各項任務已經吸引了包括Google、微軟、Facebook、阿里巴巴等知名企業,以及清華、CMU等國內外著名高校的參與。如圖6所示,百度基於 RocketQA檢索模型的結果進一步訓練了段落重排序模型,在MSMARCO的段落排序(Passage Ranking)任務中排名第一,超越了谷歌、微軟、Facebook、阿里、美團、卡內基梅隆大學、清華大學、滑鐵盧大學等企業和高校。

圖6:微軟MSMARCO Passage Ranking數據集leaderboard截圖

飛槳分佈式訓練

加持RocketQA

4、了


飛槳框架經過持續迭代升級,在分佈式訓練方面真正作到了從產業實踐中來,回到開源社區和產業實踐中去。在飛槳框架最新版本中,分佈式訓練繼承了以前版本高性能、高擴展的能力,在易用性方面進行了精心的優化。


paddle.distributed.fleet是飛槳框架2.0新API體系下通用分佈式訓練API,千億規模稀疏參數服務器和大規模GPU多機多卡訓練均可以經過幾行代碼輕鬆配置完成。DistributedStrategy做爲用戶配置並行策略的統一入口,支持大規模異步訓練、自動混合精度、深度梯度壓縮、重計算、梯度累計、計算算子自動融合、通訊梯度智能融合以及自動並行等功能,極大的知足了研究人員平常訓練的加速需求。飛槳框架的最新版本同時也開放了可以面向高級編程用戶的分佈式底層通訊接口paddle.distrbuted,使用戶可以自主構建諸如自動並行、模型並行等高級並行訓練功能。目前,飛槳大規模分佈式訓練已經在百度平常業務中進行過深刻錘鍊,並天天都在根據業務的痛點進行改進和優化。


RocketQA的實現徹底基於飛槳深度學習框架,特別在研發算法的過程當中飛槳的高性能並行訓練助力了各類想法的快速嘗試。研究人員在使用飛槳官方提供的paddle.distributed.fleet進行訓練的同時,也採用了飛槳分佈式訓練擴展工具 FleetX。FleetX做爲飛槳框架分佈式訓練擴展工具,提供數據分片併發下載,快速定義模型,快速提交集羣任務等功能,極大的提高了研發人員的使用效率。RocketQA採用paddle.distributed.fleet API提供的經典數據並行訓練方案,並採用自動混合精度、算子融合進行縱向擴展性的提高,同時採用梯度融合,計算與通訊自動併發等策略提高橫向的擴展性,從而大幅度提高實驗效率。


爲了實現RocketQA的跨批次負採樣,對單卡可以見到的負樣本規模有較大的需求,研究人員使用了飛槳paddle.distributed提供的底層集合通訊操做all-gather算子,將數據並行訓練中各塊卡的隱層向量進行彙總,擴大單卡能夠見到的負例數量達到GPU卡數倍;爲了進一步增長每塊卡能夠見到的全局負例樣本,研究人員還使用了重計算(recompute)策略,該策略以20%左右的計算開銷將整個模型的訓練使用的顯存佔用從O(N)下降到O(LogN),在該模型中使用Recompute使訓練數據批次大小提高5倍以上,對訓練計算圖的改寫結果如圖7所示。這樣,跨批次負採樣方法與傳統的純數據並行方法相比,實現了負例數量5xGPU卡數的倍數增加,從而加快了收斂速度和收斂效果。

圖7:Multi-Head Self Attention利用重計算後的計算圖

總結


百度提出的RocketQA訓練方法,經過對經典對偶模型進行優化訓練,顯著提高了模型的檢索能力,爲實現端到端問答邁出了重要一步。目前,RocketQA已逐步應用在百度搜索、廣告等核心業務中,並將在更多場景中發揮做用。

下載安裝命令

## CPU版本安裝命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle

## GPU版本安裝命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu
相關文章
相關標籤/搜索