Почему нелинейная функция активации должна использоваться в нейронной сети обратного распространения?


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

за этим вопросом следует Следующий: что является производной функции активации, используемой для обратного распространения?

8 93

8 ответов:

цель функции активации-ввести нелинейность в сети

в свою очередь, это позволяет моделировать переменную ответа (ака целевая переменная, метка класса или оценка), которая изменяется нелинейно с ее независимыми переменными

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

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

>>> in_vec = NP.random.rand(10)
>>> in_vec
  array([ 0.94,  0.61,  0.65,  0.  ,  0.77,  0.99,  0.35,  0.81,  0.46,  0.59])

>>> # common activation function, hyperbolic tangent
>>> out_vec = NP.tanh(in_vec)
>>> out_vec
 array([ 0.74,  0.54,  0.57,  0.  ,  0.65,  0.76,  0.34,  0.67,  0.43,  0.53])

общие функции активации использована в сеть с обратным распространением ошибки (гиперболический тангенс), которые оцениваются от -2 до 2:

enter image description here

линейная функция активации может быть использована, однако в очень ограниченных случаях. На самом деле, чтобы лучше понять функции активации, важно посмотреть на обычную наименьшую квадратную или просто линейную регрессию. Линейная регрессия направлена на поиск оптимальных Весов, которые приводят к минимальному вертикальному эффекту между объясняющими и целевыми переменными в сочетании с входными данными. Короче говоря, если ожидаемый результат отражает линейную регрессию, как показано ниже, то линейная активация функции могут быть использованы: (верхний рисунок). Но как и на втором рисунке ниже линейная функция не даст желаемых результатов: (средний рисунок). Однако нелинейная функция, как показано ниже, даст желаемые результаты: (нижний рисунок) enter image description here

функции активации не могут быть линейными, потому что нейронные сети с линейной функцией активации эффективны только на один слой глубиной, независимо от того, насколько сложны их архитектура. Вход в сети обычно является линейным преобразованием (вход * вес), но реальный мир и проблемы нелинейны. Чтобы сделать входящие данные нелинейными, мы используем нелинейное отображение, называемое функцией активации. Функция активации-это функция принятия решений, которая определяет наличие определенного нейронного признака. Он отображается между 0 и 1, где ноль означает отсутствие объекта, а один означает его присутствие. К сожалению, небольшие изменения происходят в Весах не может быть отражено в значениях активации, потому что он может принимать только 0 или 1. Поэтому нелинейные функции должны быть непрерывными и дифференцируемыми между этим диапазоном. Нейронная сеть должна быть в состоянии принимать любой вход от-бесконечности до +бесконечности, но она должна быть в состоянии сопоставить его с выходом, который колеблется между {0,1} или между {-1,1} в некоторых случаях - таким образом, потребность в функции активации. Нелинейность необходима в функциях активации, потому что ее цель в нейронной сети состоит в том, чтобы произвести нелинейное решение границы через нелинейные комбинации веса и входов.

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

то же самое касается случая, когда все нейроны имеют аффинные функции активации (т. е. функция активации на форме f(x) = a*x + c, где a и c являются константами, что является обобщением линейных функций активации), что просто приведет к аффинного преобразования от входа к выходу, что тоже не очень интересно.

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

"в настоящей работе используется Теорема Стоуна-Вейерштрасса и косинусный сквашер Галланта и Уайта, чтобы установить, что стандартные многослойные сетевые архитектуры прямой связи с использованием абритральных функций сжатия могут аппроксимировать практически любую интересующую функцию с любой желаемой степенью точности при условии, что доступно достаточно много скрытых единиц."(Hornik et al., 1989, Нейронные Сети)

функция сжатия-это, например, нелинейная активация функция, которая сопоставляется с [0,1], как функция активации сигмовидной.

бывают случаи, когда чисто линейная сеть может дать полезные результаты. Говорят, у нас есть сеть из трех слоев с формами (3,2,3). Ограничивая средний слой только двумя измерениями, мы получаем результат, который является "плоскостью наилучшего соответствия" в исходном трехмерном пространстве.

но есть более простые способы найти линейные преобразования этой формы, такие как NMF, PCA и т. д. Однако это тот случай, когда многослойная сеть ведет себя не так, как однослойная персептрон.

Как я помню - сигмоидные функции используются, потому что их производная, которая вписывается в алгоритм BP, легко вычисляется, что-то простое, например f(x)(1-f(x)). Я не помню точно математику. На самом деле, любую функцию с помощью производных инструментов могут быть использованы.

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

Это вовсе не требование. На самом деле,исправлено линейной функцией активации!--2--> очень полезно в больших нейронных сетей. Вычисление градиента происходит намного быстрее, и он вызывает разреженность, устанавливая минимальную границу в 0.

смотрите ниже для получения более подробной информации: https://www.academia.edu/7826776/Mathematical_Intuition_for_Performance_of_Rectified_Linear_Unit_in_Deep_Neural_Networks


Edit:

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

да, это технически нелинейная функция, потому что она не линейна в точке x=0, однако все же правильно сказать, что она линейна во всех других очков, так что я не думаю, что это полезно придираться здесь

Я мог бы выбрать функцию идентификации, и это все равно было бы правдой, но я выбрал ReLU в качестве примера из-за его недавней популярности.