[Машинное обучение] Нейронная сеть — функция активации — аспекты (функция активации)

машинное обучение

Функция активации нейронной сети


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

Я также надеюсь, что вы простите меня и приветствуете критику и исправления.

Чтобы просмотреть другие похожие блоги, нажмите:blog.csdn.net/cyh_24

Для перепечатки просьба прикрепить ссылку на эту статью:blog.CSDN.net/Differentiation_24/Ariti…

В повседневном кодировании мы, естественно, будем использовать некоторые функции активации, такие как: сигмоид, ReLU и т. д. Но я, кажется, забыл спросить себя ( н) вещи:

  1. Зачем нужна функция активации?
  2. Каковы функции активации? Как они все выглядят? Какие преимущества и недостатки?
  3. Как выбрать функцию активации?

Эта статья основана на этих проблемах, и критика и исправления приветствуются!

此处输入图片的描述
(Эта картинка бесполезна, она предназначена исключительно для того, чтобы притвориться х...)

Why use activation functions?

Функции активации обычно имеют следующие свойства:

  • Нелинейный:Когда функция активации является линейной, двухслойная нейронная сеть может аппроксимировать почти все функции. Однако, если функция активации является функцией активации идентичности (т.е. f (x)=x ), это свойство не выполняется, и если MLP использует функцию активации идентичности, то вся сеть фактически эквивалентна однослойной нейронной сети.
  • Дифференцируемость:Это свойство требуется, когда метод оптимизации основан на градиентах.
  • Монотонность:Когда функция активации монотонна, однослойная сеть гарантированно является выпуклой функцией.
  • f(x)≈x:Когда функция активации удовлетворяет этому свойству, если инициализация параметра представляет собой небольшое случайное значение, то обучение нейронной сети будет очень эффективным; если это свойство не выполняется, то начальное значение необходимо устанавливать осторожно.
  • Диапазон выходных значений:Когда выходное значение функции активацииограниченноеКогда метод оптимизации на основе градиента болеестабильность, потому что на представление признака более существенно влияют ограниченные веса; когда выход функции активациинеограниченныйПри , обучение модели будет более эффективным, но в этом случае, как правило, требуется меньшая скорость обучения.

Именно из-за этих свойств мы используем функции активации!

Activation Functions.

Sigmoid

此处输入图片的描述

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

f(x)=1 1 +e − x

Как упоминалось в предыдущем разделе, он способен «сжимать» последовательные действительные значения ввода между 0 и 1.
В частности, если это очень большое отрицательное число, на выходе будет 0; если это очень большое положительное число, на выходе будет 1.
Сигмовидная функция раньше использовалась очень часто, но в последние годы ею пользуется все меньше и меньше людей. В основном потому, что некоторые из нихнедостаток:

  • Sigmoids saturate and kill gradients.(Как перевести слово насыщение? Насыщение?) сигмоид имеет очень фатальный недостаток.Когда вход очень большой или очень маленький (насыщение), градиент этих нейронов близок к 0. Из рисунка видно, что градиент тренда. Поэтому вам нужно обратить особое внимание на начальное значение параметра, чтобы максимально избежать ситуации насыщения. Если ваше начальное значение велико, большинство нейронов могут находиться в состоянии насыщения, и градиент будет убит, что затруднит обучение сети.
  • Выход Sigmoid не равен 0.Это нежелательно, потому что это приведет к тому, что нейроны более позднего слоя будут получать в качестве входных данных ненулевой средний сигнал, выдаваемый предыдущим слоем.
    Одним из следствий является то, что если данные поступают в нейрон, они положительны (например, x >0 поэлементно в f =w T x+ b ), то Градиент, вычисляемый w, также всегда будет положительным.
    Конечно, если вы тренируетесь по партиям, то эта партия может получать разные сигналы, так что эту проблему все же можно решить. Следовательно, хотя проблема ненулевого среднего будет иметь некоторые негативные последствия, она все же намного лучше, чем проблема градиентов уничтожения, упомянутая выше.

tanh

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

t anh(x) =2s igmoid(2x)−1

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

此处输入图片的描述

ReLU

В последние годы ReLU становится все более популярным. Его математическое выражение выглядит следующим образом:

f (x)=max( 0,x )

Очевидно, как видно из левой части рисунка, входной сигнал 0, выход равен входу. Когда w является двумерным, эффект после использования ReLU выглядит следующим образом:

此处输入图片的描述

Преимущества РеЛУ:

  • Krizhevsky et al.Обнаружено, что скорость сходимости SGD, полученная с использованием ReLU, намного выше, чем у сигмоиды/танга (см. рисунок справа). Некоторые говорят, что это потому, что он линейный и ненасыщающий.
  • По сравнению с sigmoid/tanh, ReLU требуется только порог, чтобы получить значение активации без необходимости вычисления множества сложных операций.

