English · Español
Fase 2 — Cuestionarios¶
🇪🇸 Espejo legible de
data/quizzes/phase-02-numerical-representation.yaml. Pensado para que el aprendiz se equivoque al menos en uno: las trampas vienen de ideas que "parecen razonables".
Fuente de verdad: data/quizzes/phase-02-numerical-representation.yaml.
q-02-01 — ¿Por qué funciona el truco -max del softmax?¶
- Porque
exp(x - m) ≤ exp(0) = 1para todox ≤ m, así que las exponenciales nunca desbordan; el factor comúnexp(-m)en numerador y denominador se cancela exactamente. - Porque exp es cóncava, así que restar el máximo la linealiza.
- Porque el softmax es invariante por traslación solo en esperanza.
- Porque el redondeo IEEE 754 redondea hacia el máximo, haciendo la diferencia despreciable.
Respuesta
**Opción 1.** Las dos mitades importan: la identidad algebraica (cancelación de `exp(-m)`) y la cota numérica (`exp(x - m) ≤ 1`).q-02-02 — fp16 vs bf16 (opción múltiple)¶
- fp16 tiene 10 bits de mantisa y 5 bits de exponente; bf16 tiene 7 bits de mantisa y 8 bits de exponente.
- bf16 tiene el mismo rango de exponente que fp32, así que el comportamiento de overflow/underflow se parece mucho al de fp32.
- fp16 tiene mejor precisión por número que bf16 (menor error relativo para valores dentro del rango).
- bf16 se diseñó principalmente para inferencia en GPU de consumo, fp16 para entrenamiento.
- Convertir un peso fp32 a bf16 siempre pierde información; convertirlo a fp16 a veces lo preserva exactamente.
Respuesta
**Opciones 1, 2, 3.** bf16 vino de Google Brain para estabilidad de *entrenamiento* (el exponente ancho coincide con fp32). Ambos formatos pierden información frente a fp32 excepto cuando el valor ya cabe.q-02-03 — Cancelación catastrófica (libre)¶
Calcula 1.0000001 - 1.0 en fp32. ¿Cuántos dígitos decimales significativos tiene el resultado? Nombra el fenómeno.
Respuesta
Alrededor de **un** dígito bueno. Ambas entradas tienen ~7 dígitos de precisión fp32, pero los 6 dígitos principales se cancelan, promoviendo el error de redondeo de cola a la posición principal. Esto es **cancelación catastrófica**. Reescribe el algoritmo para evitar restar números casi iguales.q-02-04 — ¿Cuándo no basta con el truco -max? (libre)¶
Respuesta
El truco estabiliza el forward del softmax, pero el `log(p)` posterior de probabilidades pequeñas sigue cayendo por underflow. Solución: nunca materializar `p`; calcular `log_softmax(x) = x - logsumexp(x)` directamente. Este es el patrón fusionado `cross-entropy-from-logits`.q-02-05 — Suma de Kahan¶
- Ordenar las entradas en orden descendente antes de sumar.
- Suma compensada de Kahan (rastrear el error acumulado en un segundo acumulador).
- Convertir a fp64, sumar, convertir de vuelta.
- Usar SIMD para la reducción.