Как ReLu работает с выходным доменом с нулевым центром?

В проблеме, которую я пытаюсь решить, мой выходной домен центрирован по нулю, между -1 и 1. При поиске функций активации я заметил, что ReLu выводит значения от 0 до 1, что в основном означает, что ваш вывод все отрицательный или все положительный.

Это можно сопоставить с соответствующим доменом с помощью обратной нормализации, но ReLu предназначен для определения «силы» нейрона в одном направлении, но в моей проблеме мне нужно определить силу нейрона в одном из двух направлений. Если я использую tanh, мне приходится беспокоиться об исчезновении/взрыве градиентов, но если я использую ReLu, мой вывод всегда будет «смещен» в сторону положительных или отрицательных значений, потому что, по сути, очень маленькие значения должны быть сопоставлены с положительным доменом, а большие значение отрицательного домена или наоборот.

Дополнительная информация: я использовал ReLu, и он работает хорошо, но я боюсь, что это сделано по неправильным причинам. Причина, по которой я это говорю, заключается в том, что, по-видимому, приближение к меньшим значениям домена pos или neg будет означать более сильное соединение до определенного момента, после чего оно вообще не будет активировано. Да, технически сеть может работать (вероятно, сложнее, чем нужно), чтобы удерживать всю область выходных данных поездов в положительном пространстве, но если значение выйдет за пределы обучающего набора, его не будет? когда на самом деле он должен быть еще более активным

Каков правильный способ работы с выходными доменами с нулевым центром?


person learningthemachine    schedule 11.01.2019    source источник


Ответы (3)


Я думаю, вам нужно использовать функцию Sign. Это нулевой центр и на выходе -1, 1.

Функция подписи: https://helloacm.com/wp-content/uploads/2016/10/math-sgn-function-in-cpp.jpg

person Totoro    schedule 11.01.2019

Вы можете использовать варианты ReLU, которые выводят значения со средним значением, близким к нулю или равным нулю (ELU, CELU, PReLU и другие), и имеют другие интересные особенности. Кроме того, это помогло бы решить проблему умирающих нейронов в ReLU.

В любом случае, я не знаю ни одного серьезного исследования, доказывающего полезность одного над другим, он все еще находится в стадии экспериментов и действительно зависит от того, что я помню (пожалуйста, поправьте меня, если я ошибаюсь).

И вам действительно следует проверить, является ли функция активации проблематичной в вашем случае, может быть вполне нормально использовать ReLU.

person Szymon Maszke    schedule 11.01.2019

Во-первых, вам не нужно размещать функцию активации после последнего слоя вашей нейронной сети. Функция активации требуется между слоями для введения нелинейности, поэтому в последнем слое она не требуется.

Вы можете экспериментировать с различными вариантами:

  • Используйте танх. Исчезающий/взрывающийся градиент иногда не является проблемой на практике в зависимости от сетевой архитектуры и правильной инициализации весов.
  • Ничего не делать. NN следует научить выводить значение от -1 до 1 для «типичных» входных данных. Вы можете обрезать значение на прикладном уровне.
  • Клип выход в сеть. Например. out = tf.clip_by_value(out, -1.0, 1.0)
  • Будьте изобретательны и попробуйте свои другие идеи.

В конце концов, машинное обучение — это процесс проб и ошибок. Попробуйте разные вещи и найдите то, что работает для вас. Удачи.

person miaout17    schedule 11.01.2019
comment
Я использовал ReLu, и он работает хорошо, но я боюсь, что по неправильным причинам. Причина, по которой я это говорю, заключается в том, что приближение меньших значений для домена pos или neg будет означать более сильную связь до определенного момента, что мне кажется неправильным. Да, технически сеть может работать (вероятно, сложнее, чем нужно), чтобы удерживать всю область выходных данных поезда в положительном пространстве, но если значение выходит за пределы обучающего набора, его не существует, когда на самом деле оно должен быть еще активнее. - person learningthemachine; 11.01.2019
comment
Исчезающие градиенты, безусловно, могут быть проблемой, возникающей на практике, например. в RNN даже с хорошими начальными весами (последовательности длиной более 5 даже проблематичны IIRC). Кроме того, они легко насытятся. - person Szymon Maszke; 11.01.2019
comment
@SzymonMaszke Полностью с вами согласен. Немного исправил свое заявление. - person miaout17; 11.01.2019