MRC(5) : Generation-based MRC, BART, T5

SeongGyun Hong·2024년 10월 2일

NaverBoostCamp

목록 보기
5/64

1. Generation-based MRC란?

기존 Extraction-based MRC의 경우에 지문으로 주어지는 context 안에서 question에 따른 대답의 '위치'를 예측하는 일종의 classification 즉, 분류 문제였던 반면에
Generation-based MRC의 경우에 주어진 context와 question을 보고 대답의 '위치'를 예측하는 것이 아닌, 답변을 '생성'하는 generation의 문제이다.

2. Gereation MRC의 평가방법

평가방법 자체는 Extraction based의 경우와 동일하다.

  • Exact Match 방법
  • F-1 Score 방법
    이 두가지 방법을 동일하게 적용할 수 있으며
    이 외에도 BLEU, ROUGE-L 방식 등을 적용 가능하다.

3. Gerneration과 Extraction 방식의 MRC 비교요약

  1. Generation-based MRC
    Generation-based MRC는 주어진 질문에 대해 텍스트를 생성하는 방식.
    이 방식에서는 주로 Seq-to-Seq (Sequence-to-Sequence) 모델을 사용하며, 손실함수는 주로 텍스트 생성에 맞춰 정의됨.

    모델 구조:
    Seq-to-Seq 모델 (예: T5, GPT-3)

    손실함수:
    텍스트 생성 모델에서는 일반적으로 Cross-Entropy Loss를 사용함.
    이 손실함수는 모델이 생성한 텍스트와 실제 정답 텍스트 간의 차이를 계산함.

    작동 방식:
    모델은 입력 시퀀스를 받아서 출력 시퀀스를 생성하고, 생성된 시퀀스와 실제 정답 시퀀스를 비교하여 각 단어의 확률을 계산함.

    즉, 생성된 텍스트와 실제 텍스트 간의 Cross-Entropy Loss를 계산하는 것 .

    Cross-Entropy Loss를 통해 모델이 생성한 단어의 확률 분포와 실제 단어의 분포 간의 차이를 계산하며, 이 손실을 최소화시키도록 모델을 학습시킴.

  2. Extraction-based MRC
    Extraction-based MRC는 주어진 질문에 대해 텍스트에서 정답을 추출하는 방식.
    이 방식에서는 주로 Pre-trained Language Model (PLM)에 Classifier를 얹은 구조를 사용하며, 각 토큰의 확률을 계산하여 정답을 추출함.

    모델 구조:
    PLM + Classifier (예: BERT, RoBERTa)

    손실함수:
    Cross-Entropy Loss를 사용하여 각 토큰의 시작과 끝 위치를 예측.

    즉, 각 토큰의 시작과 끝 위치에 대한 Cross-Entropy Loss를 계산하는 것

    작동 방식:
    모델은 입력 시퀀스를 받아서 각 토큰의 시작 위치와 끝 위치에 대한 확률을 계산하며, 각 토큰의 시작 위치와 끝 위치에 대해 Cross-Entropy Loss를 계산한 후 이 손실을 최소화하도록 모델을 학습시킴

  3. Prediction의 형태
    Generation: Free-form 텍스트 생성
    Extraction: 텍스트에서 정답 토큰 추출

  4. 평가 방식:
    Generation: 생성된 텍스트의 정확도, BLEU, ROUGE 등
    Extraction: 정답 토큰의 정확도, F1-score 등

  5. 후처리 난이도
    generation-based MRC의 경우 Extraction의 경우보다 후처리가 그다지 필요하지 않다.

4. Generation-based MRC의 입력데이터

4.1 형태

  • Extraction-based의 경우와 마찬가지로 데이터가 들어오지만, Extraction에서 사용한 answer_start와 같은 개념은 사용되지 않는다.
    Context와 Q-A 쌍이 들어오는 것은 같다.

