Привет, народ!

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

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

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

Каждая искусственная нейронная сеть имеет один или несколько входных данных, таких как x1, x2, x3, и выходное значение y, которое передается на следующий уровень ИНС. Они в основном используются для введения нелинейности в нашу Сеть. Основная цель функции активации - преобразовать входной сигнал узла в искусственных нейронных сетях в выходной сигнал. Выходной сигнал из этого узла будет использоваться как входной для следующего слоя в стеке.

Более того, в ИНС в основном у нас есть сумма произведений входа x1 с их соответствующими весами W, затем мы применяем нашу функцию активации, чтобы получить выход нашего слоя и подать этот результат в качестве входных данных в следующем слое.

Необходимость функций активации

Прежде чем переходить к функциям активации. Поговорим о линейной функции. В математике линейная функция - это просто полиномиальная функция первой степени. Эти линейные функции очень ограничены для решения сложных задач и имеют меньше возможностей для изучения отображения на основе данных. Если вы рассматриваете ИНС без функции активации, она будет вести себя как простая линейная регрессия, у которой есть ограничения для хорошей работы с большими наборами данных. В нейронной сети мы не сможем изучать сложные типы данных, такие как изображения, видео, аудио, речь и т. Д., Без использования функции активации.

Функции активации - Invincible Properties

  1. Нелинейность

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

2. Монотонный

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

3. Диапазон

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

4. Постоянно дифференцируемый

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

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

Интуитивное объяснение различных функций активации

Сигмовидная кишка - ключевые моменты

  • Функция активации сигмовидной формы - одна из широко используемых функций активации. Он определяется следующим образом

  • По сути, сигмовидная функция - это гладкая и непрерывно дифференцируемая функция.
  • Классная особенность, которую наследует сигмоид, заключается в том, что они имеют избыточный шаг и имеют линейную функцию в том, что они нелинейны по своей природе.
  • Сигмовидная функция дает S-образную кривую. Эта кривая имеет конечный предел «0», когда x приближается к −∞, «1», когда x приближается к + ∞.
  • Помимо потрясающих функций, у него также есть некоторые недостатки. В основном сигмовидные функции имеют значения только в диапазоне от 0 до 1. Это означает, что сигмоидальная функция не симметрична относительно начала координат, и все полученные значения являются положительными.
  • Теперь, чтобы получить больше Clear с выводом сигмоидной функции. Код ниже - это оболочка для игры с сигмоидом. Функция sigmoid принимает массив numpy в качестве аргумента и возвращает вывод функции sigmoid.
x = np.array([1,2,3,4,5,6])
x = sigmoid(x)
print(x)
[ 0.73105858  0.88079708  0.95257413  0.98201379  0.99330715  0.99752738]
  • Итак, вы думаете, что это своего рода волшебное нет. Я просто преобразовал формулу сигмовидной функции в выражение Numpy и вытащил значение. Как вы можете заметить, выходной массив находится в диапазоне от (0,1), что является основной функцией использования функции сигмоидной активации.

ReLu-Key Points

  • Одна из самых популярных функций активации, которую любят многие специалисты по анализу данных и инженеры по DNN. Функция ReLU - это выпрямленная линейная единица. Функция Relu равна нулю для отрицательных значений и линейно растет
    для положительных значений.
  • Функция Relu - это нелинейная функция, которая легко выполняет обратное распространение ошибок и имеет ряд нейронов, которые активируются функцией активации Relu.
  • Так почему же Релу так популярен? Поскольку функция активации Relu не активирует все нейроны уровня нейронной сети одновременно.
  • Следовательно, если мы введем отрицательные значения в функцию активации Relu, она преобразуется в ноль, и активируется только несколько нейронов, что делает нейронную сеть разреженной, поэтому она более эффективна и проста для вычислений.
x = np.array([[2, -7, 5], [-6, 2, 0]]) 
x = relu(x)
print(x)
array([[2, 0, 5],
       [0, 2, 0]])
  • Замечательно, мы вводим некоторые отрицательные значения в нашу функцию-оболочку, и она сводит их к нулю.

