TIL
  • Main
  • TIL : ML
    • AI News
      • AI-powered coding, free of charge with Colab
    • Paper
      • Retrieval-augmented generation for knowledge-intensive nlp tasks
        • reference 정리
      • Sequence to Sequence
    • Generative AI
      • LLM
        • 기본 개념
    • Boostcamp
      • Daily Report
        • 2021
          • 09
            • week4
            • week5
          • 10
            • week1
            • week2
            • week3
            • week4
          • 11
            • week1
            • week2
            • week3
            • week4
            • week5
          • 12
            • week1
            • week2
            • week3
      • Final Project
        • 프로젝트 기획
          • 🌟최종 프로젝트 기획
          • 최종 프로젝트 Version
          • 아이디어 수집
          • 욕설, 혐오발언 감지
          • 라이브 커머스 레포팅 프로젝트
        • 프로젝트 진행
          • week1
          • week2
          • week3
      • Competition
        • 1. [NLP] 문장 내 개체간 관계 추출
          • Day1 (9.27, 월)
          • Day2-3 (9.28~29, 화~수)
          • Day4 (9.30, 목)
          • Day5 (10.1, 금)
          • Day6~7 (10.2~3, 토~일)
          • Day8 (10.4, 월)
          • Day9 (10.5, 화)
          • Day10 (10.6, 수)
          • Day 11 (10.7 목)
        • 2. [NLP] MRC 프로젝트
          • Day1 (10.25, 월)
          • Day2 (10.26, 화)
          • Day3 (10.27, 수)
          • Day4-5 (10.28-29, 목-금)
          • Day6 (11.1, 월)
          • Day7 (11.2, 화)
          • Day8 (11.3, 수)
          • Day9 (11.4, 목)
        • 🔨3. [NLP] 데이터 제작
          • Day1
        • 🔨4. [공통] 모델 경량화
      • [U Stage] - DL basic
        • (01강) 딥러닝 기본 용어 설명 - Historical Review
        • (02강) 뉴럴 네트워크 - MLP (Multi-Layer Perceptron)
        • (03강) Optimization
        • 🔨(04강) Convolution은 무엇인가?
        • 🔨(05강) Modern CNN - 1x1 convolution의 중요성
        • 🔨(06강) Computer Vision Applications
        • (07강) Sequential Models - RNN
        • (08강) Sequential Models - Transformer
        • Page 2
      • [U Stage] - PyTorch
        • (01강) Introduction to PyTorch
        • (02강) PyTorch Basics
        • (03강) PyTorch 프로젝트 구조 이해하기
        • (04강) AutoGrad & Optimizer
        • (05강) Dataset & Dataloader
        • (06강) 모델 불러오기
        • (07강) Monitoring tools for PyTorch
        • (08강) Multi-GPU 학습
        • (09강) Hyperparameter Tuning
        • (10강) PyTorch Troubleshooting
      • [U Stage] - NLP
        • (01강) Introduction to NLP, Bag-of-Words
        • (02강) Word Embedding
        • (03강) Recurrent Neural Network and Language Modeling
        • (04강) LSTM and GRU
        • (05강) Sequence to Sequence with Attention
        • (06강) Beam Search and BLEU score
        • (07-08강) Transformer
        • (09강) Self-supervised Pre-training Models
      • [P Stage] - KLUE
        • (1강) 인공지능과 자연어 처리
        • (2강) 자연어의 전처리
        • (3강) BERT 언어모델 소개
        • (4강) 한국어 BERT 언어 모델 학습
        • (5강) BERT 기반 단일 문장 분류 모델 학습
        • (6강) BERT 기반 두 문장 관계 분류 모델 학습
        • (7강) BERT 언어모델 기반의 문장 토큰 분류
        • 오피스아워 (9.30, 목)
        • (8강) GPT 언어 모델
        • (9강) GPT 언어모델 기반의 자연어 생성
        • (10강) 최신 자연어처리 연구
      • [P Stage] - MRC
        • Before Study
        • (1강) MRC Intro & Python Basics
        • (2강) Extraction-based MRC
        • (3강) Generation-based MRC
        • (4강) Passage Retrieval - Sparse Embedding
        • (5강) Passage Retrieval - Dense Embedding
        • 오피스아워
        • (6강) Scaling up with FAISS
        • (7강) Linking MRC and Retrieval
        • (8강) Reducing Training Bias
        • (9강) Closed-book QA with T5
        • (10강) QA with Phrase Retrieval
        • 마스터클래스
      • [P Stage] - 데이터제작(NLP)
        • (1강) 데이터 제작의 A to Z
        • (2강) 자연어처리 데이터 기초
        • (3강) 자연어처리 데이터 소개 1
        • (4강) 자연어처리 데이터 소개 2
        • (5강) 원시 데이터의 수집과 가공
        • 오피스아워 (11.10, 수)
        • (6강) 데이터 구축 작업 설계
        • (7강) 데이터 구축 가이드라인 작성 기초
        • (8강) 관계 추출 과제의 이해
        • (9강) 관계 추출 관련 논문 읽기
        • (10강) 관계 추출 데이터 구축 실습
      • [P Stage] - 모델 최적화
        • (1강) 최적화 소개 및 강의 개요
        • (2강) 대회 및 데이터셋 소개
        • (3강) 작은 모델, 좋은 파라미터 찾기: AutoML 이론
        • 🔨(4강) 작은 모델, 좋은 파라미터 찾기: AutoML 실습
        • (5강) 작은 모델, 좋은 파라미터 찾기: Data Augmentation & AutoML 결과 분석
        • 🔨오피스아워 -Baseline 코드에 모듈 작성하기(신종선 멘토님)
      • [P Stage] - Product Serving
        • Part 1: Product Serving 개론
          • 1.1 강의 진행 방식
          • 1.2 MLOps 개론
          • 1.3 Model Serving
          • 1.4 머신러닝 프로젝트 라이프 사이클
        • Part 2: 프로토타입부터 점진적으로 개선하기
          • 2.1 프로토타이핑 - Notebook 베이스(Voila)
          • 2.2 프로토타이핑 - 웹 서비스 형태(Streamlit)
          • 2.3 Linux & Shell Command
          • 2.4 Cloud
          • 2.5 Github Action을 활용한 CI/CD
        • Part 3: 더 완성화된 제품으로
          • 3.1.1 FastAPI
          • 3.1.2 Fast API
          • 3.1.3 Fast API
          • 3.2 Docker
          • 3.3 Logging
          • 3.4 MLFlow
        • Part 4: 심화 소재
          • 4.1 BentoML
          • 4.2 Airflow
          • 4.3 머신러닝 디자인 패턴
          • 4.4 앞으로 더 공부하면 좋을 내용
      • 특강
        • (특강) 김상훈 - 캐글 그랜드마스터의 노하우 대방출
        • (특강) 이활석 - 서비스 향 AI 모델 개발하기
        • (특강) 구종만 - AI + ML과 Quant Trading
        • (특강) 문지형 - 내가 만든 AI 모델은 합법일까, 불법일까
        • (특강) 이준엽 - Full Stack ML Engineer
        • (특강) 박은정 - AI 시대의 커리어 빌딩
        • (특강) 오혜연 - AI Ethics
    • Competition
      • (DACON)한국어 문장 관계 분류 경진대회
        • Day1(2.14, 월)
        • Day2(2.15, 화)
        • Day3(2.16, 수)
        • Day4(2.17, 목)
      • 2021 인공지능 데이터 활용 경진대회
        • 역량평가
          • Day1 (9.28, 화)
          • Day2 (9.29, 수)
          • Day3 (9.30, 목)
        • 예선
          • Data 분석
          • NSML
          • What We Have Done?
    • ETC
      • 인터뷰 대비
        • Computer Science
        • ML/DL
      • Poetry로 dependency 관리
        • window에서 설치하기
      • code block
      • 공부할 것 임시보관
      • Transformer to T5
      • Hugging Face Tutorial
        • Ch1. Transformer models
        • Ch2. Using Transformers
        • Ch3. Fine-tuning a model with the Trainer API
      • KLUE
      • Pandas
  • TIL : Ops
    • AWS
      • SageMaker
  • TIL : Computer (CS)
    • Error
      • TextEncodeInput must be Union[TextInputSequence, Tuple[InputSequence, InputSequence]]
    • Algorithm
      • Theory
      • Programmers
        • 기능개발
    • ETC
      • Github 커밋 히스토리 삭제
