일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- deep daiv. WIL
- deep daiv. project_paper
- deep daiv. 2주차 팀 활동 과제
- deep daiv. week4 팀활동과제
- deep daiv. week3 팀활동과제
- Today
- Total
OK ROCK
[NLP] Text Generation(1) : Decoding 본문
Week 4 Contents:
(1) Decoding
(2) Metric
1. Temperature
정의 : logit distribution을 변경하는데 사용되는 양(positive)의 부동소수 값.
▶ '1'보다 작은 값은 임의성을 감소시키고 , '0'은 모든 확률 질량을 가장 가능성이 높은 것으로 이동시키는 것과 같은 효과(argmax / max likelihood)가 있다.
▶ Loss(Cross Entropy Loss)를 미분하여 최적화하는 과정에서 P ∝exp(- βE) 라는 식을 얻을 수 있다. 여기서 exp(- β E)/Z(Z = normalization factor)분포는 Boltzman Distribution이라고 하며, 이때의 β = 1/T (T = Temperature), 여기서 Temperature가 얻어졌다고 한다.
2. Top -k
정의 : 확률이 높은 순서에 따라 k(integer)개의 token을 뽑아 그 안에서 sampling하는 방법
▶ GPT-2가 이 방법으로 sampling scheme에 적용하였고, 이것이 story generation에서 성공을 거둔 한 요소로 평가받는다.
▶ logit에서 sampling을 적용하기 때문에, (softmax 이전 단계) 최종 logit들의 합은 여전히 1로써 변함없다.
이는 등장할 가능성이 높은 k개의 단어 중 하나가 선택되기 때문에 관련된 단어를 가지고 다양한 문장 생성이 가능하다는 장점이 있다. 그러나 만약 k개의 단어 중에서 특정한 몇 개의 단어가 나올 확률이 매우 높고 나머지 단어들은 나올 확률이 매우 낮은 경우에는, 매우 낮은 확률로 등장하는 단어가 출력되어 생성된 문장이 어색해질 수 있다는 단점이 있다.
▶왼쪽 그림 : k = 6으로 고정하고, "The" 뒤에 위치할 단어 w가 나올 확률을 내림차순으로 정렬하여 6개에서 끊은(나머지 선택 안함) 결과, 확률의 합이 0.68이다.
▶ 오른쪽 그림: 왼쪽 그림으로부터 'The"뒤에 나올 단어 w를 car로 선택한 상황에서, 그 다음 단어 w를 예측할 때 확률의 합이 0.99이다.
3. Top -p
Top-k sampling에서의 단점을 보완해줄 수 있다.
정의 : 누적 확률의 합이 p를 넘는 최소의 단어 집합에서 확률을 재분배하고 확률에 따라 랜덤으로 단어를 선택하는 방법.
▶ 단어 집합 내 단어들이 등장할 확률의 합이 p 이상이 되는 Top-v개의 단어 집합에 초점을 두기 때문에, 등장할 확률이 매우 낮은 단어들은 샘플링되지 않아 인간의 글쓰기에 가까운 문장 생성이 가능하다.
▶ Top-k개의 단어를 모두 선택하는 방식과는 달리 Top-p sampling은 단어 집합에 존재하는 단어의 수가 다음 단어의 확률 분포에 따라 많아질 수도, 적어질 수도 있다. p의 확률은 0과 1 사이의 값으로 사용자가 설정할 수 있다.
▶왼쪽 그림: top- p를 0.92로 설정하고, 확률 누적합이 p(0.92)넘는 최소 집합을 파란색으로 표시하였다. 나머지는 선택 후보에서 배제한다.
▶ 오른쪽 그림: 그 다음 단계로, car가 선택되고 마찬가지로 0.92를 넘는 최소 token집합을 선택한 결과 3개의 토큰이 선택되었다.
4. Beam Search
제한된 집합에서 가장 유망한 노드를 확장하여 그래프를 분석하는 heuristic search algorithm이다.
▶ width = 뻗어나갈 가지의 갯수, beam size = 하나의 가지에서 고려할 후보의 갯수
▶ 레벨별로 진행하여 각 레벨의 최고 W개 노드에서만 아래로 이동
References
- transformers/src/transformers/generation/logits_process.py at main · huggingface/transformers · GitHub
- How to generate text: using different decoding methods for language generation with Transformers (huggingface.co)
- Top-k sampling, Top-p sampling (naver.com)
- https://www.geeksforgeeks.org/introduction-to-beam-search-algorithm/
'Study > NLP' 카테고리의 다른 글
[NLP] Information Retrieval(3): Vector-based Retrieval (0) | 2023.09.30 |
---|---|
[NLP] Information Retrieval(2): Keyword-based Retrieval (0) | 2023.09.30 |
[NLP] Information Retrieval(1): Evaluation Metrics (0) | 2023.09.27 |
[NLP] Byte-Pair Encoding tokenization (5) | 2023.09.17 |