Syeonny의 블로그

자연어처리 (8) GPT & BERT 본문

자연어처리

자연어처리 (8) GPT & BERT

syeonny 2024. 11. 20. 04:00

 

부스트코스 자연어처리 

 

 

https://www.boostcourse.org/ai330/lecture/1455805/?isDesc=false

 

자연어 처리의 모든 것

부스트코스 무료 강의

www.boostcourse.org

 

 

 

GPT 2 

 

다음 단어를 순차적으로 예측하는 동일한 모델이긴 하나

이전보다 대규모 좋은 품질의 데이터 셋을 사용함 40B 

 

motivation 

 

DecaNLP: Natural Language Decathlon  

multitask learning as question answering 다중 작업 학습을 질의응답 형식으로 통합

 

자연어는 각각의 task에 따라 출력 구조의 변경이 필요하다.

task 수행을 위해 일반적으론 fine tuning 을 시행해야 했지만 문장의 마지막에 질문을 덧붙여

질의응답 형식으로 출력 구조의 변경 없이도 높은 성능의 zero shot learning 이 가능함 

 

Zero-shot Learning 성능
  • 대화형 질의응답 데이터 사용 
    • Fine-tuning 없이 예측 수행
    • 결과: F1 score 55로 준수한 성능 달성
  • Few-shot learning으로 예제를 추가 학습하면 성능 향상 가능

 

Datasets

 

레딧과 같은 사이트에서  외부 링크가 포함되거나 좋아요 3개 이상 많이 받은 문서 기반 

 

 

기술적 특징 

 

Layer Normalization

  • Layer 위치 조정
  • Layer  가 모델 상단으로 갈수록 출력이 0에 가까워지도록 구성함

Byte Pair Encoding

  • Subword 수준의 토크나이저 사용.

 

주요 task 

 

  • Summarize: TL;DR 이 문장 뒤에 나오면 요약을 수행하도록 함  (too long didn't read)
  • Translation:  문장 뒤에 (예를 들면) in Korean: 이라고 덧붙이면 번역을 수행하도록 함 

 

 

 

GPT 3

 

더 많은 dataset+ 큰 batch size 

 

갈수록 성능이 더 좋아짐 

zero shot → one shot few shot

 

 

 

ALBERT (Lite Bert)

 

경량화된 BERT,  알버트  

 

기존 모델: 대규모 메모리 & 많은 학습이 필요한 모델 파라미터 필요

알버트: 성능하락 X 더 좋아진 형태 유지 & 빠른 Pretrained 진행 가능

 

 

핵심 기법 

 

Factorized Embedding Parameterization 

 

본래 모델은 동일한 차원의 word embedding block을 사용한다.  (input부터 hidden state vector 까지)

 

그러나 차원을 줄여 word embedding 구성 후 입력 vector와 맞춰주기 위해 선형 layer 추가 

더 적은 연산으로 수행 가능 

 

ex) 500 * 100 → 500 * 15 + 15 * 100 

 

 

Cross Layer Parameter Sharing 

 

선형 변환 행렬의 파라미터를 share 하자 ! 

  • Shared-FFN: feed-forward network 파리미터만 공유
  • Shared-attention: attention 파리미터만 공유
  • All-shared: 둘 다 공유
  • Not-shared: BERT

 

 

 

Sentence Order Prediction 

 

사전학습 task 자체 변경 

본래의 SEP 사용하는 Next Sentence Prediction 이 BERT 모델에서 좋은 성능을 내지 않는다고 판단, 

why? 너무 쉬운 task

 

따라서 연속적인 문장을 순서를 바꾸는 방식으로 순서가 맞는지, 틀리는지 판단하도록 함 

문장의 흐름을 파악

 

 

ALBERT는 위 3가지 기법들을 통해 모델의 경량화를 이루는 동시에 기존 BERT와 동등하거나 더 나은 성능을 유지함

 

 

 

ELECTRA 

 

Efficiently learning an Encoder that Classifies Token Replacemens Accurately 

효율적인 학습방법을 인코더에 적용 성능 개선

 

Mask or standard model 을 넘어 generator 를 사용하여 주어진 단어가 복원된 건지 판단하는 이진분류 방식 

 

  • Generator: [MASK]된 토큰을 예측
  • Discriminator: 토큰별로 Generator에 의해 예측된 토큰인지 실제 단어인지를 예측

 

 

 

앞서 나온 GAN과 유사한 방식으로 Discriminator 가 사전학습 모델로 사용된다. 

 

동일 학습 계산량 모델에 비해 좋은 성능을 보임.   모델의 경량화 

 

 

모델의 경량화 

 

Distill Bert 

 

teacher model : ground truth 로 사용 

student model : teacher 보다 더 작은 파라미터를 사용하여 teacher의 예측값과 유사해지도록 학습함  

 

TinyBert 

 

Distill Bert 와 동일하게 teacher, student model 구조

teacher 모델의 중간 결과물 (ex. hidden state vector ... ) 까지도 모두 유사해지도록 학습함

 

 

BERT 단점 및 보완 

 

BERT 단점: 사전에 주어지지 않은 추가된 정보는 활용하지 못함. 

 

따라서 우리가 갖고 있는 정보, 외부 지식(상식) 을 지식 그래프를 통해 모델에 사용하고 있음 Knowledge Graph

 

이를 활용한 두 가지 관련 모델 

 

  • ERNIE: Enhanced Language Representation with Informative Entities (ACL 2019)
    • 그래프의 노드를 임베딩한 entity 임베딩 벡터와 기존의 토큰 임베딩 벡터를 연결해 사용
  • KagNET: Knowledge-Aware Graph Networks for Commonsense Reasoning (EMNLP
    2019)
    • 각각의 질문과 답(후보들)의 쌍을 외부 지식 그래프에서 서브 그래프 형태로 탐색

 

 


 

드디어 완강 

'자연어처리' 카테고리의 다른 글

논문 정리  (0) 2024.12.20
회고  (1) 2024.11.21
자연어처리 (7) GPT와 BERT  (0) 2024.11.11
자연어처리 (6) transformer  (1) 2024.11.09
자연어처리 (5) 출력값 생성기법  (1) 2024.10.29