Скорость обучения и импульс

Введение в глубокое обучение с PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Обновление весов с помощью SGD

  • Обучение нейронной сети = решение задачи оптимизации.

Оптимизатор Stochastic Gradient Descent (SGD)

sgd = optim.SGD(model.parameters(), lr=0.01, momentum=0.95)
  • Два аргумента:
    • скорость обучения: управляет размером шага
    • импульс: добавляет инерцию, чтобы не застрять
Введение в глубокое обучение с PyTorch

Влияние скорости обучения: оптимальное значение

пример оптимальной скорости обучения

  • Размер шага уменьшается вблизи нуля по мере убывания градиента
Введение в глубокое обучение с PyTorch

Влияние скорости обучения: малое значение

пример малой скорости обучения

Введение в глубокое обучение с PyTorch

Влияние скорости обучения: высокое значение

пример слишком высокой скорости обучения

Введение в глубокое обучение с PyTorch

Выпуклые и невыпуклые функции

Это выпуклая функция.

пример выпуклой функции

Это невыпуклая функция.

пример невыпуклой функции

  • Функции потерь являются невыпуклыми
Введение в глубокое обучение с PyTorch

Без импульса

  • lr = 0.01 momentum = 0, после 100 шагов минимум найден при x = -1.23 и y = -0.14

пример оптимизатора, застрявшего в локальном минимуме

Введение в глубокое обучение с PyTorch

С импульсом

  • lr = 0.01 momentum = 0.9, после 100 шагов минимум найден при x = 0.92 и y = -2.04

пример оптимизации с импульсом

Введение в глубокое обучение с PyTorch

Итоги

$$

Скорость обучения Импульс
Управляет размером шага Управляет инерцией
Слишком высокая → низкое качество Помогает выйти из локального минимума
Слишком низкая → медленное обучение Слишком малый → оптимизатор застревает
Типичный диапазон: 0,01 ($10^{-2}$) и 0,0001 ($10^{-4}$) Типичный диапазон: 0,85–0,99
Введение в глубокое обучение с PyTorch

Давайте потренируемся!

Введение в глубокое обучение с PyTorch

Preparing Video For Download...