Recentemente me deparei com uma pergunta no bate-papo da ODS : por que o algoritmo de geração de texto letra por letra mostra uma letra não de p
(o vetor de probabilidade da próxima letra prevista pelo modelo de linguagem ), mas de p'=softmax(log(p)/t)
( onde t
existe algum outro escalar positivo estranho)?
Uma resposta rápida e incompreensível: t
é a "temperatura" e permite controlar a variedade de textos gerados. E por uma resposta longa e detalhada, de fato, este post foi escrito.

Pouco de matemática
Primeiro, softmax(x)=exp(x)/sum(exp(x))
lembrá-lo de que softmax(x)=exp(x)/sum(exp(x))
(exp, log e a divisão de vetores é componente a componente). Acontece que se t=1
, o logaritmo e o expoente são aniquilados mutuamente, e obtemos p'=p
. Ou seja, com uma temperatura unitária, essa transformação não muda nada.
O que acontece se você aumentar a temperatura? O Softmax obtém (quase) zeros e, na saída, obtemos (quase) os mesmos números, cerca de 1/n
, onde n
é a dimensão p
(o número de letras no alfabeto). Ou seja, em temperaturas muito altas, martelamos o que o modelo de linguagem previu e uma amostra de todas as letras é igualmente provável.
E se definirmos a temperatura próxima de zero, cada componente p'
será um expoente muito grande dividido pela soma dos expoentes muito grandes. No limite, essa letra, que correspondia ao maior valor de p
, dominará todas as outras, e p'
tenderá a se unir a ela e a zero a todas as outras letras. Ou seja, em temperaturas muito baixas, sempre escolhemos a letra mais provável (mesmo que sua probabilidade absoluta não seja tão alta - digamos, apenas 5%).
Conclusão principal
Ou seja, a amostragem de temperatura é uma visão geral de diferentes tipos de amostragem, levando em consideração as previsões do modelo em vários graus. Isso é necessário para manobrar entre a confiança e a diversidade do modelo. Você pode aumentar a temperatura para gerar textos mais diversos ou reduzi-la para gerar textos nos quais o modelo é mais confiante, em média. E, é claro, tudo isso se aplica não apenas à geração de textos, mas em geral a quaisquer modelos probabilísticos.
A imagem acima mostra exemplos de amostras em diferentes temperaturas do modelo GPT-2, através desta página maravilhosa, suportada pelo grupo Hugging Face. O GPT-2 gera textos não por letras ou palavras, mas por tokens BPE (sequências de letras especialmente selecionadas), mas a essência disso não muda realmente.
Um pouco de física
E o que a temperatura tem a ver com isso, você pode perguntar. A resposta é uma referência à distribuição de Boltzmann usada na termodinâmica. Essa distribuição descreve a probabilidade dos estados nos quais o sistema está localizado (por exemplo, várias moléculas de gás bloqueadas em uma garrafa), dependendo da temperatura do sistema e do nível de energia potencial correspondente a esses estados. Após a transição de um estado de alta energia para um estado de baixa energia, ele é liberado (convertido em calor), mas, pelo contrário, é gasto. Portanto, o sistema geralmente acaba em estados de baixa energia (é mais fácil entrar neles, mais difícil sair, e impossível esquecer ), mas quanto mais alta a temperatura, mais frequentemente o sistema também entrará em estados de alta energia. Boltzmann, de fato, descreveu essas regularidades pela fórmula e recebeu exatamente o mesmo p=softmax(-energy/t)
.
Eu já escrevi em meu ensaio sobre entropia ( 1 , 2 , 3 ), mas não expliquei realmente como a entropia estatística está relacionada ao conceito de entropia na física. Mas, na verdade, através da distribuição de Boltzmann, eles parecem estar conectados. Mas aqui é melhor enviá-lo para ler trabalhos de física, e eu mesmo vou além com a PNL. Baixa para você perplexões!
PS Este texto foi escrito a uma temperatura de cerca de 38 °, portanto, não se surpreenda se for um pouco mais aleatório do que você esperaria ¯\_(ツ)_/¯