Основы

Numerical Methods

Численные методы

актуальноТекущий рабочий стандарт

Компьютер считает приближённо. Понимание точности float, устойчивости и обусловленности спасает от NaN и «необъяснимых» расхождений.

Ключевые тезисы

  • Логарифмические трюки (log-sum-exp) предотвращают переполнение при работе с вероятностями.
  • Плохо обусловленные матрицы делают решение системы неустойчивым к шуму данных.
  • Смешанная точность (fp16/bf16) ускоряет обучение, но требует масштабирования градиентов.

Подробный разбор

2 подтем — раскройте любую, чтобы увидеть объяснение, формулы, примеры и интерактивные графики.

1

Числа с плавающей точкой и потеря точности

Откуда берутся NaN и почему `0.1 + 0.2 != 0.3`.

Компьютер хранит вещественные числа приближённо: float32 даёт около 7 значащих цифр, float16 — около 3. При вычитании близких чисел значащие цифры взаимно уничтожаются, и результат оказывается почти шумом.

# Наивный подсчёт дисперсии теряет точность
var = mean(x**2) - mean(x)**2      # катастрофическая потеря значимости
# Численно устойчивый вариант
var = mean((x - mean(x))**2)
Одна и та же формула математически, но разная численно
На практике

Обучение в смешанной точности (fp16/bf16) требует loss scaling: градиенты умножают на большой множитель, чтобы они не превратились в нули при округлении, а перед шагом оптимизатора делят обратно.

2

Трюк log-sum-exp и стабильный softmax

Как считать вероятности, не получая inf и nan.

Прямое вычисление при даёт переполнение. Спасает наблюдение: вычитание константы из всех логитов не меняет softmax.

Обозначения
  • суммирование по всем перечисленным элементам
  • экспонента
После вычитания максимума все экспоненты лежат в

По той же причине библиотеки предлагают функции вида log_softmax и BCEWithLogitsLoss: они принимают логиты, а не вероятности, и внутри делают устойчивое вычисление. Ручная связка sigmoid + log — типичный источник NaN в обучении.

Связанные темы

Стабильность обучения нейросетей · Градиенты и производные

Backpropagation97%

Обратное распространение ошибки · Глубокое обучение

Эффективное вычисление градиентов по всем параметрам сети за один обратный проход с помощью правила цепочки.

Normalization Layers85%

Слои нормализации · Глубокое обучение

BatchNorm, LayerNorm, RMSNorm: стабилизация распределения активаций, без которой глубокие сети почти не обучаются.

Gradient Clipping85%

Обрезка градиента · Оптимизация обучения

Ограничение нормы градиента перед шагом оптимизатора — простейшая защита от расходимости обучения.

Mixed Precision85%

Смешанная точность · Оптимизация обучения

Обучение в fp16 или bf16 при накоплении в fp32: двукратная экономия памяти и заметное ускорение.

Learning Rate Scheduling85%

Расписание скорости обучения · Оптимизация обучения

Изменение шага по ходу обучения: большой в начале для исследования, малый в конце для точной настройки.

Calculus80%

Математический анализ · Основы

Производные показывают, как изменится ошибка при малом изменении параметра. Именно это делает возможным градиентное обучение.

Gradient80%

Градиент · Математический справочник

Вектор частных производных, указывающий направление наибыстрейшего роста функции.

Hessian80%

Гессиан · Математический справочник

Матрица вторых производных, описывающая локальную кривизну функции.

Gradient Descent80%

Градиентный спуск · Оптимизация обучения

Итеративный шаг против градиента функции потерь — базовый алгоритм обучения.