Основы

Numerical Methods

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

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

Направления: Основы · Математика, Продвинутый ML · Научный ML

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

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

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

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

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

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

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

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

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

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

По той же причине библиотеки предлагают функции вида 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%

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

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

Следующий шагДальше по связи: BackpropagationЭффективное вычисление градиентов по всем параметрам сети за один обратный проход с помощью правила цепочки.Перейти →

Глава «Основы» последний раз правилась . Нашли ошибку — напишите.