Выбор ответа Senior Цепное правило и autodiff обновлено
Остановка градиента
Вопрос
Что делает операция stop-gradient (в PyTorch .detach()), и где она нужна?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Значение идёт дальше, но в backward это константа; нужно для target-сетей и EMA. detach возвращает тензор с теми же данными, но без связи с графом: градиент через него не течёт.
Варианты ответа
- Обнуляет значение тензора и его градиент, чтобы освободить память графа
- Копирует тензор на CPU без градиента, чтобы его можно было перевести в массив NumPy
- Замораживает веса модели до конца обучения, переводя requires_grad в False
- Значение идёт дальше, но в backward это константа; нужно для target-сетей и EMAправильный ответ
Разбор
detach возвращает тензор с теми же данными, но без связи с графом: градиент через него не течёт. Применения: цель в DQN, учитель в self-distillation, расчёт метрик на тензорах обучения, трюк straight-through. В формулах это sg(x) с производной 0.
- Значение не обнуляется.
- Устройство не меняется.
- Заморозка весов это requires_grad = False у параметров, а detach действует на конкретный тензор в графе.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Градиент логистической регрессии на одном примере
Следующий вопрос
Посчитайте градиенты по графу