RAG
Abstract
- 대규모 사전학습 모델들은 정보를 매개변수에 저장한다고 알려져 있고 downstream task에 fine-tuning 시키면 성능이 좋음.
- 하지만 pretrain된 LLM만으로는 아직 지식에 접근하고 정밀하게 조작하는 것은 한계가 분명
- 또한, LLM의 지식의 출처를 파악하는것, 정보를 업데이트하는 것은 연구가 더 필요
- non-parametric memory를 명시하기 위한, 구분 가능한(미분 가능한인가?) 접근 메커니즘을 가진 사전학습된
모델들은 추출 작업에 대해서만 연구됨. - 사전 학습된 parametric memory(언어 모델) 및 non-parametric memory(벡터 db와 같은 Knowledge source)를 결합하여
언어 생성을 위한 일반 목적의 미세 조정 방법을 탐구 - 본 연구의 RAG 모델은 parametric memory는 pre-trained seq2seq model이고
non-parametric memory는 사전학습된 neural retriever로 접근되는 Wikipedia의 dense vector index이다. - 본 논문에서는 두가지 RAG 형식을 비교. 하나는 생성된 시퀀스들에 대해서 동일한 검색된 passage를 조건으로 사용하고, 다른 하나는 토큰마다 다른 passage를 사용한다.
요약
- RAG Model = Parametric Memory + Non-Parametric Memory
- Parametric Memory : 기존의 pretrained LLM
- Non-Parametric Memory : Retriever(검색기) + Dense Vector Index(Vector Store)
1. Introduction
- 사전학습된 언어모델들은 매개변수화된 내재적 지식 베이스가 있어서 따로 외부 메모리에 접근이 필요 없음
- 하지만, 이런 방식의 단점이 몇가지 있는데
- 메모리를 쉽게 확장하거나 확인할 수 없고
- 모델의 예측에 대한 이유나 근거를 직관적으로 이해하기 힘들고
- hallucination 문제가 발생 가능
- Hybrid 모델은 Parametric memory를 non-parametric memory와 합쳐서 이러한 문제 일부를 해결
- 지식이 직접적으로 확장 및 확인 가능
- 접근된 지식이 해석 및 확인가능
- REALM과 ORQA 모델은 유망한 결과를 도출했지만 open-domain extractive question answering에 대해서만 연구됨
- 논문의 저자들은 pretrained seq2seq transformer (생성기)와 dense vector index (저장소),
pretrained neural retriever (검색기)를 합쳐서 end-to-end로 학습된 확률적 모델을 생성.
모델 작동 방식
1. Retriever(Dense Passage Retriever)는 input을 조건으로 문서를 검색합니다.
2. Seq2Seq 모델(BART)가 input과 검색된 문서를 조건으로 출력을 생성합니다.
- 이 과정에서 top-K approximation 두 가지 중 하나를 사용해서 문서를 선택합니다.
- per-output basis : 모든 토큰에 대해서 동일한 문서가 관련이 있다
- per-token basis : 서로 다른 토큰에 대해서는 서로 다른 문서가 관련이 있다.
- Non-parametric Memory 즉, 검색기나 벡터 스토어같은 외부 데이터베이스를 활용해서 시스템을 개선하는 기존 연구들이 많았음
- memory network
- stack-augmented networks
- memory layers
- 반면에 저자들은 광범위한 지식에 대해서 pre-train, pre-load된 non-parametric memory 뿐만 아니라 parametric memory를 사용
- 사전학습된 접근 메커니즘을 사용해서 추가적인 학습 없이 지식에 접근하는 능력이 있음
- 본 연구는 knowledge-intensive tasks에 대한 생성 작업에 특장점이 있음
- knowledge-intensive tasks란 인간이 외부 지식 소스에 접근 없이 합리적으로 수행하기 힘든 작업
2. Methods
- RAG 모델은 input 시퀀스 x로 텍스트 문서 z를 검색하고 z를 추가적인 컨텍스트로 사용해서 target 시퀀스 y를 생성할때 사용합니다.
- Figure 1에서 확인 가능한 것처럼 RAG 모델은 2가지 구성요소를 활용합니다.
- 검색기 $ p_{\eta}(z|x) $
- 검색기는 매개변수 $ \eta $ 를 사용
- qeury x가 포함된 텍스트 구절에 대한 분포(top-K개의 문서)를 반환
- 생성기 $ p_{\theta}(y_i | x,z,y_{1:i-1}) $
- 생성기는 매개변수 $ \theta $ 사용
- 기존 i-1 token들 $ y_{1:i-1} $, 원본 입력 x, 검색한 passage z를 컨텍스트로 사용해서 현재 토큰을 생성한다.
- 검색기 $ p_{\eta}(z|x) $
- 생성된 텍스트의 분포를 생성하기 위해서 서로 다른 방법으로 문서들을 marginalize하는 2가지 모델을 제시한다.
2가지 모델
1. RAG-Sequence : 동일한 문서로 각각의 target token을 예측한다.
2. RAG-Token : 서로 다른 문서를 기반으로 각각의 target token을 예측한다.
2.1 Models
RAG-Sequence Model
- 완전한 sequence를 생성하기 위해서 하나의 문서를 사용한다.
- 검색한 문서를 top-K approximation을 통해서 seq2seq 확률 $ p(y|x) $를 구하기 위한 하나의 잠재 변수로 취급한다.
- top-K 문서는 retriever 사용하여 검색되며, generator는 각 문서로 출력 시퀀스 확률을 생성하고 이후에 marginalize한다.
수식에서 등장한 각각에 대해서 살펴보면
- $p_{RAG-Sequence}(y|x)$ : 입력 x에 대해서 모델이 출력 y를 생성할 확률
- $top-k(p(\centerdot|x))$ : 입력 x에 대해 검색된 상위 k개의 문서의 집합
- x와 관련이 높은 문서들로 구성
- $\sum_{z\in top-k(p( \centerdot |x))}$ : 상위 k개의 검색된 문서 z 각각에 대해서 합산을 수행함을 의미
- $p_{\eta}(z|x)$ : 검색된 문서 z가 입력 x에 대해서 선택될 확률
- $p_\theta(y|x,z)$ : x,z에 대해 모델이 출력 y를 생성할 확률
그리고 이 과정을 조금 더 자세하게 설명해면
- 입력 x로 상위 K개의 문서 z를 검색
- 각 문서 z에 대해 $p_{\eta}(z|x)$를 계산해서 문서가 선택될 확률 계산
- 각 문서 z에 대해 $p_\theta(y|x,z)$를 계산해서 문서를 기반으로 출력 y가 생성될 확률 계산
- 2,3번 과정을 통해 구한 확률을 곱해서 해당 문서가 선택되고 출력 y가 생성될 전체 확률을 구한다.
- top-K개 문서에 대해서 확률들을 모두 합해서 최종 $p_{RAG-Sequence}(y|x)$를 구한다.
그리고 맨 오른쪽의 식은 $p(y|x,z)$ 를 구하는 식을 자세히 풀어쓴 것으로 i번째 토큰을 생성할때 x, z, 그리고 1 ~ i-1 까지의 토큰이 사용됨을 보여주는 수식입니다.
RAG-Token Model
- 각각의 target token에 대해서 서로 다른 문서를 선택할 수 있고 그에 따라 marginalize 할 수 있다.
- 이 방식을 사용하면 generator가 문장을 생성할때 몇가지 문서에서 내용을 선택할 수 있다.
- 우선 top-K 문서가 검색기로 검색되고 각각의 문서에 대해서 생성기가 다음 output token에 대한 분포를 생성하고 marginalize 한 후
다음 출력 토큰에 대해 이 과정을 반복한다.
RAG-Sequence와의 차이점은 토큰을 예측할때마다 다른 검색 문서를 사용할 수 있다는 것이다.
따라서 파이가 밖으로 나와서 토큰마다 검색을 한다는 것을 확인할 수 있다.
마지막으로, 논문의 저자들은 target class를 길이가 1인 target sequence로 간주해서 RAG를 시퀀스 분류 태스크에 사용할 수 있다고 주장함.
2.2 Retriever: DPR
- Retriever 구성요소 $p_{\eta}(z|x)$는 DPR 기반이고 DPR은 bi-encoder 아키텍쳐 기반
- $d(z)$ : Document Encoder(BERT BASE)로 생성된 문서의 dense representation(문서를 나타내는 벡터 = 문서 정보를 벡터로 바꾼것)
- $q(x)$ : Query Encoder(BERT BASE)로 생성된 query representation(query를 나타내는 벡터 = query 정보를 벡터로 바꾼것)
- $top-k(p(\centerdot|x))$ : $p_{\eta}(z|x)$ 값이 가장 큰 문서 k개의 리스트인데, MIPS(Maximum Inner Product Search) 방식으로 검색한다. 즉, 내적의 값이 큰 문서들을 찾는 것.
- DPR의 사전학습된 bi-encoder를 사용해서 retriever를 초기화하고 문서 인덱스(문서 저장소)를 생성
- Retriever는 TriviaQA의 답을 포함한 문서를 검색하도록 훈련됨
- 논문의 저자들은 document index를 non-parametric memory라고 함
2.3 Generator : BART
- Generator 구성요소 $p_\theta(y|x,z,y_{1:i-1})$는 encoder-decoder 구조를 가진 어떤 모델이든 상관 없음
- 논문의 저자들은 BART-large 모델을 사용(400M 매개변수 가진 seq2seq 트랜스포머 모델)
- Input x와 검색된 문서 내용 z로 답변을 생성하기 위해서 두 값을 단순히 연결함
- 논문의 저자들은 BART generator를 parametric memory라고 함
2.4 Training
- 논문의 저자들은 어떤 문서가 검색되어야 하는지에 대한 직접적인 감독 없이 Retriever와 Generator 구성 요소를 동시에 학습시킴
- Fine-tuning 훈련 corpus input/output pair($x_j,y_j$), Adam을 사용해서 목적함수를 $Loss = \sum_j - log p(y_j|x_j)$로 놓고 학습함
- 즉, negative marginal log-likelihood를 최소화함으로써 학습한다는 의미는 확률은 0~1 사이의 값을 가지고 -log 함수를 최소화 해야하므로 $p(y_j|x_j)$가 1에 가까워야한다. 이 말은 곧 $x_j$가 입력되었을때 출력값이 $y_j$일 확률을 최대화해야 한다는 의미
- 논문의 저자들은 훈련 과정에서 문서 인코더 $BERT_d$를 계속 update하는게 비용만 크고 성능 향상에 크게 도움이 되지 않는다 판단해서 $BERT_q$와 BART generator만 fine-tuning 함
2.5 Decoding
테스트시에 RAG-Sequence
와 RAG-Token
방식은 서로 다른 방식으로 $\arg\max_y p(y|x)$를 근사해야 함
RAG-Token
- RAG-Token 모델을 표준이라고 생각해도 좋음
- Decode 하기 위해서 $p\prime_\theta(y_i|x,y_{1:i-1})$를 standard beam decoder에 plug함
$p\prime_{\theta}(y_i \mid x, y_{1:i-1}) = \sum_{z \in \text{top-k}(p(\cdot \mid x))}p_{\eta}(z \mid x)p_{\theta}(y_i \mid x, z, y_{1:i-1})$ - $p\prime_{\theta}(y_i \mid x, y_{1:i-1})$ 를 다음 토큰을 생성하는 확률 계산에 삽입하여 사용
RAG-Sequence
- RAG-Sequence의 경우 우도 $p(y|x)$는 일반적인 토큰 당 우도로 분할되지 않아서 단일 beam search로는 풀수가 없음
- 각 문서 z에 대해서 beam search를 수행하고 각 후보 문장(hypothesis)를 $p_{\theta}(y_i \mid x, y_{1:i-1})$로 scoring
- 위 과정으로 hypothesis의 집합 Y를 구함
- 일부는 모든 문서의 beam에서 등장하지 않았을수도 있음
- 특정 hypothesis y의 확률을 구하기 위해서 해당 hypothesis y가 beam에 나타나지 않는 각 문서 z에 대해서 추가적인 forward pass를 실행하고 generator 확률 $p_\eta(z|x)$를 곱한 후 marginal 확률을 계산하기 위해 모든 beam(beam search 과정에서 선택된 상위 k개의 후보 문장 즉, hypothesis)에 걸쳐 확률을 합산한다.
- 위 과정을
Thorough Decoding
이라 한다 - 더 긴 출력 시퀀스의 경우 |Y|가 커져서 많은 forward pass가 필요
- 효율적인 decoding을 위해 $p_\theta (y|x,z_i) \approx 0$이라 가정해서 y가 beam search 중 $x$와 $z_i$에서 생성되지 않은 경우 추가적인 forward pass가 필요 없도록 할 수 있다.
- 이 과정을 "Fast Decoding"이라 한다
RAG-Sequence 추가 설명
보통 시퀀스(문장) 생성 모델에서는 출력 시퀀스 y를 생성할 때 각 토큰 $y_i$의 확률을 독립적으로 계산한다. 예를 들어서 $p(y|x) = p(y_1|x) \centerdot p(y_2|x,y_1) \centerdot p(y_3|x,y_1,y_2)$ 처럼 각 토큰별로 확률을 계산하고 곱해서 전체 시퀀스 확률을 구한다.
근데 RAG-Sequence 모델에서는 하나의 문서 z를 선택해서 전체 시퀀스를 생성한다. 이때 전체 시퀀스 y의 확률 $p(y|x)$는 선택된 문서 z에 대한 확률 $p_\theta(y|x,z)$와 문서 z가 선택될 확률 $p_\eta(z|x)$로 계산된다. 하지만 이 확률이 각 토큰별 확률로 나뉘지 않기 때문에 일반적인 방법으로 처리가 안된다.
일반적인 시퀀스 생성 모델에서는 single beam search를 사용해서 각 토큰을 생성하면서 최적의 문장을 찾을 수 있는데 RAG-Sequence는 전체 시퀀스의 확률을 계산하기 위해서 각 문서에 대해서 별도로 beam search를 계산해야한다.
3. Experiments
- 논문의 저자들은 다양한 knowledge intensive task로 RAG를 실험함
- knowledge-intensive tasks란 인간이 외부 지식 소스에 접근 없이 합리적으로 수행하기 힘든 작업
- non-parametric knowledge source로 Wikipedia dump 사용
- 100 단어씩 chunk로 만들어서 벡터화
- 각 문서를 document encoder로 임베딩한 후 FAISS로 MIPS index 생성함
3.1 Open-domain Question Answering
- 현실에서 중요하고 knowledge-intensive task에서 흔히 사용되는 testbed
- 질문과 답변을 input-output text 쌍(x,y)로 취급하고 RAG를 훈련
- RAG의 parametric ability와 non-parametric ability를 각각 비교함
- RAG의 non-parametric한 성능을 비교하기 위해서 extractive QA paradigm들과 비교함
- extractive QA paradigm의 답변은 검색된 문서에서 추출한 내용 즉, non-parametric 지식에만 기반한 답변
- RAG의 parametric 성능을 비교하기 위해서 RAG 모델의 retrieval 기능을 사용하지 않고
closed book QA
접근 방식과 비교함- 4가지 open-domain QA dataset으로 비교
- Natural Questions(NQ)
- TriviaQA(TQA)
- WebQuestions(WQ)
- CuratedTrec(CT)
- 4가지 open-domain QA dataset으로 비교
- DPR 논문에서는 작은 데이터셋을 처리할 때 더 큰 데이터셋으로 사전 학습된 모델을 사용하는 방법을 제안했는데 WQ와 CT는 소규모 데이터셋이라 이 방식으로 훈련함
- 즉, NQ 데이터셋으로 사전 학습된 RAG 모델의 가중치를 사용하여 CT와 WQ 데이터셋에 대한 학습을 시작한다는 의미
- 정확도는 Exact Match(EM) score로 측정. TQA의 경우 T5와 비교하기 위해서 TQA Wiki test set에서도 평가함
3.2 Abstractive Question Answering
- RAG 모델들은 simple extractive QA와 다르게 단순한 답변 말고도 추상적인 내용에 대해서도 문장을 생성 가능
MSMARCO NLG task v2.1
환경에서 RAG의 NLG 성능을 테스트- 질문들, 질문에 대해서 검색해서 얻은 10개의 gold passage, 검색한 gold passage로 생성한 답변으로 구성됨
- 논문의 저자들은 제공된 passage는 사용하지 않고 질문과 답변만 사용함
- MSMARCO에는 gold passage 없이는 답변하기 어려운 질문들이 포함돼서 gold passage가 없으면 성능이 낮음
- 또한, Wikipedia 단독으로는 답변할 수 없는 질문들이 존재
- 위와 같은 경우에 RAG의 parametric 지식 즉, 언어 모델의 지식으로 합리적인 답변을 생성할 수 있음
3.3 Jeopardy Question Generation
- QA 외의 RAG의 성능을 평가하기 위해서 open-domain question generation을 실험
- 짧고 단순한 질문을 포함하는 표준 open-domain QA task 외에 jeopardy question을 생성하는 task를 도입
- Jeopardy question이란 엔티티에 대한 정보로 엔티티를 맞힐 수 있는 질문
- 가령 "1986년에 멕시코가 이 국제 스포츠 대회를 2번 개최한 최초의 국가가 되었습니다" 라는 질문이 Jeopardy Question이고 이 질문의 답은 "World Cup"이다.
- Jeopardy Question은 정교하고 사실적인 문장으로 이루어져있기 때문에 답변 엔터티를 조건으로 Jeopardy 질문을 생성하는 건어려운 knowledge intensive generation task를 구성
- 비교를 하기 위해 BART 모델을 훈련함
- SearchQA의 일부를 사용해서 훈련 및 검증
- Q-BLEU-1로 평가 -> BLEU보다 엔티티 매칭에 대한 가중치가 더 높고 표준 메트릭보다 사람의 판단과 높은 상관 관계를 가짐
- Generation factuality와 specificity에 대해서 인간 평가가 수행됨
- Factuality : 신뢰할 수 있는 외부 자료에 근거한 답변인지
- Specificity : input과 output 사이에 높은 상호 의존이 있는지
- 인간 평가자는 답과 두개의 생성된 질문(BART와 RAG)을 비교해서 4가지 옵션중에 하나를 택한다
- A가 낫다
- B가 낫다
- 둘다 좋다
- 둘다 별로
3.4 Fact Verification
- FEVER는 자연어 주장이 Wikipedia에 의해서 지지되거나 반박되는지 또는 결정하기 충분한 정보가 없는지를 분류
- 이 task는 wikipedia에서 증거를 검색하고 증거를 추론해서 주장의 참,거짓 또는 wikipedia 만으로 판단할 수 없는지 분류
- 검색 문제와 추론이 수반된 task
- 이를 통해 RAG의 classification 성능 실험 가능
- FEVER 클래스 레이블(지지, 반박, 증거 불충분)을 하나의 output token에 맵핑시켜서 claim-class 쌍으로 직접 훈련함
- Thorne과 Vlachos에서 연구된 표준 3방향 분류 작업(지지/반박/증거 불충분)과 2방향 분류(지원/반박) 작업의 두 가지 변형을 탐구
4. Results
4.1 Open-domain Question Answering
- 위의 Table 1은 RAG와 SOTA 모델들의 성능을 비교한 표이다.
- RAG 모델의 성능이 가장 높은걸 확인할 수 있는데 이는 RAG가 closed-book 즉, parametric memory의 능력과 retrieval 기반의 open-book 즉, non-parametric memory의 성능을 합친 유연성 덕분
- REALM, T5+SSM과 다르게 비용이 비싼 “salient span masking” pre-training 없이도 RAG는 성능이 좋음
- RAG는 BERT 기반 "cross encoder"를 사용해서 extractive reader와 함께 문서를 re-rank 하는
DPR QA 시스템에 비해 좋음
-> RAG는 re-ranker나 extractive reader 없이도 SOTA 성능 뽑음 => 이 부분은 논의가 필요 - 답변을 추출할 수 있어도 생성을 하는게 유리한 경우가 존재
- 답에 대한 단서가 있지만 답이 그대로 포함되어 있지 않은 문서도 정답 생성에 기여할 수 있음
- 이는 기존의 extractive 접근 방식으로는 불가능
- 답에 대한 단서가 있지만 답이 그대로 포함되어 있지 않은 문서도 정답 생성에 기여할 수 있음
- RAG 모델의 경우 검색 문서에 정답이 없어도 정답을 생성함
- NQ 데이터셋에서 위와 같은 경우에도 11.8%의 정확도를 달성함
- extractive 모델들은 0% 성능(당연하게)
4.2 Abstractive Question Answering
- Table 2에서 보이듯이 RAG sequence 모델이 BART 모델보다 성능 좋음
- MSMARCO 데이터셋에서 Rouge-L, Bleu 지표에서 성능이 높음
- SOTA 모델에 비해서 성능이 낮은 건 사실이지만 주목할 점은 SOTA 모델은 gold passage가 제공되었고 RAG 모델은 그렇지 않다는 점
- SOTA 모델들은 reference answer를 생성하기 위한 정보가 포함된 gold passage가 있었고
- 대부분의 질문은 gold passage 없이는 답변할 수 없고
- 일부 질문들은 Wikipedia 정보만으로 답변할 수 없었다는 점
- 질적으로 RAG 모델이 BART보다 hallucination이 덜하고 사실적으로 정확한 텍스트럴 더 자주 생성함
- RAG의 생성이 BART 보다 더 다양함
4.3 Jeopardy Question Generation
- Table 2에서 보이듯이 RAG-Sequence 모델이 BART보다 성능이 좋음
- Table 4에 의하면 인간 평가자 평가의 결과를 확인할 수 있는데 평가자들은 RAG를 더 사실적이고 specific하다 라고 평가한 걸 확인할 수 있다.
- 저자들은 Jeopardy question에 대해서 RAG-Token 방식이 더 나은 성능을 보인 이유로 Jeopardy question은 2가지 서로 다른 정보로 이루어져있는데 RAG-Token은 여러 문서의 정보를 토대로 답변을 생성하므로 더 좋은 성능을 보였다고 판단함
- 예를 들어 Figure 2에서 "Sun"을 생성할때 Doc2가 진한 것을 확인할 수 있는데 Doc2에는 "The Sun Also Rises"라는 내용이 포함되어 있고 "A Farewell to Arms"를 생성할때는 동일한 내용이 포함된 Doc1의 posterior가 높은 것을 확인할 수 있다.
- 여기서 posterior는 검색된 문서가 총 5개라고 하면 특정 토큰(예를 들어 Sun이나 A)가 입력값으로 들어왔을때
문서 z1~z5가 선택될 확률
- 여기서 posterior는 검색된 문서가 총 5개라고 하면 특정 토큰(예를 들어 Sun이나 A)가 입력값으로 들어왔을때
- 각 책의 첫 토큰 생성후 문서의 posterior가 flatten 되는데 이 말은 generator가 문서에 의존해서 문장을 생성하지 않을 수 있다는 의미 = 책 제목 완성하는데 parametric knowledge면 충분
- 이 주장을 뒷받침하기 위해서 BART로 "The Sun"을 시작으로하는 문장을 완성시키자 "The Sun Also Rises" is a novel by this author of "The Sun Also Rises" 라는 문장을 생성함
- 이는 BART의 parameter에 "The Sun Also Rises"라는 정보가 저장됨을 의미
- 이 예시를 통해서 parametric memory와 non-parametric memory가 함께 문장을 생성함을 확인함
4.4 Fact Verification
- Table 2의 FEVER의 결과를 보면 3-way classification(FVR3)의 경우 SOTA 모델에 비해서 4.3% 낮다
- 하지만, SOTA 모델들의 경우 복잡한 파이프라인을 거치고 retrieval supervision을 포함한 반면
RAG는 해당 과정이 없었다는 점에서 의미가 있다
- 하지만, SOTA 모델들의 경우 복잡한 파이프라인을 거치고 retrieval supervision을 포함한 반면
- 2-way classification(FVR2)의 경우 SOTA 모델에 비해 2.7% 낮다
- SOTA 모델(RoBERTa)은 주요 근거가 제공된 상태에서 주장의 참 거짓을 판별한 반면 RAG는 스스로 주장을 기반으로 근거를 검색함
- 추가적으로 RAG로 검색한 문서가 FEVER의 gold evidence(주요 근거)와 일치하는지 분석함
- Top-K 검색 문서와 gold evidence의 제목의 overlap을 계산
- 검색된 상위 문서들의 경우 71%의 사례에서 gold article로 부터 생성된 문서였고,
90%의 사례에서 상위 10개 문서에 gold article이 있었다
6. Discussion
본 연구에서는 parametric memory와 non-parametric memory를 결합한 hybrid generation model을 제시함.
RAG가 QA task에서 SOTA 성능을 달성했고 인간 평가자가 BART에 비해서 RAG를 더 구체적이고 사실적이라고 평가함을 확인함. 향후 연구로는 2가지 구성 요소를 함께 처음부터 pre-train하는 방법을 제안함. 이 연구는 parametric and non-parametric memory가 상호작용하면서 더 좋은 성능을 내는 것을 증명함으로써 새로운 연구 방향을 제시함
6.1 Broader Impact
RAG는 실제 사실 정보를 기반으로 생성하기 때문에 hallucination이 적고 해석가능성이 크며 제어가 가능하다.
따라서, 의료 같은 다양한 분야에 활용할 수 있다.
물론, 단점도 존재하는데 외부 지식 소스가 완벽할 수 없고 편향에서 자유롭지 못하다는 것이다.
뉴스나 소셜미디어에 가짜정보를 생산할 수 있고 다른 사람을 사칭하거나 spam/phishing 컨텐츠의 생산을 자동화할 수 있다.
논문을 이해하기 위한 추가 개념
Marginalization?
사건 A와 사건 B가 동시에 발생할 확률을 Joint Probability 또는 결합확률이라 하고 $P(A,B)$ 또는 $ P(A \cap B) $라고 하기도 한다.
결합확률에서 어떤 변수 하나에 대한 확률을 계산하는 방법이다. 주목하지 않는 변수를 Marginalization 또는 주변화한다고 한다.
$X$에 주목한다면 $ X $가 아닌 변수들을 주변화하여 $P(X)$를 구한다.
이를 다변수 확률분포로 일반화해서 n개의 변수중에서 k번째 확률만 구할때 나머지 변수들을 주변화한다.
이산적인 경우
연속확률분포
이렇게 다른 변수들을 주변화해서 얻은 확률 $P(X)$를 주변확률이라 한다.
조건부 확률(conditional probability) $P(Y|X)$는 X일때 Y일 확률이다.
그리고 확률의 곱셈정리 $P(Y|X) = \frac{P(X,Y)}{P(X)}$에 의해서 joint probability는 conditional probability와 marginal
probability의 곱이라는 것을 확인할 수 있다.
요약
Marginalization은 어떤 변수에 대해서 주변 확률을 계산하는 과정
예를 들어, $p(y|x)$를 계산할때 문서 z를 잠재 변수로 간주하고, 모든 가능한 문서에 대해서 $p(y,z|x)$를 합산해서 $p(y|x)$를 계산
즉, $p(y|x) = \sum_z p(y,z|x) = /sum_z p(y|x,z)p(z|x)$
Sparse Representation vs Dense Representation
Sparse Representation
- 단어를 sparse vector로 표현하는 기법으로 one-hot encoding의 결과라고 생각하면 된다.
- 예를 들어, apple, banana, carrot이 있을때 apple = [1,0,0], banana = [0,1,0], carrot = [0,0,1] 로 표현하는 것
- Sparse vector의 경우 대부분 0으로 표현하므로 공간적으로 낭비가 심하다.
- 또한, 단어간의 관계를 표현하는데 한계가 존재한다.
Dense Representation
- Sparse vector를 더 작은 차원의 vector 즉, Dense vector로 표현하는 방법
- 고차원의 연속 벡터로 표현되며, 벡터의 모든 요소가 실수 값을 가지는 것을 의미
- 예를 들어, apple = [0.1,0.4,0.7], banana = [0.1,0.6,0.3], carrot=[0.1,0.1,0.1]로 표현하는 방식
검색 기법(MIPS, MCSS)
- MIPS는 Maximum Inner Product Search의 약자로 MIPS의 목적함수는 $\underset{v_i \in V}{\arg\max_q^Tv_i}$ 로 내적의 값이 큰 문서를 검색
- 벡터의 크기에 영향을 받음
- 벡터의 크기가 중요한 경우 MIPS를 사용
- MCSS는 Maximum Cosine Similarity Search의 약자로 MCSS의 목적함수는 $\underset{v_i \in V}{\arg\max\frac{q^Tv_i}{||q|| ||v_i||}}$ 이고 코사인 유사도가 큰 문서를 검색
- 벡터의 크기에 영향을 받지 않음
Cross Encoder vs Bi-Encoder
Cross Encoder란?
- BERT를 이용해서 문장 간 유사도를 구할때 두 문장을 동시에 트랜스포머 네트워크에 전달하고 두 문장 사이의 유사성을 의미하는 0~1 사이의 출력값을 생성.
- 장점 : 문장이 변형되지 않은 상태에서 비교해서 정보 손실이 없음
- 단점 : 연산량이 너무 많다. n개의 문장을 비교하는 경우 nC2 즉, $/frac{n(n-1)}{2}$ 번의 계산이 필요하다.
BiEncoder란?
- 두 문장을 비교하기 위해서 임베딩된 문장을 생성하는데 두 문장을 독립적으로 트랜스포머 네트워크에 전달해서 서로 다른 임베딩을 생성
- 이렇게 생성한 문장 임베딩을 코사인 유사도로 비교
- 장점 : 빠르다
- 단점 : 임베딩 생성시 정보 손실이 발생해서 Cross-Encoder보다는 성능이 낮다
Decoding 방법론
Greedy Decoding
- test time에는 다음 단어를 생성하는 과정을 반복적으로 수행해서 문장을 생성하는데 매 time step마다 가장 높은 확률을 가지는 단어를 선택해서 decoding을 진행하는 방법
- 문장 전체를 보고 판단하지 않고 매 순간마다 가장 그럴듯한 단어를 선택
- Greedy Decoding은 한번 단어를 잘못 선택하면 잘못 선택한 상태에서 다음을 또 예측하므로 점점 잘못됨
- 이를 개선하기위해 등장한게 Exhaustive Search Decoding
Exhaustive Search Decoding
- 지금 시점에서 단어 예측시 뒤에 올 단어들의 joint probability가 최대가 되게 하는 단어를 선택
- 예를 들어, $P(y_1|x)$ 계산 시에 해당 시점에서 최대 확률은 아니더라도 $P(y_2|x) ...P(y_{t}|y_1,...y_{t-1},x)$를 고려해서 확률이 가장 큰 단어를 선택
- Vocabulary 사이즈가 V이고 time step이 t일때 $V^t$번 계산해야하기에 너무 비효율적
- 이를 해결하기위해 등장한게 Beam Search Decoding
Beam Search Decoding
- 매 time step에 k개의 경우의 수만 고려해서 다음 단어를 예측하는 방법
- time step 마다 누적 확률을 구해서 상위 k개를 남기고 제거
- k를 beam size라 함
- Exhaustive Search Decoding처럼 모든 경우의 수를 고려해서 global optimal solution은 아니지만 효율적
Greedy Decoding의 경우 eos 토큰이 나오면 문장 생성이 끝나지만 beam search decoding의 경우 time step마다 k(beam size)개의 서로 다른 후보 문장이 생성되기에 eos 토큰이 생성되는 시점이 서로 다를 수 있다.
따라서, eos가 생성되어서 먼저 종료된 문장은 저장하고 나머지에서 eos가 나올때까지 beam search를 진행한다.
보통 사전에 설정한 최대 time step에 도달하거나 k개의 후보 문장이 토큰을 가지면 멈춘다.
Beam Search Decoding이 완료되면 joint probability가 최대인 후보 문장을 선정한다.
이때, 후보 문장의 단어 개수가 서로 달라서 문제가 발생하는데 문장마다 문장을 구성하는 단어의 개수가 다르면 단어가 많은 문장이 score가 낮게 책정돼 불리하므로 joint probability를 단어의 개수로 나누어 정규화한다.
-> 각 단어마다 log를 취한 확률값은 음수니까 단어가 많으면 더 많이 작아진다
Likelihood & Probability
- Probability는 주어진 확률 분포가 고정된 상태에서, 관측되는 사건이 변화될 때, 확률을 표현하는 단어
- Likelihood는 관측된 사건이 고정된 상태에서, 확률 분포가 변화될 때(=확률 분포를 모를 때 = 가정할 때), 확률을 표현하는 단어
Extractive Question Answering
- 구글에서 어떤 내용을 검색할때 관련 페이지(사이트) 뿐만 아니라 우리가 질문한 내용에 대한 답변이 하이라이트 된 걸 확인할 수 있다.
- 이처럼 관련된 문서에서 사용자의 질문에 해당되는 내용(텍스트 조각)을 추출하는 작업
MSMARCO
- Question Answering과 Passage re-ranking 데이터셋 존재
- 쿼리에 대해 10개의 문서가 주어졌을 때 가장 관련있는 문서를 선택하여 답변을 찾음
Exact Match란?
- EM 점수(Exact Match Score)는 질문 응답(QA) 시스템의 성능을 평가하는 지표 중 하나
- EM 점수는 모델이 예측한 답변이 정답과 정확히 일치하는지 여부를 측정
- "정확히 일치"는 공백, 대소문자, 구두점 등을 포함하여 모든 문자가 동일해야 함을 의미
- 평균 계산: 모든 질문에 대해 정확히 일치하는 답변의 비율을 계산하여 전체 데이터셋에 대한 EM 점수 계산
- EM Score = Number of Exact Matches / Total number of questions
- 가령 "What is the capital of France?"란 질문에 대해서 정답이 paris일때 모델의 답변이 paris면 EM Score = 1.0이고 paris. 이라 답하면 0.0이 된다.
데이터셋
Natural Questions
- 자연어 질문, 위키피디아 페이지, 긴 답변, 짧은 답변, 스텟등이 포함된 데이터셋
TriviaQA
- 자연어 질문, 정답, 근거가 포함된 데이터셋
- 질문당 평균 6개의 근거 문서가 포함됨
- 사람이 직접 주석을 다는 대신, 독립적으로 수집된 문서에서 질문과 관련된 답변을 자동으로 추출하여 학습 데이터로 사용함
WebQuestions
- 근거 URL, 질문, 답변이 포함된 데이터셋
CuratedTrec
Reference
주변확률(marginal probability)와 확률의 주변화(marginalization)
Marginalization
sparse, dense representation
MIPS & MCSS
MIPS & MCSS
Cross Encoder & Bi-Encoder
Cross Encoder & Bi-Encoder
Decoding
Decoding
Likelihood & Probability
Extractive QA
MSMARCO NLG task v2
Exact Match
Natural Questions
Trivia QA
WebQuestions
Trec
'인공지능 > 논문' 카테고리의 다른 글
(수정중)LORA: LOW-RANK ADAPTATION OF LARGE LAN- GUAGE MODELS (1) 번역 (1) | 2024.03.14 |
---|---|
CV - (VIT)AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE -(1)번역 (0) | 2024.03.14 |