Search
🎯

[논문리뷰] Dense Passage Retrieval for Open-Domain Question Answering

Created
3/7/2021, 12:26:24 PM
Tags
QA
💡
Dense Retrieval을 기반으로 하는 Open-Domain QA

소개

Open-Domain Question Answering(QA)는 엄청나게 많은 정보들을 포함하고 있는 대량의 문서(예: 위키피디아)들로부터 주어진 질문에 대한 답변을 찾는 문제입니다. 물론 주어진 질문이 어떤 도메인에 해당되는 질문인지, 어떤 키워드인지에 대한 힌트는 전혀 주어지지 않죠. 이러한 문제를 풀기 위해서 딥러닝이 등장하기 전에는 질의 분석(question analysis), 관련 문서 검색(document retrieval), 관련 문단 검색(passage retrieval), 정답 검색(answer extraction), 정답 검증(answer verification)과 같은 복잡한 과정을 거쳐서 질의에 대한 답변을 도출했습니다. 하지만 딥러닝의 발전이 급격하게 이루어지면서 open-domain QA는 다음과 같은 두개의 스텝(two-stage)으로 이루어진 프레임워크로 간소화 되었습니다. (1) 주어진 질의에 대한 답변을 포함하고 있는 문단(passage)를 찾는 context retrieval 과정 (2) retrieve 된 문단에서 실제 답변을 찾는 reading 과정.
하지만 여러 연구에서 QA의 본질적인 성능을 높이기 위해서는 관련 문서를 추리는 retrieval 모델의 성능을 향상시켜야 함과, 또한 여러개의 context를 고려할 수 있는 reading 모델을 만드는 것이 필요함을 주장합니다. 기존의 주된 연구들은 질의와 관련된 문서를 추리기 위해서 TF-IDF uni-gram/bi-gram matching이나 BM25같은 고차원의 sparse representation을 사용하였습니다. 위에서 설명드린 방법들은 inverted index를 이용해서 빠른 검색이 가능하고, 질의에 포함되어 있는 키워드를 기반으로 탐색을 할 수 있는 장점이 있습니다.
이와 다르게 context의 semantic한 정보를 encoding하여 dense latent vector로 표현하는 방법은 기존의 spare retrieval을 보완하는 역할을 합니다. 질의와 관련있는 문서가 아예 형태적(lexical)으로 다르게 생겼어도 의미적으로 유사성을 갖는다면 dense retrieval은 이를 매칭시킬 수 있는 능력을 갖고 있기 때문입니다. 예를 들어 “Who is the bad guy in lord of the king”이라는 질의가 주어졌을 때, 실제 가장 관련있는 문서는 “Sala Baker is an actor and stuntman from New Zealand. He is best known for portraying the villain Sauron in the Lord of the Rings…” 일것입니다. 하지만 질의와 관련있는 문서가 형태적으로 곂치는 부분이 적기 떄문에 sparse retrieval은 예시의 문서를 관련 문서로 판단할 수 없습니다. 반대로 dense retrieval은 “bad guy”와 “villain”이 유사한 의미임을 semantic하게 판단할 수 있기 때문에, 위 예시 문서를 관련 문서로 판단할 수 있는 능력을 갖는 이점을 갖고 있습니다.
본 논문에서는 Open-Domain QA의 성능을 향상시키기 위해 기존의 information retrieval(IR)방식의 모듈을 dense retrieval(DR)로 바꾸어 사용하는 방법을 제안합니다. 특히 dual-encoder 구조를 이용해서 question과 document의 dense representation을 어떻게 효율적으로 만들 것인지에 대한 주제를 다룹니다. 최근의 연구들은(Lee et al., 2019Guu et al., 2020Seo et al. 2019) DR분야에 있어서 많은 발전들을 이루었습니다. 하지만 앞의 2개의 연구(Lee et al., 2019, Guu et al., 2020)는 충분한 성능을 내기 위해서는 추가적인 사전학습이 필요하다는 한계점이 있고, Seo et al. 2019는 sparse representation 을 사용하지 않아도 됨을 강조하였지만 오히려 성능의 하락을 보고하였습니다. 저자들은 pretraining 없이 작은 데이터로 fine-tuning하는 것 만으로도 충분한 성능을 만들 수 있는 방법을 제안합니다.

Deep Passage Retrieval (DPR)

