日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【论文阅读】开放域问答论文总结,文本召回与问答的另一种思路

發布時間:2025/3/8 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【论文阅读】开放域问答论文总结,文本召回与问答的另一种思路 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【論文總結】開放域問答,純文本召回與精排的另一種思路

  • 前言
  • SCIVER: Verifying Scientific Claims with Evidence
    • 任務介紹
    • 數據樣例
    • 開放域問答
  • Reading Wikipedia to Answer Open-Domain Questions (2017)
    • Document Retriever
    • Document Reader
    • 個人總結
  • Dense Passage Retrieval for Open-Domain Question Answering (2020)
    • Encoders
    • Training
    • End-to-end QA System
    • 個人總結
  • Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering (2020)
    • Encoder
    • Decoder
    • result
    • 個人總結
  • DISTILLING KNOWLEDGE FROM READER TO RETRIEVER FOR QUESTION ANSWERING (2021)
    • Reader
    • CROSS-ATTENTION SCORE
    • Retriever
    • Training
    • Result
    • 個人總結
  • 題外話


前言

這篇文章是年前欠下來的,當時在選擇比賽的項目時,SDP @NAACL 的第二項任務SCIVER: Verifying Scientific Claims with Evidence,和開放域問答系統類型非常相似,因此調研了一些開放域問答的經典文獻和SOTA方法,在這里做一個總結。通過這4篇論文,可以對開放域問答任務的研究方向有一個基本的了解,從統計特征到可訓練特征再到無樣本學習,從span抽取到直接生成。

