Ссылаясь на заметки Стэнфордского курса о сверточных нейронных сетях для визуального распознавания , в параграфе говорится:
«К сожалению, юниты ReLU могут быть хрупкими во время обучения и могут« умереть ». Например, большой градиент, протекающий через нейрон ReLU, может привести к тому, что веса обновятся таким образом, что нейрон никогда не активируется ни при каком повторении данных. Если это произойдет случается, тогда градиент, текущий через единицу, всегда будет нулевым с этой точки. То есть единицы ReLU могут необратимо умереть во время обучения, так как они могут быть сбиты с коллектора данных. Например, вы можете обнаружить, что целых 40 % вашей сети может быть «мертвым» (т. е. нейроны, которые никогда не активируются по всему набору обучающих данных), если скорость обучения установлена слишком высокой. При правильной настройке скорости обучения это не так часто ».
Что значит умирать от нейронов здесь?
Не могли бы вы дать интуитивное объяснение в более простых терминах.
источник
Ответы:
«Мертвый» ReLU всегда выдает одно и то же значение (ноль, как это бывает, но это не важно) для любого входа. Вероятно, это достигается путем изучения большого отрицательного смещения для его весов.
В свою очередь это означает, что он не играет никакой роли в различении входных данных. Для классификации вы можете визуализировать это как плоскость принятия решений вне всех возможных входных данных.
Как только ReLU окажется в этом состоянии, он вряд ли восстановится, потому что градиент функции в 0 также равен 0, поэтому обучение градиентному спуску не изменит весов. «Утечки» ReLU с небольшим положительным градиентом для отрицательных входных данных (
y=0.01x
когда, скажем, x <0) являются одной из попыток решить эту проблему и дать шанс на восстановление.Сигмовидные и tanh нейроны могут страдать от подобных проблем, так как их значения насыщаются, но всегда есть хотя бы небольшой градиент, позволяющий им восстановиться в долгосрочной перспективе.
источник
Давайте рассмотрим, как выглядит ReLU (выпрямленный линейный блок):
Вход выпрямителя для некоторых входных является г п = K Σ я = 0 ш I п я для весов ш I , и активаций из предыдущего слоя п я для этих конкретных входного сигнала х п . Нейронная функция выпрямителя имеет вид R e L U = m a x ( 0 , z n )ИксN
Предполагая очень простую меру ошибки
источник
What if, for the input 𝑥𝑛, the current weights put the ReLU on the left flat side while it optimally should be on the right side for this particular input ?
, если вход отрицательный, градиент будет 0? что оптимально для этого случая? Не могли бы вы помочь понять это?Нейроны ReLU выводят ноль и имеют нулевые производные для всех отрицательных входов. Таким образом, если весовые коэффициенты в вашей сети всегда приводят к отрицательным входам в нейрон ReLU, этот нейрон фактически не способствует обучению сети. Математически вклад градиента в обновления веса, приходящий от этого нейрона, всегда равен нулю (некоторые детали см. В математическом приложении).
В целом, что происходит, зависит от того, как информация проходит через сеть. Вы можете себе представить, что в процессе обучения значения, которые производят нейроны, могут смещаться и позволять весам уничтожать весь поток данных через некоторые из них. (Иногда они могут оставить эти неблагоприятные конфигурации из-за более ранних обновлений в сети!). Я исследовал эту идею в своем блоге о инициализации веса - что также может способствовать этой проблеме - и ее связи с потоком данных. Я думаю, что моя точка зрения может быть проиллюстрирована сюжетом из этой статьи:
На графике отображаются активации в 5-слойном многоуровневом персептроне с активациями ReLU после одного прохода по сети с различными стратегиями инициализации. Вы можете видеть, что в зависимости от конфигурации весов выходы вашей сети могут быть перекрыты.
Математическое приложение
Из этого вы можете видеть, что если выходные данные всегда отрицательны, веса, ведущие к нейрону, не обновляются, и нейрон не способствует обучению.
источник
Therefore, if your inputs are on roughly the same scale, a large step in the direction of the gradient can leave you with weights that give similar inputs which can end up being negative.
как веса становятся отрицательными, если входные данные нормализованы?источник
«Dying ReLU» относится к нейрону, который выводит 0 для ваших данных в тренировочном наборе. Это происходит потому, что сумма весовых * входов в нейроне (также называемая активацией ) становится <= 0 для всех входных паттернов. Это приводит к тому, что ReLU выдает 0. Поскольку производная от ReLU равна 0, в этом случае обновления веса не производятся, и нейрон застревает при выводе 0.
Что следует отметить:
источник