positive sample 1개 + BM25로 뽑은 negative sample 1개 + batch 내에서 Gold로 뽑은 negative samples $n-2$개를 사용한다.
metric learning에서 negative samples을 고르는 방법은 representation의 quality에 큰 영향을 미친다.
negative sampling 방법 후보들
Random
BM25: question과 token overlap이 제일 적은 passages를 사용
Gold: training sample 내에 다른 pair의 positive sample들을 사용
Encoder는 2개의 BERT를 사용하며, inference 시에는 FAISS (open source for similarity search & clustering of dense vectors)를 사용한다. ~Encoder weights를 공유하는 Siamese 구조 아님~
학습
retriever는 각 데이터셋 별로 학습한 것과 멀티 데이터셋에 대해 모두 학습한 것 중 멀티 데이터셋을 사용한다.
Top 2000개의 passages와 스코어를 각각 BM25와 DPR로 뽑고, $BM25(q,p) + \lambda * sim(q,p)$로 다시 정렬한다.
open-domain QA에서 retrieval & refine 구조를 차용할 때, retrieval의 recall뿐만 아니라, precision도 실제 E2E QA 정확도에 영향을 끼친다.
E2E QA System(Retriever + Re-ranker)의 Re-ranker
Retriever가 million 단위의 문서 중 일부 문서를 반환하면, re-ranker가 이 중 passages에서 spanning을 통해 score를 재산정함. dual-encoder 구조보다 느리지만 성능이 좋은 cross-encoder 방식을 차용함
성능 비교 시 Cross-encoder > (Poly-encoder 등의 hybrid 방식) > Bi-encoder 순으로 주로 묘사되곤 한다.
2020년에 나온 논문인데, Dialogue Retrieval 쪽에서는 2021년까지도 Cross-encoder만 사용했다. 대화는 input context가 여러 개의 발화로 이루어져 있고, 각각의 candidate response와의 어텐션이 중요해서 Bi-encoder로는 충분한 학습이 안되어서 일까?
sparse vector가 아닌 dense vector를 검색에 이용한 것, 혹은 Bi-encoder(or Dual-encoder, or 2-Tower model)의 구조를 사용한 것 자체가 novel approach는 아닌 것 같다. 아마 contribution은 이 모두를 결합해 Open-domain QA를 할 수 있는 프레임워크를 제시했고, 그게 dense vector representation에는 많은 양의 데이터가 필요하다는 기존 인식과 다르게 1000 examples의 학습만으로 기존(BM25 기반)보다 높은 성능이었다는 것이 주효했던 것 같다.
Problem statement
Baseline
Data details
Approach
BM25
로 뽑은 negative sample 1개 + batch 내에서Gold
로 뽑은 negative samples $n-2$개를 사용한다.Random
BM25
: question과 token overlap이 제일 적은 passages를 사용Gold
: training sample 내에 다른 pair의 positive sample들을 사용Evaluation
Gold
일 때, batch size가 클 때 더 성능이 좋았으며, 추가로BM25
를 hard negative로 넣을 경우 성능이 개선되었다.Ablation & Tricks
Limitations
참고 & 개인적인 생각