[LLM] Quel est le coefficient de température dans le grand modèle ?

1. Coefficient de température en LLM

  • Le paramètre de température contrôle le caractère aléatoire et la créativité du texte généré dans le modèle de langage généré, et ajuste la probabilité de mots prédits dans la couche de sortie softmax du modèle ;
  • Plus la valeur est grande, plus la variance de la probabilité de mots prédits est petite, c'est-à-dire que la possibilité que de nombreux mots soient sélectionnés augmente, ce qui est propice à la diversification du texte
  • Exemple : Invite : "Le renard brun rapide"
    • Température = 0,1 :
      « Le renard brun rapide a sauté par-dessus le chien paresseux. Le rapide renard brun sauta par dessus le chien paresseux. Le rapide renard brun sauta par dessus le chien paresseux.
    • Température = 0,5 :
      « Le renard brun rapide a sauté par-dessus le chien paresseux. Le chat paresseux n'a pas été impressionné. Le renard brun rapide s'est enfui.
    • Température = 1,0 :
      « Le renard brun rapide a sauté par-dessus le chien paresseux. Soudain, une volée d'oiseaux a volé au-dessus de la tête, provoquant l'arrêt du renard. Il a levé les yeux vers le ciel, se demandant où ils allaient.

La distribution de probabilité calculée par softmax : p ( xi ) = exi ∑ j = 1 V exjp\left(x_i\right)=\frac{e^{x_i}}{\sum_{j=1}^V e^{x_j } }p( xje)=j = 1VeXjeeXje
Lors de l'ajout du coefficient de température à softmax : p ( xi ) = exi T ∑ j = 1 V exj T = 1 ∑ j = 1 V exj − xi T p\left(x_i\right)=\dfrac{e^{\dfrac { x_i}{T}}}{\sum_{j=1}^V e^{\dfrac{x_j}{T}}} \\ =\frac{1}{\sum_{j=1}^V e ^ {\frac{x_{j}-x_i}{T}}}p( xje)=j = 1VeJXjeeJXje=j = 1VeJXje−x _je1
Analyse simple : la valeur de la température varie de 0 à 1. Lorsque la valeur est plus grande, divisez le numérateur et le dénominateur de la formule ci-dessus par le numérateur en même temps, et vous pouvez constater que plus la température est élevée, plus l'ensemble est élevé. valeur.

2. Exemple de code

import torch
import torch.nn as nn
import torch.nn.functional as F
import matplotlib.pyplot as plt

criterion = nn.CrossEntropyLoss()
x = torch.Tensor([[1, 2, 3 ,4]])
y = torch.LongTensor([3])
# 折线图横坐标
x_ = [i for i in range(len(x.squeeze(0)))]
t = [1, 0.5, 0.1]
col = ['red', 'blue', 'green']

for i in range(len(t)):
    temp = t[i]
    out = F.softmax(x / temp, dim=1)
    loss = criterion(out, y)
    y_ = out.squeeze(0).tolist()
    plt.plot(x_, y_, color=col[i], linestyle='dashed', linewidth=2, \
             marker='o', markerfacecolor='red', markersize=8, label = "temp:" + str(temp))
    print("softmax概率值:", out, "\nloss:", loss, "\n")

# 图例放在右上角
plt.legend(loc = "upper left")
plt.title("diffterent temperature")
plt.xlabel("xlabel")
plt.ylabel("logits")
plt.show()

insérez la description de l'image ici
Avec la diminution de T, la variance de probabilité de chaque catégorie de sortie softmax est plus grande, et plus T est grand, plus il est lisse, ce qui confirme l'analyse de tout à l'heure.

Référence

[1] Parlez du coefficient de température T (τ) qui apparaît souvent dans softmax
[2] Paramètres LLM démystifiés : obtenir les meilleurs résultats du langage AI

Je suppose que tu aimes

Origine blog.csdn.net/qq_35812205/article/details/131714617
conseillé
Classement