Powered by GitBook
On this page
  • 1. Abstract
  • 1.1. LM의 특징과 한계
  • 1.2. RAG Basic Idea
  • 2. Method
  • 2.1. RAG Sequence & RAG tokens
  • 2.2. Retrieval Component: DPR (Dense Passage Retriever)
  • 2.3. Generator: BART
  • 2.4. Training
  • 2.5. Decoding
  • 3. Experiments & Result
  • 3.1. Resource and Setting
  • 3.2. Open-Domain Question Answering
  • 3.3. Abstractive Question Answering
  • 3.4. Jeopardy Question Generation
  • 3.5. FEVER - Fact Verification
  • 3.6. Effective of retrieving more documents
  • 4. Discussion

Was this helpful?

  1. TIL : ML
  2. Paper

Retrieval-augmented generation for knowledge-intensive nlp tasks

PreviousPaperNextreference 정리

Last updated 3 years ago

Was this helpful?

1. Abstract

1.1. LM의 특징과 한계

  • 특징

    • 지식을 매개변수에 잘 저장한다.

    • Downstream NLP task에 대해 fine-tuning을 수행했을 때 많은 부분에서 SOTA를 달성하였다.

  • 한계

    • 확장이나, 수정이 어렵다.

    • 지식에 접근하고, 정확한 조작이 불가능하다.

    • 잘못된 지식을 생성할 수 있다.

