[gpt] gpt가 창의적인가? temperature 과 top_k , top_p
gpt 파라미터 중 temperature , top_p, top_k를 조절하는 것이 어떻게 작동하는 것인지 찾아보며, 이해가 잘 되었던 블로그, 웹 문서를 정리해보았다.
Temperature 값이 높을 때와 낮을때?
temperature값을 1보다 낮추어 (예 0.2), 가장 확률이 높은 토큰이 선택될 확률이 더 높아져서 (일관된, 이미 응답했던, 보다 자연스럽고 정확하다고 느낄) 응답이 출력된다.
temperature값이 1을 넘어서면, 가장 나올 확률이 높았던 1등 토큰이든, 2등 토큰이든 둘의 확률 차이가 점점 줄어든다. 즉, 응답한 적이 없는, 일관되지 않은, 정확하다고 느끼지 않을 토큰이 출력되게 된다.
공식문서에서 언급한 temperature값과 참고 이해 자료
0~2 사이에서 조절하며, 0.8이상을 넘길때 무작위성이 커진다고 이야기한다. 0.2에서는 보다 일관된 응답이 나오며, top_p를 조절하는 방법과 동시에 사용하기는 권하지 않고 있다.
Temperature 를 약간의 그림이랑 같이 기막히게 설명한 블로그 : https://ratsgo.github.io/nlpbook/docs/generation/inference1/#%ED%85%9C%ED%8D%BC%EB%9F%AC%EC%B3%90-%EC%8A%A4%EC%BC%80%EC%9D%BC%EB%A7%81
Top_P 값 참고 이해 자료
다음에 나올 상위 확률의 토큰 갯수(K)를 보느냐, 토큰들의 누적 확률(P)을 보느냐에 따라서 Top_K, Top_P 두가지가 달라진다. 둘을 같이 조절하기도 하는데, 아래 문서가 아주 이해하기 쉬웠다.
Top_P 와 Top_K 요약
Top_P
Top_P 누적확률샘플링에서는
'단어들의 확률을 누적'하여 '특정 임계값 P (또는 𝜏)'에 도달할 때까지의 단어들만을 고려
가령 각 단어들의 확률을 아래처럼 가정하면,
경우1) P=0.6인 경우: - hot (35%) - warm (25%)
누적 확률이 60%에 도달하기 위해 필요한 단어만 포함하여 hot, warm 둘 다 포함됨.
만약 아래와 같이 50%로 줄이면
경우2) P=0.5인 경우: - hot (35%) - warm (25%)
Top_K는
확률이 가장 높은 상위 K개의 단어만을 고려하라는 것으로,
경우1) K=3인 경우: - hot (35%) - warm (25%) - cold (10%) >> 3개의 단어가 포함됨.
경우1) K=0인 경우: 상위 단어만 고려하지 않은 >> 전부 다 고려하라는 것임.
이 파라미터를 찾다가 들었던 생각 및 관련 책 포스팅
https://pangguinland.tistory.com/319