Недостатки ReLU:Конечно, у ReLU есть и недостатки, то есть он очень "хрупок" при обучении и легко "умирает". Что это значит?

Например: через нейрон ReLU протекает очень большой градиент, после обновления параметров нейрон больше не будет активировать никакие данные.

Если это произойдет, градиент этого нейрона всегда будет равен 0.

На практике, если ваша скорость обучения велика, то весьма вероятно, что 40% нейронов в вашей сети «мертвые». Конечно, если вы установите достаточно маленькую скорость обучения, эта проблема не будет возникать слишком часто.

Утечка-ReLU, P-ReLU, R-ReLU

Утечки ReLU:это решить это"умирающий РеЛУ"проблемы. В отличие от ReLU:

f(x)=αx, (xf(x)=x, (x>=0)

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

此处输入图片的描述

Существуют разные мнения об эффекте Leaky ReLU, и однозначного вывода нет. Некоторые люди провели эксперименты и обнаружили, что Leaky ReLU работает хорошо, некоторые эксперименты доказали обратное.

此处输入图片的描述

Параметрический ReLU:Для дырявого ReLU в α обычно назначается вручную на основе предварительных знаний.
Однако можно заметить, что функция потерь имеет Мы можем получить производную от α, можем ли мы использовать ее в качестве параметра для обучения?
В статье Кайминга Хэ «Углубление в выпрямители: превосходство на уровне человека в классификации ImageNet» отмечается, что тренироваться не только можно, но и лучше.

Формула очень проста, формула обратного распространения к нейронам перед активацией не написана, и ее легко получить. правильно Производная α выглядит следующим образом:

δ y i δ α =0 , (если y i >0 ), иначе se =y i

В исходном тексте говорится, что после использования Parametric ReLU конечный эффект на 1,03% выше, чем без него.

Рандомизированный ReLU:
Randomized Leaky ReLU — это случайная версия дырявого ReLU ( а случайно).
Впервые он был предложен на конкурсе NDSB от kaggle.

Основная идея заключается в том, что в процессе обучения α из распределения Гаусса U (l,u) выбирается случайным образом, а затем корректируется во время теста (немного похоже на использование отсева).

Математическое представление выглядит следующим образом:

此处输入图片的描述

На этапе тестирования все обучение α i j Возьмите среднее значение. Чемпион NDSB α из U (3,8) выбирается случайным образом. Затем, на этапе тестирования, функция активации выглядит следующим образом:

y i j =x i j l +u 2

Ознакомьтесь с результатами экспериментов в cifar-100:

此处输入图片的描述

Maxout

此处输入图片的描述

Maxout появился на ICML 2013. После объединения maxout и dropout автор Гудфеллоу утверждает, что достиг начальной скорости распознавания по четырем данным MNIST, CIFAR-10, CIFAR-100 и SVHN.
Формула Maxout выглядит следующим образом:

f i (x)=m ax j ∈[1 ,k] z i j

Предположение w является двумерным, то мы имеем:

f (x)=max( w T 1 x+ b 1 ,w T 2 x+ b 2 )

Можно отметить, что и ReLU, и Leaky ReLU являются его вариантами (например, Когда w 1 , b 1 =0, это ReLU).

Подгоночная способность Maxout очень сильна, он может соответствовать любой выпуклой функции. Автор также доказывает этот вывод с математической точки зрения, то есть только 2 узла maxout могут соответствовать любой выпуклой функции (вычитанию) при условии, что количество узлов «скрытого скрытого слоя» может быть сколь угодно большим.

此处输入图片的描述

Итак, у Maxout есть ReLUпреимущество(например: простой расчет, отсутствие насыщения) и в то же время без некоторых недостатков ReLU (например: легко умереть). Тем не менее, есть еще некоторыенедостатокНу: то есть удвоить параметры.

Есть и другие функции активации, см. таблицу ниже:

此处输入图片的描述
此处输入图片的描述

How to choose a activation function?

Как выбрать функцию активации?

Я не думаю, что этот вопрос может быть окончательным, можно сказать, что это только личное предложение.

Если вы используете ReLU, будьте осторожны с установкой скорости обучения и следите за тем, чтобы в вашей сети не было слишком много «мертвых» нейронов.Если эту проблему решить непросто, вы можете попробовать Leaky ReLU, PReLU или Maxout.

Дружеское напоминание:Лучше не использовать sigmoid, вы можете попробовать tanh, но можно ожидать, что он будет менее эффективен, чем ReLU и Maxout.

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

Reference

[1]. woohoo.FAQs.org/FAQs/love-launch…
[2]. Бумаги.Грязевой Бодхисаттва.Цао Цао/бумага/874-также…
[3]. En. Wikipedia.org/wiki/act IV A…
[4]. На данный момент 231 you.GitHub.IO/neural-net…

Please feel free to contract me if you have any questions.