소개의 내용이 조금 길었는데, 사실 본 논문에서 접근하는 방법은 깔끔합니다. 사전학습된 BERT로 이루어진 두개의 Encoder를 사용하여서 질의와 문단을 encoding하고, 질의-문단 간의 상관관계점수는 다음과 같이 dot-product 로 계산합니다. 실제 inference시에는 주어진 질의와 후보 문서들간의 score를 계산해서 top-k개의 passage 를 retrieve 하는 방식을 사용합니다. 하지만 문서의 크기가 엄청나게 크다면 추론 시간이 굉장히 오래 걸리기 때문에 ANN 라이브러리인 FAISS를 사용해서 빠르게 추론을 수행한다고 합니다.
sim(q,p)=EQ(q)TEP(p)sim(q, p) = E_{Q}(q)^{T} E_{P}(p)
objective 역시 우리가 지금까지 자주 접했던 방법으로 학습이 되는데, 주어진 후보들의 모든 스코어 중에서 실제로 관련이 있는 문서(golden or positive sample)가 제일 높은 값을 갖도록 negative log-likelihood 로 학습을 수행하게 됩니다. 구체적으로는 아래와 같은 수식으로 표현할 수 있고 p+가 정답을, p−는 negative sample을 의미합니다.
이때 negative sample을 어떻게 만드는 것이 학습에 가장 중요한 요소일 것입니다. 저자는 negative sample을 만드는 총 3가지 방법을 실험해 보았습니다. (1) Random: 코퍼스 내의 random한 passage를 뽑는 방법 (2) BM25: 실제 정답을 포함하고 있지는 않지만 코퍼스 내에서 BM25 기준으로 top-k의 문서를 사용하는 방법 (3) Gold: 학습셋 내의 다른 질의의 positive passage. 사실 Gold와 Random이 비슷해 보이는데, 차이점이라고 하면 Random의 space가 조금 더 넓다고 할 수 있겠습니다. 또한 학습시에 variation으로 in-batch negative 역시 variation으로 추가되었습니다.
결과적으로 보았을 때 in-batch negative sampling을 통해 연산에 필요한 메모리 양을 줄이고, 이를 통해 batch-size 를 키운 경우에 성능이 향상되었음을 보고하였습니다. 특히 BM25를 통해서 뽑은 negative sample을 1,2개 정도 추가하는 경우에 가장 높은 성능을 보였습니다. 이를 통해 얻을 수 있는 결론은 random만으로 학습 시키는 것도 중요하지만, 좀 어려운 sample도 답변 후보로 넣어주는 것이 긍정적인 효과를 이끌어 낸다는 것입니다.
하지만 이해가 되지 않는 부분이 있습니다. 아래의 GOLD와 In-batch Negative의 차이는 negative를 학습셋 또는 배치내에서 random하게 뽑느냐의 차이로 볼 수 있습니다. 그런데 GOLD든 In-batch negative이던 랜덤하게 negative를 뽑은 것일텐데 같은 batch-size 에서 Top-5지표 기준 약 9%의 성능 차이가 많이 나는 부분은 상식적으로 이해가 잘 되지 않습니다.

실험 & 결과

학습 및 평가에 사용된 데이터셋은 여러 QA테스크들을 종합적으로 사용하였습니다. 아래 표를 참조하시면 되겠습니다.
실험은 크게 두가지로 이루어져 있습니다. 첫째는 retrieval을 얼마나 잘하냐를 평가하는 실험이고 두번째는 리트리벌 모델을 제안하는 방법으로 변경했을 때 우리가 최종적으로 풀고자 하는 QA테스크에서 얼마나 성능이 좋았는지를 평가하는 것입니다.
저자들의 예상대로, 기존의 제안하는 모델이 BM25기반의 방법보다 retrieval에서 우수한 성능을 보임을 확인할 수 있었습니다. 특히 BM25+DPR을 사용하는 경우가 가장 성능이 좋았는데, 이떄 두 방법을 동시에 사용하는 방법으로는 BM25로 top-2000개의 후보를 추리고 이를 BM25(q,p) + λ⋅sim(q,p) 식을 이용해서 reranking 을 수행하여 최종 결과를 도출합니다. 이때 λ는 1.1을 사용하였다고 합니다.
최종 QA테스크에서의 성능을 평가하는 실험에서도 기존의 베이스라인들을 제치고 제안하는 방법이 더 좋은 성능을 보임을 확인할 수 있었습니다. 특히 최근에 제안된 REALM 보다도 우수한 성능을 보여주었습니다.

결론

두개의 BERT encoder로 이루어진 bi-encoder 구조를 fine-tuning 만 해도 성능이 잘 나온다
Random에 BM25를 negative sample로 추가한것이 성능 향상에 크게 기여했다
retrieval과 최종 QA성능에서 모두 성능 향상을 확인할 수 있었다.