Back to archive
#ai#llm#glossary#aigen

Temperature

Temperature to parametr skalujący logity przed operacją Softmax. Przy generowaniu tekstu zmienia rozkład, z którego losowany jest kolejny token. Dla dodatniej wartości TT:

pi(T)=exp(zi/T)j=1nexp(zj/T)p_i(T)=\frac{\exp(z_i/T)}{\sum_{j=1}^{n}\exp(z_j/T)}

ziz_i oznacza logit kandydata ii, a nn liczbę kandydatów. Dla T=1T=1 otrzymujemy zwykły Softmax. Mniejsze dodatnie TT wzmacnia przewagę najwyższych logitów, a większe spłaszcza rozkład. Tę postać wzoru przedstawiają Hinton, Vinyals i Dean, Distilling the Knowledge in a Neural Network, §2, w kontekście uczenia przez distillation.

Przykład dla dwóch kandydatów

Weźmy logity [ln4;0][\ln 4;0]. Przy T=1T=1 prawdopodobieństwa wynoszą [0,8;0,2][0{,}8;0{,}2]. Po zwiększeniu TT do 2 otrzymujemy [2/3;1/3][2/3;1/3]. Drugi kandydat zyskuje większą szansę w losowaniu, choć nadal zajmuje drugie miejsce. To własny przykład rachunkowy.

W Autoregressive Language Modeling takie skalowanie można stosować przy każdym kroku generowania, po wyznaczeniu logitów przez LM head. Dokumentacja Transformers: TemperatureLogitsWarper opisuje ten mechanizm dla sampling i zaznacza, że w generate wymaga on do_sample=True.

Dla ustalonych logitów podzielenie przez dodatnie TT zachowuje ich kolejność. Samo wybieranie maksimum, bez losowania, wskaże więc tego samego kandydata. Wzór nie jest zdefiniowany dla T=0T=0; nie należy podstawiać zera do mianownika.

Zmiana Temperature podczas generowania nie uczy nowych wag ani nie sprawdza prawdziwości wypowiedzi. Steruje prawdopodobieństwami kolejnego wyboru, więc większa różnorodność odpowiedzi sama w sobie nie świadczy o ich jakości.

Wykorzystuję treści generowane przez AI jako część mojego codziennego procesu nauki.