핵심 키워드
- Causal Language Modeling
- Masked Multi-head Self-Attention
- In-Context learning
Decoder Model (GPT-1)
- paper - Improving Language Understanding by Generative Pre-Training
- Language Understanding: Text Entailment, QA, Classification 등 다양한 task 포함
- Generative Pre-training: BERT의 MLM과 다르게, 다음 단어를 생성하는 방식으로 Pre-training 진행(Causal Language Modeling)
- Transformer Decoder 구조를 활용하여 생성에 강점을 가지는 모델
- 문장의 흐름대로, "앞"의 문맥이 주어졌을 때 다음으로 오는 단어를 맞추는 방식으로 학습 -> Unidirectional
GPT-1 모델구조
- 단어의 시퀀스를 입력으로 받아 각 Layer마다 Masked Multi-head Self-Attention을 적용하고 Feed Forward를 통과시키는 과정을 반복적으로 수행
- Self-Attention 과 다르게 Masked Self-Attention은 전체 시퀀스를 보는 게 아니라 예측하는 단어의 앞 단어만을 반영해서 예측한다.
GPT-1 Pre-training
- Causal Language Modeling - 왼쪽에서 오른쪽으로 예측하며 언어 모델을 학습
- 예시 문장 - We play soccer together.
- 1) <sos> __ -> We
- 2) <sos> We __ -> play
- 3) <sos> We play __ -> soccer
- 4) <sos> We play soccer __ -> together
- 5) <sos> We play soccer together __ -> <eos>
GPT-1 Downstream Tasks
- 각 tasks 목적에 맞게 fine-tuning을 해줘야함..
Decoder Model (GPT-2, GPT-3)
- GPT-2, GPT-3 은 기본적으로 GPT-1과 같은 구조 -> Transformer Decoder Layer를 쌓아 올린 구조
- GPT-1 -> GPT-2 -> GPT-3 으로 갈수록 더 많은 Layer를 쌓고 더 많은 학습 데이터를 사용해서 Pre-training을 진행
GPT-2, GPT-3 공통점
- 목적: 하나의 모델로 여러 task를 수행하기 위한 GPT 모델
- Zero-shot 성능의 중요성 강조
- 모델 사이즈의 증가가 Zero-shot 성능에 중요한 영향을 준다는 주장 -> Scaling Laws
GPT-2
- paper - Language Models are Unsupervised Multi-task Learners
- -> 여러가지 task를 동시에 학습시켜 일반화 가능한 하나의 모델(Pre-training 모델)을 구축하자 -> Unsupervised 즉 Pre-trianing을 잘 학습시켜 fine-tuning 없이 zero-shot으로 바로 적용할 수 있는 일반화 모델을 만들자
- 여러 task를 하나의 일반화된 모델로 수행하기 위해서는 지시문을 통해 task별로 구분한다.
- 변역 task -> 입력: 변역을 수행하세요 "문장" -> 출력 : 변역된 문장
- 질의응답 task -> 입력: 질문에 답하세요 "질문" -> 출력: 질문에 대한 답변
- GPT-2 모델 구조
- GPT-2가 GPT-1과 다른 점은 Layer normalization의 적용 방식이다.
- GPT-2에서는 Residual Connection을 적용하기 전에 Layer Normalization을 수행하는데, 이는 Residual Connection을 통해 들어오는 입력의 분포를 정규화하여, 이후 Feed-Forward Network나 Masked Multi-Head Self-Attention을 더 안정적으로 학습하도록 한다.
GPT-3
- paper - Language Models are Few-shot Learners
- In-Context learning을 통해 task별 많은 데이터를 구축하거나 학습할 필요 없이 few-shot 예제만으로 성능 향상
- 입력한 내용 내 맥락적 의미(In-Context)를 모델이 이해하고(learning), 답변을 생성
- Pre-training이나 Fine-tuning와 달리, 별도의 모델 학습과정이 존재하지 않음 -> Pre-training만으로 모델이 많은 task를 수행
- Zero-shot, One-shot, Few-shot
- paper 제목에서도 알 수 있듯이 파라미터가 큰 모델일수록, Few-shot을 했을 때 성능이 확연하게 좋은 것을 알 수 있다.
- 즉, 모델을 새로 학습시키거나, 학습된 모델을 task마다 별개로 둬야 한다는 단점을 극단적으로 해결할 수 있는 방식 -> GPT3부터 이 능력을 가진다.
GPT Generation
GPT-2 모델을 사용하여 하나의 input에 여러 출력 시퀀스를 generate하기 GPT 모델의 decoder-only 구조와 ouput logits을 통해 다양한 sampling방식을 통해 다양한 결과 생성하기 - 허깅페이스를 통해 토크나이저와 모델을 불려 오기
- temperature
- temperature가 1보다 높으면 generate할 때마다 다양한 텍스트 생성 - 창의적인 답변 원할 때
- temperature가 1보다 낮으면 비슷한 텍스트를 생성할 확률이 높아짐 - 일관된 답변 원할 때
# 생성할 문장
text = "오늘 아침에"
-->
0회 생성 결과
temperature 0.01: 오늘 아침에는 비가 내리고 있네요.�
temperature 10.0: 오늘 아침에 해우니집 강아지는 아니라고 확신해도 좋지만일단 너무 이뻻다며 계속 ㅡ아버님 폰앨범보고 사진 보여 드렸던,내 사랑 미내 〠 〝 〙~^�
1회 생성 결과
temperature 0.01: 오늘 아침에는 비가 내리고 있네요.�
temperature 10.0: 오늘 아침에 신문보면서 뉴스들으러 나왔어야하나 고민 했답니다!오늘도 더~ 추워진다는군요??우리 모두 더 따듯이~^,**~♼ ㅿ╙:★3v^,
2회 생성 결과
temperature 0.01: 오늘 아침에는 비가 내리고 있네요.�
temperature 10.0: 오늘 아침에 출근전 운동복 사진인데•̦▿_e 다음블금부턴 옷 갈아입어요아쥬 날씬한 상태라 살 많이 가려질지도 몰라!!다름 사진을 들쑥서 다는거 넘 귀
- top k sampling
- top k: 가능한 토큰 중에서 가장 높은 확률 k개를 뽑고 그중 random sampling을 통해 하나의 토큰을 뽑음
- k 값이 높을수록 다양한 응답을 유도
k 1: 오늘 아침에는 비가 내리고 있네요.�
k 50: 오늘 아침에는 일찍 일어나시더니 학교를 안갔다며..학교에서 돌아온 아이와 이런 저런 이야기를 하고 있었는데..울아들이 그러더군요. 어제 엄마가 너무 바빠서 학교에 못갔다고...오늘 학교에서 친구
k 100: 오늘 아침에 눈을 떠보니창문 반대편에 엄청난 무지개가 떠있어서기분좋으려고 올려다보다가 봤는데사진을 제대로 안찍은 바람에 ㅠㅠ네이버에 '무지개' 검색해서사진 다운받
- top p sampling
- 확률이 높은 토큰을 차례대로 선택하고 이 선택되는 확률을 누적하고, 주어진 누적 확률값 top_p 보다 커질 때까지 누적한다. 이후 후보 토큰 중 하나를 random sampling 하고 다음 생성 토큰으로 출력한다.
p 0.8: 오늘 아침에 눈을 떠보니, 눈이 또 오고 있었어요!!
p 0.9: 오늘 아침에 출근하려고 집을 나오는데, 아파트 단지에 고양이가 차 밑에 있었다. 근데 집에 들어가자 엄마가 "고양이 밥 먹었나?""엄마,,
p 1.0: 오늘 아침에는 일어나니 비가 촉촉히 내린 오후였습니다만, 오늘 아침부터는 하늘이 맑아 하늘이 더 예뻐보여 한컷 담아보았습니다. 어제에 이어 오늘도 구름이 예쁨을 가득가득
- beam search
- beam search는 token 예측 시점에서 가장 logit값이 높은 token들의 조합(beam) k개만 저장하고, 이를 조합하여 모든 후보 문장 중에서 가장 높은 총 확률 점수를 가진 문장을 최종 결과로 선택
beam search: 오늘 아침에 일어나보니 눈이 엄청 쌓여있더라구요 ㅋㅋㅋ
'DL' 카테고리의 다른 글
[LLM]Large Language Model 근간 이론 (7) | 2024.09.24 |
---|---|
Encoder-Decoder Model - BART (0) | 2024.09.24 |
Encoder Model BERT (0) | 2024.09.24 |
Transformer 이해하기 (0) | 2024.09.23 |
Attention 이해하기 (1) | 2024.09.17 |