강의소개
10강에서는 phrase retrieval을 활용한 real-time oepn-domain question answering에 대해 배워보겠습니다. Phrase 단위로 retrieval한다는 것이 무엇인지 알아보고, phrase retrieval을 수행하는 방법에 대해 알아보겠습니다. 마지막으로, 기존 retrievar-reader 구조와 비교해 어떤 장점과 단점을 가지고 있는지 짚어볼 예정입니다.
Further Reading
Phrase Retrieval in Open-Domain Question Answering
Curruent Limitation of Retriever-Reader approach
- Error Propagation : 5-10개의 문서만 reader에 전달
- 문제를 해결하기 위해 reader에 전달된 문서가 올바른 문서인지에 대한 보장이 없음
- 즉, Retriever가 성능이 떨어지면 reader의 성능이 떨어지는 문제
- Query-dependent encoding : query에 따라 정답이 되는 answer span에 대한 encoding이 달라짐
- 동일한 context라도 query에 따라 encoding을 다시 해줘야 하므로 상당히 비효율적인 인코딩 방식
Phrase Indexing
- 앞서 설명한 문제점들을 보완하기 위해 제시된 방법 중 하나는 Phrase search(= document search)
- 4,5,6강에서 다룬 것처럼, 사전에 문서에 대한 Dense 또는 sparse vector를 생성 하여 indexing
- 인덱싱은 NNS나 MIPS(6강)을 활용
- 문서에 존재하는 모든 phrase에 대해 mapping을 하여 key vector로 사용
- query vector와 가장 가까운 key vector를 찾는 방식으로 문제를 치환 가능
Query-Agnostic Decomposition
- 기존에는 a,d가 동일하더라도 q가 달라지면 전체를 F라는 function을 다시 계산해야 하지만, phrase indexing 시 H쪽의 encoding은 그대로 사용하고 질문이 들어올 때마다 G만 다시 계산해주면 되므로 연산을 줄일 수 있음.
- 단 여기서, F가 G와 H로 나뉠 수 있어야 한다는 가정이 반드시 필수적
- 여기서 F는 상당히 복잡한 함수로, G와 H는 F에 근접하게 수행할 수 있도록 만들어야 함.
- 즉, key challange는 어떻게 각 Phrase는 G와 H에 모델링 하여 vector space 상에 잘 맵핑할 수 있는지이며, 하나의 solution은 Dense와 sparse 임베딩을 둘 다 사용하는 것
Dense-sparse Representation for Phrases
Dense vs Sparse vectors
- Dense vectors : 통사적, 의미적 정보를 담는데 효과적
- Sparse vectors : 어휘적 정보를 담는데 효과적
Phrase and Question Embedding
- Phrase에 관한 embedding을 구할 시, Dense와 sparse를 둘 다 계산 후 합쳐서 하나의 vector로 고려하고 내적이나 NNS를 진행
Dense Representation
- Dense vector를 만드는 방법
- Pretrained LM(e.g BERT)를 이용
- e.g.) Start vector와 end vector를 재사용하여 메모리 사용량을 줄임
- Coherency vector
- phrase가 한 단위의 문장 구성 요소에 해당하는지를 나타냄
- 구를 형성하지 않는 phrase를 걸러내기 위해 사용
- Start와 end vector를 이용하여 계산
- Question embedding
- Question을 임베딩할 때는 CLS 토큰(BERT)을 활용
Sparse Representation
- Sparse vector를 만드는 방법
- 문맥화된 임베딩(Contextualized embedding)을 활용하여 가장 관련성이 높은 n-gram으로 sparse vector 구성
Scalability Challenge
- 단 이렇게 했을 때 가장 큰 문제는 다음과 같음
- 위키피디아에는 60 bilion개의 phrases가 존재 =< Storage, indexing, search의 scalability가 고려되어야 함
- storage : Pointer, filter, scalar quantization 활용(240T -> 1.4T storage)
- Search : FAISS를 활용하여 Dense vector에 대해 search를 먼저 수행 후 sparse vector로 reranking
Experiment Results & Analysis
Experiment Results - SQuAD-open
- DrQA(Retriever-reader)보다 3.6% 성능 상승 / 68배 빠른 inference speed
Limitation in Phrase Retrieval Approach
- Large storage required : 2TB SSD for phrases
- GPU는 필요 없지만, 어느 정도의 RAM과 저장 공간, 그리고 CPUs가 필수
- 최신 Retriever-reader 대비 낮은 성능
- Natural Questions(NQ)에서 낮은 성능
=> Decomposability gap이 하나의 원인!!
Decomposability gap
- 기존) question, passage, answer가 모두 함께 encoding
- phrase retrieval) question과 passage/answer이 각각 encoding -> question과 passage 사이 attention 정보 X
- F에 대해 G,H를 approximate하지만, F 자체가 복잡한 NN이기에 정확히 나눠질 수 없으므로 이 차이가 발생.