Выбор ответа Senior Нейрон и backprop обновлено

Мёртвые нейроны

Вопрос

После обучения с большим learning rate заметная доля нейронов с ReLU всегда выдаёт 0 на любых входах. Почему они не «оживают»?

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

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

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

Коротко

Правильный ответ: При отрицательном входе ReLU даёт нулевой градиент, и веса нейрона не обновляются. Большой шаг может сдвинуть смещение так, что пре-активация отрицательна для всех данных.

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

  1. ReLU не дифференцируема в нуле, и оптимизатор пропускает такие нейроны при обновлении
  2. Adam обнуляет маленькие веса через decoupled weight decay, и нейрон отключается навсегда
  3. Это нормально и не влияет на сеть: нулевые нейроны просто работают как регуляризатор
  4. При отрицательном входе ReLU даёт нулевой градиент, и веса нейрона не обновляютсяправильный ответ

Разбор

Большой шаг может сдвинуть смещение так, что пре-активация отрицательна для всех данных. Тогда градиент через ReLU ноль, и выйти из этого состояния нейрон не может. Лечат меньшим lr, правильной инициализацией, LeakyReLU, GELU или SiLU с ненулевым градиентом для отрицательных входов.

  • Недифференцируемость в одной точке проблемы не создаёт.
  • Adam веса не обнуляет.
  • Мёртвые нейроны это потеря ёмкости сети.

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

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