涉及論文:

  • Reading Wikipedia to Answer Open-Domain Questions
  • Dense Passage Retrieval for Open-Domain Question Answering
  • Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering
  • DISTILLING KNOWLEDGE FROM READER TO RETRIEVER FOR QUESTION ANSWERING

  • SCIVER: Verifying Scientific Claims with Evidence

    任務介紹

    Due to the rapid growth in scientific literature, it is difficult for scientists to stay up-to-date on the latest findings. This challenge is especially acute during pandemics due to the risk of making decisions based on outdated or incomplete information. There is a need for AI systems that can help scientists with information overload and support scientific fact checking and evidence synthesis.

    在SCIVER共享任務中,我們將構建以下形式的系統:

  • 以科學主張為輸入
  • 識別大型語料庫中的所有相關摘要
  • 將其標記為支持或駁回
  • 選擇句子作為標簽的證據
  • 關鍵步驟

  • 識別大型語料庫中的相關:考慮到效率和運行時間的要求,當我們得到一個query (此處為科學主張)后我們無法將大型語料庫中成千上萬的句子分別做一次分類識別,因此我們需要現根據query對語料庫中相關的文檔進行召回,盡可能減少我們的候選集。
  • 選擇句子作為標簽的證據:對少量候選集中的文檔中的句子進行精細分類,來判斷其時候可用以支持或駁回主張。
  • 數據樣例

    {"id": 52,"claim": "ALDH1 expression is associated with poorer prognosis for breast cancer primary tumors.","evidence": {"11": [ // 2 evidence sets in document 11 support the claim.{"sentences": [0, 1], // Sentences 0 and 1, taken together, support the claim."label": "SUPPORT"},{"sentences": [11], // Sentence 11, on its own, supports the claim."label": "SUPPORT"}],"15": [ // A single evidence set in document 15 supports the claim.{"sentences": [4], "label": "SUPPORT"}]},"cited_doc_ids": [11, 15]}

    開放域問答

    上述任務其實是NLP中經典問題:開放域問答的變體,開放域問答以wikipedia知識回答為例,其思路分兩個步驟,1. 首先從大量的文章里檢索出相關的文章,2. 從相關的文章里定位到答案。
    解決該類問題的關鍵是如何設計一個高效的召回系統,以及如何從召回少量候選集中精準鎖定關鍵句子。


    Reading Wikipedia to Answer Open-Domain Questions (2017)

    作為開放域問答的經典論文,Danqi Chen提出的DrQA,搭建了開放域問答解決系統的基本框架:
    (1) the Document Retriever module for finding relevant articles and
    (2) a machine comprehension model, Document Reader, for extracting answers from a single document or a small collection of documents.

    Document Retriever

  • TF-IDF: 通過構建問題和文檔的TF-IDF特征向量,計算兩者的相似度來作為召回標準。為了提高召回的速度和內存效率,n-grams詞組往往包含更多的詞語順序信息,作為召回特征也更加明確。因此作者通過Murmur Hash3將bigrams映射到 2^24 桶中, 以此提高檢索效率。
  • 具體實現上,每次召回5篇最相關的維基百科文檔交給Document Reader處理。
  • 此外,作者還比較了Okapi BM25、 word embeddings space + 余弦相似度等方式構建問題和文章召回特征的方式,結果表現更差。
  • 召回實驗結果:
  • Document Reader

  • Paragraph encoding:p1,...,pm=RNN(p?1,...,p?m){p1, . . . , pm} = RNN({p?1, . . . , p?m})p1,...,pm=RNN(p?1,...,p?m),通過BiLSTM對召回文檔的段落進行encoding,pi為作為BiLSTM的前后隱藏單元的concat輸出。p?i為構建的輸入token的特征,具體如下:
  • Word embeddings: 300-dimensional Glove word embeddings trained from 840B Web crawl data. 作者固定了詞向量的embedding在模型訓練時只fine-tune前1000高頻的詞向量,原因在于認為像what, how, which 這種高頻的提問詞可能對于QA systems來說更加關鍵。
  • Exact match: 作者使用了01向量的embedding來標記段落中的哪些詞是與問題完全匹配的,并在后續實驗中證明了這個特征的有效性。
  • Token features: 添加了 Token的part-of-speech (POS) and named entity recognition (NER) tags and its (normalized) term frequency (TF).等人工特征。
  • Aligned question embedding: 在每個輸入token中融合該token與question的attention特征,具體實現如下: f(pi)=∑jaij2E(qj)f(pi) = \sum_{j}a_{ij}^2E(q_j)f(pi)=j?aij2?E(qj?) 其中: aij=exp(α(E(pi))?α(E(qj)))∑j′exp(α(E(pi))?α(E(qj′)))a_{ij} =\frac{exp (α(E(p_i)) · α(E(q_j )))} {\sum_{j'}exp (α(E(p_i)) · α(E(q_j' )))}aij?=j?exp(α(E(pi?))?α(E(qj?)))exp(α(E(pi?))?α(E(qj?)))?E(qj)E(q_j)E(qj?)是question每個token的embedding,E(pi)E(p_i)E(pi?)是段落中每個token的embedding,α(·) 是單個dense層接非線性激活函數Relu。與Exact match這一特征不同是,Aligned question embedding可以捕獲到段落token與問題token中的近義詞/詞義關系,如(e.g., car and vehicle).
  • Question encoding:question的encoding較為簡單,通過簡單的循環神經網絡提取 Question token 的embedding特征使用單一向量作為question feature q1,...,ql→q.{q1, . . . , ql} → q.q1,...,qlq.
    q=∑jbjqjq = \sum_{j}b_jq_jq=j?bj?qj? 其中:bj=exp(w?qj)∑jexp(w?qj′)bj =\frac{exp(w · q_j)}{ \sum_{j}exp(w · q_j')}bj=j?exp(w?qj?)exp(w?qj?)? w為需要學習的參數。相當于讓模型學習如何將question中的token embedding根據在question中的重要性進行加權平均。
  • 訓練階段,將上述得到的Paragraph vector {p1, . . . , pm} 和 question vector作為輸入,對每個Paragraph token的最后output結合question vector作coress-attention后進行兩次二分類,來判斷其是否為答案的起點或終點。Pstart(i)∝exp(piWsq)Pstart(i) ∝ exp (p_iW_sq)Pstart(i)exp(pi?Ws?q) Pend(i)∝exp(piWeq)Pend(i) ∝ exp (p_iW_eq)Pend(i)exp(pi?We?q)
  • 推理階段,我們考慮所有長度<=15的span, score=Pstart(i)×Pend(i′)score = Pstart(i)×Pend(i')score=Pstart(i)×Pend(i),并且考慮到分數在多個段落之間比較的兼容性,作者使用非歸一化指數,并在所有可能的span中使用argmax進行最終預測。
  • reader實驗結果:
  • 個人總結

  • DrQA的Retriever突出簡單的特性,使用TF-IDF捕捉bigram統計特征,不需要經過訓練,只需要預先計算好每篇文檔的特征向量即可進行快速檢索,但這也帶來了一定的問題,簡單的詞頻統計特征無法捕捉到潛在語意上的相關性,不好解決棘手的抽象問題。盡管這種方式具有良好的泛化能力,但是針對特定領域的QA召回,我們仍然通過訓練模型,來增強召回性能。
  • Reader部分,2017還是傳統神經網絡的時代,encoding部分使用了簡單的bilstm,因此為了更加豐富的表達token的信息和其與問題的關聯性信息等,我們需要制作大量額外的人工特征。
  • 但這并不影響DrQA給后續開放領域問答研究帶來的Retriever + Reader重要的框架思路。

  • Dense Passage Retrieval for Open-Domain Question Answering (2020)

    Danqi Chen卷土重來!文章通過引入Bert等預訓練語言模型,在QA系統的Retriever部分大作文章,構建的DPR召回系統針對訓練Retriever模型提出了精妙的負采樣設計和訓練方法。極大程度地提升了開放領域問答文檔召回部分的準確性。Dense Passage Retrieval用可訓練的embedding低維連續的稠密向量代替了原本TF-IDF等稀疏向量表示。

    Encoders

  • 通過兩個獨立的bert分別編碼question和passage,以bert最后一層CLS輸出768緯特征作為向量表示,通過計算兩者之間的點積作為相關性評價:sim(q,p)=EQ(q)TEP(p)sim(q, p) = E_Q(q)^TE_P (p)sim(q,p)=EQ?(q)TEP?(p),這一方法與本人之前復現的Sentence-BERT極為相似,當模型訓練完成后,我們可以通過提取所有語料庫中的passage的特征向量并通過FAISS保存來加快query的查詢速度,在博客末尾也提及了使用兩個獨立的bert分別編碼的思考點所在。
  • Training

  • 模型訓練階段:對于每一個匹配的QP訓練樣本,我們設置qi,pi+,p1?,p2?,pn?q_i,p_i^+,p_1^-,p_2^-,p_n^-qi?,pi+?,p1??,p2??,pn??,其中包括一個正passage樣本和n個負passage樣本。損失函數如下:
  • 負采樣:對于每一組訓練樣本的構建,正樣本是給定的,重點在于如何進行負采樣選擇合適的負樣本,太簡單的負樣本會使Retriever訓練不充分而導致欠擬合,召回效果差。在一般的推薦系統當中,我們會傾向于同時設置hard樣本和soft樣本來豐富模型的召回能力。本文中,作者考慮了三種類型的負樣本,并對不同組合進行了測試:
  • Random: any random passage from the corpus;
  • BM25: top passages returned by BM25 which don’t contain the answer but match most question tokens;
  • Gold: positive passages paired with other questions which appear in the training set.
  • In-batch negatives: batch negatives的方法大家應該不陌生,簡單來說就是通過batch內的樣本互為negatives來加快模型訓練效率。如果不使用該方法,我們需要預先生成m組正樣本+mn組負樣本,由于mn的存在使得模型的訓練效率降低,如果形成batch negatives,在batch中模型只需要對每一個樣本進行一次正向傳播,即可同時完成所有正負樣本的loss計算。具體來說我們傳入一個batch 一共B組QP對,通過一次正向傳播加矩陣乘積我們可以得到S=QPTS = QP^TS=QPT 一個(B×B)(B×B)(B×B) 相關性矩陣每一行代表一個Question和Passage的相關性得分,對于每一個Question來說,包含1個正樣本,B-1個負樣本。效率上通過B計算復雜度得到了B^2的樣本對效果,并且省去了前期樣本構建的工作。
  • 理解了In-batch negatives的方法上述結果圖也會比較好理解,最好的樣本構建方法為為每一個question構建一個positive passage和一個BM25最大的negative passage,設置batch_size=128,因此對于每一個question來說最終會有127個Gold negative passage和128個BM25 negative passage作為負樣本。
  • It has been shown to be an effective strategy for learning a dual-encoder model that boosts the number of training example。
  • Term-matching methods like BM25 are sensitive to highly selective keywords and phrases, while DPR captures lexical variations or semantic relationships better. 考慮到兩種召回模式的優勢,作者嘗試了模型融合,其中BM25 + DPR為BM25和DPR的召回結果的融合,unionScore=BM25(q,p)+1.1?sim(q,p)unionScore = BM25(q,p) + 1.1 * sim(q, p)unionScore=BM25(q,p)+1.1?sim(q,p)
  • End-to-end QA System

  • The passage selection model serves as a reranker through crossattention between the question and the passage。答案選擇模型作為精排模型服務于召回模型召回的文章。
  • Reader模型的設計其實較為多樣,文章并沒有展開詳細討論,在Bert框架下可以通過第一篇文章中的cross-attention來聯系question和候選的passage的特征信息,也可以參考本人之前復現的機器閱讀理解baseline進行設計。
  • 具體的文章設置了span首尾評估和passage selected組合評估指標:
  • 其中Pi∈RL×h(1≤i≤k)Pi ∈ R^{L×h} (1 ≤ i ≤ k)PiRL×h(1ik) 是每篇文章的bert最外層特征向量,P?=[P1[CLS],...,Pk[CLS]]∈Rh×kP?=[P^{[CLS]}_1, . . . , P^{[CLS]}_k ] ∈R^{h×k}P?=[P1[CLS]?,...,Pk[CLS]?]Rh×k wstartw_{start}wstart?,wendw_{end}wend?, wselectedw_{selected}wselected? 是需要學習的參數。
    Pstart,i(s)×Pend,i(t)P_{start,i}(s) × P_{end,i}(t)Pstart,i?(s)×Pend,i?(t)表示該span的得分,而Pselected(i)P_{selected}(i)Pselected?(i)表示該文章的得分。
  • 對于每一組正樣本,從前100名Retriever召回的Passage中隨機選擇23個負樣本進行訓練。
  • 個人總結

  • 對比DrQA的Retriever,DPR更加關心question與passage之間的潛在語意關系,并通過融合BM25和DPR,在文本召回的準確性上遠遠超過傳統的統計特征模型。
  • 合理的負采樣方法配合In-batch negatives訓練方法,確保模型能有效區別正負樣本的同時,提高了模型的計算與訓練效率,設計巧妙但又易于實現。
  • 對于文本召回相關任務來說,DPR是一個簡潔且巧妙的baseline。

  • Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering (2020)

    之前開放域問答系統的Reader部分的設計,往往是對Retriever召回的文檔進行再次精排,通過span分類任務抽取相應的answer,在一步中如何處理和比較不同文檔之間的span預測是一個難題,而且按token進行二分類任務存在棘手的正負類別不平衡問題。如何能讓模型同時考慮所有召回文本,并且自己學會識別答案,如圖所示該論文提出了Fusion-in-Decoder模型將Reader的工作從分類變成了Seq2seq

    Encoder

  • Reader是一個sequence-to-sequence的網絡結構, 使用了T5或者Bart等預訓練模型。
  • 對于每一個Retriever召回的Passage,將Question與Passage通過特殊的Token連接構建成[question:question:question:, title:title:title:, context:context:context:] 的格式,分別通過encoder編碼成一個全局特征矩陣X∈(∑klk)?dX ∈(\sum_{k}l_k)*dX(k?lk?)?d 其中 lkl_klk? 是第k個召回Passage輸入長度,d 為encoder的hidden dimension。
  • 之后Decoder處理特征X,通過自回歸輸出答案A。
  • Decoder

  • 與傳統的transformer的decoder相似,每一個block中先做一次輸出的self-attention,之后的通過Q=WQH,K=WKX,V=WVXQ = W_QH, K = W_KX, V = W_VXQ=WQ?H,K=WK?X,V=WV?X來計算cross-attention,具體計算公式與transformers一致,不再展開敘述。其中X為encoder輸出的最后的特征表示,H為decoder中上一個self-attention的輸出。
  • result

  • 隨著encoder輸入的召回文章數量的提高,decoder的輸出與答案的match程度也隨之升高,在50左右達到較高平穩峰值,這說明Fusion-in-Decoder能有效的結合來自多個Passage的信息。
  • 模型在開放域問答公開數據集上達到了SOTA,這也證明了用Seq2seq的方式來生成答案是一個有效的方法。
  • 個人總結

  • 沒錯,就是這么簡單,就是這么一個顛覆性的認知加上一個小小的改動,Fusion-in-Decoder可以說是完全套用了transfomers的模型結構,在對Retriever召回的Passage的處理上采取了如此暴力美學的方法,直接全部encode然后concat在一起丟到decoer里面讓模型去學。簡單,粗暴,有效。
  • 個人比較好奇的是這個方法在Train的時候encoder是跟著一起train的嗎,還是freeze的。個人理解應該是freeze的。

  • DISTILLING KNOWLEDGE FROM READER TO RETRIEVER FOR QUESTION ANSWERING (2021)

    開放域問答系統中的Retriever的訓練,往往是有監督的,這需要我們為模型提供大量的樣本數據,這篇文章利用知識蒸餾的技術,讓Retriever去學習Reader的attention score,這樣的方法并不需要標注好的query和documents對。

    Reader

  • Reader部分直接沿用了Fusion-in-Decoder模型,通過Fusion-in-Decoder模型檢索候選文章輸出答案時產生的attention矩陣來指導Retriever進行學習。
  • 這其實是一件非常直覺又有趣的事情,Retriever本應該作為Reader的老師,告訴Reader應該看哪些文章,并從中得出答案。但相反,由于Reader已經提前知道了答案,如果Reader閱讀范圍足夠廣,我們可以通過attention矩陣來映射Reader在生成答案時把注意力放在了哪些文章上,并以此告誡Retriever,下次召回時應該召回類似的文章。
  • CROSS-ATTENTION SCORE

  • 根據Fusion-in-Decoder論文提到的,decoder中的cross-attention計算公式如下:Q=WQH,K=WKX,V=WVXQ = W_QH, K = W_KX, V = W_VXQ=WQ?H,K=WK?X,V=WV?X
  • 作者假設α:,jα_{:,j}α:,j?可以用來度量第 j 個key token對于模型通過value計算下一個特征表示的重要性,并以此作為與該key token對應文檔的重要性的代表——the more the tokens in a text segment are attended to, the more relevant the text segment is to answer the question.
  • 因此通過對attention score進行聚合,我們可以得到各個Passage的相關性分數(Gq,pk)1≤k≤n(G_{q,pk})1≤k≤n(Gq,pk?)1kn,具體來說分數G是聚合了decoder中該文檔所有key token的pre-attention scores α0,:α_{0,:}α0,:?得到的。作者比較了不同的mean_max和選取不同層attention score的聚合方法。最后表面簡單的對所有層,所有token的attention score作平均效果最佳。
  • 作者通過一個簡單的實驗證明了Gq,pkG_{q,pk}Gq,pk?是一個優秀的Passage相關性的評估指標:100篇由DPR召回的文檔,使用DPR分數選擇前10篇,召回性能從48.2EM降低到了42.9EM,但如果根據Gq,pkG_{q,pk}Gq,pk?選擇前10篇最重要的文檔,召回性能僅從48.2EM降低到了46.8EM。
  • Retriever

  • Retriever的模型結構設計與DPR相似,只是將兩個獨立的Bert編碼器減少到了一個共享參數的特征編碼器。
  • 損失函數的設計上,由于Retriever不再是擬合一個二分類問題,而是擬合Reader產生的注意力分布,因此需要最小化Sθ(q,p)S_θ(q, p)Sθ?(q,p)Gq,pG_{q,p}Gq,p?之間的KL離散:
  • 同時作者還比較了MSE、max-margin loss等其他損失函數,最終KL離散的訓練效果最佳。
  • Training

  • iterative pipeline:
  • Train the reader R using the set of support documents for each question Dq0D^0_qDq0? .
  • Compute aggregated attention scores (Gq,p)q∈Q,p∈Dq0(G_{q,p})_{q∈Q,p∈D^0_q}(Gq,p?)qQ,pDq0?? with the reader R.
  • Train the retriever E using the scores (Gq,p)q∈Q,p∈Dq0(G_{q,p})_{q∈Q,p∈D^0_q}(Gq,p?)qQ,pDq0??.
  • Retrieve top-passages with the new trained retriever E.
  • 文章使用了Bert作為retriever,T5作為reader。
  • 之所以這一套QA循環訓練系統不需要給到retriever E標注好的數據對,是因為在訓練過程中我們只需要初始化好最開始的support documents集合,通過對R的訓練指導E的下一步的召回,即可實現自我迭代。
  • 關鍵點1: 如何初始化support documents,實驗表明,通過BM25初始化每一個Question的support documents優于通過預訓練的Bert進行相似度計算進行初始化。并且我們可以發現盡管通過預訓練的Bert進行初始化召回,在未開始跌倒時文檔的召回效率巨差無比,但隨著迭代的進行retriever的召回能力快速回溫,這也證明了這一套iterative pipeline的有效性。
  • 關鍵點2: 每輪迭代開始時,重新初始化reader-T5的權重,并保留retriever-Bert的權重繼續訓練。文章并沒有對這樣的做法做出解釋,猜測有兩個作用:
  • reader-T5的訓練相對于retriever-Bert來說更加容易,盡管我們初始化了reader-T5,但由于retriever-Bert的性能越來越強,召回的文章越來越準確,reader-T5也會更快的收斂,這一定程度上平衡了兩個模塊的訓練進程,防止一方陷入過擬合后導致系統崩潰。
  • 通過初始化reader-T5,文章通過監控reader-T5和retriever-Bert的注意力/打分對文章排名的差異性來監控retriever-Bert的訓練進程,當reader-T5和retriever-Bert對文章排名結果相近且穩定時,認為系統已經訓練充分,停止迭代。
  • Result

  • 通過BM25初始化召回達到了SOTA,通過DPR初始化召回則得到了更高的性能。
  • 證明了不需要大量有監督的文檔數據我們也可以訓練一個非常強大的retriever模型。
  • 個人總結

  • 本論文僅使用問題答案樣本對就實現了開放域問答的SOTA,這歸功于其精彩蒸餾思路將原本兩個獨立的訓練模塊Reader和Retriever進行連接,Pipeline的思路減少了模塊之間的誤差傳遞,使得整個系統更加一體化。并且文章對于損失函數、初始化方法、attention score的進行了大量的對比實驗,組合出了一套完整的訓練方案。
  • 如果我們把Reader視為精排,Retriever視為召回,這種通過精排模塊指導召回模塊訓練的方法非常值得借鑒。
  • 本文從側面反映了Transformer架構中,attention機制的可解釋性,利用模型的attention模塊的中間輸出,我們可以獲取更多其他的有效信息。

  • 題外話

  • DISTILLING KNOWLEDGE FROM READER TO RETRIEVER FOR QUESTION ANSWERING這篇文章的方法可拓展性強嗎?由于其Reader模塊采用的是Seq2Seq結構配合問答,是否存在特殊性?適用于其他的召回 + X 系統嗎(排序/打分等)
  • 其實最近也比較流行用NLG完成NLU任務的論文,All NLP Tasks Are Generation Tasks: A General Pretraining Framework,GPT Understands, Too等。這種召回+生成框架遷移的根本難點在于我們如何針對不同的任務類型進行設計不同的“Decoder”。值得研究~
  • 總結

    以上是生活随笔為你收集整理的【论文阅读】开放域问答论文总结,文本召回与问答的另一种思路的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。