Este artículo de Ji-Ha Kim explora un método novedoso y eficiente para calcular el factor polar de matrices, especialmente útil en el contexto de optimizadores de aprendizaje automático como Muon. El factor polar, definido como G(GᵀG)⁻¹/², es un componente esencial en la descomposición polar de una matriz G, análoga a la descomposición de coordenadas polares en un plano complejo. Tradicionalmente, el cálculo de este factor se realiza mediante iteraciones de Newton-Schulz, pero el enfoque presentado aquí busca superar sus limitaciones en términos de velocidad y estabilidad numérica, particularmente al usar formatos de punto flotante de baja precisión como bfloat16 (bf16).
La clave de esta técnica radica en calcular la inversa de raíz cuadrada del Gramiano (GᵀG) en el lado pequeño de la matriz (n x n) y luego multiplicar por G. Esto aprovecha la eficiencia de las operaciones de álgebra lineal de matrices rectangulares (GEMMs). El método se centra en obtener una aproximación rápida y estable, evitando la necesidad de alta precisión y garantizando que los valores singulares del factor polar resultante estén cerca de 1. Para lograr esto, se emplean polinomios minimax para normalizar los valores singulares, precondicionamiento de Jacobi y una certificación en línea de la proximidad de los valores singulares a 1.
Este enfoque tiene aplicaciones directas en el entrenamiento de modelos de aprendizaje automático, especialmente en optimizadores matriciales como Muon, donde la eficiencia computacional es crucial. El método es particularmente adecuado para matrices 'altas' (m ≥ n), donde el cálculo en el lado pequeño ofrece una ventaja significativa. La certificación en línea permite ajustar la agresividad del algoritmo, asegurando la estabilidad numérica y evitando divergencias.
Algunas consideraciones importantes incluyen la necesidad de precalcular tablas de coeficientes minimax para la selección en línea, lo que implica un costo computacional inicial. Además, se recomienda el uso de precisión fp32 (punto flotante de 32 bits) para la acumulación y las comprobaciones de residuales para garantizar la estabilidad en bf16. El artículo también menciona que, aunque AOL (Adaptive Optimistic Learning) podría ser una alternativa, se prefiere el precondicionamiento de Jacobi debido a su menor sesgo. Finalmente, se enfatiza la importancia de la simetría y el 'ridge' (adición de una pequeña cantidad a la diagonal) de la matriz Gramiano para la estabilidad numérica durante las iteraciones.
