Muestreo de temperatura

Recientemente me encontré con una pregunta en el chat ODS : ¿por qué el algoritmo de generación de texto letra por letra muestra una letra no de p (el vector de probabilidad de la siguiente letra predicha por el modelo de lenguaje ), sino de p'=softmax(log(p)/t) ( donde t es algún otro escalar positivo extraño)


Una respuesta rápida e incomprensible: t es la "temperatura" y le permite controlar la variedad de textos generados. Y en aras de una respuesta larga y detallada, de hecho, esta publicación fue escrita.


Poco de matemática


Primero, softmax(x)=exp(x)/sum(exp(x)) recordarte que softmax(x)=exp(x)/sum(exp(x)) (exp, log, y la división de vectores es componente). Resulta que si t=1 , entonces el logaritmo y el exponente se aniquilan mutuamente, y obtenemos p'=p . Es decir, con una unidad de temperatura, esta transformación no cambia nada.


¿Qué pasa si la temperatura es muy alta? Softmax obtiene (casi) ceros, y en la salida obtenemos (casi) los mismos números, aproximadamente 1/n , donde n es la dimensión p (el número de letras en el alfabeto). Es decir, a temperaturas muy altas, criticamos lo que predijo el modelo de lenguaje, y una muestra de todas las letras es igualmente probable.


Y si establecemos la temperatura cerca de cero, entonces cada componente p' será un exponente muy grande dividido por la suma de exponentes muy grandes. En el límite, esa letra, que corresponde al mayor valor de p , dominará a todas las demás, y p' tenderá a la unidad para ella y a cero para todas las demás letras. Es decir, a temperaturas muy bajas, siempre elegimos la letra más probable (incluso si su probabilidad absoluta no es tan alta, por ejemplo, solo el 5%).


Conclusión principal


Es decir, el muestreo de temperatura es una vista general de los diferentes tipos de muestreo, teniendo en cuenta las predicciones del modelo en diversos grados. Esto es necesario para maniobrar entre la confianza del modelo y la diversidad. Puede aumentar la temperatura para generar textos más diversos, o bajarla para generar textos en los que el modelo tenga más confianza en promedio. Y, por supuesto, todo esto se aplica no solo a la generación de textos, sino en general a cualquier modelo probabilístico.


La imagen de arriba muestra ejemplos de muestreo a diferentes temperaturas del modelo GPT-2, a través de esta maravillosa página apoyada por el grupo Hugging Face. GPT-2 genera textos no por letras o palabras, sino por tokens BPE (secuencias de letras especialmente seleccionadas), pero la esencia de esto no cambia realmente.


Un poco de física


Y qué tiene que ver la temperatura con él, puede preguntar. La respuesta es una referencia a la distribución de Boltzmann utilizada en termodinámica. Esta distribución describe la probabilidad de los estados en los que se encuentra el sistema (por ejemplo, varias moléculas de gas encerradas en una botella), según la temperatura del sistema y el nivel de energía potencial correspondiente a estos estados. Tras la transición de un estado de alta energía a un estado de baja energía, se libera (se convierte en calor), pero por el contrario, se gasta. Por lo tanto, el sistema terminará más a menudo en estados de baja energía (es más fácil entrar en ellos, es más difícil salir, e imposible de olvidar ), pero cuanto mayor sea la temperatura, más a menudo el sistema también saltará a estados de alta energía. Boltzmann, de hecho, describió estas regularidades mediante la fórmula, y obtuvo exactamente la misma p=softmax(-energy/t) .


Ya escribí en mi ensayo sobre entropía ( 1 , 2 , 3 ), pero en realidad no expliqué cómo se relaciona la entropía estadística con el concepto de entropía en física. Pero en realidad, a través de la distribución de Boltzmann, parecen estar conectados. Pero aquí es mejor que te envíe a leer trabajos de física, y yo mismo iré más allá con la PNL. ¡Bajo para perplejos!


PD Este texto fue escrito a una temperatura de aproximadamente 38 °, así que no se sorprenda si es un poco más aleatorio de lo que esperaría ¯\_(ツ)_/¯

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


All Articles