기존의 MRC는 문서가 주어지고 해당 문서에서 질문에 대답하는 task였다. 앞서 봤던 Reader들이 여기에 속한다. 그러나 ODQA(Open Domain Qustion Answering) 의 경우 supporting evidence 중에 문서를 검색해서 reader를 진행한다.
: 지문이 따로 주어지지 않고, 방대한 World Knowledge에 기반해서 질의응답
Ex) Modern search engines: 연관문서 뿐만 아니라 질문의 답을 같이 제공
Retriever:
• TF-IDF, BM25 : 학습 없음
• Dense : 학습 있음
Reader
• SQuAD와 같은 MRC 데이터셋으로 학습
• 학습 데이터를 추가하기 위해서 Distant supervision 활용
질문-답변만 있는 데이터셋에서 MRC 학습 데이터 만들기로, Supporting Document가 필요하다.
• Retriever가 질문과 가장 관련성 높은 K개 문서 출력
• Reader는 K개 문서를 읽고 답변 예측
• Reader가 예측한 답변 중 가장 score가 높은 것을 최종 답으로 사용함
위키피디아에서 각 Passage의 단위를 문서, 단락, 또는 문장으로 정의할지 정해야 함.
• Article: 5.08 million
• Paragraph: 29.5 million
• Sentence: 75.9 million
Retriever 단계에서 몇개 (top-k)의 문서를 넘길지 정해야 함 Granularity에 따라 k 가 다를 수 밖에 없음
(e.g. article : k=5, paragraphà : k=29, sentence : k=78)
Linking MRC and Retrieval
(Single-passage): 현재 우리는 k 개의 passages 들을 reader이 각각 확인하고 특정 answer span에 대한 예측 점수를 나타냄. 그리고 이 중 가장 높은 점수를 가진 answer span 을 고르도록 함
⇒ 이 경우 각 retrieved passages 들에 대한 직접적인 비교라고 볼 수 없음
⇒ 따로 reader 모델이 보는 게 아니라 전체를 한번에 보면 어떨까?
(Multi-passage): retrieved passages 전체를 하나의 passage 로 취급하고, reader 모델이 그 안에서 answer span 하나를 찾도록 함
Cons: 문서가 너무 길어지므로 GPU에 더 많은 메모리를 할당해야함 & 처리해야하는 연산량이 많아짐
Retriever 모델에서 추출된 top-k passage들의 retrieval score를 reader 모델에 전달