Я нашел выпрямленную линейную единицу (ReLU), восхваляемую в нескольких местах как решение проблемы исчезающего градиента для нейронных сетей. То есть, в качестве функции активации используется max (0, x). Когда активация положительна, очевидно, что это лучше, чем, скажем, функция активации сигмоида, поскольку ее вывод всегда равен 1, а не сколь угодно малому значению для большого х. С другой стороны, деривация точно равна 0, когда x меньше 0. В худшем случае, когда единица никогда не активируется, веса для этой единицы также никогда не изменятся, и единица будет навсегда бесполезной - что кажется намного хуже, чем даже исчезающе малые градиенты. Как алгоритмы обучения справляются с этой проблемой, когда используют ReLU?
machine-learning
neural-networks
deep-learning
gradient-descent
Ханс-Петер Стёрр
источник
источник
Ответы:
Вот статья, которая объясняет проблему. Я процитирую некоторую часть этого, чтобы прояснить проблему.
Таким образом, функция активации выпрямителя создает эффект редкости в сети. Вот некоторые преимущества разреженности из той же статьи;
Он также отвечает на вопрос, который вы задали:
Вы можете прочитать статью для более подробной информации.
источник
Вот почему, вероятно, лучше использовать PReLU, ELU или другие протекающие ReLU-подобные активации, которые не просто отмирают до 0, но падают до чего-то вроде 0,1 * x, когда x становится отрицательным, чтобы продолжать обучение. Долгое время мне казалось, что ReLUs - это история, как сигмоид, хотя по какой-то причине люди до сих пор публикуют статьи с ними. Зачем? Я не знаю.
Дмитрий Мишкин и другие ребята на самом деле протестировали сеть с множеством различных типов активации, вы должны посмотреть на их выводы о производительности различных функций активации и другие вещи, Однако некоторые функции, такие как XOR, лучше изучать с помощью простого ReLU. Не думайте о нейронных вещах в догматических терминах, потому что нейронные сети находятся в стадии разработки. Никто в мире на самом деле не знает и не понимает их достаточно хорошо, чтобы говорить божественную правду. Никто. Попробуйте, сделайте свои собственные открытия. Имейте в виду, что использование самого ReLU является очень недавней разработкой, и в течение десятилетий все разные кандидаты наук в этой области использовали слишком сложные функции активации, о которых мы теперь можем только смеяться. Слишком часто «зная» слишком много, вы можете получить плохие результаты. Важно понимать, что нейронные сети не точная наука. Ничто в математике не говорит, что нейронные сети будут работать так же хорошо, как и они. Это эвристика. И поэтому это очень податливо.
К вашему сведению, даже активация по абсолютному значению дает хорошие результаты по некоторым проблемам, например, по XOR-подобным. Различные функции активации лучше подходят для разных целей. Я попробовал Cifar-10 с abs (), и, похоже, он работал хуже. Хотя я не могу сказать, что «это худшая функция активации для визуального распознавания», потому что я не уверен, например, была ли моя предварительная инициализация оптимальной для этого и т. Д. Сам факт того, что он изучал относительно хорошо поразил меня.
Я бы даже сказал, что мы должны запретить называть их «производными» и начать называть их чем-то другим, например,
error activation functions
не закрывать умы возможности возиться с ними. Фактически, вы можете, например, использовать активацию ReLU, но предоставить 0,1 или что-то подобное вместо 0 в качестве производной для x <0. В некотором смысле, тогда у вас есть простой ReLU, но с нейронами, не способными «умереть от адаптивности». Я называю это NecroRelu, потому что это ReLU, который не может умереть. И в некоторых случаях (хотя определенно не в большинстве) это работает лучше, чем обычный LeakyReLU, который на самом деле имеет 0,1 производную при x <0 и лучше, чем обычный ReLU. Я не думаю, что слишком многие другие исследовали такую функцию, хотя эта или что-то подобное на самом деле могло бы быть вообще классной функцией активации, которую никто не рассматривал только потому, что они слишком сконцентрированы на математике.Что касается того, что обычно используется, для функции активации tanH (x) это обычная вещь, чтобы передать 1 - x² вместо 1 - tanH (x) ² как производную, чтобы вычислить вещи быстрее.
Кроме того, помните, что ReLU не так уж и явно лучше, чем, например, TanH. TanH может быть лучше в некоторых случаях. Просто, похоже, не в визуальном распознавании. Хотя, например, ELU обладает некоторой мягкостью сигмовидной формы, и в настоящее время это одна из самых известных функций активации для визуального распознавания. Я на самом деле не пробовал, но могу поспорить, что можно установить несколько групп с разными функциями активации на одном уровне слоя, чтобы получить преимущество. Потому что разная логика лучше описывается разными функциями активации. И иногда вам, вероятно, нужно несколько видов оценки.
Обратите внимание, что важно иметь инициализацию, соответствующую типу вашей функции активации. Например, для негерметичных ReLU нужен другой init, чем обычные ReLU.
РЕДАКТИРОВАТЬ: На самом деле, стандартный ReLU кажется менее склонным к оснащению против утечек с современными архитектурами. По крайней мере, в распознавании изображений. Похоже, что если вы собираетесь использовать сеть с очень высокой точностью и огромной загрузкой параметров, возможно, лучше придерживаться простых параметров ReLU против неплотных. Но, конечно, проверить все это самостоятельно. Может быть, некоторые утечки будут работать лучше, если дать больше регуляризации.
источник
initialization that corresponds to a type of activation function one is using
вNOTE
своем посте, не могли бы вы высказать свои предложения по этому вопросу в той же строке, я не полностью убежден, что использование активаций ReLu через сигмоид / tanH является решением проблемы исчезающего / взрывающегося градиента ,Вот эвристическое объяснение:
Вы можете подумать, что было бы лучше иметь линейную функцию, а не сглаживать, когда x <0. Идея здесь заключается в том, что RELU генерирует разреженные сети с относительно небольшим количеством полезных ссылок, что имеет больше биологической правдоподобности, поэтому потеря куча весов на самом деле полезна. Кроме того, моделирование интересных функций с помощью нейронных сетей возможно только при некоторой нелинейности в функции активации. Линейная функция активации приводит к линейному выходу, что не очень интересно.
источник
Давайте рассмотрим основное рекуррентное соотношение, которое определяет обратное распространение сигнала ошибки.
Это уравнение также демонстрирует другую проблему, характерную для активации активации - мертвые нейроны: если данный нейрон был инициализирован таким образом, что он не срабатывает ни для какого входа (его активация равна нулю), его градиент также будет равен нулю, и следовательно, он никогда не будет активирован.
источник