Francis Villatoro explica la diferencia entre precisión y exactitud en aritmética numérica, mencionando el uso de aritméticas más pequeñas como las de 32 bits (coma simple) que aún se proponen para redes neuronales.
…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 corresponda Pero bueno, para simplificarlo lo menciono en decimal Y tengo la mantiza, que es lo que multiplica a esa potencia Entonces cuando yo almaceno, almaceno la mantiza, que la mantiza siempre se almacena en binario empezando con un 1, con lo que todos los números es 1.cosas, luego ese bit de 1 no se almacena, lo que se almacena ahí es el signo, positivo o negativo del número y meto, digamos, el resto de los dígitos de la mantiza y el exponente. Pues lo que ocurre es que, claro, todo número ha de ser truncado o redondeado para que quepa en ese tamaño. Cuando yo tengo dos números, el tamaño de esa mantiza es lo que se llama la precisión del número. La precisión en la aritmética numérica, en la aritmética flotante, no es lo mismo que la exactitud. La precisión es solamente el tamaño en el que yo quepo. Hace años se utilizaban aritméticas más pequeñas; en lugar de 64 bits se utilizaban 32 bits. Eso es lo que se llama coma simple, números flotantes en coma simple. E incluso hoy en día en redes neuronales se ha propuesto. El uso de aritméticas mucho más limitadas, con mantillas muy cortas, con muy pocos exponentes y que sorprendentemente están dando, sobre todo en problemas de no gran número de datos; no estamos hablando de los grandes modelos de lenguaje de las grandes…
Francis Villatoro explica la diferencia entre precisión y exactitud en aritmética numérica, mencionando el uso de aritméticas más pequeñas como las de 32 bits (coma simple) que aún se proponen para redes neuronales.
Habla: Francis VillatoroSignificado #1 · Palabras #1números con mantisa y exponentealmacenamiento binario de númerosmantiza en binario iVooxbit de signo en númerostruncado redondeado para caber tamañoprecisión aritmética flotanteexactitud no es precisiónprecisión y exactitud aritmética numéricaaritméticas de 32 bits coma simpleredes neuronales con coma simple…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 corresponda Pero bueno, para simplificarlo lo menciono en decimal Y tengo la mantiza, que es lo que multiplica a esa potencia Entonces cuando yo almaceno, almaceno la mantiza, que la mantiza siempre se almacena en binario empezando con un 1, con lo que todos los números es 1.cosas, luego ese bit de 1 no se almacena, lo que se almacena ahí es el signo, positivo o negativo del número y meto, digamos, el resto de los dígitos de la mantiza y el exponente. Pues lo que ocurre es que, claro, todo número ha de ser truncado o redondeado para que quepa en ese tamaño. Cuando yo tengo dos números, el tamaño de esa mantiza es lo que se llama la precisión del número. La precisión en la aritmética numérica, en la aritmética flotante, no es lo mismo que la exactitud. La precisión es solamente el tamaño en el que yo quepo. Hace años se utilizaban aritméticas más pequeñas; en lugar de 64 bits se utilizaban 32 bits. Eso es lo que se llama coma simple, números flotantes en coma simple. E incluso hoy en día en redes neuronales se ha propuesto. El uso de aritméticas mucho más limitadas, con mantillas muy cortas, con muy pocos exponentes y que sorprendentemente están dando, sobre todo en problemas de no gran número de datos; no estamos hablando de los grandes modelos de lenguaje de las grandes…
Francis Villatoro explica cómo al restar dos números muy parecidos se pierde precisión, ejemplificando con números que tienen solo tres dígitos significativos.
Habla: Francis VillatoroSignificado #14pérdida de precisión al restarnúmeros con tres dígitos significativos…número de datos; no estamos hablando de los grandes modelos de lenguaje de las grandes empresas de IA, sino en modelos más pequeños, están dando muy buenos resultados, sorprendentemente. Eso para almacenar lo que es la red, todos los parámetros de la red. Cuando yo resto dos números muy parecidos, yo pierdo precisión. Vamos a ver el ejemplo más sencillo: Tres dígitos significativos. Números del tipo 1.23 por 10 elevado a menos 2 o 5.32 por 10 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,…
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 #12pérdida de dígitos significativos iVooxerror enorme en resta memoriaaritmética exacta y precisióndiferencia cancelativa ordenador…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…
Francis Villatoro explica cómo la diferencia de magnitud entre números puede llevar a problemas numéricos al comparar valores en aritmética flotante.
Habla: Francis VillatoroSignificado #4 · Palabras #4aritmética flotante y números pequeñostamaño de almacenamiento exponente insuficientearitmética simple 10 elevado a 80…diferencia. Se utilizan logaritmos, normalmente logaritmos neperianos, pero bueno, imaginemos que fueran logaritmos en base 10: serían 18 órdenes de magnitud, es una barbaridad, ¿por qué? Porque si utilizo una aritmética flotante, una aritmética numérica, por Ejemplo, coma simple, ya esa diferencia es tan grande que cuando comparo un número con el otro, el más pequeño es prácticamente cero y se va, no lo tengo en cuenta. Aquí normalmente se suele, claro, para evitar este tipo de grandes saltos en magnitud, sobre todo evitar que la exponencial se me salga, porque la exponencial 10 elevado a 200, 10 elevado a 300 en aritmética doble y 10 elevado a 80 o por ahí en aritmética simple ya se me salen, se me salen desde el tamaño que puedo almacenar, no tengo el exponente suficientemente grande. Entonces para evitar eso lo que se hace. Es restar el máximo de los valores de los logits, en mi caso eran 1 menos 9, 9. El máximo es 9, resto 9, entonces el 9 lo convierto en 0; la exponencial de 0 vale 1 y el 1 lo convierto en menos 8. La exponencial de menos 8 es un número pequeñito, pero bueno,…