Почему нелинейная функция активации должна использоваться в нейронной сети обратного распространения?
Я читал некоторые вещи о нейронных сетях, и я понимаю общий принцип однослойной нейронной сети. Я понимаю необходимость в дополнительных слоях, но почему используются нелинейные функции активации?
за этим вопросом следует Следующий: что является производной функции активации, используемой для обратного распространения?
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:
линейная функция активации может быть использована, однако в очень ограниченных случаях. На самом деле, чтобы лучше понять функции активации, важно посмотреть на обычную наименьшую квадратную или просто линейную регрессию. Линейная регрессия направлена на поиск оптимальных Весов, которые приводят к минимальному вертикальному эффекту между объясняющими и целевыми переменными в сочетании с входными данными. Короче говоря, если ожидаемый результат отражает линейную регрессию, как показано ниже, то линейная активация функции могут быть использованы: (верхний рисунок). Но как и на втором рисунке ниже линейная функция не даст желаемых результатов: (средний рисунок). Однако нелинейная функция, как показано ниже, даст желаемые результаты: (нижний рисунок)
функции активации не могут быть линейными, потому что нейронные сети с линейной функцией активации эффективны только на один слой глубиной, независимо от того, насколько сложны их архитектура. Вход в сети обычно является линейным преобразованием (вход * вес), но реальный мир и проблемы нелинейны. Чтобы сделать входящие данные нелинейными, мы используем нелинейное отображение, называемое функцией активации. Функция активации-это функция принятия решений, которая определяет наличие определенного нейронного признака. Он отображается между 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 в качестве примера из-за его недавней популярности.