Вот почему, вероятно, лучше использовать PReLU, ELU или другие протекающие ReLU-подобные активации, которые не просто отмирают до 0, но падают до чего-то вроде 0,1 * x, когда x становится отрицательным, чтобы продолжать обучение. Долгое время мне казалось, что ReLUs - это история, как сигмоид, хотя по какой-то причине люди до сих пор публикуют статьи с ними. Зачем? Я не знаю.
Дмитрий Мишкин и другие ребята на самом деле протестировали сеть с множеством различных типов активации, вы должны посмотреть на их выводы о производительности различных функций активации и другие вещи, Однако некоторые функции, такие как XOR, лучше изучать с помощью простого ReLU. Не думайте о нейронных вещах в догматических терминах, потому что нейронные сети находятся в стадии разработки. Никто в мире на самом деле не знает и не понимает их достаточно хорошо, чтобы говорить божественную правду. Никто. Попробуйте, сделайте свои собственные открытия. Имейте в виду, что использование самого ReLU является очень недавней разработкой, и в течение десятилетий все разные кандидаты наук в этой области использовали слишком сложные функции активации, о которых мы теперь можем только смеяться. Слишком часто «зная» слишком много, вы можете получить плохие результаты. Важно понимать, что нейронные сети не точная наука. Ничто в математике не говорит, что нейронные сети будут работать так же хорошо, как и они. Это эвристика. И поэтому это очень податливо.
К вашему сведению, даже активация по абсолютному значению дает хорошие результаты по некоторым проблемам, например, по XOR-подобным. Различные функции активации лучше подходят для разных целей. Я попробовал Cifar-10 с abs (), и, похоже, он работал хуже. Хотя я не могу сказать, что «это худшая функция активации для визуального распознавания», потому что я не уверен, например, была ли моя предварительная инициализация оптимальной для этого и т. Д. Сам факт того, что он изучал относительно хорошо поразил меня.
Кроме того, в реальной жизни «производные», которые вы передаете в backprop, не обязательно должны соответствовать фактическим математическим производным.
Я бы даже сказал, что мы должны запретить называть их «производными» и начать называть их чем-то другим, например, 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 против неплотных. Но, конечно, проверить все это самостоятельно. Может быть, некоторые утечки будут работать лучше, если дать больше регуляризации.