//
Search
🔧

[논문리뷰] SPARTA: Efficient Open-Domain Question Answering via Sparse Transformer Matching Retrieval

Created
3/7/2021, 12:26:24 PM
Tags
QA
논문 리뷰: Autoencoder 기반의 OOD 모델을 Mahalanobis Distance 를 이용해 향상시켜 보자!

개요 (Abstract)

Open-Domain Question Answering Task의 새로운 SOTA인 SPARTA 모델 제안
Open QA 에서 다루어지는 2-Stage인 Retrieval 과 Reader 중에서 Retrieval 에 초점
SPARTA는 dense vector nearest neighbor search(우리 기준으로는 Bi-Encoder) 를 기반으로한 기존의 모델들과 다르게, sparse representation을 이용해 학습과 검색을 수행함
Efficiency: 비싼 approximate vector search(FAISS) 연산 수행 없이, Inverted Index Search (Lucin) 으로 검색을 수행할 수 있음.
Accuracy: 4개의 open-domain question answering (OpenQA) 테스크와 11개의 retrieval question answering (ReQA) tasks에서 SOTA 를 기록하였음

방법론 (Methods)

모델의 전체 구조도. Query 토큰과 Context Token 간의 Interaction 을 계산 하는 방법. 검색에 사용한 Inversed Index 의 구성 요소

학습

Sequence-Level 이 아닌 Token-Level 로 Query 와 Answer 간의 Interaction 수행
In-Batch Negative 50% + In-context Negative 50%

Indexing

Query 는 Non-Contextualized Representation, Context 는 Contextualized Representation
Query token representation: 그냥 토큰 넣고 Embedding Lookup 테이블에서 가져옴
Context token representation: BERT 에 문서 넣고, 해당 토큰 위치의 encoding 결과 사용
Query 가 Non-Contextualized Representation이기 때문에 검색 공간에 존재하는 문서의 토큰과 Vocab 토큰간의 점수를 미리 계산해 둘 수 있음
점수: f('사과' 임베딩 벡터, 문서 내에 포함되어 있는 사과의 BERT 인코딩 결과)
미리 각 Token 별로 아래 정보를 Inverted Index 로 저장해 둠
토큰 → (문서 번호, 문서에서 해당 토큰이 등장하는 위치, 계산된 점수)

Search

실제 서비스에서 Retrieval (Inference) 시에 벡터간의 연산을 수행하지 않음 → 이미 Indexing 되어 있음
Inverted Index Search: 각 토큰이 등장하는 모든 pair 검색하고, 각 문서별로 aggregate
예시
질문: 사과는 무슨 색? → (사과, 는, 무슨, 색)
Inverted Index
사과 → (문서 1, 24번째, 0.34), (문서 3, 34번째, 0.12) ...
...
→ (문서 1, 39번째, 0.55), (문서 7, 34번째, 0.33) ...
Search
문서 1 ((사과)0.34 + ()0.55 = 0.89), 문서 3 ((사과)0.12), 문서 7((색)0.33)
검색 결과: Top-1 문서 1

결과 분석 (Results)

Two-Stage Setting 으로 Reader 는 별도로 학습된 Span-BERT를 사용하였음
Open-Domain QA 에서 SOTA 를 큰 폭으로 달성함
Sentence Level QA 에서 Poly-Encoder 보다도 좋은 성능을 보여줌.