久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

文本檢索,、開放域問答與Dense Passage Retrieval (EMNLP-20)

 520jefferson 2022-02-19
圖片
  • 標題:Dense Passage Retrieval for Open-Domain Question Answering
  • 會議:EMNLP-20
  • 機構(gòu):Facebook AI, University of Washington, Princeton University
  • 鏈接:https:///paper/3099700870

一句話總結(jié):
一個很好的文本檢索(IR)、問答(QA)的學習材料,。開放域問答一般分兩步——檢索和閱讀理解,,本文提出的DPR是一個高效的基于語義匹配的檢索模型,從而提高整體QA的效果,,該思路對后續(xù)的比學習的一系列工作都有啟發(fā),。

Open-domain question answering (QA)

QA可以分為Close-domain QA和Open-domain QA,,前者一般限制在某個特定領(lǐng)域,有一個給定的該領(lǐng)域的知識庫,,比如醫(yī)院里的問答機器人,,只負責回答醫(yī)療相關(guān)問題,甚至只負責回答該醫(yī)院的一些說明性問題,,再比如我們在淘寶上的智能客服,,甚至只能在它給定的一個問題集合里面問問題;而Open-domain QA則是我們可以問任何事實性問題,,一般是給你一個海量文本的語料庫,,比方Wikipedia/百度百科,讓你從這個里面去找回答任意非主觀問題的答案,,這顯然就困難地多,。總結(jié)一下,,Open-domain QA的定義:

Open-domain QA,,是這樣一種任務(wù):給定海量文檔,來回答一個事實性問題(factoid questions ),。

注意,,是回答factoid questions,即一個很客觀的問題,,不能問一些主觀的問題,。

這就類似于我們只在在搜索引擎里搜索某個問題的答案,我們希望搜索引擎能直接告訴我們答案,,而不單單是找到一篇文章,,然后我們需要自己找答案。

舉個例子,,正好我前幾天搜索triplet loss的時候印象深刻:

我在Google里面直接搜triplet loss:

圖片
image-20220216105121926

首先,,排在第一的結(jié)果就是Wikipedia的link,同時上面顯示了一段話,,讓我不用點開Wikipedia,,就能直接知道triplet loss是什么,有什么用,,另外,,仔細看的話,發(fā)現(xiàn)它把具體定義的那句話給我加粗了,,就是我上面高亮的部分,。

如果我繼續(xù)點擊進入Wikipedia,會更清楚的看到搜索引擎幫我把我想要的答案給高亮了(下圖中的紫色部分是瀏覽器自動顯示的,不是我選擇的):

圖片
image-20220216104917986

我想這就是個很好的例子,,告訴我們open-domain QA想要做的是什么事,。

當然,搜索引擎返回答案,,還涉及到其他技術(shù),,比如有一些事實性問題,比如“姚明比奧尼爾高多少”,,就需要借助知識圖譜等技術(shù)來實現(xiàn)了,。

Open-domain QA的兩個步驟

我們這里講深度學習時代的Open-domain QA,傳統(tǒng)的方法往往涉及到十分復(fù)雜的組件,,而隨著基于深度學習的閱讀理解(reading comprehension)模型的興起,,我們現(xiàn)在可以把Open-domain QA給簡化成兩個步驟:文本檢索與閱讀理解。

① 文本檢索:需要一個retriever,,從海量文本中,,找到跟question最相關(guān)的N篇文檔,這些文檔中包含了該問題的答案,;

② 閱讀理解:需要一個reader,,從上面抽取出來的文檔中,找到具體答案,。

文本檢索

對于文本的檢索,,目前最常用的方案就是基于倒排索引(inverted index)的關(guān)鍵詞檢索方式,例如最常用的ElasticSearch方案,,就是基于倒排索引的,,簡言之,這是一種關(guān)鍵詞搜索,,具體的匹配排序規(guī)則有TF-IDF和BM25兩種方式,。這種文本檢索的方式,是一種文本的bag-of-words表示,,通過詞頻,、逆文檔頻率等統(tǒng)計指標來計算question和document之間的相關(guān)性,可參考BM25的wiki,。

圖片

這種方式,,是比較“硬”的匹配,當你搜索的關(guān)鍵詞準確,、明確時,,搜索結(jié)果會非常好,但是當你只知道大概意思,,搜索的結(jié)果可能就很差,,因為bag-of-words的表示,,無法認識到詞語之間的相似性關(guān)系,,因此就只能搜索到你輸入的關(guān)鍵詞,,卻無法找到詞語不同但意思相近的結(jié)果。