4.2 Tokenizer

  • PLM 마다 사용하는 모델이 다르다. T5의 경우 SentencePiece방식을 사용하지만, 대략적으로 Generation의 경우에도 Extraction-bsed MRC와 같이 WordPiece Tokenizer를 사용한다고 생각해도 괜찮다.
  • 스페셜 토큰
    동일하게 CLS, SEP, PAD 등이 사용되나 PLM 마다 다를 수 있으니 매번 확인할 것

4.3 Attention mask

  • Generation-based의 경우에도 어텐션 연산을 하기에 어떤 토큰에 대해 연산을 수행할지 알려주는 Attention mask는 존재한다.

4.4 Token type ids

  • BERT와 달리 BART의 경우 token_type_ids가 따로 존재하지 않는다. 이전에는 이것이 꽤 중요하다고 생각되어 있었으나, 후에 모델이 해당 정보 없이도 구분을 잘 함을 발견해 이 뒤로는 잘 들어가지 않는다.

5. BART

  • 개요
    BART는 Bidirectional and Auto-Regressive Transformers의 약자로, Facebook AI에서 개발한 모델이다.
    BART는 BERT와 GPT의 장점을 결합한 Seq2Seq (Sequence-to-Sequence) 모델로, 다양한 자연어 처리 작업에 사용되며, 대표적으로 텍스트 요약, 질의응답, 대화시스템, 기계번역, 텍스트 분류 등에 사용된다.

  • 사전학습 방식
    BART의 경우 노이즈 제거 자동 인코더(denoising Autoencoder) 방식으로 사전학습 되었다.

  1. 원본 텍스트에 노이즈를 추가하여 손상시키고

  2. 모델이 손상된 텍스트를 원본으로 복원하도록 학습시키는데, 주요 노이즈의 유형은 이하와 같다.

    • 토큰마스킹
    • 토큰 삭제
    • 텍스트 채우기
    • 문장 순서 변경
    • 문서 회전

    6. T5

  • 개요
    T5는 구글 리서치 팀에 의해 개발되었으며, 다양한 NLP 벤치마크에서 우수한 성능을 입증한 모델이다.
    트랜스포머 기반 아키텍처이며, 번역, 질문 응답, 분류 등의 다양한 테스크를 텍스트-텍스트 형식으로 처리한다. (통합된 접근 방식)

  • 사전학습 방식
    T5의 경우에 Colossal Clean Crawled Corpus라는 대규모 데이터셋을 사용하여 사전학습 되었는데, 이 데이터셋은 웹에서 크롤링한 텍스트를 정제한 것으로, 다양한 언어패턴을 학습하기 유용하다.
    T5의 경우 텍스트를 일부 마스킹하고 이를 예측하는 방식으로 학습을 진행하였다.

  • 특이점
    Relative positon encoding, 즉 절대적 위치의 포지셔널 인코딩이 아닌, 상대적 위치의 포지셔널 인코딩을 실시하였다. 토큰 사이의 거리에 따라 포지셔널 인코딩이 정의되는 것!
    현재 ChatGPt에서 당연한 것이 T5가 나올때 정의된 것이 많음.

구체적인 T5의 NLP Task 예시

예시: 번역 작업

  1. 입력 준비

    • 번역할 문장을 준비함. 예를 들어, 영어 문장을 프랑스어로 번역한다고 가정함.
    • 입력 문장: Translate English to French: The cat is on the mat.
  2. 인코더 단계

    • 입력 문장은 토큰화되어 인코더에 입력됨. 인코더는 이 토큰들을 임베딩 벡터로 변환하고, 이를 트랜스포머 블록을 통해 처리함.
    • 토큰화된 입력: <x> Translate English to French: The cat is on the mat. <y>
  3. 디코더 단계

    • 디코더는 인코더의 출력을 받아, 이를 바탕으로 번역된 문장을 생성함. 디코더는 한 번에 한 단어씩 생성하며, 각 단계에서 이전에 생성된 단어들을 참고함.
    • 디코더 입력: <z> Le <z> chat <z> est <z> sur <z> le <z> tapis <z>
  4. 출력 생성

    • 디코더는 최종적으로 번역된 문장을 출력함.
    • 출력 문장: Le chat est sur le tapis.

