research notes

GPT 다음 토큰 선택 알고리즘 본문

GPT/개념정의

GPT 다음 토큰 선택 알고리즘

forest62590 2022. 11. 5. 17:35
728x90

References:

[1] BERT와 GPT로 배우는 자연어 처리, 이지스 퍼블리닝, 이기창
[2] ratsgo's NLP blog, https://ratsgo.github.io/nlpbook/docs/language_model/transformers/

1. BERT와 GPT차이

항목 GPT BERT
모델 구조 GPT(트랜스포머의 디코더) BERT(트랜스포머의 인코더)
프리트레인 태스크 다음 단어 맞히기 빈칸 맞히기
파인튜닝 다음 단어 맞히기 각 다운스트림 태스크

- BERT는 프리트레인 태스크와 파인튜닝 태스크가 서로 다르다. 하지만 GPT(문장 생성 과제)는 프리트레인과 파인튜닝 태스크가 '다음 단어 맞히기'로 같다. 즉, 문장 생성 과제는 프리트레인과 파인튜닝 태스크가 동일하므로 프리트레인 모델의 구조를 구조 변경 없이 그대로 파인튜닝을 수행할 수 있다.
 
- 예를 들어, 파인튜닝 데이터의 이번 입력 단어 시퀀스가 '이 영화 정말 재미'이고 이번에 '있었어'를 맞춰야 하는 상황이라고 가정해 보자. 이 경우 이번 시점의 정답인 '있었어'에 해당하는 모델 출력 확률은 높이고 나머지 단어의 확률은 낮아지도록 모델 전체를 업데이트 한다. 이것이 문장 생성 과제의 파인튜닝이다.

2. 문장생성(Sentence Generation)

- 말 그대로 문장을 만들어 내는 과제이다. 구체적으로 이전 단어들, 즉 컨텍스트(프롬프트)가 주어졌을 때 다음 단어로 어떤 단어가 오는게 적절한지 분류하는 것이다. 문장 생성 과제에서 모델의 입력은 컨텍스트, 출력은 컨텍스트 다음 토큰의 등장 확률이 된다. 즉, 입력은 컨텍스트를 토큰화한 결과(토큰 시퀀스)이며 출력은 다음 토큰에 대한 확률분포이다. 이 확률분포의 길이는 어휘 집합(vocabulary) 크기와 같다.
 
- 다음 그림은 (안녕, 하세요)를 컨텍스트로 해서 모델이 출력한 다음 토큰 확률분포, 즉 P(w|안녕, 하세요)를 나타낸 그림이다. 모델이 (안녕, 하세요) 다음 토큰으로 !를 가장 그럴듯하다고 예측하고 있다. 따라서,  (안녕, 하세요) 다음 토큰으로 !를 선택할 수 있게된다.

문장 생성 과정

★ 문장 생성 방식은 다음과 같다.
1. 컨텍스트를 모델에 입력해 다음 토큰 확률, 즉 p(w|context)를 출력한 뒤 다음 토큰을 선택한다.
2. 기존 컨텍스트에 1에서 선택한 다음 토큰을 이어붙인 새로운 컨텍스트를 모델에 입력해서 다음 토큰 확률 분포, 즉 p(w|new context)를 추출하고 또 다시 그 다음 토큰을 선택한다.
3. 1, 2를 반복해 다음 토큰을 계속 생성해 나간다. 

3. 토큰 선택하기

모델의 출력 확률분포로부터 다음 토큰을 반복해서 선택하는 과정이 바로 문장 생성 태스크이다. 하지만 문제는 특정 컨텍스트 다음에 올 토큰으로 무수히 많은 경우의 수가 존재한다는 것이다. 즉, 다음 토큰이 어떤 것이 되느냐에 따라 생성 문장의 의미가 180도 달라질수 있는 것이다.
 
언어모델의 입력값은 컨텍스트, 출력값은 컨텍스트 다음에 오는 단어의 확률분포라는 점을 감안하면 정석대로 문장을 생성하려면 아래 9가지 모든 케이스를 모델에 입력해서 다음 단어 확률분포를 계산하고 이로부터 다음 단어를 선택하는 과정을 거쳐야 하고, 또 이걸 반복해야 한다. 이해가 쉽도록 모델의 예측 결과를 아주 단순화 하였으나 실제로는 위의 9가지보다 훨씬 많은 경우의 수가 존재할 것이다. 모든 경우의 수를 계산해보는 건 사실상 불가능에 가깝다.

3.1. 그리디 서치

그리디 서치(greedy search)는 매순간 최선(best)를 선택해 탐색 범위를 줄여보자는 것이 핵심 아이디어다. 첫 번째 단어 예측 결과에서 책이 0.5로 가장 높으므로 다음 단어로 책을 선택하고 모델에 입력해 다음 확률분포를 계산, 마찬가지로 이, 을, 읽 셋 가운데 확률 값이 가장 높은 이(0.4)를 그 다음 단어로 선택한다.

3.2. 빔 서치

 빔 서치(beam search)는 빔(beam) 크기 만큼의 선택지를 계산 범위에 넣는다. 아래는 빔 크기가 2인 빔 서치의 예시이다. 

