Прикольная история. Во всех массовых реализациях софтмакса и кроссэнтропии есть баги, приводящие к проблемам округления. И вот после более чем десятка(ов) лет активного пользования всем этим, их наконец обнаружили. В очередной раз возникает вопрос, почему не раньше. A Fix for Softmax and Cross-Entropy __Jonathan T. Barron, Dan Gnanapragasam, Michael Tschannen__ Paper: https://arxiv.org/abs/2610.31642 Review: https://arxiviq.substack.com/p/a-fix-for-softmax-and-cross-entropy Code: N/A (self-contained JAX snippets provided in paper) Model: N/A ЧТО сделали: Авторы переписали софтмакс, лог-софтмакс и кросс-энтропию (для жёстких и мягких меток) в логарифмическом пространстве. Это исправляет два бага округления в фреймворках глубокого обучения: Softmax Collapse (зануление градиента целевого логита при высокой уверенности модели) и Softmax Cancellation (ненулевой остаточный градиент в дистилляции, когда логиты студента уже совпали с логитами учителя). ЧТО получили: На модулярном сложении (a + b mod 31) в bf16, fp32 и fp64 Fixed Cross-Entropy даёт 98.9%–100.0% тестовой точности против 93.3%–100.0% у стандартной кросс-энтропии, 48.9%–97.9% у Zero-sum Projection (вычитание среднего из градиентов) и 95.6%–97.4% у StableMax (кусочно-рациональная замена софтмакса). В полиномиальном гроккинге без регуляризации (a^2 + b^2 mod 97) Fixed Cross-Entropy достигает 85% точности, тогда как стандартная кросс-энтропия падает с 61% до 23%. ПОЧЕМУ это важно: Drop-in replacement базовых функций лосса убирает скачки лосса («эффект рогатки», Slingshot) при гроккинге и дрейф весов при дистилляции в bf16 без перевода в fp64. Правда, все эксперименты проведены на небольших задачах модулярной арифметики, а проверенные здесь огромные отступы логитов и почти нулевые зазоры между студентом и учителем в масштабном обучении встречаются редко. Округлять с багами и без багов здесь: https://t.me/gonzo_ML_podcasts/4837