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
  • GPT-1(Generative Pre-training) 모델
  • BERT (Bidirectional Encoder Representations from Transformer)
  • 1.1. Pre-Training(사전훈련)
  • 1.2. 개요
  • 1.3. 사용되는 Task
  • 1.4. Basic Structure
  • 1.5. Summary
  • GPT-1 vs BERT

Was this helpful?

  1. TIL : ML
  2. Boostcamp
  3. [U Stage] - NLP

(09강) Self-supervised Pre-training Models

Previous(07-08강) TransformerNext[P Stage] - KLUE

Last updated 3 years ago

Was this helpful?

GPT-1과 BERT에 대한 소개

GPT-1(Generative Pre-training) 모델

  • It introduces special tokens, such as \ / \ / $, to achieve effective transfer learning during fine-tuning

  • It does not need to use additional task-specific architectures on top of transferred

  • Transformer의 Decoder 기반의 모델이다.

  • 비지도 학습이며, 다양한 분야의 수많은 데이터로 Language Model로 Pre-training 된다.

  • Language 모델학습으로 일반적인 자연어처리 능력이 내재적으로 학습되어, 추가적인 Layer없이 적은 label로 구성된 데이터만으로도 Fine-Tuning되어 좋은 성능을 낸다.

  • Byte Pair Encoding을 사용해서 Embedding을 업그레이드 시켰다.

입력과 출력이 나누어진 것이 아니라 데이터로부터 추출한 문장으로부터 다양한 Task를 처리할 수 있는 모델이다.

  • Natural Language Inference : 두 문장간의 관계 추론

  • Question & Answer : 질의응답

  • Semantic Similarity : 문장 유사도

  • Classification : 분류

위와 같은 Task에서 활용되며 Delimiter(구분자, $)와 \ Extract를 활용하여 각 Task별로 변화를 주게 된다.

BERT (Bidirectional Encoder Representations from Transformer)

1.1. Pre-Training(사전훈련)

여러 임베딩 기법에도 불구하고 하나의 단어가 하나의 벡터값으로 매핑되므로 문맥을 고려하지 못한다는 문제점이 있었다. 단적으로는 다의어나 동음이의어를 구분하지 못한다는 문제이다.(사과 : apple, forgive) 이러한 한계는 사전 훈련된 모델 Pre-Trained Model을 사용하므로 극복할 수 있었다.

방대한 데이터로부터 학습을 진행한 모델을 다른 Task에서 사용하게 되더라도 더 좋은 성능을 얻는다는 것이다.

1.2. 개요

BERT는 트랜스포머를 이용하여 구현되었으며, 위키피디아(25억 단어)와 BooksCorpus(8억단어)와 같은 레이블이 없는 텍스트 데이터로 사전 훈련된 언어 모델이다.

BERT가 높은 성능을 얻을 수 있었던 것은, 레이블이 없는 방대한 데이터로 사전 훈련된 모델을 가지고, 레이블이 있는 Task에서 추가 훈련과 함께 하이퍼파라미터를 재조정(Fine-Tuning)하여 이 모델을 사용하면 성능이 높게 나오는 기존의 사례를 참고하였다.

BERT는 양방향성을 포함하여 문맥을 더욱 자연스럽게 파악할 수 있습니다. GPT와 마찬가지로 문맥을 파악하는 방법 (Context Embedding)을 지녔지만, 양방향을 확인하는 방법으로 보다 앞뒤 단어의 관계성을 잘 나타낼 수 있어졌다.

1.3. 사용되는 Task

  1. Question & Answering

    • 질의응답

    • KorQuAD, Visual QA etc.

  2. Machine Translation

    • 구글 번역기, 네이버 파파고

  3. 문장 주제 찾기, 분류하기

    • 기존 NLP에서 해결할 수 있는 문제도 해결 가능하다.

  4. 사람처럼 대화하기

1.4. Basic Structure

  • 트랜스포머의 인코더를 쌓아올린 구조 (L:인코더 층의수, D: d_model의 크기, A: Self Attention Head 수)

    • BERT-Base : L = 12, D = 768, A = 12 : 110M개의 파라미터

    • BERT-Large : L = 24, D = 1024, A = 16 : 340M개의 파라미터

1.5.1. Pre-Training Tasks in BERT

1.5.1.1 Masked Language Model(MLM)

BERT는 사전훈련을 위해서 입력으로 들어가는 텍스트의 일부(15%)를 마스킹하고 이를 예측하도록 한다.

  • Mask some percentage of the input tokens at random, and then predict those masked tokens

  • 15% of the words to predict

    • 80% of the time, replace with [MASK] => The man went to the store -> The man went to the [MASK]

    • 10% of the time, replace with a random word => The man went to the store -> The man went to the dog

    • 10% of the time, keep the sentence as same => The man went to the store -> The man went to the store

  • 너무 많은 부분을 MASK를 하게 되면 맞추기에 충분한 자료가 제공되지 않아 맞추기 어려워지고, 너무 적은 부분을 MASK한다면 시간적으로, 계산량이 늘어난다.(15%가 적정값)

    • Too little masking : Too expensive to train

    • Too much masking : Not Enough to capture context

  • 15% 의 데이터를 100% 모두 [MASK]로 치환하게 되면 부작용이 발생할 수 있다. [MASK] 만 사용할 경우에는 [MASK] 토큰이 Fine-Tuning 단계에서는 나타나지 않으므로 Pre-Training과 Fine-Tuning 단계에서의 불일치가 발생하는 문제가 있습니다. 이 문제를 완화하기 위해 80%/10%/10% 과 같이 나누어 사용하게 됩니다.