一般的Open-domain QA都會直接使用這種基于TF-IDF或者BM25的匹配方式來進行檢索,,本論文則是提出,,我們可以使用語義的匹配來達到更好的效果,彌補硬匹配的不足,,這也是本論文的主要關(guān)注點,。具體地,我們可以訓練一個語義表示模型,,賦予文本一個dense encoding,,然后通過向量相似度來對文檔進行排序。

其實向量搜索也很常見了,,像以圖搜圖就是典型的向量相似度搜索,,常用的開源引擎有Facebook家的FAISS.

圖片

閱讀理解

閱讀理解一般指的是,給定一個問題(question)和一段話(passage),,要求從這段話中找出問題的答案,。訓練方式一般是我們計算passage中每個token是question的開頭s或者結(jié)尾t的概率,然后計算正確答案對應(yīng)start/end token最大似然損失之和,。具體咱們可以參考BERT論文中對fine-tuning QA模型中的方法介紹:

圖片
源自BERT論文

即,,通過BERT encoder,我們可以得到每個token的一個representation,,然后我們再額外設(shè)置一個start vector和一個end vector,,與每個token的representation計算內(nèi)積,再通過softmax歸一化,,就得到了每個token是start或者end的概率,。

我在一個博客上看到了一個畫的更清楚的圖:

圖片
https:///2020/03/10/question-answering-with-a-fine-tuned-BERT/#part-1-how-bert-is-applied-to-question-answering

關(guān)于閱讀理解的具體內(nèi)容,這里也不贅述,,這也不是今天這篇論文的重點,。

Dense Passage Retriever (DPR)

本文最重要的就是這個DPR了,它解決的就是open-domain QA中的檢索問題,,目標是訓練一個文本表示模型,,可以對question和passage進行很好的語義向量表示,從而實現(xiàn)高精度的向量搜索,。

DPR是一個retriever,,實際上分兩塊,首先我們需要得到文檔的向量表示,,然后我們需要一個向量搜索工具,,后者本文中直接使用著名的FAISS向量搜索引擎,,所以重點就是訓練一個文本表示模型。

Dual-encoder

本文使用了一個dual-encoder的框架,,可以理解為一個雙塔結(jié)構(gòu),,一個encoder 專門對passage進行表示,另一個encoder 專門對question進行表示,,然后我們使用內(nèi)積來表示二者的相似度:

損失函數(shù)設(shè)計

我們首先構(gòu)造訓練樣本,,它是這樣的形式:

$$D = \{\}_i $$

即,每個訓練樣本,,都是由1個question,,1個positive passage和n個negative passage構(gòu)成的。positive就是與問題相關(guān)的文本,,negative就是無關(guān)的文本,。

用一個樣本中每個passage(n+1個)和當前question的相似度作為logits,使用softmax對logits進行歸一化,,就可以得到每個passage與當前question匹配的概率,,由此就可以設(shè)計極大似然損失——取positive passage的概率的負對數(shù):

上面的公式里,為方便看清楚,,我省去了樣本的下標,。可以看到,,這就相當于一個cross-entropy loss,。而這樣的設(shè)計,跟現(xiàn)在遍地的對比學習的loss非常像,,例如知名的SimCSE也引用了本文:

圖片

負樣本選擇

在上面的損失函數(shù)中,,我們發(fā)現(xiàn)負樣本起著重要的作用。另外,,正樣本一般都是確定的,,而負樣本的選擇則是多種多樣的,所以負樣本怎么選,,對結(jié)果應(yīng)該有很大的影響,。

作者設(shè)計了三種負樣本(negative passage)選擇的方式:

  1. Random:從語料庫中隨機抽取一個passage,基本上都是跟當前question無關(guān)的,;
  2. BM25:使用基于BM25的文本檢索方式在語料庫中檢索跟question最相關(guān)的文本,,但要求不包含答案;
  3. Gold:在訓練樣本中,,其他樣本中的positive passage,。即對于訓練樣本對應(yīng)的正樣本是,,而這個可以作為的負樣本,。

既然都命名為Gold了,,那說明作者對它給予了厚望,肯定是主要的負樣本來源,。

論文最終的最佳實踐,,就是主要采用同一個mini-batch中的Gold passages,配合上一個BM25 passage(以及同batch內(nèi)其他question的BM25),。

關(guān)鍵的Trick——In-batch negatives

假設(shè)我們的batch size為B,,每個question有1個positive和n個negative,,那么一個batch內(nèi)就有個passages要經(jīng)過encoding,,而一般我們都需要比較多的negatives才能保證較好的效果,所以光是encoding,,這個計算開銷就很大,。

