Francis Villatoro introduce la explicación de una diferencia cancelativa, planteando un escenario donde dos números muy similares se restan y cómo esto afecta al almacenamiento en ordenadores.
…DeepMind publica algo se entera todo el mundo, desvelan una posible explicación de este fenómeno oscilatorio en el entrenamiento que es súper convincente porque en los ejemplos que han puesto corrige perfectamente, y además es una cosa como súper lógica. Y es lo que en métodos numéricos llamamos una diferencia cancelativa. La diferencia cancelativa es algo que parece algo tan obvio que hay que tener en cuenta y que todo el mundo se supone que lo tiene en cuenta, que a uno se sorprende de que prácticamente nadie lo tiene en cuenta. O sea, es de este tipo de cosas elementales. ¿Qué es la diferencia cancelativa? Imaginemos que tenemos dos números que son muy parecidos y yo los resto. Si yo tengo, claro, en el ordenador yo tengo que almacenar los números en un tamaño finito. Normalmente por defecto en los procesadores que estamos usando se trabaja con 64 bits, con 8 bytes. Entonces, en esos 64 bits hay que meter un número que tiene una mantiza y un exponente Un número, por ejemplo, 1,32 por 10 elevado a menos 14 El menos 14 es el exponente, por supuesto los números se almacenan en binario Y sería 2 elevado a menos el número que…
Francis Villatoro introduce la explicación de una diferencia cancelativa, planteando un escenario donde dos números muy similares se restan y cómo esto afecta al almacenamiento en ordenadores.
Habla: Francis VillatoroSignificado #1 · Palabras #1diferencia cancelativa métodos numéricosmétodos numéricos y francis villatorosorpresa por diferencia cancelativadiferencia cancelativa en ordenadoresprocesadores de 64 bitsalmacenamiento finito de números…DeepMind publica algo se entera todo el mundo, desvelan una posible explicación de este fenómeno oscilatorio en el entrenamiento que es súper convincente porque en los ejemplos que han puesto corrige perfectamente, y además es una cosa como súper lógica. Y es lo que en métodos numéricos llamamos una diferencia cancelativa. La diferencia cancelativa es algo que parece algo tan obvio que hay que tener en cuenta y que todo el mundo se supone que lo tiene en cuenta, que a uno se sorprende de que prácticamente nadie lo tiene en cuenta. O sea, es de este tipo de cosas elementales. ¿Qué es la diferencia cancelativa? Imaginemos que tenemos dos números que son muy parecidos y yo los resto. Si yo tengo, claro, en el ordenador yo tengo que almacenar los números en un tamaño finito. Normalmente por defecto en los procesadores que estamos usando se trabaja con 64 bits, con 8 bytes. Entonces, en esos 64 bits hay que meter un número que tiene una mantiza y un exponente Un número, por ejemplo, 1,32 por 10 elevado a menos 14 El menos 14 es el exponente, por supuesto los números se almacenan en binario Y sería 2 elevado a menos el número que…
Francis Villatoro explica cómo la resta de dos números similares provoca una pérdida de dígitos y introduce el concepto de 'cancelación catastrófica'. Menciona un ejemplo con los números 2.32 x 10^-3 y 1.00 elevado a 0.
Habla: Francis VillatoroSignificado #5cancelación catastrófica de dígitosnúmeros similares resta pérdida dígitosejemplo cancelación números 2 32x10-3…elevado a 4. Tengo tres dígitos. Yo puedo representar en tres dígitos mi número. Si yo tengo dos números, pi y el doble de pi, y lo resto, la diferencia tiene infinitos dígitos. Yo la puedo escribir con esos tres dígitos significativos pues la diferencia de Dos números, yo qué sé, 2.32 por 10 a la menos 3. Pero ¿qué pasa cuando yo resto dos números? Si yo resto dos números que son parecidos, yo pierdo dígitos. Eso se llama cancelación catastrófica. Si yo cojo por el número 1.00, el 1, por exponente elevado a 0, o sea, el número 1. 1.00, y de resto el número 9.999. Perdón, estamos tomando tres dígitos: 9.99 por 10 a la menos 1, es decir, el 0,999. Yo sé que la diferencia va a ser 0.0001, pero no me cabe en tres dígitos; en tres dígitos como mucho puedo poner un 1, 1.0010 a la menos 1…
Francis Villatoro explica cómo al restar números muy parecidos, como 0.99 y 0.999, la pérdida de dígitos significativos durante el cálculo en memoria resulta en un número con solo un dígito significativo: 0.001.
Habla: Francis VillatoroSignificado #3 · Palabras #8pérdida de dígitos significativos iVooxerror enorme en resta memoriaaritmética exacta y precisióndiferencia cancelativa ordenadorreescribir restas como multiplicacionescancelaciones catastróficas en números parecidosmétodos numéricos para evitar cancelacionessimulación de tesis con métodos numéricosfunción épsilon librería numéricarestas numéricas libreria iVooxa cuadrado menos b cuadradoprimeras mujeres programación década 1940…tres dígitos: 9.99 por 10 a la menos 1, es decir, el 0,999. Yo sé que la diferencia va a ser 0.0001, pero no me cabe en tres dígitos; en tres dígitos como mucho puedo poner un 1, 1.0010 a la menos 1 claro, si en realidad el número que yo estaba restando no Era 0,99, sino que era 0,999, sino que era 0,999, 8764321 pero que lo he redondeado a 0,99. Cuando yo hago la resta en memoria, lo que me queda es un número que tiene un solo dígito significativo: 0,001. El resto de los dígitos se han perdido; tengo un error enorme. Me cabrían si yo hubiera calculado con aritmética exacta o con mayor número de dígitos significativos; esa diferencia me habría dado cuenta de que tengo dígitos que puedo poner ahí, pero no los puedo poner porque el ordenador no lo sabe. Esos dígitos se han perdido. Esta diferencia cancelativa aparece. cada vez que yo resto dos números parecidos y hay mecanismos para evitar estas cancelaciones catastróficas. Hay mecanismos que te permiten ciertas restas reescribirlas sin que haya una resta. Básicamente la idea es que cuando yo tengo que restar dos cosas que tienen un tamaño parecido, pues a veces, por ejemplo, si tengo a menos b, pues puedo multiplicarlo por a más b y dividirlo por a más b, entonces arriba tengo a al cuadrado menos b al cuadrado, que lo mismo ya no son tan parecidos y eso hace una diferencia, o puedo multiplicarlo incluso por el mismo número y elevar al cuadrado. Hay maneras de eliminar esas restas y eso está muy estudiado en todos los libros de métodos numéricos En sistemas modernos lo que se puede hacer, estaba mirando el código de mi tesis de simulación mientras hablabas y ahí lo tengo Puedes comparar los dos números, puedes comparar la diferencia de los dos números respecto del épsilon de la función Epsilon que te da la librería numérica que la estás tratando. Y si aquello se dispara o produce un error, entonces sabes que no puedes hacer la resta. Porque hacer lo que tú dices, calcular A cuadrado menos B cuadrado dividido por A más B, pues empieza cuando tienes que hacer muchas restas, empieza a ser caro, obviamente. Hay opciones más caras, menos caras, pero es verdad. O sea, solo lo aplicas en principio cuando se ve que es necesario. Esto es conocido desde que hay bits, vamos. Desde que hay ordenadores, desde que las primeras mujeres empezaron a programar en la década de los 1940. Y entonces esto es un problemita que aparece en muchas circunstancias y aparece, por ejemplo, en redes neuronales. Y es una cosa que uno, yo, que he dado clase de método numérico durante 30 años, pues siempre he pensado que en redes neuronales la gente sabía…
Francis Villatoro explica cómo los compiladores no siempre optimizan código para evitar problemas numéricos como diferencias cancelativas, y propone una solución sencilla: sustituir la función softmax por softplus.
Habla: Francis VillatoroSignificado #7 · Palabras #2exponencial m1 corregida en coprocesadoresfunciones alternativas a logaritmos exponencialesdiferencias cancelativas en funciones neuronalesdiferencias cancelativas en compiladoressoftplus como alternativa a softmaxalgoritmos entrenamiento redes neuronalesoperador softmax en paquetes iacancelación en función softmax deepmindcolapso en softmass por cancelacionesprobabilidades colapsan valores incorrectos cero…en todos los libros de texto, es trivial: es cambiar ligeramente la manera en que escribes los logaritmos. Porque tienes que aplicar logaritmos y entonces tú puedes reescribir los logaritmos utilizando funciones alternativas al logaritmo y la exponencial. Hay funciones como el logaritmo de 1 más x, que es una función que te garantiza que funciona; está implementada en la máquina de tal manera que funciona incluso cuando x está muy próximo a la unidad. En lugar de tú evaluar, hacer una resta entre dos números y después aplicar el logaritmo, puedes aplicar una función que garantiza que incluso cuando podría haber diferencia cancelativa se está corregida, está corregida; y lo mismo pasa con la exponencial. La exponencial de x-1 es una función que tiene nombre y apellidos: es la exponencial m1, exponencial menos 1, que es una función también corregida para que no haya diferencias cancelativas; y eso está implementado en los coprocesadores. Tú las puedes usar, pero tienes que saber que existen y tienes que preocuparte de este problema. Si no te preocupa este problema, no los usas. Pero para eso está el compilador, ¿no? O debería. O el agente de IA que sepa que hay que usar esas expresiones raras. Claro, muchas veces uno confía en que los compiladores optimicen, pero hay muchas cosas que los compiladores no optimizan. Y este tipo de cosas, este tipo de diferencias cancelativas, en general a los ordenadores les cuesta trabajo identificarla de manera automática. Entonces, la solución es realmente sencilla: por ejemplo, sustituir el operador softmax, súper famoso, por otro que viene en todos los paquetes de IA, que es el softplus, que calcula una operación en la que se evita la diferencia cancelativa. Entonces, con cambios realmente triviales y que se pueden implementar en cualquier algoritmo que tengas de entrenamiento de redes neuronales, porque además lo permiten los algoritmos modificar las funciones que aplicas para hacer ciertas operaciones, con un par de pequeñas sustituciones automáticamente resuelves el problema y te lo quitas de encima. entonces es una cosa que se ha ido publicando en varios artículos; en los últimos años y medio ha habido varios artículos que han identificado esto, pero la bomba ha explotado el viernes pasado cuando la han publicado desde DeepMind. entonces aquí hay: este fenómeno que he contado es el fenómeno de la cancelación, o sea, se llaman del colapso en el softmass; el hecho de que por cancelaciones, por restas de números muy próximos las probabilidades colapsan y muchas probabilidades de los valores que no son el valor correcto acaban siendo cero relativo a la probabilidad del valor correcto. Y después hay otro fenómeno que también se ha identificado: que es la entropía cruzada. Bueno, todo esto viene calculado a partir de la entropía cruzada. La entropía cruzada es la manera de estimar los errores. La teoría de la información de Shannon, Shannon…
Francis Villatoro explica una técnica llamada 'soft mass cancellation' utilizada para cancelar la estimación de probabilidades durante el destilado de redes neuronales. Menciona que la solución obtenida es similar a la de otros casos.
Habla: Francis VillatoroSignificado #11 · Palabras #6soft mass cancellation destiladoestimación de probabilidades soft masssolución similar en destilado…lo que pasa es que ahora estamos comparando la probabilidad a las respuestas que ofrece el profesor con la probabilidad que durante el entrenamiento por destilado ofrece el estudiante. Entonces, cuando ambas probabilidades se acercan a uno, me encuentro. Con la diferencia cancelativa. Entonces, lo llaman soft mass cancellation. Es la cancelación de la estimación de probabilidades basada en soft mass en el caso de destilado. Y aquí la solución es prácticamente la misma que se obtiene en el otro caso. Entonces, estos son los dos ejemplos en los que ellos han puesto diferentes redes relativamente pequeñas y claro, aquí la gran pregunta es lo que comentaba Ignacio, ¿no? Lo que se ha comentado mucho en redes sociales: ¿Esto realmente nos preocupa? Porque, la verdad, lo que le pase a los estudiantes de mi clase cuando yo les obligue a entrenar redes neuronales relativamente pequeñas, pues le importa un comino a todos nuestros…
Ignacio Crespo y Francis Villatoro discuten un artículo publicado en septiembre sobre técnicas para resolver diferencias cancelativas en el entrenamiento de redes neuronales, comparándolo con un trabajo posterior de DeepMind.
Habla: Ignacio CrespoSignificado #9 · Palabras #10diferencias cancelativas entrenamiento redes neuronalestécnica deepmind y artículo septiembremárgenes extremos alumno maestro experimentos…200%, 219% en algunos parámetros. Es una barbaridad, con lo que incluso en el entrenamiento de este tipo de redes relativamente grandes también se observa este fenómeno y la solución es tan sencilla como cambiar unas restas en un cierto lugar y corregirlas. Por cierto, este artículo del 28 de septiembre se publicó antes que el de DeepMind y utiliza la misma técnica de resolver estas diferencias cancelativas, o sea que se ha publicado esto varias veces. Qué curioso, Francis; deja que te pregunte por esto porque ese artículo de septiembre, evidentemente yo no lo tenía en el radar, pero al leer este, del que nos estás hablando hoy en las conclusiones, los propios autores voy a traducirlo un poco así por encima, pero dicen: aunque los márgenes extremos y las diferencias casi nulas entre alumno y maestro que explotan nuestros experimentos son poco comunes en el entrenamiento estándar a gran escala, o sea, consideran que están un poco al margen, que no les afectaría. ¿Hay una división de opiniones respecto a ese paper que nos decías en septiembre? ¿Este? ¿O está claro que afectan? Claro, aquí el gran problema es que las grandes compañías no te lo van a confesar porque esto es... Claro, es eso. Los detalles de lo que hacen en el entrenamiento es alto secreto y no es secreto industrial, ¿no? Y estamos hablando…
Francis Villatoro explica que, a pesar de la relativa simplicidad de los algoritmos actuales, existen numerosos puntos donde las diferencias cancelativas pueden aparecer en redes neuronales con aprendizaje profundo.
Habla: Francis VillatoroSignificado #4 · Palabras #4redes neuronales aprendizaje profundodiferencias cancelativas sistemas dinámicosestudio sistemático redes neuronales villatoro…clave, que es fácil en principio asegurarse de si están funcionando porque no hay un abanico tan grande de algoritmos que se nos puedan estar escapando. Tenemos cuatro más o menos ahí, que evidentemente son más, y se puede investigar cada caso. Exactamente. En principio, pero aún así, hay muchos huecos en los que las diferencias cancelativas, por ejemplo, pueden aparecer en cantidad de lugares. Y entonces un estudio sistemático de todas las posibles diferencias cancelativas en ese tipo de sistemas dinámicos, de redes neuronales en aprendizaje profundo, que yo sepa nadie lo ha hecho y habrá que hacerlo porque puede generar sorpresas. Pues si algún oyente se anima ya tiene tareas para. El fin de semana, ¿no? Se puede poner con ello. Francis, te voy a despedir ya para que tengas tiempo de llegar con calma a clase. No sé si algún compañero quiere preguntar algo, alguna cosita. No, yo solamente voy a expresar mi sorpresa porque yo me imaginé…