1.2. RAG Basic Idea

위 1.1. 에서 나온 한계점들에 대해서 parametic memory와 non-parametric memory를 결합한 hybrid모델이 이런 문제를 일부 해소할 수 있다. 지식을 추가하거나 수정할 수 있고, 접근된 지식에 대해 검증할 수 있다. 이런 아이디어가 적용된 모델로는 REALM과 ORQA가 있는데 이는 모두 extraction 기반으로 구현되어있다.

이 논문에서 소개하고자 하는 RAG모델은 Context(문맥)으로 언어모델의 성능을 향상시키고자 하였다. 그래서 기존 방식인 input x를 넣고 output y를 생성하는 것이 아니라 input x 앞에 context z를 추가하여 input x + context z 로 부터 output y를 생성한다는 아이디어를 가지고 있다.

이렇게 생성된 context y는 자연어처리에 있어 classification이나 text-to-text task에 속하는 semantic similarity등과 같이 적용할 수 있고, fact verification이나 ODQA와 같은 intensive task에서 좋은 성능을 냈다.

2. Method

RAG 모델을 좀 더 자세히 살펴보게 되면, 크게 두개의 component로 나누어 볼 수 있다.

  • pη(z∣x)p_\eta(z\mid x)pη​(z∣x)​: Query x에 대해 top-k 개의 z를 리턴해주는 component

  • pθ(yi∣x,z,y1:i−1)p_\theta(y_i \mid x, z, y_{1:i-1})pθ​(yi​∣x,z,y1:i−1​)​: x, z를 초기 입력값으로 가지고, i-1 까지의 값으로 부터 토큰을 생성하는 모델

2.1. RAG Sequence & RAG tokens

우선 생성된 텍스트에 대한 분포를 생성하기 위해 latent document에 대해 marginalize하는 두가지 모델을 제안한다.

  • RAG Sequence

top k개의 z를 선정하고 해당 document 로부터 output y 즉, token을 생성해내는 구조

  • RAG Token

각 토큰에 대해서 다른 document를 선택할 수 있도록 하였다. 수식에서처럼 토큰마다 z를 선정하는 것을 볼 수 있다.

2.2. Retrieval Component: DPR (Dense Passage Retriever)

각 document에 대한 embedding값을 미리 계산하고 Query에 대한 embedding값을 구해 둘 사이의 유사도를 가지고 추출하게 된다. 여기서 embedding 하게 되는 document와 query는 각각 다른 weight를 가지는 bert 모델을 사용한다.

FAISS 라이브러리를 활용하여 빠르게 retrieve 할 수 있도록 하였다.

2.3. Generator: BART

input x와 retrieve 된 document를 concate 하여 BART의 input으로 사용하게 된다. 이 논문에서는 BART-Large를 사용하였다.

