Amostragem de temperatura

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 ¯\_(ツ)_/¯

Source: https://habr.com/ru/post/pt467189/


All Articles