Почему почти каждая функция активации насыщается при отрицательных входных значениях в нейронной сети - PullRequest
2 голосов
/ 27 февраля 2020

Это может быть очень простой / тривиальный вопрос.

Для отрицательных входов:

  1. Выход функции активации ReLu равен нулю
  2. Выход функции активации сигмоида равен нулю
  3. Выход функции активации Танха is -1

Ниже приведены мои вопросы:

  1. Почему все вышеперечисленные функции активации насыщены для отрицательных входных значений.
  2. Есть ли какая-либо функция активации, если мы хотим предсказать отрицательное целевое значение.

Спасибо.

Ответы [ 3 ]

1 голос
/ 27 февраля 2020
  1. Ключевой идеей внедрения функции активации ReLu было решение проблемы исчезающих градиентов в более глубоких сетях. Однако для другой инициализации, когда веса go выше 1, это может привести к взрыву значений градиента и вызвать насыщение сети. И ключевая идея ReLu заключалась в том, чтобы ввести разреженность в сеть. Проще говоря, мы можем сказать, что он просто обрезает соединения, которые считаются неважными (то есть - пять весов). Да, здесь мы должны быть осторожны в распределении весов, которые мы инициализируем, или сеть может оказаться слишком разреженной и неспособной узнать больше информации.

  2. Сигмоид - Ключевая проблема с сигмоидом для Правила обучения на основе градиента заключаются в том, что производная сигмоида приводит к функции, которая переходит в 0 для очень больших входных данных. Таким образом, вызывая исчезающие градиенты, а также сигмовидность, не вызывает проблем с отрицательными значениями, а вместо этого для больших положительных входных значений. The derivative of sigmoid

  3. Tanh - Идея tanh состоит в том, чтобы не иметь разреженности, которая обеспечивается ReLu, и использовать сложную сетевую динамику для обучения, похожую на сигмовидную функцию. Тан, проще говоря, пытается использовать возможности всей сети для обучения и решает проблему исчезающего градиента, подобную ReLu. И наличие отрицательного фактора в сети действует как динамический регуляризатор c (отрицательные веса сильно притягиваются к -1, а веса близки к 0 go к 0) и полезны для двоичной классификации или для меньшего количества проблем классификации классов.

Эта ссылка содержит полезную информацию, которая будет полезна для вас.

1 голос
/ 27 февраля 2020

Короче говоря, отрицательные / положительные значения не имеют значения для этих функций активации.

  1. Сигмоид и танх насыщаются как для положительных, так и для отрицательных значений. Как указано в комментариях, они симметричны входу 0. Для relu он насыщает только отрицательные значения, но я объясню, почему это не имеет значения в следующем вопросе.

  2. Ответ - функция активации не должна «предсказывать» отрицательное значение. Смысл функции активации состоит не в том, чтобы дать уравнение для прогнозирования вашего конечного значения, а в том, чтобы придать нелинейность вашей нейронной сети в средних слоях. Затем вы используете некоторую подходящую функцию на последнем слое, чтобы получить желаемые выходные значения. ex) softmax для классификации, просто линейный для регрессии.
    Так как эти функции активации находятся посередине, действительно не имеет значения, если функция активации выводит только положительные значения, даже если ваши «требуемые» значения являются отрицательными, так как модель сделает вес для следующих слоев отрицательным (следовательно, термин «полезные значения отрицателен» ничего не значит)

Итак, насыщение Relu на отрицательной стороне не отличается от насыщенности на положительной стороне. Есть функции активации, которые не насыщены, такие как неплотный Relu, так что вы можете проверить это. Но точка положительный / отрицательный для функций активации не имеет значения.

1 голос
/ 27 февраля 2020
  1. True - ReLU предназначен для получения нулевого значения при отрицательных значениях. (Это может быть опасно при больших скоростях обучения, плохой инициализации или при очень небольшом количестве единиц - все нейроны могут застрять в нуле, и модель зависнет)

  2. False - сигмоид приводит к нулю для очень негативные "входы", а не "негативные" Если ваши значения находятся в диапазоне от -3 до +3, вы увидите очень приятный результат в диапазоне от 0 до 1.

  3. False - тот же комментарий, что и в Sigmoid. Если ваши входные значения находятся между -2 и 2, вы увидите хорошие результаты между -1 и 1.


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

По определению, выходы:

  • ReLU: 0
  • Sigmoid: 0
  • TanH: -1

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


Для прогнозирования отрицательных выходных данных tanh является единственным из трех, который способен сделать это.

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

def neg_sigmoid(x):
    return -keras.backend.sigmoid(x)

#use the layer:
Activation(neg_sigmoid)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...