언어모델이 자연어를 생성할 때(Decoding) 여러가지 방식을 사용할 수 있음.
Greedy Search
- 단순히 가장 높은 확률을 가진 단어를 다음 단어로 선택
- $w_t = argmax_{w}P(w | w_{1:t-1})$

- 위 이미지처럼 각 Time Step에서 가장 높은 확률을 가지는 분기만 선택함.
- 이후의 time step을 고려하지 않기 때문에 최적의 결과를 보장할 수 없다는 단점이 있음.
- 예를 들면 단어 "has"는 0.9의 높은 조건부 확률을 가지고 있지만, 첫 검색단어중 두번째로 높은 조건부 확률 단어인 "dog" 이후에 숨어있는 형태임. 따라서 Greedy search는 "The","dog","has"라는 Word sequence를 놓치게 된다.
- 하지만 현실적으로 모든 time step을 고려해서 확률을 계산하는 것은 매우 많은 비용이 필요하기 때문에 매 time step마다 n개 정도의 후보군만 추려서 확률을 계산하는 Beam Search 방식이 고안됨.
Beam Search
- Beam Search는 각 Time Step에서 가장 확률이 높은 Hypotheses의 num_beams를 유지하고 결국 전체 확률이 가장 높은 hypothesis를 선택하는 방식.
- Greedy Search에 비해서 더 높은 확률의 Word Sequence를 놓칠 가능성을 줄인다.

- Time step=1일때, Beam search는 가장 가능성 높은 Hypothesis "The","woman"외에도 두번째로 가능성 높은 Hypothesis인 "The","dog"를 추적함.
- Time step=2일때, Beam search는 Word sequence 확률 0.2를 가진 ("The","nice","woman") 보다 확률 0.36을 가진 ("The", "dog", "has")가 높다는 것을 찾음. 이것으로 Toy example에서 가장 가능성 높은 Word sequence를 발견 할 수 있다는 것을 보임.
- Beam Search나 Greedy Search 모두 같은 문장을 계속 반복할 수도 있다는 문제가 존재하는데, 이는 N개의 단어가 계속 나올 수 없도록 하는 N-gram penalty를 도입하여 해결할 수 있다.
- 하지만 N-gram penalty는 신중하게 사용되어야 한다.
- 2-gram을 사용할 경우 전체 텍스트에서 자주 나오면서 중요한 2-gram의 text가 전체 generated corpus에서 한번만 등장할 수도 있기 때문이다.
- Beam search는 항상 Greedy search보다 높은 확률의 결과 Sequence를 찾는 것이 가능하지만, 그러나 이것이 가장 가능성 높은 결과를 찾은 것이라고는 보장할 수는 없다.
- 그리고 Beam Search가 모든 분야에서 좋은 성능을 보이는 것은 아니다.
- Machine translation 또는 Text summarization처럼 원하는 문장 생성 길이가 예측 가능한 Task에서는 잘 작동할 수 있지만, Dialog 또는 Story Generation Task처럼 출력길이가 크게 달라질 수 있는 Task에서는 원활하게 작동하지 않는다는 연구 결과가 있었음.

- 또한 Beam Search는 인간 입장에서 크게 놀라울 만한 결과가 아닐 수도 있음.
- 인간은 다양한 표현을 기대하지만, Beam Search를 통해 생성된 문장은 인간 입장에서는 따분한 문장일 수도 있다.
Sampling

- $w_t \sim P(w|w_{1:t-1})$
- 조건부 확률에 따라 Random Sampling으로 다음 단어를 예측
- 때문에 낮은 확률의 단어도 선택될 수 있음.
- 좀 더 다채로운 표현이 가능하지만 낮은 확률의 단어가 계속해서 뽑힌다면, 인간 입장에서는 자연스럽지 않은 문장이 완성될 수도 있음.
Temperature

- Temperature 값을 조절하여 높은 확률의 값은 더 높게 증가시키고, 낮은 확률은 더 낮게 축소시켜서 Sampling 할 수 있다.
Top-K Sampling

- K개의 후보군 안에서 Sampling하는 방식
- K개의 후보군 안에서 Sampling을 하기 때문에 말도 안되게 낮은 확률의 단어가 선택될 수 없음. → 자연스러운 문장 생성이 가능해짐.
- GPT도 이 방식을 채택함.
- 하지만 Top-K 방식도 단점이 존재하는데, 그것은 바로 위 이미지의 오른쪽 예시처럼 단어 확률 분포가 skewed할 때 낮은 확률을 가지는 단어가 뽑힐 가능성이 존재한다는 것이다.
- 이를 해결하고자 Top-P Sampling방식이 제안됨.
Top-P Sampling

- Top-p sampling은 가장 가능성 높은 단어 K 개에서만 Sample을 추출하는 방법이 아니라 누적확률이 확률 p를 초과하는 최소한의 단어 집합에서 Sample을 추출하는 방식임.
- 오른쪽 예시를 통해 앞선 Top-K Sampling에서 제시되었던 한계를 해결함을 확인할 수 있음.
- 이론적으로는 Top-p sampling이 더 우월한 방식 같아보이지만, 실제로는 Top-K / Top-P 두 방식 모두 잘 동작함.