Выбор ответа Senior Нейрон и backprop обновлено
Мёртвые нейроны
Вопрос
После обучения с большим learning rate заметная доля нейронов с ReLU всегда выдаёт 0 на любых входах. Почему они не «оживают»?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: При отрицательном входе ReLU даёт нулевой градиент, и веса нейрона не обновляются. Большой шаг может сдвинуть смещение так, что пре-активация отрицательна для всех данных.
Варианты ответа
- ReLU не дифференцируема в нуле, и оптимизатор пропускает такие нейроны при обновлении
- Adam обнуляет маленькие веса через decoupled weight decay, и нейрон отключается навсегда
- Это нормально и не влияет на сеть: нулевые нейроны просто работают как регуляризатор
- При отрицательном входе ReLU даёт нулевой градиент, и веса нейрона не обновляютсяправильный ответ
Разбор
Большой шаг может сдвинуть смещение так, что пре-активация отрицательна для всех данных. Тогда градиент через ReLU ноль, и выйти из этого состояния нейрон не может. Лечат меньшим lr, правильной инициализацией, LeakyReLU, GELU или SiLU с ненулевым градиентом для отрицательных входов.
- Недифференцируемость в одной точке проблемы не создаёт.
- Adam веса не обнуляет.
- Мёртвые нейроны это потеря ёмкости сети.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.