이 포스팅은 https://github.com/danqi/acl2020-openqa-tutorial 를 참고하여 작성하였습니다.
Problem setup
DrQA : a frist neural open-domain QA system [Chen et al., 2017]
Document Retriever
Document Reader
독해 문제로 이어진다. Input은 passage P(e.g. paragraph, document)와 question Q이다. Output은 answer A이다. 단, A는 P의 text 일부분이여야 한다. SQuAD 1.1에서 BERT는 90.0 F1, RoBERTa 94.6 F1 성능을 보였다.
어떻게 모델을 학습시킬까?
Training Time
Inference Time
공유된 정규화 : 문단을 독립적으로 처리하지만 각각 mini-batch마다 모든 문단의 span 확률을 계산한다.
만약 모든 문단에서 답변 후보를 출력한다면 모든 증거를 기반으로 답변 후보의 순위를 다시 매길 수 있을까?
만약 하나의 문단에 답변이 여러번 언급되면 어떻게 해야 될까? distant-supervised 예제에서 어떤 범위가 정답인지 모른다. 이때 Hard EM Approach를 사용한다.
⭐ 주요 질문
Q. retriever를 학습시킬 수 있을까?
Q. 검색을 위해 dense representation을 사용할 수 있을까?
Sparse (희소 표현) vs dense (밀집 표현)
희소 표현 (Sparse Representation)
밀집 표현 (Dense Representation)
Sparse vector | Dense vector |
---|---|
9차원 벡터 9개 | 색상, 모양이라는 2가지 속성으로 구성된 2차원 벡터 |
※ Vocab : 중복된 단어가 없는 서로 다른 단어들의 집합
※ One-hot encoding : 표현하고 싶은 단어의 index를 1, 나머지를 모두 0으로 설정
그런데, 2019년 이전에는 open-domain QA에서 Sparse representation은 Dense보다 늘 뛰어는 성능을 보였다. 그러면 왜 지금은 dense retrieval을 사용할까?
5M 문서, 30M 문단들, 60B 문장들로부터 encode, index, search해야한다.
* 2011 best paper : Learning Discriminative Projections for Text Similarity Measures
dense model이 작동하도록 하는 것은 쉽지 않다. (많은 labeled data가 필요함)
fast maximum inner product search를 지원할 더 나은 기술과 툴을 가지고 있다.
retriever와 reader를 동시에 학습하는 최초의 모델
Key contributions
Notations
b : text block, s : b 내의 text 범위, q : 질문
Modeling: S(b, s, q) = Sretr(b,q) + Sread(b,s,q)
Inference : a* = TEXT(argmax S(b,s,q)
모델 학습 방법
Pre-training : Inverse Cloze Task (ICT)
문장을 pseudo-question으로, 문맥을 pseudo-evidence라 여긴다. 다른 랜덤 옵션들 사이에서 올바른 context를 예측하는 것이 목표이다. 여전히 모델에게 word matching 학습을 권장한다. ICT masking rate이 90%이였을 때 질문에 대한 EM 수치가 가장 높게 측정되었다.
experimental results
TriviaQA, SQuAD | Natual Questions, WebQuestions, CuratedTrec |
---|---|
BM25+BERT가 더 우수한 성능 | ORQA가 더 우수한 성능 |
question에 대한 답을 이미 알고있음 | information-seeking questions |
retriever와 reader를 둘 다 pre-training한다!
결과적으로 NQ에서 REALM이 ORQA보다 우수한 성능을 보였다. (REALM 40.4 > ORQA 33.3)
앞의 2개의 연구(Lee et al., 2019; Guu et al., 2020)는 충분한 성능을 내기 위해서는 추가적인 사전학습이 필요하다는 한계점이 있고, Seo et al., 2019는 sparse representation을 사용하지 않아도 됨을 강조하였지만 오히려 성능의 하락을 보고하였다.
Open-Domain QA의 성능을 향상시키기 위해 기존의 information retrieval(IR) 방식의 모듈을 dense retrieval(DR)로 바꾸어 사용하는 방법을 제안한다. 특히 dual-encoder 구조를 이용해서 question과 document의 dense representation을 어떻게 효율적으로 만들것인지에 대한 주제를 다룬다.
Key contribution : pre-training 없이 적은 Q/A pairs를 가지고 dense retrieval를 학습시킬 수 있다. 즉, pre-training없이 작은 데이터로 fine-tuning하는 것만으로 충분한 성능을 만들 수 있다.
pre-trained BERT로 이루어진 2개의 encoder를 사용하여 Question q와 Passage p를 encoding하고, q와 p 간의 상관관계점수는 위와 같이 dot-product로 계산한다. 실제 추론 시에는 주어진 질의와 후보 문서들 간의 score를 계산해서 top-k개의 passage를 검색하는 방식을 사용한다.
Loss function는 주어진 후보들의 모든 score 중 실제로 관련이 있는 문서(positive sample)가 제일 높은 값을 갖도록 negative log-likelihood로 학습을 수행하게 된다. (p+ : 정답, p- : negative sample) negative sample을 만드는 방법이 학습에서 가장 중요한 요소일 것이다. 저자는 3가지 방법을 실험해 보았다. 또한 학습 시 variation으로 in-batch negative가 추가되었다.
▶ Negative sample을 만드는 방법
(1) Random : corpus 내의 random한 passage를 뽑는 방법
(2) BM25 : 실제 정답을 포함하고 있지 않지만 corpus 내의 BM25를 기준으로 top-k의 문서를 사용하는 방법
(3) Gold : 다른 질의의 positive passage
결과적으로 in-batch negative sampling을 통해 연산에 필요한 메모리 양을 줄이고, batch-size를 키운 경우에 성능이 향상되었다. 특히 BM25를 통해 뽑은 negative sample을 1~2개 추가하는 경우에 가장 높은 성능을 보였다.
결론은 random만으로 학습시키는 것도 중요하지만, 좀 어려운 sample도 답변 후보에 넣어주는 것이 긍정적인 효과를 이끌어낸다는 것이다.
▶ 실험
Retriever performance on NQ
retrieval를 얼마나 잘하는지를 평가하는 실험이다. 제안하는 방법이 BM25 보다 retrieval에서 우수한 성능을 보였다.
end-to-end QA performance
제안한 retrieval로 변경하는 경우 QA task에서 얼마나 성능이 좋았는지 평가하는 실험이다. DPR이 NQ, WebQ, TREC, TriviaQA에서 BM25보다 더 나은 성능을 보였다. DPR은 더 큰 dataset(41.5 vs 39.2 on NQ)에서 REALM보다 더 나은 성능을 보였다.
※ Joint training vs pipeline training of retriever and reader → Pipeline training이 더 효율적이다. index를 한 번만 생성하면 된다.
※ Reading comprehension vs QA datasets
→ 큰 차이는 없다 (41.5 vs 41.0 on NQ)
※ BM25 + DPR이 DPR보다 약간 더 좋은 성능을 보이지만 차이는 별로 크지 않다.
parametric memory와 non-parametric memory을 결합한 RAG와 범용적인 fine-tuning 방법을 제안
input sequence x를 사용하여 text passage z를 검색하고 target sequence y를 생성하는 RAG model
1. query x에 대해 distribution을 반환하는 parameter η을 가진 retriever p(z│x)
2. previous token y, original input x 및 retrieved passage z의 context를 통해 현재 token을 생성하는 θ로 parameterized된 generator
Retriever 및 generator를 end-to-end로 학습하기 위해 검색된 document를 latent variable로 취급한다. 생성된 텍스트에 대한 분포를 생성하기 위해 latent document를 다른 방식으로 marginalization하는 2가지 모델을 제안한다.
key question : 문서나 문단 대신 문장 수준으로 인코딩/인덱스함으로써 retriever + reader의 "retriever" 문제를 간소화하는 것이 가능할까?
decomposability gap : 질문과 구절/답은 독립적으로 인코딩되어야 한다
확장성 : 60억 Wikipedia 구절들
ORQA/REALM : 어떠한 sparse IR 요소 없이 retriever와 reader를 둘 다 학습시는 것이 가능하다는 것을 입증하였다. pre-training의 신선한 방식을 요구하였다.
DPR/RAG : pre-training 없이 적은 Q/A pairs만을 사용하여 dense retrieval을 학습할 수 있다
DenSPI/Sparc : 명시적인 "reader"를 요구하지 않고 phrase 수준에서 index화하고 검색할 수 있다. 추론 시간은 매우 빠르지만 성능은 약간 떨어진다. sparse feature는 여전히 중요하다.
No explicit retriever?
key question : pre-trained LM을 "knowledge storage"로 사용할 수 있을까?
모든 text를 명시적으로 저장하고 dense/sparse 표현으로 검색하는 대신, 답을 얻기 위해 LM을 query할 수 있을까?
Open domain QA에서 새로운 추세로 떠오르는 방법은 대규모 사전학습 모델에 기반해 내재된 지식베이스(KB)를 활용하는 것이다. 이 방식에서는 추론 시, 직접적으로 text에 접근하지 않는다. GPT-2, GPT-3, T5 같이 잘 사전학습된 모델은 zero-shot 셋팅에서 사용자의 질문에 바로 답변을 리턴한다.
언어를 정확히 학습했다면 finetuning 없이 zeroshot만으로 좋은 성능을 내는 것을 목적을 가진다. Transformer의 decoder 부분만을 사용하여 학습을 진행한다. 7가지 NLP task에서 SOTA를 달성하였고 특히 Generation 파트에서 뛰어난 성능을 내었다.
zero-shot setting에서 Natural Questions에서 4% 정확도를 지녔다. (supervised systems보다 훨씬 나쁜 성능)
이러한 few shot learning은 대부분의 NLP 모델들이 고전하고 있는 문제 중 한 가지이다. 각종 NLP task에 대해 좋은 성능을 내고 있는 BERT, GPT 같은 모델도 성능을 내기 위해 수백, 수천 개의 예제를 가지고 fine-tuning을 해야 한다.
task와 무관하게 학습된 모델이라도, 좋은 성능을 위해서는 fine-tuning이 필요하다.
"통합 텍스트-텍스트 트랜스포머로 전이 학습의 한계를 탐구" 논문에서, T5는 encoder와 decoder를 결합한 transformer 모델이다. 모든 NLP task를 통합할 수 있도록 text-to-text 프레임워크를 사용한다. T5는 NLP task 자체를 하나의 모델로 학습할 수 있도록 하는 것이 특징이다.
T5에서는 클래스 레이블 또는 입력 범위만 출력할 수 있는 BERT 모델과 달리 모든 NLP 작업을 입력 및 출력이 항상 텍스트 문자열인 통합 텍스트-대-텍스트 형식으로 재구성할 것을 제안한다. 모든 작업은 텍스트를 모델에 대한 입력으로 사용하며 일부 대상 텍스트를 생성하도록 훈련되었다. 특히, 문서요약, 기계번역, 질문 응답을 포함한 모든 NLP 작업에서 동일한 모델, 손실 함수 및 하이퍼 파라미터를 사용할 수 있다.