Dense Passage Retrieval for Open Domain Question Answering, emnlp2020
Vladimir Karpukhin et al., Dense Passage Retrieval for Open-Domain Question Answering, emnlp2020
- 저자들이 facebook, washington 대학교, princeton 대학으로 다양함
- 1, 2 저자는 facebook 소속
요약
- 소규모 학습 데이터로 학습한 nerual ranking model이 BM25보다 좋은 결과를 보임
- neural ranking model로는 dual encoder (= bi-encoder) 방식을 사용함
- 5가지 평가 데이터에서 평가함 (SQuAD 데이터를 제외한 4개의 데이터에서 bm25보다 결과가 좋음)
- 제안하는 방법은 간단한데 결과는 잘 나옴. 왜 잘나오는 것인지?
- In-batch negative와 1개의 BM25 negative를 함께 사용하면 문단 검색이 잘 됨
- in-batch negative가 negative를 미리 만들어 두고 사용하는 것보다 결과가 좋음
- in-batch negative에서 batch size를 크게 할수록 결과가 좋음
- 다만, 1개의 BM25 negative를 함께 사용하면, batch size를 늘려도 효과가 별로 없음.
- 학습데이터가 적으면, 다른 평가데이터에서 사용하는 학습데이터를 함께 이용하면 결과가 더 좋아짐
- 학습 데이터에 5만개 이상의 질의가 있는 경우에는, 다른 평가데이터의 학습 데이터를 추가해도 품질 향상폭이 작음 (Natural Questions, TriviaQA, SQuAD)
- 학습 데이터에 2500개 이내의 질의가 있는 경우에는, 다른 평가데이터의 학습 데이터를 추가하면 품질 향상폭이 큼 (WebQuestions, TREC)
Introduction
- open-domain question answering (QA)
- 논문에서는 대량의 문서들에서 factoid question의 답을 찾아내는 작업으로 정의함
- open-domain question answering의 최근 접근 방법: 2단계 접근
- 첫번째 단계 retriever
- 답을 포함하는 문단을 검색하는 단계
- 두번째 단계 reader
- 검색된 문단에서 답을 찾아내는 단계
- QA의 retriever에서 dense retrieval이 BM25에 비해서 가지는 좋은점
- 동일한 의미이지만, 서로 다르게 표현된 경우에도 검색이 가능하다.
- 학습이 가능하다.
- QA의 retriever에서 dense retrieval이 BM25에 비해서 가졌던 문제점. 혹은 문제라고 인식되었던 것들.
- dense retrieval을 학습하기 위해서는 많은 학습데이터가 필요하다.
- 논문에서 많은 학습데이터가 없어도 됨을 보인다.
- 2019년의 ORQA 전에는 BM25가 dense retrieval보다 더 좋았다.
- ORQA는 inverse cloze task (ICT) pretraining 방법 사용
- ORQA는 fine-tuning시에 question과 answer를 함께 이용
- 논문의 contributions
- 이미 만들어진 (질의, 문단)쌍의 학습 데이터만을 fine-tuning에 이용해도, BM25보다 좋은 결과를 보일 수 있다.
- ORQA와 같은 추가적인 pretraining 과정을 거치지 않는다.
- open-domain QA에서 retriever의 품질이 좋으면, end-to-end QA system의 품질이 향상된다.
Background
- 본 논문에서는 factoid question을 대상으로 한다.
- 본 논문에서는 extractive QA 이다. 즉, 문서에서 특정 부분을 추출하면 답이 되는 형태이다.
- 문서와 다르게 표현된 정답은 없음을 의미한다.
- 본 논문에서는 문서를 동일한 길이의 문단으로 분리해서 사용한다.
Dense Passage Retriever (DPR)
- dense encoder: 주어진 텍스트를 d-차원의 실수 벡터로 만든다.
- 질의용 dense encoder와 문단용 dense encoder를 각각 만들어서 사용한다.
- dense encoder는 BERT를 이용하고, [CLS] 토큰의 임베딩을 이용한다. 임베딩은 768차원 벡터이다.
- 질의와 문단간의 유사도는 질의 embedding과 문단 embedding의 내적 (inner product)이다.
- L2 distance, cosine similarity 등도 사용할 수 있다. 논문 실험 결과에서 이들간의 품질 차이는 별로 없다.
- 학습시에는 (질의, positive passage, negative passage 1, negative passage 2, ..., negative passage n)을 입력받는다.
- 아래와 같이 negative log likelihood loss를 이용한다.
- $q_i$는 $i$번째 질의를 의미한다.
- $p_i^+$는 $i$ 번째 질의의 positive passage를 의미한다.
- $p_{i,n}^-$는 $i$ 번째 질의의 $n$번째 negative passage를 의미한다.
$$L(q_i, p_i^+, p_{i,1}^-, ..., p_{i,n}^-) = -log \frac{e^{sim(q_i, p_i^+)}} {e^{sim(q_i, p_i^+)} + \sum_{j=1}^n e^{sim(q_i, p_{i,j}^-)}} $$
- negative passage를 선정하는 3가지 방법
- random: 대량의 문단에서 대부분의 문단은 질의와 무관하므로, 무작위 추출해서 negative로 간주한다.
- BM25: bm25로 검색된 상위 문단 중에서 정답이 없는 문단을 negative로 간주한다.
- Gold: 다른 질의의 positive 문단을 negative로 간주한다.
- 실험적으로 가장 좋은 negative
- mini-batch에 있는 Gold와 BM25로 1개 negative를 추가한 경우
실험 환경
- 영어 wikipedia 데이터를 이용함.
- DrQA의 전처리 코드를 이용해서 위키피디아를 clensing하고, 텍스트 부분만 추출
- wikipedia 문서를 100개 단어 단위로 쪼개서 문단을 구성함.
- 문단이 겹치치 않도록 disjoint하게 문단을 구성함
- 이렇게 하면, 2100만개의 문단이 생성됨 (21,015,324개 문단)
- 문단은 문서 제목을 붙여서 사용하고, [SEP] 토큰으로 제목과 문단을 구분함.
- QA datasets
- Natural questions (NQ): 구글 검색 질의를 이용하고, 문서는 위키피디아를 사용함
- TriviaQA: trivia 질의를 이용하고, 문서는 web을 이용함
- WebQuestions (WQ): google suggest api로 질의 정하고, 문서는 Freebase 이용함
- CuratedTREC
- SQuAD v1.1: wikipedia 문서를 보고 질의를 만듬. 그래서 문서와 질의간의 텀이 일치하는 경우가 종종 있는 듯. 그리고 그래서 BM25가 잘 되는 듯.
- positive passage
- TREC, WebQuestions, TriviaQA는 정답 문단이 아닌, 정답을 제공함. 그래서 positive passage를 추출해야 함. BM25로 검색된 문단 중에서 정답이 있는 문서를 positive 문단으로 사용
문단 검색 실험 결과
- DPR model
- in-batch negative 사용
- batch size는 128
- 질의당 하나의 BM25 negative 문단을 추가함
- large datasets (NQ, TriviaQA, SQuAD)는 40 epoch 학습
- small datasets (TREC, WQ)는 100 epoch 학습
- SQuAD를 제외하고, DPR이 BM25보다 더 좋은 결과를 보임
- SQuAD에서 안 좋은 결과가 나온 이유 (논문 저자들의 추측)
- SQuAD는 정답 문단를 보면서 질의를 작성해서, 질의와 정답 문단간의 동일 텀이 많이 있음
- 500여개의 소규모 위키 문서로만 구성되어 있어서, bias가 심한거 같음.
- 5가지 평가데이터의 학습데이터 중에서 4개를 함께 사용하는 경우가 1개의 학습데이터만 사용하는 경우보다 품질이 좋음
- 논문에서 SQuAD의 학습데이터는 함께 사용하지 않음
- 학습데이터가 작은 WebQuestions과 TREC에서 품질 향상폭이 큼
- 학습 데이터 개수에 따른 품질 (Natural Questions 데이터의 dev set에서 평가)
- 1,000개의 학습 데이터만 있어도 BM25보다 좋은 결과를 보임. (너무 적은 듯 함)
- 학습데이터를 더 많이 사용할수록 결과가 더 좋아짐
- In-batch negative training
- 각 질의별로 negative를 미리 만들어두는 방법보다는 in-batch negative를 이용하는 것이 더 좋은 결과를 보임
- 학습시에 mini-batch를 shuffle 형식으로 구성한다면, in-batch negative 방식에서 더 다양한 negative를 참조할 수 있음.
- mini-batch에는 (질의, positive passage)들이 있음. Gold 방식으로 negative를 선정함. 즉, 다른 질의의 positive 문단을 negative로 사용함.
- in-batch negative와 1개의 BM25 negative를 함께 사용하는 것이 가장 좋은 결과를 보임
QA 실험 결과
- End-to-End QA system
- retriever로 검색된 상위 100개의 문단을 사용함
- reader는 상위 100개 문단의 중요도를 판단하고, 문단에서 정답 영역을 찾음
- 문단의 중요도는 cross-encoder 방식을 사용하는 듯. (논문에서는 cross-attention을 이용하는 것으로 기술되어 있음)
- 학습 데이터
- 1개의 positive 문단과 23개의 negative 문단을 이용
- 100개의 문단 중에서 23개의 negative 문단을 선택
- 문단 표현 1) 문단에서 정답 영역을 찾는데 사용
- 문단을 구성하는 각 토큰의 임베딩으로 문단 표현
- 즉, 문단은 matrix로 표현되고, $i$번재 문단 $P_i$는 $P_i \in R^{L \times h}$로 표현
- $L$는 문단에 있는 토큰 개수
- $h$는 토큰 임베딩 벡터의 dimension
- BERT를 이용함.
- 문단 표현 2) 문단에 정답이 있을 확률을 찾는데 사용
- BERT의 [CLS] 임베딩을 문단 임베딩으로 사용
- k개의 문단들 $\hat{P}$는 다음과 같이 표현함
- $h$는 문단 임베딩의 dimension
- $k$는 각 질의에서 정답을 찾기 위해서 사용하는 k개의 문단을 의미함
$$\hat{P} = [P_1^{[CLS]}, ..., P_k^{[CLS]}] \in R^{h \times k}$$
- 문단 표현 1과 문단 표현 2에서 하나의 BERT를 이용해서 둘다 표현할지도. (추측)
- $i$번째 문단의 $s$ 번째 단어가 정답 영역의 시작이 될 확률
- $i$번째 문단의 $t$ 번째 단어가 정답 영역의 끝이 될 확률
$$P_{end, i}(t) = softmax(P_i w_{end})_t$$
- $i$번째 문단이 정답이 있는 문단으로 선택될 확률
$$P_{selected}(i) = softmax(\hat{P}^T w_{selected})_i$$
- 학습시에 정답 영역을 찾기 위한 loss와 문단이 정답이 될 loss를 함께 이용함
- batch size
- 데이터가 큰 NQ, TriviaQA, SQuAD에서는 16을 사용
- 데이터가 작은 TREC, WQ에서는 4를 사용
- 실험 결과
- BM25보다 DPR로 문단 검색한 경우의 QA 결과가 더 좋음.
- 단, SQuAD에서는 BM25의 결과가 더 좋음
- 학습 데이터가 작은 경우, 다른 평가 데이터의 학습 데이터를 함께 사용하면 품질 향상이 있음 (WebQuestions, TREC)
댓글