실습 · 연습문제 1개
온도와 nucleus(top-p) 필터 구현하기 top-p-filter
자기회귀 모델은 매 step 다음 토큰의 logit 벡터 를 낸다. 함수 sample_probs(logits, temperature=1.0, top_p=1.0)를 완성해, 샘플링에 실제로 쓰는 확률 벡터를 반환한다.
- 온도: . 큰 logit에서도 overflow가 나지 않도록 최댓값을 빼고 지수를 취한다.
- nucleus(top-p): 확률이 큰 순서로 토큰을 더해 가며, 누적확률이 처음으로
top_p이상이 되는 가장 작은 집합만 남긴다. 나머지 토큰의 확률은 0으로 만들고, 남은 확률의 합이 1이 되도록 다시 정규화한다.top_p = 1.0이면 아무것도 버리지 않는다.- 가장 큰 확률 하나가 이미
top_p이상이면 그 토큰 하나만 남는다. - 확률이 같은 토큰끼리의 순서는 테스트에 영향을 주지 않는다.
| 인자 | 의미 |
|---|---|
logits |
(V,) 실수 배열 |
temperature |
양수. 1보다 작으면 분포가 뾰족해지고, 크면 평평해진다 |
top_p |
반환값은 (V,) 배열이고, 합이 1이며, 버린 토큰은 정확히 0이다. 온도를 먼저 적용한 뒤 그 분포에 top-p를 적용한다.
확인 예: 확률 에 top_p=0.8을 적용하면 누적확률 0.5, 0.7, 0.85에서 처음으로 0.8을 넘으므로 앞의 세 토큰이 남고, 결과는 와 나머지 0이다.