ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [yongggg's] Dense Passage Retrieval for Open Domain Question Answering Paper
    Machine & Deep Learning 2022. 11. 29. 09:54

    안녕하십니까 이번 장에서는 Dense Passage Retrieval for Open Domain Question Answeing Paper를 요약하고자 합니다. Dense Passage Retrieval 를 설명하기 앞서, Passage Retireval에 대해 간략히 요약 하겠습니다.

     

    Passage Retrieval 란 질문(query)에 맞는 문서(Passage)를 찾는 task를 뜻하며, Passage Retrieval와 MRC(machine reading comprehension)는 ODQA(Open-Domain Question Answering) task에 이용 됩니다. ODQA는 대규모의 문서 중에서 질문에 대한 답을 찾는 것으로, Passage Retriever와 MRC를 이어 만든 2-stage의 모델입니다. Passage Retriever는 Query와 Passage를 임베딩한 뒤, 유사도로 랭킹을 매긴 후, 유사도가 높은 Passage를 선택(question에 대한 답을 가지고 있는 지문의 일부를 고름)하는 역할을 하며, MRC와 같은 reader 모델은 선택된 지문을 철저히 검사하여 올바른 답변인지 파악합니다. 최종 답을 출력하는 과정은 다음과 같은 Process를 거친다고 생각하시면 됩니다.

    https://www.ohsuz.dev/mrc-cookbook/mrc-lecture-05

     

    이제 본 내용을 살펴 보겠습니다! 지문이 길지만 다 읽어보시면 너무 재미있는 내용입니다! 다 읽어 보시는 것을 추천드려요^^

    Introduction

    Open-Domain question answering(자유 주제 질의 응답; ODQA)는 TF-IDF 혹은 BM25와 같은 Sparse vector space model 후보 passage를 잘 선택하기 위해 효율적인 passage 탐색이 중요하다. 본 연구에서는 간단한 이중 인코더 구조를 기반으로 적은 수의 질문과 지문을 학습하여 얻은 Dense Embedding을 사용해 구현한 Retireval를 소개한다. 현재, 매우 큰 ODQA 데이터셋을 평가할 때, 우리의 Dense Retriever는 Lucene-BM25 시스템과 top-20 passage retrieval 정확도 부문에서 9~19% 차이의 성능을 냈다. 또한 다중 ODQA 벤치마크 데이터셋에서 end-to-end QA system이 새로운 sota로 자리잡을 수 있도록 했다.

    위의 소개글에서 소개했듯이, ODQA는 question에 대한 사실을 대형 문서집합 내에서 답을 구하는 Task이다. 초기 QA 시스템은 종종 복잡하고 다중 요소로 구성되어 있는 반면, 독해 모델이 발전하면서 더욱 간단한 두 단계의 구조가 생겼다. 1) Context Retrieval(지문 검색기)가 처음에 question에 대한 답을 가지고 있는 지문의 일부를 고른다. 그러고 나면 2) Reader 모델이 선택된 지문을 검사하고 올바른 답변인지 파악한다. 과거의 방법보다 여러 단계가 줄어든 ODQA는 합리적인 방법이나, 실전에서 성능감소를 피할 수 없었다. (좀 더 개선된 검색 기능이 필요했다.)

    ODQA의 검색은 TF-IDF 혹은 BM25를 가지고 이루어졌으며, 이는 키워드를 효과적으로 역색인했고, 희소행렬이라는 고차원의 벡터로 질문과 지문을 나타낼 수 있는 것처럼 보였다. 거꾸로 Dense는 설계적으로 숨어있는 의미적인 인코딩을 통해 Sparse를 보조해 주는 역할을 한다. (예를 들어 동의어나 의역과 같은 표현이 완전히 다른 토큰으로 구성되어 있다고 하더라도 여전히 유사한 벡터로 매핑된다. 질문과 답변에 동일한 키워드가 없어도 알맞은 답변을 가져올 수 있다는 뜻이다. 다음과 같은 사례는 이를 잘 보여준다. "Who is the bad guy in lord of the rings?" 라는 질문을 통해 "Sala Baker is best known for portraying the villain Sauron in the Lord of the Rings trilogy."라는 답변을 가져올 수 있는 것이다.)  단어 중심적인 구조는 이러한 (동의어, 의역) 지문을 가져오기 어렵지만, Dense Retrieval 방식은 gad guy와 villan을 연결할 수 있으며, 올바른 답변을 가져올 수 있다. Dense encodings은 특정 task에 맞는 표현들을 가질 때, 유연함을 더해줄 수 있는 Embedding함수를 가지고 학습할 수 있다. 특별한 내부 메모리 데이터 구조와 인덱싱 구조가 있다면, Retireval는 최대 내적 연산 탐색 알고리즘을 사용해 효과적으로 이루어질 수 있다.

    당연히, 좋은 dense vector representation을 학습하는 것은 일반적으로 매우 많은 수의 질문-지문 쌍의 labeled Data가 있어야 한다. 정교한 ICT 방법론을 사용해 마스킹 된 문장을 예측하는 추가적인 사적학습 기법이 적용된 ORQA가 등장하기 전 까지는 Dense Ritrieval 방법은 TF-IDF나 BM25와 같은 sparse 방법을 뛰어넘지 못했다. PLM 이 등장한 이후, Question encoder와 reader model은 질문과 정답이 한 번에 묶인 데이터 쌍을 가지고 fine tuning 되었다. 비록 ORQA는 Dense Retriever가 다중 ODQA 데이터 셋에 최고 기록을 갖고 있던 BM25를 이겼지만, 이전 모델과 마찬가지로 두 가지 약점을 극복하지 못했다.

    첫 번째는 ICT 사전학습 방법은 계산량이 매우 많으며, 이러한 방법론에서 질문을 대체할 수 있으며, 좋고 일반적인 문장이 불명확하다는 것이다. 두 번째는 Context Encoder가 질문-답변 쌍을 사용해서 fine-tuning 하지 않기 때문에, 이 Encoder를 통해 얻은 임베딩 표현이 최선이 아니라는 것이다.

    여기서 본 연구에서는 다음 질문에 대한 해결에 초점을 맞추었다. "우리는 질문-지문 쌍 혹은 질문-답변 쌍만을 가지고 추가적인 사전학습을 진행하여 더 좋은 Dense 임베딩 모델을 학습할 수 있을 것인가?" 표준 pretrained BERT와 이중 Encoder 구조의 장점을 극대화 하기 위해 우리는 상대적으로 적은 수의 질문-지문 쌍을 이용해 올바른 학습 계획을 세우는 데 포커싱하였다. 몇 가지의 ablation (특징 제거) 실험을 통해 알아낸 본 연구의 최종 Solution은 매우 간단했다. 한 배치에서 사용되는 질문, 그리고 그 질문과 관련된 지문 쌍을 최대 내적 연산을 수행해서 비교하는 것으로 임베딩을 최적으로 학습할 수 있다. 또 본 연구의 DPR은 매우 강력하다. 본 연구의 모델은 BM25 모델의 성능을 매우 큰 격차로 이겼을 뿐 아니라, ONQ 부문에서 ORQA와 비교해 end-to-end QA 정확도를 충분히 향상시켰다.

    본 연구의 성과는 크게 두 가지이다. 첫 째, 적절한 학습 세팅과 기존의 질문-지문 데이터를 가지고 간단한 질문-지문 encoder를 fine-tuning하기만 해도 BM25의 성능을 크게 뛰어넘는다. 두 번째, 우리는 ODQA의 관점에서 Retriever의 정확도가 증가할 수록 end-to-end QA 정확도도 증가했다. 현재 공개된 reader model에 top retrieved passage를 적용 했더니 몇 개의 복잡한 시스템과 비교하여 open-retrieval setting에서 다중 QA dataset에 대해 동등하거나 더 좋은 결과를 얻었다.

    Background

    ODQA의 문제점은 "Who first vocied Meg on Family Guy?" 혹은 "Where was the 8th Dalai Lama born?"과 같은 간단한 질문이 주어졋을 때, 매우 다양한 주제를 가지고 있는 거대한 말뭉치를 사용해서 이에 대한 대답을 해야한다. 자세하게는 말뭉치에서 한개 또는 여러개의 지문의 영역을 정의하는 Extracted QA Task를 수행한다고 하자. (QA는 Extracted와 Generation으로 나뉜다.)

    $d_{1}, d_{2}, \dots, d_{D}$라는 Document D를 가지고 있다고 하자. 처음 단계에서는 각 문서들을 기본 Retrieval unit을 기준으로 동일한 길이의 지문으로 나눠 M개의 전체 지문을 얻는다고 하고 이를 $C={p_{1}, p_{2}, \dots, p_{M}}$ 이라고 하자. 여기에서 각각의 $p$는 tokens $w_{1}, \dots, w_{|p_{i}|}$로 구성된다. 

    질문이 주어진다고 했을 때, 지문 $p_{i}$로 부터 질문에 대한 답을 할 수 있는 $w_{s}$에서 $w_{e}$까지의 범위를 찾는 것이다. (지금 상황에서 다양한 도메인에 대한 지문을 다루면 기본 100만개에서 10억만개의 문서들을 마주치게 된다.) 결과적으로 어떤 ODQA 시스템이든 질문에 대한 답을 하기 전에, 질문과 관련이 있는 지문들 중 매우 작은 일부분 만을 선택할 수 있는 효율적인 검색 시스템이 필요하다. 이를 수식적을 표현하자면, retriever $R$은 $(q, C)$ 질문과 말뭉치를 가지고 수행되며, $C_{F}$라는 결과물을 반환해야 한다. 이 함수는 $q$와 $C$가 입력으로 들어가서 $C$의 매우 작은 부분집합인 $C_{F}$를 반환한다. 만약 고정된 $k$가 있으면, retriever model은 top-k의 retrieval 정확도를 개별적으로 평가할 수 있다. 이 정확도는 질문에 대해 답변을 할 수 있는 (지문의) 범위를 가지고 있는지에 대한 metric이다.

    Dense Passage Retriever (DPR)

    본 연구는 ODQA에서 retrieval 요소들을 개선하려는 survey에 초점을 맞췄다. 지문 M의 집합을 가지고 모든 지문을 저차우너 연속 분포(=space, 차원의 값이 연속적이라는 의미)로 indexing 하는 것이 목적이다. 그래서 연구진들은 reader가 task를 수행할 때 입력된 질문과 관련이 있는 top-k의 지문들을 효율적으로 가져올 수  있게 된다. M이라는 수는 매우 크고(본 연구의 실험에서는 2.1천만개) k는 보통 20~100 사이로 작게 설정한다.

    Overview

    DPR은 Dense Encoder $E_{p}$를 사용하는데, 이 것은 $d$차원의 float vector로 지문을 매핑하고 모든 M개의 지문에 대해서 인덱싱하여 우리가 retrieval 하는 데에 사용할 수 있도록 한다. 실행될 때에는 DPR은 또 다른 Encdoer $E_{Q}$에 적용되며 이는 입력으로 받은 질문을 $d$차원의 벡터로 매핑하고 질문 벡터와 가장 유사한 $k$개의 벡터를 검색한다. 본 연구에서는 질문과 지문의 유사도를 벡터 내적을 사용하여 정의하였다.

    $$ sim(q,p) = E_{Q}(q)^{T}E_{P}(p) \quad 식 (1)$$

    질문과 지문의 유사도를 측정하는 데에 있어, cross attention을 사용하는 multiple layer의 신경망 구성과 같은 좋은 representation 모델이 존재하지만, 지문의 임베딩 표현이 사전에 계산될 수 있도록 유사도 함수는 기능적으로 분해성이 있을 필요가 있다. 대부분의 분해성을 지닌 유사도 함수들은 유클리드 거리 ($L2$)의 변형으로 이루어진다. 예를 들어 Cosine 은 단위 벡터들의 내적과 같으며, 마할라노비스 거리는 변형된 공간에서 L2 거리와 동일하다. 내적 탐색은 cosine이나 L2 distance와의 연관성 뿐만 아니라 자체로도 넓게 사용되어왔으며, 연구되어왔다. 본 연구의 ablation 실험은 다른 유사도 함수들도 비슷한 성능을 냈기 때문에 간단한 내적 함수를 선택했으며 이는 Encoder가 더 잘 학습하게 함으로써 dense passage retriever를 개선하였다.

    Encoders

    원칙적으로 질문과 지문 인코더는 어떠한 신경망으로도 구현될 수 있지만, 본 연구에서는 두 개의 독립적인 BERT 신경망을 사용한다. 또한 output으로 반환되는 CLS토큰을 embedding representation으로 취하며, 차원은 768이다.

    Inference

    추론 step에서 본 연구에서는 passage encoder E_{P}를 모든 지문에 적용하고, 이 지문들을 FAISS를 사용하여 오프라인으로 인덱싱 하였다. FAISS는 엄청나게 효율적인 오픈 소스 라이브러리인데, 이는 유사도 탐색이나 밀집 벡터의 군집화를 수행할 수 있으며, 이 때 매우 많은 수의 벡터도 쉽게 처리할 수 있는 모듈이다. Runtime에 질문 q가 주어지면, 우리는 $E_{Q}$에 q를 입력하여 embedding $v_{q}$를 얻고, $v_{q}$와 유사한 상위 k개의 지문을 탐색한다.

    Training

    내적을 이용한 유사도(식 (1))가 retrieval에 있어 좋은 랭킹 함수가 되기 위해, Encoder를 학습하는 것은 본질적인 지표 학습 문제와 직결된다. 본 연구의 목표는 vector space를 생성하여, 더 좋은 임베딩 함수를 학습함으로써 질문과 지문쌍이 관련이 있다면(유사도가 높다면) 관련이 없는 쌍보다 더 작은 거리를 가지게 되도록 해야한다.

    $D={<q_{i}, p_{i}^{+},p_{i,1}^{-},\dots,p_{i,n}^{-}}_{i=1}^{m}$ 를 $m$개의 인스턴스로 구성되어 있는 학습 데이터라고 하자. (where 어떠한 질문 $q_{i}$와 이와 관련된(=긍정) 지문 p_{i}^{+} 그리고 관련이 없는(=부정) n개의 지문 p_{i,j}^{-})

    본 연구는 관련 지문의 NLL Loss를 사용하여 이를  최적화하고자 한다.

    $$ L(q_{i}, p_{i}^{+}, p_{i,1}^{-},\dots,p_{i,n}^{-}) = -log {e^{sim(q_{i},p^{+}_{i})} \over e^{sim(q_{i},p_{i}^{+})}+\sum^{n}_{j=1}e^{sim(q_{i},p^{-}_{i,j})}} $$

    Positive and negative passages

    retrieval의 하나의 문제로는 positive example은 명확하게 존재하면서, negative sample은 매우 방대한 데이터셋에서 선택되어야 하는 문제가 있다. 예를 들어, 질문과 관련이 있는 지문은 QA 데이터셋에서 주어지거나, 정답을 사용하여 찾을 수 있다.그 외의 데이터셋에 있는 모든 지문은 명확히 특정되지 않았으며, 기본적으로 관련이 없어 보이는 것이 사실이다.

    실제로 negative examle을 선택하는 방법은 Encoder를 높은 품질로 학습하는 데에 있어, 영향력이 있는 항목이다. 본 연구에서는 다음과 같은 3개의 negative type을 고려한다. (1) 무작위로 고른다 : 말뭉치에서 가져올 수 있는 무작위의 지문, (2) BM25 사용 : BM25를 사용해 얻은 정답이 없는 상위 지문들은, 질문의 토큰들과 대부분 동일하여 좋은 negative sample이 될 수 있다. (3) 학습 데이터에만 존재하는 Gold Positive passage 이용 : 질문과 관련이 있는 지문들은 학습 데이터에서 나타난다. 본 연구에서는 동일한 배치에서 gold(=positive) passage를 negative passage로 재 사용하는 것은 좋은 성능을 얻으며 계산을 효율적으로 할 수 있도록 한다.

    In-batch negatives

    미니 배치에 $B$개의 질문이 있다고하자. 각각의 질문은 유사도가 비슷한(=relavant) 하나의 지문과 관련이 있다고 하자. $Q$와 $P$ 를 질문과 지문의 $B \times d$ 크기의 임베딩 행렬이라고 하자. 이 때 $B$는 질문 개수, 행렬의 유사도 점수를 $S$라고 했을 때, $S=QP^{T}$로 나타낼 수 있으며, 차원은 $B \times B$크기의 행렬이다. 각각의 행은 $B$개의 질문과 대응되는 지문의 Score 이다. 이 Matrix를 계산했을 때, 계산했던 것을 다시 사용함으로써 효율적으로 $B^{2}(q_{i},p_{i})$ 질문/지문 쌍을 각각의 배치에서 학습할 수 있다. 어느 ($q_{i}, p_{j}$) 쌍은 $i=j$일 때 q와 p는 positive example 이며, 다른 경우에는 negative example이다. 이는  $B-1$개의 negative passage와 1개의 positive passage가 존재하는 B 크기의 training instances를 생성한다. [($i,j$)에서 사용했던 score를 (j,i)에서 다시 사용할 수 있기 때문에 재사용성을 강조한다.]

    이러한 in-batch negatives 테크닉은 full batch에서 사용되어 왔으며 최근에는 mini-batch에서 사용되고 있다. 이러한 방법은 이중 encoder 모델이 학습시에 샘플의 수를 늘릴 수 있다는 점에서 효과적인 방법으로 소개되었다.

    Experimental Setup

    이 장에서는 본 연구의 실험에 사용한 데이터와 기본적인 설정에 대해 소개한다.

    Wikipedia Data Pre-processing

    본 연구에서는 영어 Wikipedia를 QA task를 위한 기본 문서로 사용했다. 먼저, DrQA에서 공개된 전처리 코드를 적용해 Wikipedia의 기사로부터 깔끔한 text의 데이터를 추출했다. 이 과정에서, table 혹은 information box, list, disambiguation pages(non-article인 page로 article page를 쉽게 찾기 위한 목적으로써 reader들을 위해 마련된 page이다.)와 같은 일부 구조를 띄는 데이터가 제거되었다. 그 다음, 각각의 기사를 100개의 단어로 이루어진 여러개의 text 조각으로 나누었으며, 이 텍스트 조각 하나를 지문이라고 간주했고 이는 본 연구의 기본적인 탐색 단위로 설정하였다. 최종적으로 21,015,324개의 passage로 분리하였으며, 각각의 지문에는 Wikipedia 기사 제목이 추가되었으며(=prepen) 그 뒤에는 SEP Token을 추가했다.

    Question Answering Datasets

    우리는 5개의 QA 데이터셋을 사용했고 이를 학습, 검증, 시험 데이터셋으로 분리했다. 각각의 데이터셋에 대한 요약은 아래와 같다.

     

    - Natural Question (NQ) : end-to-end QA를 위해 만들어진 데이터셋이며, 질문은 살제 구글 검색 질문에서 모았고 답변은 글쓴이가 분명한 Wikipedia 기사에서 발췌했다.

    - TriviaQA : 사소한 질문들과 답변으로 구성되어 있으며, 웹페이지에서 가져왔다.

    - WebQuestions(WQ) : 이 데이터셋은 구글 제안 API에서 사용해 선택된 질문과 이 API의 Freebase안에 개체로 존재하는 정답으로 구성되어 있다.

    - CuratedTREC(TREC) : TREC QA 이나 다양한 웹의 출처를 가지고 있는 질문들은 구조화되어있지 않은 말뭉치로부터 QADA task를 위해 준비되었다.

    - SQuAD v1.1 : 독해를 위한 유명 벤치마크 데이터셋이다. 데이터셋 주석자들은 Wikipedia 지문을 받고 주어진 지문으로 부터 답변이 가능한 질문을 작성하도록 요청받았다. 비록 SQuAD는 이전부터 ODQA 연구를 위한 데이터셋으로 사용되어 왔지만, 이상적인 데이터는 아니다. 그 이유는 많은 질문들은 제공된 문단이 없어서 지문이 부족했기 때문이다. 우리는 이전의 연구와 공정한 비교를 위해 여전히 본 연구의 실험에서 SQuAD를 사용하며 이는 5.1장에서 다룬다.

    (Train의 두 열 중에 뒤의 열은 DPR을 수행하기 위해 필터링 된 후의 최종 데이터셋의 데이터 수를 나타낸다.)

    Selection of positive passges

    TREC와 WebQuestions 그리고 TriviaQA에서는 유일한 질문-답변쌍만을 제공하기 때문에 본 연구에서 BM25로 만든 Positive Passage를 정답으로 가지고 있는 상위권 지문들을 사용한다. 100개의 검색된 지문 중 정답이 없다면 해당 질문은 버려진다. SQuAD와 NQ에서는 처음에 가지고 있는 지문들이 분리되고 후보 지문들을 관리하는 것과는 다르게 처리되기 때문에, 각각의 gold 지문들을 그에 대응하는 지문들로 매칭하거나 교체한다. 다른 Wikipedia 버전이거나 전처리 때문에 매칭이 실패했다면, 이 질문을 버린다. 

    Experiments: Passage Retrieval

    BM25를 이용해 얻은 negative passage들을 128의 batch size로 하는 in-batch negative를 설정해 학습한다. 우리는 지문, 질문 인코더를 NQ, TriviaQA, SQuAD와 같은 대형 데이터셋에 대해 40 epoch 까지 학습했고 dropout 0.1과 warm-up을 사용한 linear scheduling과 $10^{-5}$의 학습률을 사용하는 Adam을 사용했다.

    Retriever가 각각의 데이터셋에 학습할 때, 유연함을 가져야 하는 것은 분명히 좋지만, 전반적으로 잘 작동하는 단일 Retriver를 만드는 것도 역시 중요하다. 마지막으로 본 연구에서는 SQuAD를 제외한 모든 데이터셋에서부터 학습하는 다중 데이터셋을 Encoder에 학습한다. 또한 DPR에서는 전통적인 방법인 BM25와 선형결합을 통해 새로운 점수 매김 방식을 이용한 BM25+DPR의 결과를 제시한다. 특히 본 연구에서는 BM25와 DPR 각각을 기준으로 한 상위 2천개의 시작 setting을 구성하였다. 그리고 BM25+DPR의 경우 $BM25(q,p) + \lambda \cdot sim(q,p)$를 랭킹 함수로 사용해서 이들을 다시 평가했다. 이 때 $\lambda$는 1.1을 사용했으며 이는 dev set의 정확도를 기준으로 세팅했다.

    위의 표는 테스트셋에서 상위 20개와 상위 100개의 retriever의 정확도를 나타낸다. 이는 지문에서 정답을 포함하고 있는 비율로 측정했다. 단일 그리고 다중의 의미는 DPR이 개별 dataset을 학습했는가 혹은 SQuAD를 제외한 모든 dataset을 학습했는가의 차이가 있다.

    Main Results

    위의 표에서는 다섯개 QA 데이터셋에 대해 상위 k개의 정확도를 가지고 서로 다른 passage retrieval system을 비교한다. SQuAD를 제외한 모든 데이터셋에서 DPR은 BM25보다 좋다. k가 커질수록 성능 차이는 분명해지며 (78.4 vs 59.1 for top-20 accuracy) 다중 데이터셋으로 학습할 때는 데이터셋 중 가장 작은 TREC가 제일 좋은 성능을 냈다. NQ나 WQ는 아주 조금 성능이 올랐으나 TriviaQA는 성능이 약간 감소했다. 이 결과는 단일, 다중 데이터셋 세팅의 DPR과 BM25를 합치는 몇가지 경우에서 더 개선될 수 있다. 본 연구에서는 두 가지를 이유로 SQuAD에서 더 낮은 성능을 낸 것이라고 말한다. 첫 째, 검수자가 지문을 보고 질문을 작성했기 때문이다. 결과적으로 높은 어휘의 재사용이 질문과 지문 내에 있을 것이고 BM25가 더 유리하게 결과를 내놓을 수 있게 된다. 둘 째, 데이터는 500개 이상의 Wikipedia 기사를 가져왓는데, 사실 학습 데이터들은 Lee et al. (2019) 에서 주장한 것과 같이 극도로 편향되어 있다.

    Ablation Study on Model Training

    더 나아가 어떻게 모델의 설정들이 결과에 영향을 주는지 이해하기 위해 몇 가지 추가적인 실험을 수행했으며, 내용은 아래와 같다.

    Sample efficiency

    좋은 지문의 retriever 성능을 가지려면 얼마나 많은 train set이 필요한지 알아보자. 아래 그림은 상위 k개의 retriever 정확도를 각각 다른 학습 데이터셋의 수에 따라 보여주며 NQ의 dev set으로 측정한 결과이다.

    위의 그림에서 보여주는 것과 같이 단지 1000개의 학습 데이터셋만 학습하더라도 이미 BM25의 성능을 압도한다. 이는 일반적으로 사전학습된 모델을 사용한다면, 적은 수의 데이터셋으로 고품질의 retriever를 만들 수 있다는 것을 보여준다. train set의 수를 늘릴수록 정확도는 계속 상승했다.

    In-batch negative training

    NA dev셋에 대해서 서로 다른 학습 방법을 테스트하고 이 결과를 다음 표에 요약하였다.

    가장 위쪽 부분은 기본적으로 사용하는 1 of N 학습 세팅이다. 이 세팅은 한 배치에서 한 질문이 1개의 positive 지문과 n개의 negative 지문쌍으로 되어있다. 본 연구에서는 negative를 선택함에 있어 무작위로 고를지, BM25로 고를지, 또는 gold방법을 쓸 지는 k가 20보다 크다면 딱히 상관 없다는 것을 알았다.

    중간 부분은 negative training의 관한 부분이다. 비슷한 설정에서 in batch negative setting을 적용한 것이 안정적으로 성능을 높여주었다. gold와 in batch gold의 주된 차이는 negative passage가 같은 배치에서 오는가 혹은 전체 train set에서 오느냐의 차이다. negative sample을 새로 만들기 보다는 기존에 이미 존재하는 batch를 negative example로 재사용함으로써 효과적으로 in-batch negative 학습을 하는 것은 간단하며 메모리를 절약할 수 있는 방법이다. 이 방법은 더 많은 쌍을 만들고 학습 샘플 수를 늘려주게 되며, 이는 곧 좋은 성능으로 연결된다. 결과적으로 정확도는 배치사이즈가 클수록 증가하는 경향이 보인다.

    결국 본 연구에서는 in batch negative 학습을 좀 더 어려운 BM25로 뽑은 negative 지문으로 설정해보았다. 하지만, 이 지문들은 (in batch negative의 passage들과 달리) answer를 가지고 있지 않다. (BM25로 만들어진 negative example들은 오로지 gold passage를 더 잘 학습하기 위한 목적만을 가지고 있다. 이 것들은 answer가 없기 때문에 따로 이 친구들에 대한 positive를 찾을 필요가 없다.) 이런 추가적인 지문들이 모든 질문에 대해 사용되었을 때, BM25의 negative를 2개 준다고 해서 성능이 높아지지 않았고 하나정도만 주어도 안정적인 결과를 얻을 수 있었다.

    위의 표에서 서로 다른 학습 방법을 NQ 데이터셋에 대한 상위 k개의 retrieve 정확도를 가지고 측정하여 비교했다. #N은 negative sample의 개수이며, IB는 in batch training을 의미한다. G+BM25(1)과 G+BM24(2)에서 기존 Gold에서 negative sample을 각각의 질문을 기준으로 1개 또는 2개를 추가한 것을 의미한다.

    Impact of gold passages

    본 연구에서는 기존 dataset에 존재하는 gold contexts에 해당하는 지문들을 사용했다. NQ에서 우리의 실험은 distantly-supervised된 passage로 바꾸는 것은(BM25로 뽑은 높은 순위의 답을 가지고 있는 지문을 사용하여) 적은 영향력(top-k 정확도에 대해 1점이 낮아짐) 이 있었다.

    similarity and loss

    dot product이외에도 cosine similarity 유클리드 L2 distance는 분해 가능한 유사성 함수이기 때문에 일반적으로 사용된다. 본 연구에서는 이러한 대안을 테스트하고 L2 distance가 dot product와 유사한 성능을 내며, 두 가지 모두 cosine simi보다 우수하다는 것을 발견했다. 마찬가지 negative log likelihood 이외에도 순위를 매기는 일반적인 옵션은 질문에 대해 직접 긍정적인 구절과 부정적인 구절을 비교하는 triplet loss가 있다. 본 연구의 실험에서는 triplet loss를 사용하는 것이 겨로가에 큰 영향을 미치지 않는다는 것을 보여주었다.

    Cross-dataset generation

    Non-iid 설정을 하면, 성능이 얼마나 저하될지 즉, 추가 fine-tuning없이 다른 데이터셋에 직접 적용했을 때, 여전히 잘 일반화 될 수 있는지에 대해 테스트한다. 본 연구에서는 상위 20개 검색 정확도에서 최고 성능의 미세조정 모델(각각 WebQuestions와 TRC의 경우 각각 69.9/86.3과 75.0/89.1)에서 3-5점 손실을 기록하면서도 BM25의 기준선 (55.0/70.9)를 크게 능가한다는 것을 발견했다.

    Qualitative Analysis

    DPR은 일반적으로 BM25보다 높은 성능을 갖지만, 이 두 가지 방법으로 검색된 passage는 질적으로 다르다. BM25와 같은 용어 일치의 방법은 매우 선택적인 키워드와 구문에 민감한 반면, DPR은 어휘 변형 또는 의미 관계를 더 잘 포착한다.

    Run-time Efficiency

    DPR은 FAISS 메모리 내 인덱스를 사용하면 초당 995개의 질문을 처리하여 질문당 상위 100개의 지문을 반환하는데 매우 효율적이다. 하지만, BM25는 파일 인덱스를 사용하여 초당 23.7개의 질문을 처리할 수 있다. 반면에 인덱스를 구축하는데 필요한 시간은 DPR이 훨씬 길다.

    Experiments: Question Answering

    이 장에서는 서로 다른 passage retriever가 최종 QA 정확도에 어떤 영향을 미치는지 실험한다.

    End-to-End QA system

    우리는 다른 retriever system을 직접 연결할 수 있는 end-to-end QA 시스템을 구현한다. retriever 외에도 QA 시스템은 질문에 대한 답을 출력하는 neural reader로 구성되어 있다. 검색된 상위 K개의 지문 (실험에서 최대 100개)이 주어지면, reader는 각 지문에 지문 선택 점수를 할당한다.

    추가적으로 각 지문에서 답변 범위를 추출하고 범위 점수를 할당한다. 지문 선택 점수가 가장 높은 지문에서 가장 최적의 범위가 최종 정답으로 선택된다. 지문 선택 모델은 질문과 지문 사이의 cross attention을 통해 reranker 역할을 담당한다.

    분해할 수 없는 특성으로 인해 대규모 말뭉치에서 관련 구절을 검색하는 데 cross attention이 실현 가능하지는 않지만, 다음 식과 같은 이중 인코더 모델 $sim(q, p)=E_{Q}(q)^{T}E_{P}(p)$보다 용량이 더 크다. 

    소수의 검색된 retriever 후보들 중에서 passage를 선택하는 데 적용하는 것이 잘 작동하는 연구가 있었으며(Wang et al., 2019, 2018; Line et al)., 본 연구에서는 다른 retriever 검색기 시스템을 직접 연결할 수 있는 end-to-end QA 시스템을 구현한다.

    구체적으로 $P_{i} \in R L\times h (1 \le i \le k)$를 $i$ 번째 passage에 대한 BERT representation이라고 하자. 여기서 $L$은 passage의 최대 길이이고 $h$는 hidden state이다. 토큰이 응답 범위의 시작/끝 위치가 될 확률과 선택되는 passage는 다음과 같이 정의된다. 

    $$ P_{start, i}(s) = softmax(P_{i} w_{start})_{s} , \\ P_{end,i}(t) = softmax(P_{i} w_{end})_{t}, \\ P_{selected}(i) = softmax(\hat{P}^{T}w_{selected})_{i}\\ where \hat{P}=[P_{1}^{[CLS]}, \dots, P_{k}^{[CLS]}] \in R^{h \times k} and /, w_{start}, w_{end}, w_{selected} \in R^{h} : learnable \, vector$$

    본 연구에서는 $i$번 째 지문의 $s$번째에서 $t$번째 단어의 span 점수를 $P_{start,i}(s) \times P_{end, i}(t)$과 같이 $i$번 째 passage에서 구할 수 있으며, $i$번 째 passage가 선택될 점수를 $P_{selected}(i)$와 같이 나타낼 수 있다. 

     

    훈련 중에, 본 연구에서는 각 질문에 대해 retriever system(BM25 or DPR)이 반환한 상위 100개의 구절에서 하나의 positive passage와 $\tilde{m}-1$개의 negative passage를 샘플링한다. $\tilde{m}$은 hyperparamete이며, 본 연구에서는 24로 설정했다. 학습의 목적함수는 positive passage의 모든 정답의 spans의 marginal log-likelihood를 최대화 하는 것이다.

    대규모(NQ, TriviaQA, SQuAD) 데이터셋에는 16, 소규모(TRC, WQ) 데이터셋에는 4개의 배치 크기를 사용하고 development set 에서 k를 튜닝한다. 다른 데이터셋 사용이 허용되는 Multiple setting에서는 소규모 데이터셋에 대한 실험의 경우 자연스러운 Question에 대해 훈련된 reader를 fine-tuning한다. 모든 실험에서는 8개의 32GB GPU에서 수행되었다.

    Results

    SQuAD 데이터를 제외하고 DPR이 들어간 모델들의 성능이 더욱 좋았다. 

     

    긴 글을 읽어주셔서 감사합니다. 저는 검색 시스템이 어떻게 돌아는지가 궁금했었는데, 이번에 딥러닝 기반에 검색 시스템이 이렇게도 돌아가는 구나를 느꼈던 논문이었습니다. 이 논문을 읽고 다시 한 번 pretrained model이 얼마나 중요한 지를 깨달았고 powerful한 pretrained model을 구축해 놓으면, fine-tuning을 통해 여러 task에도 우수한 성능으로 적용할 수 있겠다라는 생각이 들었습니다.

Designed by Tistory.