모델은 "그" 다음에 올 단어로 책(0.5), 집(0.4), 사람(0.1) 순으로 예측 했다. 빔 크기를 2로 설정해 두었으므로 예측 결과에서 확률이 높은 2개 (책, 집)만 탐색 대상으로 남겨두고 사람은 제거 한다. 그리고 모델에 그 책을 입력해 다음 토큰 등장 확률을 계산한다.
 

  • 그 책이 : 0.5×0.4=0.2
  • 그 책을 : 0.5×0.3=0.15
  • 그 책 읽 : 0.5×0.3=0.15

모델에 그 집을 입력해 다음 단어 시퀸스 확률을 계산한다.

  • 그 집에 : 0.4×0.7=0.28
  • 그 집은 : 0.4×0.2=0.08
  • 그 집 사 : 0.4×0.1=0.04

빔 크기를 2로 설정해 두었으므로 위의 6가지 경우의 수에서 가장 확률이 높은 시퀀스 두 개만을 남겨둔다. 그 집에(0.28), 그 책이(0.2)). 만일 빔 서치를 여기에서 그만둔다면 이 둘 가운데 확률값이 조금이라도 높은 그 집에가 최종 생성 결과가 된다.

3.3. 탑-k 샘플링

지금까지 살펴본 문장 생성 방식은 모델이 출력한 다음 토큰 확률분포를 점수로 활용한 것이다. 전체 어휘 가운데 점수가 가장 높은 토큰을 다음 토큰으로 결정하는 방식이다. 또한, 샘플링(sampling)이라는 방식도 존재한다. 아래 그림을 보면 '그'라는 컨텍스트를 입력했을 때 모델은 다음 토큰으로 집(0.5), 책(0.4), 사람(0.1)이 그럴듯하다고 예측했다. 여기에서 다음 토큰을 확률적으로 선택할 수 있다. 집이 선택될 가능성이 50%로 제일 크지만 사람이 선택될 가능성도 10%로 작지만 없지 않다. 복권 당첨 확률이 아주 낮지만 당첨되는 사람이 나오는 것과 비슷한 이치이다.
 
아래 그림에서 실제 선택된 다음 토큰은 '사람'이다. 샘플링 방식으로 다음 토큰을 선택하게 된다면 동일한 모델, 동일한 컨텍스트라 하더라도 시행 때마다 문장 생성 결과가 다를 수 있다.

탑-k 샘플링(top-k sampling)은 모델이 예측한 다음 토큰 확률분포 에서 확률값이 가장 높은 k개 토큰 가운데 하나를 다음 토큰으로 선택하는 기법이다. 아래 그림은 k를 6으로 뒀을 때 샘플링 대상 토큰들을 나타낸 것이다. 확률값이 큰 단어가 다음 단어로 뽑힐 가능성이 높지만 k개 안에 있는 단어라면 '의자' 같이 확률값이 낮은 케이스도 다음 토큰으로 추출될 수 있다. 따라서 탑-k 샘플링은 매 시행 때마다 생성 결과가 달라진다.

3.4. 템퍼러처 스케일링

템퍼러처 스케일링(temperature scaling)은 모델의 다음 토큰 확률분포에 대소 관계의 역전 없이 분포의 모양만 변경해 문장을 다양하게 생성하는 기법이다. 예를 들어, 위 그림의(3.3. 탑-k 샘플링) 확률분포에서 '그' 다음의 토큰 확률은 각각 책(0.5), 집(0.4), 사람(0.1)이었다. 템퍼러처 스케일링을 적용한 결과 '그' 다음의 확률이 책(0.75), 집(0.23), 사람(0.02)으로 바뀌었다. 즉, 순위의 변동은 없지만 원래 컸던 확률은 더 커지고 작았던 확률은 더 작아져 확률분포의 모양이 뾰족(sharp)해졌음을 알 수 있다.

3.5. 탑-p 샘플링

탑-p 샘플링(top-p sampling)은 확률값이 높은 순서대로 내림차순 정렬을 한 뒤 누적 확률값이 p 이상인 단어들 가운데 하나를 다음 단어로 선택하는 기법이다. 뉴클리어스 샘플링(necleus sampling)이라고도 불린다. 확률값을 기준으로 단어들을 내림차순 정렬해 그 값이 높은 단어들을 후보로 삼는다는 점에서는 탑-k 샘플링과 같지만 상위 k개를 후보로 삼느냐(탑-k 샘플링), 누적 확률값이 p이상인 단어들을 후보로 삼느냐(탑-p 샘플링)에 따라 차이가 있다.
 
아래 그림은 '그'라는 컨텍스트를 입력했을 때 모델이 출력한 다음 확률분포이다. p를 0.92로 설정했을 때 다음 단어 후보는 '책'부터 '회사'까지 9개, 그리고 이들의 누적 확률합은 0.94가 되는 걸 확인할 수 있다. k가 6인 탑-k 샘플링에서는 다음 단어 후보가 '책'부터 '의자'까지 6개, 그리고 이들의 누적확률합은 0.68인 걸 알 수 있다.

 

728x90
Comments