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

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

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

Ответы [ 11 ]

150 голосов
/ 20 марта 2012

Цель функции активации состоит в том, чтобы ввести нелинейность в сеть

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

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

Другой способ думать об этом: без нелинейного Функция активации в сети, 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])

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

enter image description here

38 голосов
/ 10 марта 2016

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

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

20 голосов
/ 15 января 2016

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

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

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

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

4 голосов
/ 20 марта 2012

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

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

3 голосов
/ 16 мая 2018

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

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

2 голосов
/ 04 февраля 2019

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

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

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

2 голосов
/ 03 февраля 2019

Нейронная сеть с прямой связью с линейной активацией и любым количеством скрытых слоев эквивалентна только линейной нейронной сети без скрытого слоя.Например, давайте рассмотрим нейронную сеть на рисунке с двумя скрытыми слоями и без активации enter image description here

y = h2 * W3 + b3 
  = (h1 * W2 + b2) * W3 + b3
  = h1 * W2 * W3 + b2 * W3 + b3 
  = (x * W1 + b1) * W2 * W3 + b2 * W3 + b3 
  = x * W1 * W2 * W3 + b1 * W2 * W3 + b2 * W3 + b3 
  = x * W' + b'

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

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

1 голос
/ 21 мая 2015

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

1 голос
/ 20 марта 2012

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

0 голосов
/ 14 июля 2019

Позвольте мне объяснить вам как можно проще:

Нейронные сети используются в распознавании образов правильно?И поиск по шаблону - очень нелинейный метод.

Предположим, что для аргумента мы используем линейную функцию активации y = wX + b для каждого отдельного нейрона и устанавливаем что-то вроде if y> 0 -> class 1 else class 0.

Nowмы можем вычислить нашу потерю, используя квадратную потерю ошибки, и распространять ее обратно, чтобы модель хорошо выучила, правильно?

НЕПРАВИЛЬНО.

  • Для последнего скрытого слоя обновленныйзначение будет w {l} = w {l} - (альфа) * ​​X.

  • Для второго последнего скрытого слоя обновленное значение будет w {l-1} =w {l-1} - (альфа) * ​​w {l} * X.

  • Для i-го последнего скрытого слоя обновленное значение будет w {i} = w {i} - (альфа) * ​​w {l} ... * w {i + 1} * X.

Это приводит к умножению всех весовых матриц вместе, что приводит к возможностям: A) w {i} едва изменяется из-за исчезающего градиента B) w {i} изменяется резко и неточно из-за взрывного градиента C) w {i} изменяется достаточно хорошо, чтобы дать нам хороший результат подгонки

Вслучай C происходит, что означает, чтоНаша проблема классификации / прогнозирования, скорее всего, была простой линейной / логистической регрессором, и в первую очередь она никогда не требовала нейронной сети!

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

...