于是,有人就想出了一個辦法,,我們只需要B個questions和其對應(yīng)的B個positives,,形成兩個矩陣,然后“我的positive,,可以當做你的negative”,,這樣我們就不需要額外再找negative了,然后直接算一個就可以得到計算損失函數(shù)所需要的所有pair的相似度,,這就使得整個過程變得高效又簡潔,。由于不需要額外找negatives,所以一個batch內(nèi)只有個positive passages需要經(jīng)過encoding,,這比前面的方法減少了倍,,干凈又衛(wèi)生啊兄弟們。

上面說的方式,,相當于只使用Gold負樣本,,實際上作者在最佳方案中還使用了BM25負樣本,但也是采用的in-batch training的策略,,即,,我每個question都找一個BM25負樣本, 然后,,該BM25樣本也會作為同batch內(nèi)所有其他question的負樣本,,這相當于再增加一個矩陣,總共有個passages進行encoding,,然后多計算一個矩陣乘法得到相似度,。

最后注意,in-batch training并不是DPR論文首創(chuàng),,前面很多工作中已經(jīng)得到成功應(yīng)用,。

實驗設(shè)置&數(shù)據(jù)集

Knowledge Source

知識庫,,就是我們open-domain QA使用什么語料庫來進行問答。本文選用Wikipedia,,這也是最常用的設(shè)定,。當然,Wikipedia是一篇篇文章,,通常是十分長,,模型不便處理,因此這里作者將所有文本,,都繼續(xù)劃分成100個詞長度的passages,,這些length=100的passages就是本文做檢索的基本單元。另外,,每個passage還在開頭拼接上了對應(yīng)Wikipedia page的title,。

QA Datasets

我們還需要有<問題,答案>這樣的數(shù)據(jù)集,,來讓我們訓練retriever和reader,。

具體數(shù)據(jù)集有:

  • Natural Questions (NQ) :提供了question和answer,且答案全都來自Wikipedia
  • TriviaQA:提供question-answer-evidence triples
  • WebQuestions (WQ):只提供了question和answer
  • CuratedTREC (TREC):只提供了question和answer
  • SQuAD v1.1:提供question,,context和answer

這些數(shù)據(jù)集中,,對于TriviaQA,WQ和TREC,,由于沒有給相關(guān)的context,,沒法直接那answer當做positive passages,所以作者選擇在Wikipedia passages中使用BM25來檢索包含answer的passage來作為positive passage(雖然這種做法我感覺不一定好,,因為匹配上的,,不一定就能回答你的問題,比如你問“阿里巴巴誰創(chuàng)辦的”,,答案是“馬云”,,但包含“馬云”的句子可能是“馬云在達沃斯論壇演講”,這顯然不能回答該問題),。

對于SQuAD和NQ,,由于這些數(shù)據(jù)集提供的passage跟作者自己的預(yù)處理方式不一樣,所以作者用這些passage在前面對Wikipedia預(yù)處理后的passages pool中去匹配得到positive passage,。

Baselines

對于retrieval任務(wù),,baseline就是BM25算法,同時作者還對比了BM25+DPR的效果,,即將二者的得分進行加權(quán)平均:,,其中作者發(fā)現(xiàn)效果較好。

另外對于DPR來說,,越多的訓練樣本肯定越好,,所以除了在單個數(shù)據(jù)集上訓練測試外,,作者還嘗試了使用所有數(shù)據(jù)集的訓練樣本來訓練DPR然后測試。而BM25也是純統(tǒng)計方法,,所以不存在使用訓練數(shù)據(jù)一說,。

Retrieval任務(wù)實驗結(jié)果

Main Results:

結(jié)果見下表:

圖片
retrieval任務(wù)結(jié)果

可以發(fā)現(xiàn),除了SQuAD數(shù)據(jù)集,,其他的數(shù)據(jù)集上,,DPR的表現(xiàn)都不錯,都大幅超越了BM25算法,,而結(jié)不結(jié)合BM25,,其實影響不是很大,但使用更多的訓練數(shù)據(jù)集,,總體上肯定更好些,。

在精確匹配上效果并不好:

在SQuAD上,效果很差,,這一點很有意思。關(guān)于這一點,,作者給出的解釋是:

圖片
image-20220218192133247

即 1.這個數(shù)據(jù)集的question跟passage再語言上高度重合,,所以BM25天然有優(yōu)勢;2. 這個數(shù)據(jù)集采樣是有偏的,。

其實這也告訴我們,,你DPR也不是萬能的,天下沒有免費的午餐,,在那種“精確匹配”的場景下,,相似度搜索一般不會比bag-of-words硬匹配更好。