2.4. Training

  • 어떤 document가 검색되어야 할지 알려주지 않고, Retriever와 Generator를 동시에 학습한다.

  • 입력 쌍 (xi,yi)(x_i, y_i)(xi​,yi​)​가 주어지면 Adam을 통해 negative log likelyhood, ∑j−logp(yj∣xj) \sum_{j} - log{p(y_j\mid x_j)}∑j​−logp(yj​∣xj​)를 최소화한다.

  • 학습 중 documents encoder를 업데이트 하면 document index를 정기적으로 업데이트 해야하므로 비용소모가 크다 -> document encoder는 고정하고, query encoder와 generator를 fine-tuning 한다.

2.5. Decoding

  • RAG-Token

​각 토큰에 대해 계산하게 되면 transition probability를 가진 auto-regressive seq2seq generator로 볼 수 있다.

Use Standard Beam decoder

  • RAG-Sequence

Run beam search for each document z

Scoring each hypothesis using pθ(yi∣x,z,y1:i−1)p_\theta (y_i \mid x, z, y_{1:i-1})pθ​(yi​∣x,z,y1:i−1​)​

모든 beam에 대한 hypothesis y의 확률을 추정하기 위해, y가 존재하지 않는 각 document z에 대해 추가적인 학습을 진행하고, generator score에 pη(z∣x)p_\eta (z \mid x)pη​(z∣x)를 곱해 marginal에 대한 beam 사이의 확률을 합한다.

3. Experiments & Result

3.1. Resource and Setting

  • Single Wikipedia dump for non-parametric knowledge source (Dec 2018)

  • FAISS를 활용하여 속도 개선

  • k∈5,10 k \in {5, 10} k∈5,10, for top-k

3.2. Open-Domain Question Answering

RAG Model is SOTA

Extraction QA에서도 실제로 정답이 없음에도 11.8%로 정답을 찾아냈다.

3.3. Abstractive Question Answering

MS MARCO (Microsoft Machine Reading Comprehension)

  • 2016년 세계 AI 컨퍼런스 NIPS에서 기계의 독해 및 질의응답에 대한 기존 Dataset의 약점 극복을 목적으로 만들어졌다.

  • 일관성 부족 / 질문과 관련이 없는 응답 / 구체적이지 않은 응답

  • 320만 문서 풀(pool)에서 검색해 관련 높은 응답 100개를 뽑고, 질문에 대한 답변 상위 100개를 MRR(Mean Reciprocal Rank metric)을 통해 성능을 측정한다고 한다.

  • 질문에 대해 답이 있는 gold passage를 10개씩 넣어 놓는다. 이 10개의 passage가 없다면 답을 찾기 매우 어려운 질문으로 구성되어있도록 한다.

BART 보다 Rouge-L / BLEU-Score가 각각 2.6 / 2.6 높은 걸 확인할 수 있었다.

또한 BART보다 hallucinate 하지않고 사실에 가까운 문장을 만들어 냈다.

3.4. Jeopardy Question Generation

  • 정답을 가지고 질문을 생성하는 Task

  • 사람이 직접 평가하였는데 RAG-Token이 더 좋은 결과를 냈다고 평가하였다.

3.5. FEVER - Fact Verification

wikipedia로 부터 가져온 185,000개의 데이터로 주장을 받고, 그에 대해 다른사람의 주장을 지지, 반박, 알수 없음 3가지로 분류하는 Task이다. 여기서도 BART보다 좋은 성능을 확인할 수 있었다.

3.6. Effective of retrieving more documents

  • 이 논문에서는 5, 10 으로 구현하였는데 두개의 성능이 크게 차이나지 않으며, 오히려 10을 넘어선 순간부터는 떨어지는 현상을 확인할 수 있었다.

4. Discussion

  • Parametric과 non-parametric Hybrid Model을 사용

  • Retrieval로 BERT + Generator로 BART모델을 사용

  • document z + query x => y

  • RAG model이 ODQA에서 SOTA를 달성 + 뿐만아니라 다른 Task에서도 BART보다 좋은 성능을

Retrieval-Augmented Generation for Knowledge-Intensive NLP TasksarXiv.org
Logo
2MB
(논문요약) Retrieval-Augmented Generation for Knowledge-Intesive NLP Tasks.pptx