보통 답변을 위해서,
(1) context retrieval가 질문에 대한 답이 포함된 몇 가지 문서를 선택
(2) machine reader가 1에서 검색된 문맥을 검사하여 정답 도출
2-stage로 이루어짐
"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.”
라는 문맥이 필요하다고 가정해보자
기존의 단어 기반 시스템은 bad guy와 villain의 유사성을 찾기 어렵지만, dense retriaval는 두 단어를 더 잘 매칭할 수 있음
학습의 목표는 질문과 관련된 문서가 그렇지 않은 문서보다 높은 유사도를 가지는 Vector space를 만드는 것
훈련 데이터 D는 m개의 인스턴스로 구성되어 있고, 하나의 질문 , 하나의 긍정 문서 , 여러 개의 부정 문서 로 이루어짐
loss function은 negative log likelihood를 사용
관련된 문서에 대해 높은 유사도, 관련 없는 문서에는 낮은 유사도가 산출되는 방향으로 학습
긍정 데이터셋은 선정하는 것이 쉽지만 부정 데이터셋은 그 수가 매우 방대하기 때문에
Random: 랜덤으로 선정하거나,
BM25: 답변을 포함하지 않으면서 BM25에서 질문과 유사하다고 판단된 문서를 선정하거나,
Gold: 다른 데이터의 긍정 문서를 사용하는 3가지를 고려하여 데이터셋 구축

in-batch negative: n개의 질문과 긍정 문서의 임베딩 값 Q, P에 대해서 를 수행하면 유사도 행렬이 생기는 데, (Qi,Pj) 쌍이 i = j로 같으면 긍정 예제로 구분하고 그렇지 않으면 부정 예제로 구분해서 효율적인 학습
위키피디아 데이터를 전처리하여 위키피디아 문서의 제목과 [SEP]토큰을 추가해서 100단어 단위의 문서로 passage를 만듬

-TREC, WebQuestions, TriviaQA 데이터셋은 질문, 답변 쌍만 제공되기 때문에 BM25의 상위 문서를 긍정 문서로 사용하고, 답변이 포함된 문서가 없는 경우 폐기
(그럼 BM25와 같은 방향으로 학습되는게 아닌가?)
실험 결과 정확도가 1% 낮은 정도로 큰 차이가 나지 않음

SQuAD와 Natural Questions의 경우 데이터셋의 패시지와 해당하는 위키피디아 전처리 문서를 매칭해서 교체