Тань - ключевые моменты

  • Касательная гиперболическая функция очень похожа на сигмовидную активацию. Эта функция масштабирует значение от -1 до 1. Этого можно достичь, применяя порог точно так же, как сигмовидная функция.
  • Одним из преимуществ использования тангенциальной гиперболической функции является то, что значения tanh центрированы нулем, что помогает следующему нейрону во время распространения.

  • Как мы делаем вывод из приведенных выше уравнений, он в основном говорит нам, что когда мы применяем взвешенную сумму входных данных в функции активации tanh, она изменяет масштаб значений между -1 и 1.
  • Большие отрицательные числа масштабируются в сторону -1, а большие положительные числа - в сторону 1.
x = np.array([1,2,3,-4,-5,-6])
x = tanh(x)
print(x)
[ 0.76159416  0.96402758  0.99505475 -0.9993293  -0.9999092  -0.99998771]
  • Поскольку выходные данные нашей оболочки проясняют все значения в диапазоне от -1 до 1, когда мы вводим данные из массивов numpy.

ArcTan - Ключевые моменты

  • Эта функция активации предназначена для достижения диапазонов выходных значений между (−π / 2, π / 2) (- π / 2, π / 2).
  • Итак, используя функцию активации ArcTan, мы квадратично сводим наши производные к нулю для больших входных значений. Итак, если вы представите себе, что в функции активации сигмоида производная экспоненциально сходится относительно нуля, что может вызвать проблемы при обратном распространении.
  • Считается, что ArcTan быстрее, чем функция активации Tanh, так как у него лучшая способность различать похожие входные значения.
x = np.array([1,2,3,-4,-5,-6])
x = arctan(x)
print(x)
[ 0.78539816  1.10714872  1.24904577 -1.32581766 -1.37340077 -1.40564765]
  • Как уже обсуждалось, мы получили выходные значения между указанными диапазонами, то есть (−π / 2, π / 2) (- π / 2, π / 2).

Функция активации двоичного шага - ключевые моменты

  • Одна из самых простых функций активации. Пошаговая функция используется для прогнозирования, когда мы имеем дело с двоичным классификатором.
  • Если мы делаем прогноз на основании того, будет ли это «да» или «нет», мы переходим к функции активации Step Binary.
  • Более того, градиент ступенчатой ​​функции равен нулю. Это делает пошаговую функцию не очень полезной, так как при обратном распространении.
  • Градиенты этой функции в основном сводятся к нулю, что не приводит к значительным улучшениям в модели DNN.
x = np.array([[2, -7, 5], [-6, 2, 0]]) 
x = step(x)
print(x)
[[1 0 1]
 [0 1 0]]
  • Итак, поскольку мы видим, что наш результат имеет форму двоичного класса, то есть 0 или 1.

Функции активации по Гауссу - ключевые моменты

  • Функция активации по Гауссу происходит из специального класса функций, известных как радиальные базисные функции (RBF), которые используются в RBF-сетях.
  • Эти функции представляют собой колоколообразные кривые, которые обладают свойствами непрерывности.
  • Выходной узел функции активации по Гауссу должен интерпретироваться в терминах «1» или «0», в зависимости от того, насколько близок вход к выбранному значению среднего.
x = np.array([[2, -7, 5], [-6, 2, 0]]) 
x = gaussian(x)
print(x)
[[0 0 0]
 [0 0 1]]
  • Как и ожидалось, выходные значения будут считаться двоичными с «0» или «1».

Какую функцию активации использовать? -А теперь большой вопрос!

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

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

  • В основном функции активации сигмоида и реляции не используются часто из-за градиентов точки схода.
  • Сигмоиды и связанные с ними функции отлично работают при решении задач двоичной классификации.
  • Мы должны помнить, что Relu необходимо использовать в скрытых слоях в наших нейронных сетях.
  • Мы также можем использовать Relu в большинстве случаев. Если у нас есть проблема с обработкой мертвых нейронов в наших нейронных сетях, мы можем использовать Leaky Relu.
  • И последнее, но не менее важное: Вы можете начать с использования функции ReLU, а затем перейти к другим функциям активации, если Relu не даст вам лучшего результата.

Конец заметок

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

Ссылки

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

Также ознакомьтесь с этим превосходным сообщением История сверточных нейронных сетей (CNN) с PyTorch, часть I

Ура!