Czym są ustawienia: temperature, top_k i top_p w modelach AI?

TLDR

Z tego artykułu dowiesz się czym są dwa podstawowe parametry wpływające na treści generowane przez AI. Na podstawie przykładów zrozumiesz różnice i sposób wykorzystania tych ustawień w praktyce.

 

Temperatura jest trochę jak pokrętło kreatywności

Temperatura to nic innego jak poziom przewidywalności, determinizmu i logiki w odpowiedziach modeli językowych. LLMy nie “wymyślają” tekstów które generują. Na podstawie kontekstu i własnych danych przewidują następne najbardziej prawdopodobne słowo w zdaniu zgodnie z naszą instrukcją. Temperatura steruje tym jak często pojawiają się frazy mniej lub bardziej prawdopodobne. 

 

Niższa wartość temperatury = logika i determinizm

Jeżeli ustawimy niższą temperaturę AI będzie generowało po sobie słowa które są bardziej logiczne i prawdopodobne. Im bliżej 0 tym odpowiedzi będą bardziej definicyjne, przewidywalne i proste. Im zimniej tym mniej ciekawie ale za to bardziej pewnie.

 

Wyższa wartość temp. = kreatywność i nieprzewidywalność

Im wyższa temperatura tym więcej kreatywności i zróżnicowania. Dajemy wtedy modelowi więcej polotu i finezji, zwiększając jednocześnie prawdopodobieństwo wygenerowanie nieprawidłowych informacji. Im cieplej tym ciekawiej ale może się to skończyć brakiem sensu.

W przypadku generowania tekstu kreatywnego wyższa temperatura może być pożądana bo wpływa na ciekawsze i bardziej “artystyczne” odpowiedzi. Jeżeli chcemy abstrakcji, poezji i myślenia poza schematem warto podkręcić temperaturę.

 

Domyślne ustawienia temperatury w OpenAI

Domyślnie temperatura w przeglądarkowym ChacieGPT jest ustawiona na ~0.7 chociaż nie jest to oficjalna informacja i faktyczna wartość może być inna.

Standardowa zalecana skala modyfikowania temperatury dla modeli językowych wynosi od 0.0-1.0.

Skala ustawień temperatury w API OpenAI wynosi od 0.0-2.0 ale ustawienia powyżej 1.0 mogą generować mocno chaotyczne odpowiedzi.

Obecnie w interfejsie przeglądarkowym OpenAI nie mamy bezpośredniego wpływu na ustawioną temperaturę zapytań wysyłanych do silnika LLM. Podając te parametry w promptcie lub modyfikując “Custom Instructions” dla naszego chata, możemy jedynie zmienić styl odpowiedzi tak aby zgadzał się z ustawieniami. Wartość temperatury pozostanie taka sama jak bazowo ustawiona przez OpenAI dla danego modelu (~0.7). 

Nasze odpowiedzi będą się różniły, ale z technicznego punktu widzenia model będzie korzystał z tych samych wartości prawdopodobieństwa. 

Dla ChatGPT wartość tą możemy modyfikować tylko korzystając z OpenAI API.

Podobnie jest dla modelu Perplexity, Grok oraz Claude.

Google oferuje prosty i darmowy sposób aby sterować w przeglądarce wartością temperatury. Wystarczy skorzystać z przeglądarkowej nakładki na API, np. https://aistudio.google.com/ gdzie możemy eksperymentować z modelami Gemini.

 

Przykładowe ustawienia temperatury w zależności od celu:

 

Zadanie

Temperatura

Generowanie kodu0.2
Problemy matematyczne0.1
Angażująca i rzeczowa rozmowa0.5
Generowanie kreatywnego tekstu0.6-0.8
Generowanie technicznego tekstu0.4
Analiza danych0.2

 

Szczegółowe sterowanie czyli parametry top_k oraz top_p

Aby lepiej zrozumieć sposób w jaki LLMy generują tekst polecam spojrzeć na przykład poniżej: 

Artykuł top p i top k

W prezentowanym przykładzie przy generowaniu następnego słowa w zdaniu: „Niebo jest …” słowo niebieskie ma 40% prawdopodobieństwo wystąpienia, słowo zachmurzone ma 30% wystąpienia, itd.. Wartości dla prawdopodobieństwa sumują się oczywiście do 1 = 100%.

top_k określa stałą liczbę najbardziej prawdopodobnych tokenów (słów), które model weźmie pod uwagę przy generowaniu następnego słowa. 

 

Czyli w dla naszego przykładu gdyby wartość:

top_k=4 Słowa które mogłby się pojawić to: niebieskie, zachmurzone, szare i mgliste. Są to 4 słowa z najwyższym prawdopodobieństwem.

 

Przykładowe wartości:

1-5 – bardzo duża przewidywaność i logika

5-10 – bezpieczne i spójne odpowiedzi, małe prawdopodobieństwo błędów.

50-100+ – większa różnorodność i kreatywność, większe prawdopodobieństwo nonsensu

 

top_p określa próg skumulowanego prawdopodobieństwa. Model wybiera najmniejszy możliwy zestaw tokenów, których łączne prawdopodobieństwo nie przekracza tego progu.

 

Czyli dla naszego przykładu gdyby wartość:

top_p=0,75 Słowa które mogłby się pojawić to: niebieskie (0.40) , zachmurzone (0.30) i szare (0.15). Ponieważ skumulowana wartość prawdopodobieństwa tych 3 słów mieści się w 0.75 (0.4+0.3+0,.5).

 

Przykładowe wartości:

0.3 – odpowiedzi pewne, typowe i przewidywalne

