Оптимизация обучения

Gradient Clipping

Обрезка градиента

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

Направления: Глубокое обучение · Оптимизация

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

Что означает каждый компонент
  • если норма градиента больше порога τ, вектор укорачивается до τ; направление при этом сохраняется

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

  • Обрезка по сохраняет направление, обрезка по значению — нет; предпочтительна первая.
  • Типичный порог 1.0 для , 5.0 для .
  • Постоянное срабатывание обрезки — того, что слишком велик.

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

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

loss.backward()
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
optimizer.step()
optimizer.zero_grad()
На практике

При обрезка выполняется после unscale_ , иначе порог применяется к масштабированным значениям и не работает.

  • Срабатывает изредка на первых шагах — , так и задумано.
  • Срабатывает почти всегда — слишком велик или в данных есть .
  • скачет на порядки — ищите битые примеры или деление на ноль в .

Логируйте как обычную метрику обучения: по ней проблемы видны раньше, чем по кривой потерь.

Тема также относится к главам:Глубокое обучениеОбучение

Видеолекции

Тайм-кода именно на эту тему в записях нет. Но глава «Оптимизация обучения» разобрана в курсе целиком — с той оговоркой, что место в записи придётся искать самому.

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

Стабильность обучения нейросетей

Проверить себя

Тема встречается в тесте по направлениям — ошибки приведут обратно на эту страницу.

Следующий шагПроверить себя: Глубокое обучениеТема встречается в этом тесте 1 раз. Ошибка приведёт обратно на эту страницу — с объяснением, что именно не сошлось.Перейти →

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