예시: 질문 응답 작업

  1. 입력 준비

    • 질문과 문맥을 포함한 입력 문장을 준비함.
    • 입력 문장: Question: What is the capital of France? Context: France's capital is Paris.
  2. 인코더 단계

    • 입력 문장은 토큰화되어 인코더에 입력됨.
    • 토큰화된 입력: <x> Question: What is the capital of France? Context: France's capital is Paris. <y>
  3. 디코더 단계

    • 디코더는 인코더의 출력을 받아, 질문에 대한 답을 생성함.
    • 디코더 입력: <z> Paris <z>
  4. 출력 생성

    • 디코더는 최종적으로 질문에 대한 답을 출력함.
    • 출력 문장: Paris

6.1 mT5

학습방법 자체는 T5와 동일함. 다만, multilingual로 학습됨.

  • 기존의 mBERT, XLM보다 더욱 높은 성능을 보여줌
  • 300M부터 13B까지 있음.

7. Post-processing

1. AutoRegressive 디코딩

AutoRegressive 디코딩은 디코더의 이전 단계 출력이 다음 단계 입력으로 사용되는 방식임. 이를 통해 모델은 순차적으로 단어를 생성함.

단계별 설명:

  1. 초기 입력: 디코더는 시작 토큰 <s>을 입력으로 받음.
  2. 첫 번째 출력: 디코더는 첫 번째 단어를 예측함. 예를 들어, "The"를 예측했다고 가정함.
  3. 다음 입력: 예측된 단어 "The"가 다음 입력으로 사용됨.
  4. 반복: 이 과정을 반복하여 문장을 생성함.

구체적인 예시:

  • 입력 문장: Translate English to French: The cat is on the mat.
  • 디코더 초기 입력: <s>
  • 첫 번째 출력: Le
  • 다음 입력: <s> Le
  • 두 번째 출력: chat
  • 다음 입력: <s> Le chat
  • 반복: 이 과정을 반복하여 최종적으로 Le chat est sur le tapis.를 생성함.

2. Logit 계산 및 SoftMax

각 단계에서 디코더는 출력 벡터를 생성하고, 이를 선형 레이어를 통해 Vocab 크기만큼의 Logit으로 변환함. 이 Logit을 SoftMax 함수에 통과시켜 확률 분포를 만듦.

단계별 설명:

  1. 출력 벡터 생성: 디코더는 현재 입력을 바탕으로 출력 벡터를 생성함.
  2. Logit 계산: 출력 벡터를 선형 레이어에 통과시켜 Logit을 계산함.
  3. SoftMax 적용: Logit을 SoftMax 함수에 통과시켜 확률 분포를 만듦.
  4. 단어 샘플링: 확률 분포에서 단어를 샘플링하여 다음 입력으로 사용함.

3. Search 방법

AutoRegressive 디코딩에서 단어를 선택하는 방법에는 여러 가지가 있음. 그리디 서치와 빔 서치가 대표적임.

그리디 서치:

  • 가장 높은 확률을 가진 단어를 선택함.
  • 예시: 확률 분포가 [0.1, 0.7, 0.2]라면, 두 번째 단어를 선택함.

빔 서치:

  • 여러 후보를 유지하며 탐색함.
  • 예시: 빔 너비가 3이라면, 각 단계에서 상위 3개의 후보를 유지하며 다음 단어를 선택함.

Exhaustive search :

  • 완전탐색을 의미하는 것으로 가능한 모든 후보를 탐색하여 최적의 해를 찾는 방법.
  • 정확한 결과를 보장하지만, 계산 비용이 매우 매우 높다.
profile
헤매는 만큼 자기 땅이다.

0개의 댓글