訓練好的DPR需要多少數(shù)據(jù)量:

然后我們看看使用多少數(shù)據(jù)量,,DPR就超過了BM25:

圖片

可見,,僅僅使用1k的數(shù)據(jù)量,DPR這種語義匹配的方式,,就超越了BM25這種硬匹配,。

In-batch negatives:

然后再看看negative樣本的選擇的影響,也看看in-batch training這種方式怎么樣:

圖片
in-batch training

這個表初次讀的時候一直搞不懂,,文中也沒寫明白,,后來請教了同學才搞明白:

第一個block,batch size不太清楚,,有可能是128,,但不使用in-batch的策略,每個question都自帶7個negatives參與訓練,。這個block是為了對比不同的negative的效果,,發(fā)現(xiàn)其實差不多,,各有優(yōu)劣。

第二個block,,batch size分別是8,,32,128,,采用的in-batch策略,,使用同batch內(nèi)的其他positive作為negative,所以batch越大,,可以使用的negatives就越多,,因此效果就越好,效果比第一個block好了很多,。

第三個block,,batch size分別是32,32,,128,,除了Gold,每個樣本還帶了1-2個BM25樣本,,且這些樣本在整個batch內(nèi)共享(參考上文中“負樣本選擇”一節(jié)的介紹),,發(fā)現(xiàn),帶一個BM25樣本就有明顯提高,,再多了就沒效果了,。

總之,這個實驗說明,,in-batch training是很高效,、有效的一種方法,然后負樣本我們可以主要使用batch內(nèi)的那些positives(即Gold passages),,再配上一個額外的BM25 passage即可取得很好的效果,。

Similarity和loss的選擇

本文采用的是dot product作為相似度度量,作者還測試了L2距離和cosine similarity,,發(fā)現(xiàn)最差的是cosine similarity,。(這一點有意思,可探究一下為什么)

關(guān)于loss,,除了本文的NLL loss,,作者還嘗試了在similarity任務(wù)中常用的triplet loss,發(fā)現(xiàn)效果差別不大,,但還是NLL loss更好一點,。

Cross-dataset generalization

這里文中也是一筆帶過,所以我也不贅述,我只是很高興在論文中看到了這樣的實驗,,cross-dataset generalization是大多數(shù)人不會去考慮的一個實驗,,但對于驗證泛化性能是很重要的。

End-to-End QA實驗結(jié)果

這部分并不是本文的重點,,前面講了,,除了訓練一個retriever(對應(yīng)本文的DPR),完成open-domain QA還需要一個reader,。之前的sota工作都涉及到復(fù)雜的預(yù)訓練,,但是本文重點在于搞一個很好的retriever——DPR,從而只需要簡單訓練一個reader就夠了,,下面是實驗結(jié)果:

圖片
QA實驗

最后再貼一段作者自己的評論:

圖片

總結(jié)

這篇文章最大的亮點在于在訓練學習text representation的時候如何選擇negative samples,,其中的Gold和BM25對學習一個好的表示起到了重要的作用,因此僅僅使用1k個訓練樣本,,就可以訓練一個超越BM25算法的文本檢索工具,。本文也為后續(xù)的一些對比學習工作,例如SimCSE等產(chǎn)生了啟發(fā),,作為文本相似度匹配的重要工作,,本文還是很值得一讀的。

以上,,這篇文章就解讀完畢了,,其實我之前怎么了解過QA,而本文對于QA小白來說也是一個絕佳的教材,,所以這篇文章除了讓我了解DPR這個工作之外,也讓我學習了很多關(guān)于QA的相關(guān)知識,,收獲頗豐,。

推薦資料:

[1]Wikipedia: Question Answering https://en./wiki/Question_answering
[2]Wikipedia: BM25 https://en./wiki/Okapi_BM25
[3] DrQA: Reading Wikipedia to Answer Open-Domain Questions
[4] Efficient Natural Language Response Suggestionfor Smart Reply

最后,特別感謝MSRA張航同學給予的答疑,,解決了本文理解上的幾個關(guān)鍵問題 :)


如果覺得有所收獲的話

大家就點一個吧 :)

2022年的第5/52篇原創(chuàng)筆記
和我一起挖掘有趣的AI研究吧,!

近期文章:
小樣本學習與Triplet Loss,,數(shù)據(jù)增強和課程學習
特征空間增強|劫富濟貧:對長尾數(shù)據(jù)進行特征空間增強
通俗科普文:貝葉斯優(yōu)化與SMBO,、高斯過程回歸,、TPE
深度學習中的樣本遺忘問題 (ICLR-2019)

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多