In che modo la temperatura influisce sulla previsione del prossimo token negli LLM?  |  di Ankur Manikandan |  Maggio 2024

 | Intelligenza-Artificiale

introduzione
I Large Language Models (LLM) sono modelli generativi versatili adatti a un'ampia gamma di attività. Possono produrre risultati coerenti e ripetibili o generare contenuti creativi mettendo insieme parole improbabili. L'impostazione della “temperatura” consente agli utenti di ottimizzare l'output del modello, controllando il grado di prevedibilità.

Facciamo un esempio ipotetico per comprendere l'impatto della temperatura sulla prossima previsione del token.

Abbiamo chiesto a un LLM di completare la frase, “Questo è un meraviglioso _____.” Supponiamo che i potenziali token candidati siano:

|   token    | logit |
|------------|-------|
| day | 40 |
| space | 4 |
| furniture | 2 |
| experience | 35 |
| problem | 25 |
| challenge | 15 |

I logit vengono passati attraverso una funzione softmax in modo che la somma dei valori sia uguale a uno. In sostanza, la funzione softmax genera stime di probabilità per ciascun token.

Funzione softmax standard

Calcoliamo le stime di probabilità in Python.

import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
from ipywidgets import interactive, FloatSlider

def softmax(logits):
exps = np.exp(logits)
return exps / np.sum(exps)

data = {
"tokens": ("day", "space", "furniture", "experience", "problem", "challenge"),
"logits": (5, 2.2, 2.0, 4.5, 3.0, 2.7)
}
df = pd.DataFrame(data)
df('probabilities') = softmax(df('logits').values)
df

| No. |   tokens   | logits | probabilities |
|-----|------------|--------|---------------|
| 0 | day | 5.0 | 0.512106 |
| 1 | space | 2.2 | 0.031141 |
| 2 | furniture | 2.0 | 0.025496 |
| 3 | experience | 4.5 | 0.310608 |
| 4 | problem | 3.0 | 0.069306 |
| 5 | challenge | 2.7 | 0.051343 |
ax = sns.barplot(x="tokens", y="probabilities", data=df)
ax.set_title('Softmax Probability Estimates')
ax.set_ylabel('Probability')
ax.set_xlabel('Tokens')
plt.xticks(rotation=45)
for bar in ax.patches:
ax.text(bar.get_x() + bar.get_width() / 2, bar.get_height(), f'{bar.get_height():.2f}',
ha='center', va='bottom', fontsize=10, rotation=0)
plt.show()

IL funzione softmax con temperatura è definito come segue:

dove (T) è la temperatura, (x_i) è la (i)-esima componente del vettore di input (logit) e (n) è il numero di componenti nel vettore.

def softmax_with_temperature(logits, temperature):
if temperature <= 0:
temperature = 1e-10 # Prevent division by zero or negative temperatures
scaled_logits = logits / temperature
exps = np.exp(scaled_logits - np.max(scaled_logits)) # Numerical stability improvement
return exps / np.sum(exps)

def plot_interactive_softmax(temperature):
probabilities = softmax_with_temperature(df('logits'), temperature)
plt.figure(figsize=(10, 5))
bars = plt.bar(df('tokens'), probabilities, color='blue')
plt.ylim(0, 1)
plt.title(f'Softmax Probabilities at Temperature = {temperature:.2f}')
plt.ylabel('Probability')
plt.xlabel('Tokens')
# Add text annotations
for bar, probability in zip(bars, probabilities):
yval = bar.get_height()
plt.text(bar.get_x() + bar.get_width()/2, yval, f"{probability:.2f}", ha='center', va='bottom', fontsize=10)
plt.show()

interactive_plot = interactive(plot_interactive_softmax, temperature=FloatSlider(value=1, min=0, max=2, step=0.01, description='Temperature'))
interactive_plot

A T = 1,

Ad una temperatura pari a 1, i valori di probabilità sono gli stessi derivati ​​dalla funzione softmax standard.

A T > 1,

L’aumento della temperatura aumenta le probabilità dei token meno probabili, ampliando così la gamma di potenziali candidati (o diversità) per la prossima previsione del token del modello.

A T < 1,

L'abbassamento della temperatura, d'altro canto, fa sì che la probabilità del token più probabile si avvicini a 1,0, aumentando la fiducia del modello. La diminuzione della temperatura elimina effettivamente l’incertezza all’interno del modello.

Conclusione

Gli LLM sfruttano il parametro della temperatura per offrire flessibilità nelle loro previsioni. Il modello si comporta in modo prevedibile alla temperatura 1, seguendo da vicino la distribuzione softmax originale. L’aumento della temperatura introduce una maggiore diversità, amplificando i segnali meno probabili. Al contrario, la diminuzione della temperatura rende le previsioni più mirate, aumentando la fiducia del modello nel token più probabile riducendo l’incertezza. Questa adattabilità consente agli utenti di adattare i risultati LLM a un'ampia gamma di attività, trovando un equilibrio tra esplorazione creativa e risultati deterministici.

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *