Выбор ответа Senior Цепное правило и autodiff обновлено

Остановка градиента

Вопрос

Что делает операция stop-gradient (в PyTorch .detach()), и где она нужна?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Значение идёт дальше, но в backward это константа; нужно для target-сетей и EMA. detach возвращает тензор с теми же данными, но без связи с графом: градиент через него не течёт.

Варианты ответа

  1. Обнуляет значение тензора и его градиент, чтобы освободить память графа
  2. Копирует тензор на CPU без градиента, чтобы его можно было перевести в массив NumPy
  3. Замораживает веса модели до конца обучения, переводя requires_grad в False
  4. Значение идёт дальше, но в backward это константа; нужно для target-сетей и EMAправильный ответ

Разбор

detach возвращает тензор с теми же данными, но без связи с графом: градиент через него не течёт. Применения: цель в DQN, учитель в self-distillation, расчёт метрик на тензорах обучения, трюк straight-through. В формулах это sg(x) с производной 0.

  • Значение не обнуляется.
  • Устройство не меняется.
  • Заморозка весов это requires_grad = False у параметров, а detach действует на конкретный тензор в графе.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.