1.5.1.2. Next Sentence Prediction (NSP, 다음 문장 예측)

BERT는 두 개의 문장을 준 후에 이 문장이 이어지는 문장인지 아닌지를 맞추는 방식으로 훈련시킨다. 이를 위해서 50:50 비율로 실제 이어지는 두 개의 문장과 랜덤으로 이어 붙인 두 개의 문장을 주고 훈련시킨다.

  • 문장의 구분을 위해 첫번쨰 문장과 두번째 문장의 끝에 [SEP] 토큰을 사용한다.

  • [CLS] 토큰 위치의 출력층에서 이어지는 문장 여부(이진 분류문제)를 풀도록 한다.

  • loss를 합하여 MLM과 동시에 학습이 이루어진다.

BERT가 언어 모델 이외에도 다음 문장 예측이라는 Task를 학습하는 이유는 질의응답이나 관계 추론과 같이 두문장의 관계를 이해하는 Task들이 있기 때문이다.

1.5.2. Embedding

1.5.2.1. WordPiece Embedding

단순 Subword와는 조금 다르게 아래와 같은 순서를 가지고 있다.

  1. 토큰이 Vocab에 존재한다.

    • 토큰을 분리하지 않는다.

  2. 토큰이 Vocab에 존재하지 않는다.

    • 해당 토큰을 subword로 분리한다.

    • 첫번째 subword를 제외한 나머지 subword 앞에 "##"을 붙인다 ex) embedding -> em, ##bed, ##ding

"##" 표시로 인해 다시 손쉽게 원래 단어로 복원이 가능하게 된다

1.5.2.2. Position Embedding

트랜스포머에서 사용한 Positional encoding은 Sin, Cos 함수를 사용하여 위치에 따라 다른값을 더하는 방법이다. BERT에서는 학습을 통해서 얻는 Position Embedding 방법을 사용하게 된다.

  • 문장의 길이가 4라면 4개의 포지션 임베딩 벡터를 학습시키는 것이다.

  • BERT 입력마다 각 포지션 임베딩 벡터를 더해주는 것.

1.5.2.3. Segment Embedding

  • 두 개의 문장입력이 필요한 Task (Q/A, 추론)에서 문장구분을 위해 Segment Embedding 층을 사용하게 된다. 첫 문장에는 EAE_AEA​를 두번째 문장에는 EBE_BEB​를 더해주는 방식이다.

1.5.3. Fine-Tuning

Task 별로 진행하는 Fine-Tuning(Pre-Training 된 모델을 Task에 맞게 변형하고 학습을 업데이트 하는 것) 방법에 대해서 알아본다.

1.5.3.1. Single Text Classification

  • 영화리뷰 감성분류, 로이터 뉴스 분류 등

  • 문서의 시작에 [CLS] 토큰을 사용함으로써 문맥정보를 담는다.

  • [CLS] 토큰 위치의 출력층에서 Dense Layer(Fully Connected Layer)를 통해 분류에 대한 예측을 진행한다.

1.5.3.2. Tagging

  • 문장에서 각 단어의 품사를 태깅하거나, 개체를 태깅하는 작업이 있음.

  • 출력층에서는 입력 텍스트의 각 토큰의 위치에 Dense Layer를 사용해 분류에 대한 예측을 진행한다.

1.5.3.3. Text Pair Classification or Regression

  • 두 문장을 입력받는 Task

  • 자연어 추론 Task (두 문장의 논리적 관계 - 모순, 중립, 함의 관계)

  • 문장의 끝을 의미하는 [SEP] 토큰을 사용한다.

  • Segment Embedding을 사용하여 문장을 구분하도록 값을 더해준다.

  • [CLS] 토큰에서 Dense Layer를 통해 관계에 대한 예측을 진행한다.

1.5.3.4. Question Answering

  • 두 문장을 입력받는 Task

  • SQuAD(Stanford Question Answering Dataset)

  • 질문과 본문을 입력 받으면, 본문의 일부분을 추출해서 답변을 하는 것.

    ex) 강우가 떨어지도록 영향을 받는 것은? / 기상학에서 강우는 대기 수증기가 응결되어 중력의 영향을 받고 떨어지는 것을 의미합니다. => 중력

1.5. Summary

  1. Model Architecture

    • BERT BASE : L = 12, H = 768, A = 12

    • BERT LARGE: L = 24, H = 1024, A = 16

  2. Input Representation

    • WordPiece embeddings (30,000 Word Piece) -> Subword

    • Learned positional embedding

    • [CLS] - Classification embedding -> 문맥정보를 담고 있음

    • Packed sentence embedding (SEP)

    • Segment embedding

  3. Pre-Training Tasks

    • Masked Language Model

    • Next sentence Prediction

GPT-1 vs BERT

Training Size

  • GPT : BookCorpus(800M words)

  • BERT : BookCorpus and Wikipedia (2,500M)

Training special tokens during training

  • BERT : [SEP], [CLS] and sentence A/B embedding(segment emb) during pre-training

Batch size

  • GPT : 32,000

  • BERT : 128,000

큰 배치를 사용할 수록 성능 향상과 안정화가 될 수 있다. 경사하강법을 할 때, 일부의 데이터로 하는 것보다 많은 양의 데이터로 수행하여야 안정화가 되기 때문이다. 단, GPU 메모리 소모가 크다.

Task-specific fine-tuning

  • GPT : 5e-5 learning rate for all fine-tuning experiment

  • BERT : choose a task-specific fine-tuning learning rate

참고사이트
GPT-1은 12개의 Layer를 쌓는다