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 :
oznacza logit kandydata , a liczbę kandydatów. Dla otrzymujemy zwykły Softmax. Mniejsze dodatnie 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 . Przy prawdopodobieństwa wynoszą . Po zwiększeniu do 2 otrzymujemy . 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 zachowuje ich kolejność. Samo wybieranie maksimum, bez losowania, wskaże więc tego samego kandydata. Wzór nie jest zdefiniowany dla ; 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.