LLM에는 자연어가 아닌 tokenize된 token ID들이 입력됨
LLM의 output은 주어진 입력 token 다음에 올 가장 적합한 token을 예측하는 수치화된 값으로, LLM이 알고있는 모든 Token을 대상으로 이 수치를 계산하고, 이 값을 Logit이라고 부름
Output의 첫번째 logit은 token ID 1번의 값, 두번째 logit은 token ID 2번의 값, 이런식으로 logit의 순서는 token ID와 일치
logit들은 softmax 함수에 의해 0~1 사이의 확률로 변환됨
일반적으로 큰 logit이 높은 확률로 갖게 됨
만약 가장 큰 확률을 갖는 token만을 선택한다면 같은 입력에 대해 항상 같은 답변만을 생성할 것.
하지만 LLM은 각 Token이 갖는 확률을 바탕으로 전체 token의 확률 분포를 만들고, 이 분포 안에서 다음 token을 sampling 하여 선택
즉, 높은 확률을 갖는 token이 낮은 확률의 token보다 높겠지만, 반드시 선택된다는 보장은 없음
이처럼 token은 확률적으로 선택되기 때문에 LLM의 답변은 물어볼 때마다 바뀌게 됨
(1) Temperature
(2) Top_K
(3) Top_P
(4) Repetition_Penalty
참고
https://huggingface.co/docs/transformers/v4.44.2/en/main_classes/text_generation#transformers.GenerationConfig
https://www.sktenterprise.com/bizInsight/blogDetail/skt/9622