DeepMind исправила фатальную ошибку softmax: градиенты больше не теряются из-за машинного нуля
Модель почти идеально выучила ответ, а градиент правильного класса уже стал машинным нулём — знакомая ситуация? DeepMind выяснила, что виновата стандартная реализация softmax, которая теряет маленькие числа при вычислениях. При дистилляции возможна обратная проблема: ученик повторяет учителя, но сигнал ошибки всё ещё выдаётся. Препринт вышел 22 октября, и это удивительно: казалось бы, тему должны были исследовать вдоль и поперёк ещё на заре машинного обучения.
Решение DeepMind опирается на школьную алгебру 7-го класса — простые алгебраические преобразования, которые сохраняют градиенты даже при экстремальных значениях. Авторы приводят проверенные примеры на NumPy и четыре графика, наглядно показывающих, где теряются числа и как это влияет на обучение. Исправление не требует сложных изменений в коде, но может кардинально улучшить сходимость моделей.
Практические рекомендации помогут понять, нужно ли учитывать эту проблему в ваших программах и нейросетях, и если да — как исправить ошибку в стандартных библиотеках. Материал стоит включить в базовые учебные курсы по машинному обучению, чтобы будущие специалисты не наступали на те же грабли.