<aside>
🌞 핵심 요약
- Top_p&Top_k는 모델의 후보 단어 {범위}에 영향을 끼치는데, 핵심을 요약하면 다음과 같음
- Top_p는 모델이 다음 단어를 예측할 때, 누적 확률 값이 P가 넘는 상위 단어만 후보 단어로 선정하는 방법이고,
- Top_K는 모델이 다음 단어를 예측할 때, 가장 확률이 높은 K개 까지만 후보 단어로 선정하는 방법임
- Temperature는 모델의 후보 단어 {확률}에 영향을 끼치는데, 핵심을 요약하면 다음과 같음
- Temperature가 높아질수록, 후보 단어 중 확률이 낮은 단어가 선택될 가능성이 비슷해짐
- Temperature가 낮아질수록, 후보 단어 중 확률이 높은 단어가 선택될 가능성이 높아짐
- 즉, Top_p가 높고& Temperature도 높으면, 선택할 수 있는 단어의 범위가 넓고&단어 사이의 확률 차이가 감소하므로, 문장은 다양하고 복잡해짐
- Top_p가 낮고& Temperature도 낮으면, 선택할 수 있는 단어의 범위가 좁고&단어 사이의 확률 차이가 증가하므로, 문장은 간단하고 일관되짐
- 문장 길이 또한 위와 같은 매커니즘으로 영향을 받음
</aside>
1. Top_p
- **
Top_p**는 모델이 다음 단어를 예측할 때, 후보 단어를 가장 높은 확률부터 낮은 확률까지 정렬한 다음, 확률의 합계가 처음으로 P를 넘는 단어들만 선택하는 방법임
- 이를테면, input data가
The weather is 일 때,
- Top_p 1.0:
The weather is looking quite splendid today!
- Top_p 0.5:
The weather is enchanting.
- Top_p 0.1:
The weather is bad.
<aside>
📝 Top_p 적용 과정
- 출력 확률 분포 계산
- 확률 분포를 내림차순으로 정렬
- 누적 확률 값이 P가 넘는 상위 단어만 후보 단어로 선정
- 후보 단어의 확률에 따라서, 다음 단어를 선택
[예시]
- 이를테면,
Top_p가 0.9인 경우, 후보 단어가 토마토: 0.5, 사과: 0.3, 무화과: 0.1, 스우파: 0.05일 때 누적 확률이 0.9를 넘는 토마토: 0.5, 사과: 0.3, 무화과: 0.1가 다음 단어로 선택됨
- 이때 모델은 확률을 다시 정규화(확률의 합계를 1로 만듬)해서, 각 단어가 선택될 조건부 확률을 계산함
- 토마토: 56%(0.5 / 0.5+0.3+0.1)
- 사과: 33%(0.3 / 0.5+0.3+0.1)
- 무화과: 11%(0.1 / 0.5+0.3+0.1)
</aside>
2. Top_k
- **
Top_k**는 모델이 다음 단어를 예측할 때, 후보 단어의 수를 상위 K개로 제한하는 방법임
- 이를테면, input data가
The weather is 일 때,
- Top_k 50:
The weather is quite unpredictable these days.
- Top_k 20:
The weather is getting warmer day by day. It's time to bring out the summer clothes.
- Top_k 05:
The weather is nice today.
<aside>
📝 Top_k 적용 과정
- 출력 확률 분포 계산
- 상위 K개의 확률 단어만 후보 단어로 선정
- 후보 단어의 확률에 따라서, 다음 단어를 선택
[예시]
- 이를테면,
Top_k가 3인 경우, 모델은 각 스텝에서 확률적으로 가장 가능성 있는 상위 3개의 단어 중 하나를 선택함
- 이때 선택되는 단어는 Top_p와 같이 확률 분포에 따라 결정됨
- 토마토: 56%(0.5 / 0.5+0.3+0.1)
- 사과: 33%(0.3 / 0.5+0.3+0.1)
- 무화과: 11%(0.1 / 0.5+0.3+0.1)
</aside>
3. Temperature
- **
Temperature**는 softmax 출력의 확률 분포를 조정하는 데 사용됨
- 이를테면, input data가
The weather is 일 때,
- Temperature 1.0:
The weather is like a whimsical wind.
- Temperature 0.5:
The weather is ****getting warmer day by day.
- Temperature 0.1:
The weather is good.
<aside>
📝 Temperature 적용 과정
- 로그 확률 계산: 주어진 문맥에서 모델이 계산한 각 단어의 확률 값에 로그 함수를 적용해서, 로그 확률을 계산함
- Temperature를 적용할 때만, 로그 확률 계산을 하는 이유는 안정성과 편의성 때문임
- 안전성: 확률값은 0~1인데, 여러 확률값들을 곱하거나 나누는 연산을 반복하는 과정에서 언더플로우(underflow) 문제가 발생할 수 있음.
- 편의성: 로그 변환은 곱셈을 덧셈으로, 나눗셈을 뺄셈으로 바꾸는데, 이것을 통해 계산을 간편하게 만들 수 있고, 오버플로우(overflow) 문제도 방지할 수 있음
- Temperature 적용: 로그 확률 값을 → temperature로 나눠줌
- softmax 정규화: Temperature로 나눠진 로그 확률 값을 지수 함수를 통해 → 원래 비율로 변환
- 선택: 변환된 비율에 따라 단어를 선택함
[예시]
- 이를테면,
Temperature가 1인 경우,
- 각 단어의 로그 확률을 그대로 사용함
- 토마토: -0.5
- 사과: -1.0
- 무화과: -2.0
- 그런데,
Temperature가 0.8인 경우,
- 각 단어의 로그 확률을 증폭시켜서, 후보 단어 중 확률이 높은 단어가 선택될 가능성을 높임
- 토마토: -0.625(-0.5 / 0.8)
- 사과: -1.25(-1.0 / 0.8)
- 무화과: -2.5(-2 / 0.8)