0.8 – odpowiedzi stonowane i mocno prawdopodobne, średnia kreatywność

0.9-1.0 – większa kreatywność i różnorodność, mniejsze ograniczenia

 

To wszystko brzmi podobnie do temperatury, prawda? 

 

W praktyce:

Używanie niskich wartości top_k daje bardziej przewidywalną kontrolę nad rozmiarem słownika, ale może pomijać ciekawe, choć mniej prawdopodobne, opcje. Jeśli chcemy maksymalnie kreatywnych odpowiedzi możemy w ogóle nie ustawiać ograniczeń dla top_k.

Używanie maksymalnej wartości top_p ( 1 ) jest często preferowane w zastosowaniach kreatywnych, ponieważ dynamicznie dostosowuje pulę wyboru, pozwalając na większą elastyczność i mniej „sztywne” generowanie tekstu.

A jak to się ma do parametru temperatury?

Temperatura działa w obrębie puli tokenów wybranej przez ustawienie top_k lub top_p. Jeśli temperatura jest niska (bliżej 0), model będzie faworyzował tokeny o najwyższym prawdopodobieństwie w tej puli. Jeśli temperatura jest wysoka, model będzie bardziej skłonny do losowego wyboru mniej prawdopodobnych tokenów z tej puli, zwiększając różnorodność. W skrócie interakcja wygląda tak że parametr temperatury jest nakładanych na wcześniej zastosowane parametry top_k i top_p.

 

Jakie są standardowo przyjęte wartości?

 

To znowu informacje które nie są do końca oficjalne ale jedyne które mamy dostępne:

 

Dla ChataGPT:

top_p = 1

top_k = brak ograniczenia

 

Dla Gemini:

top_p = 0.95

top_k = 64

 

Wynika z tego że teoretycznie odpowiedzi modelu OpenAI będą bardziej kreatywne i mniej ograniczone od modelu Google. Jednakże twórcy LLM-ów nie udostępniają stuprocentowo pewnych danych dotyczących swoich przeglądarkowych interfejsów. Niektóre modele zmieniają też parametry w zależności od kontekstu lub wybranego “trybu” (np. fun mode w GROK). Najlepszym sposobem na sprawdzenie efektów jest samodzielne eksperymentowanie.

 

Verbosity – obszerność lub głębokość wypowiedzi

Verbosity nie jest oficjalnym parametrem technicznym dla LLM-ów. To jednak stały skutecznych i wyczerpujących promptów. Dzięki jego wykorzystaniu możemy narzucić modelowi długość generowanej odpowiedzi. W praktyce jest to element promptu który nazywamy inaczej formatem (formą) odpowiedzi. W zależności od pożądanego formatu odpowiedź może być rozlazła lub zwięzła. Np. “odpowiedz w dwóch zdaniach” lub “napisz esej na 4 akapity i minimum 500 słów”.

 

Ustawienia stałe dla Verbosity

Aby efektywniej korzystać z tego parametru możemy w stałych instrukcjach dla czat-bota dodać rozwinięcie poszczególnych wartości liczbowych dla Verbosity. Np. Tomasz Turba z Securitum stworzył taką oto instrukcję:

 

# VERBOSITY

V=1: extremely terse

V=2: concise

V=3: detailed (default)

V=4: comprehensive

V=5: exhaustive and nuanced detail with comprehensive depth and breadth

 

Po wklejeniu tego w instrukcje dla czata wystarczy że to każdego prompta dodamy v=x aby uzyskać odpowiedź o pożądanej długości. Możemy też sami rozwinąć te instrukcje i jeszcze bardziej szczegółowo wyznaczyć długości odpowiedzi.

 

Podsumowanie

Temperature, top_k i top_p to trzy kluczowe parametry pozwalające kontrolować sposób, w jaki modele językowe generują tekst. Temperatura działa jak suwak między przewidywalnością a kreatywnością – im wyższa, tym bardziej zróżnicowane, ale też potencjalnie mniej precyzyjne odpowiedzi. Top_k ogranicza liczbę tokenów branych pod uwagę przy generowaniu kolejnego słowa, natomiast top_p wybiera najmniejszy zestaw tokenów przekraczający określony próg prawdopodobieństwa, co daje bardziej elastyczną kontrolę nad kreatywnością modelu. 

 

Wszystkie te ustawienia współdziałają, wzajemnie się uzupełniając.

 

Choć w interfejsach przeglądarkowych (np. ChatGPT) nie zawsze mamy dostęp do tych parametrów, korzystanie z API lub nakładek umożliwia ich precyzyjne ustawianie w zależności od celu – od technicznych i logicznych tekstów po kreatywne, artystyczne odpowiedzi. Dodatkowo warto pamiętać o verbosity, czyli długości i szczegółowości odpowiedzi, którą można regulować za pomocą instrukcji w promptach. 

Kluczem jest eksperymentowanie i dostosowanie parametrów do własnych indywidualnych potrzeb.

1669043811914

Michał Maciołek

Założyciel agencji m-progress

Od ponad 15 lat buduje swoje doświadczenie w marketingu online rozwiązując ciekawe problemy i spełniając cele marketingowe moich klientów. Oswajam technologię i przyjaźnię się z narzędziami AI. Nigdy nie przestaje się uczyć, testować i eksperymentować. Interesują mnie filozofie wschodu, biohacking i nowe technologie. Pozostaje w ruchu uprawiając i promując sporty frisbee. Wolne chwile spędzam w naturze lub z dobrą książką. Często zadaje trudne i prowokujące pytania.