-
논문 리뷰) DPR : Dense Passage Retrieval for Open-Domain Question AnsweringAI 논문 리뷰 2024. 5. 27. 20:04
DPR은 Dense Vector 검색 방식에서 실제로 많이 쓰이는 있는 방법이다.
검색어(질문)인 Query들과 검색 대상(문서)이 되는 Passage들 중에서
서로 관련이 있는 Query와 Passage끼리 높은 유사도(내적 값)가 나올수 있도록 모델을 학습한 것이 주요 컨셉이다.
[검색 방식에 대한 참고 자료]
-일반적인 Ensemble Retrieval의 흐름
검색에는 크게 3가지 방법론이 있다.- 키워드 빈도 검색
- Dense 벡터 검색
- Graph 기반 검색
- 빈도 기반 방식은 유의어를 구분하지 못하고 문장의 맥락을 이해하지 못한다는 근본적 한계가 있지만,
BM25는 빠른 계산, 학습이 필요없는 이점, 준수한 성능 등을 이유로 실제 서비스에 많이 활용되고 있다
- Dense 벡터 기준으로 SOTA는 당연히 LLM 기반 임베딩 모델이다.그러나, 큰 리소스가 필요하고 높은 차원수의 벡터를 요구한다.
또한 학습에 의존하므로, 신규 키워드에 대해 성능이 떨어지는 단점이 있다.(그러나, 이를 대량의 데이터로 커버)
- Graph 자체는 오래 사용되어왔지만, 검색에 적용하는 것은 신생에 가깝다.
어떤 Graph DB 형태가 좋은지 그 실용성을 체크해봐야한다.
현재로서는 1번과 2번을 결합하여 활용하는게 일반적이다.(상호 간의 단점을 커버).
[1. Introduction]
dense vector 기반의 검색은 유의어 검색이 가능하다.
그러나, BM25/TF-IDF 방식의 키워드 기반은 그렇지 못하다.
(따라서 dense vector 기반의 높은 검색 성능이 필요하다)
일반적으로 좋은 dense vector를 표현하기 위해서는 많은 양의 question과 context 쌍의 label 데이터가 필요하다.
그런 이유로, ORQA가 나오기 전까지는 TF-IDF/BM25처럼 키워드 빈도 기반의 검색 방식의 성능이 더 좋았다.
여기서 ORQA란, 문장 내의 일부 요소를 마스킹하고 이를 예측하는 ICT 방식을 제안한 것이다.
그러나, ORQA에도 2가지 약점이 있다.
1-1. ICT pre-training의 경우, 너무 많은 계산량을 필요로 한다
1-2. 일반적인 문장이, 질문을 대체할 수 있는지에 대해 clear하지 않다.
(ORQA는 문서에서 일부를 발췌하여, 그 text를 그대로 질문으로써 활용하므로)
2. context encoder가 question-answer pair를 사용하여 fine-tune 된 것이 아니기에,
해당 encoder를 이용하여 표현되는 representation은 sub-optimal 하다
(ORQA는 Question 인코더와 Reader 모델만 파인튜닝으로 가중치 업데이트함)
본 논문에서는
"적은 수의 질문/문서 쌍만으로 더 좋은 dense embedding model을 구현할수 있을까?"
라는 질문에 답하고자 연구하였다.
따라서, BERT와 Dual-Encoder 구조를 활용하여,
적은 수의 question-passage pair만을 가지고 학습을 진행하는 것에 초점을 두었다.
이를 통해 나온 우리의 최종 솔루션은 아주 심플하다.
바로 Question 벡터와 Passage(문서) 벡터 간의 내적 값을 최대화하도록,
임베딩을 최적화하는 것이다.
본 연구의 contribution은 아래와 같다
1. Additional pre-training을 거치지 않고 question encoder와 passage encoder를
fine-tuning 시키기만 한 retriever로 BM25의 성능을 능가함을 보임
2. 높은 retriever의 성능이 end-to-end QA system의 높은 성능으로 전환된다는 것을 보임
[3. Dense Passage Retrieval]
우리는 검색기 성능 향상에 초점을 맞추어 연구하였다.
코사인 유사도도 많이 쓰이지만, 더 심플한 내적 방식을 선택하였고, 이를 통해 검색 성능을 향상하였다.
Query, Passage 각각 독립적인 BERT를 활용했으며, [CLS]를 임베딩으로 활용하였다.
Inference시, Index 방식은 FAISS를 사용하였다.
Training을 위한 negative Passage는 다음과 같이 종류로 구분지었다.
1. Random : corpus에서 랜덤으로 선택
2. BM25 : question에 대한 정답을 포함하고 있지 않으면서
BM25 방식으로 question과 높은 유사도를 가지고 있는 passage를 선택
3. Gold : training set에서 나타난 다른 질문에 대한 positive passage를 선택.
Best model은 같은 batch 안에서의 Gold Passage와 BM25 Passge를 negative Passage로 활용했을 때였다.
같은 batch 내에서 gold passage를 negative passage로서 활용하는 것은
계산적인 효율뿐만 아니라 좋은 성능을 내는데 도움이 된다. 고 밝혔다.[4.2 QA Datasets]
훈련에 활용된 data들은 다음과 같다. (여기는 참고 사항으로 봐도 무방하다)
[ Natural Questions ]
구글에 입력된 real query에 대해 long / short / others 타입의 QA
- Open-domain QA 테스트를 위해 질문만 취하고,
답변을 찾을 수 있는 문단 정보는 삭제하는 방식으로 실험 진행
- long answer type의 경우 extractive snippet이라고 판단, 제거하고 실험
[ TriviaQA ]
웹에서 나온 쿼리-답변 쌍에 대한 데이터 (real-world x)
[ WebQuestions ]
Google Suggest API에서 샘플링된 질문을 포함한 QA 데이터셋
- 답변은 대규모 지식그래프인 Freebase에 대해 annotation되어 있음.
- 개체에 대한 string representation만 사용해 open-domain QA로 테스팅
[ CuratedTrec ]
TREC QA에서 파생한 데이터지만, 데이터 소스는 실제 쿼리 (MSNSearch 등)에서 비롯함
- 즉, 사용자들이 문서를 보지 않고 던진 질문이라는 점에서 real world 데이터셋에 가까움
[ SQuAD ]
질문자가 문단을 보고 답변 영역과 그에 대한 자연어 질문을 만들어낸 데이터셋 (real-world x)
TREC, WebQuestions, TriviaQA dataset에는 passage가 주어지지 않고,
question과 answer만 제공된다.
따라서 BM25를 통해 answer가 포함된 highest-ranked passage를
positive passage로서 활용하였다.
[5. Experiment For Passage Retrieval (result / ablation Study / etc)]
DPR과 BM25에서 각각 top-2000 passage를 retrieve한 다음,
해당 수식을 이용하여 rerank하여 최종적으로 passage를 산출하였다. 이때, 람다는 1.1로 하였다.
Table2를 보면, SQuAD를 제외하고는 DPR의 성능이 BM25보다 뛰어나는 것을 확인할 수 있다.
SQuAD에서 낮은 점수를 보인 이유는 다음과 같다.
데이터셋을 제작할 때 생긴 bias 때문이라고 생각해볼 수 있는데,
SQuAD 데이터셋은 주어진 passage에서 파생된 질문을 생성하는 과정을 거친다.
이는 질문이 주어진 passage에 의존적으로 생성될 가능성이 높다는 것을 의미한다.
결과적으로 질문 토큰들이 passage에 포함될 확률이 높아진다.
이러한 편향으로 인해 BM25 모델이 DPR보다 더 좋은 성능을 낼 수 있다고 추론할 수 있다.
Figure 1처럼,
1000개의 training example 만으로도 DPR이 BM25의 성능을 능가함을 확인할 수 있다
10000개부터는 높은 성능을 보인다.
Table3을 보면, batch size가 늘어날수록 전체 negative passage의 개수도 늘어난다는 것을 알 수 있다.
따라서 batch size, 즉 negative example의 개수를 늘릴수록 성능 향상이 이루어지는 것도 확인할 수 있다.
Hard negative passage로 BM25를 활용했을때도, 역시 성능 향상을 이루게 했다.
[6. Experiment For QA System]
이제 End-to-End QA System을 구현하기 위해 Retriever에 Reader기를 붙여주었다.
Retriever로부터 주어진 top-k passage들에 대하여 reader model이 최종 answer를 도출해낸다.
각 passage로부터 answer span을 추출하고 span score를 매긴다.
그리고 highest passage selection score를 가진 best span을 최종 정답으로 선택된다.
Table 4와 같이 SQuAD 데이터셋을 제외하고,
모든 데이터셋에서 답변 성능이 우수함을 확인할 수 있었다.728x90'AI 논문 리뷰' 카테고리의 다른 글
논문 리뷰) From Sparse to Dense_GPT-4 Summarization with Chain of Density Prompting (0) 2024.06.02 논문 리뷰) Extracting Interpretable Features from Claude 3 (0) 2024.05.28 논문 리뷰) Mixtral of Experts (Mixtral 8x7B) (0) 2024.05.25 논문 리뷰) Mistral 7B (0) 2024.05.25 논문 리뷰) DiffCSE - Difference-based Contrastive Learning for Sentence Embeddings (0) 2024.05.23