Функции активации: ReLU и Softmax

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

  • Объясните, что такое функции активации, и опишите их роль в искусственных нейронных сетях.
  • Узнайте, как реализовать в Python функции активации Rectified Linear Unit (ReLU) и Softmax.

Функции активации:

С биологической точки зрения функция активации является абстрактным представлением скорости потенциала действия в нейроне. В мире глубокого обучения и искусственных нейронных сетей функции активации можно рассматривать как набор правил, которые определяют, активируется / «срабатывает» нейрон при заданном вводе или наборе вводимых данных. Это лучше понять на реальном примере, поэтому давайте рассмотрим одну из самых популярных функций активации; выпрямленное линейное устройство (ReLU). Нейрон с функцией активации ReLU принимает любые реальные значения в качестве своих входов, но активируется только тогда, когда эти входы больше нуля. График функции активации ReLU можно найти ниже.

Предположим, что список input содержит все входы нашего нейрона.

Это так просто. Из всех наших входных значений мы активируемся только тогда, когда входное значение больше 0. Вы могли заметить, что функция ReLU похожа на функцию y = x, и технически это та же функция… .. ну , вроде как.
Можно сказать, что ReLU - это «положительный аргумент» функции y = x. Наконец, приведенный выше код можно немного очистить для удобства чтения, так что давайте сделаем это.

Вуаля! Вот и все. Вы написали свою первую функцию активации с нуля.

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

Нам нужно внести незначительные изменения в нашу реализацию из-за некоторых проблем, типичных для нейронных сетей - мертвых нейронов и взрывающихся значений. Чтобы смягчить эти проблемы, мы можем просто вычесть максимальное значение в списке вывода из каждого вывода в списке перед возведением в степень. Загвоздка в том, что когда мы вычитаем максимальное выходное значение из всех выходов, у нас остается список выходов, где ни один выход не превышает 0. Крутой трюк, стоящий за этим свойством, заключается в том, что когда мы возводим в степень 0, мы получаем 1 . Когда мы возводим в степень отрицательную бесконечность, мы получаем число, которое по существу равно 0. Теперь вы можете увидеть, как это свойство эффективно помогло нам сопоставить наши выходные данные с нормализованной шкалой между 0 и 1. Также обратите внимание, что вычитание одного и того же значения из каждого вывод не меняет вероятностей. Я оставлю это вам, чтобы поэкспериментировать с разными значениями вычитания и посмотреть, изменится ли распределение вероятностей. Итак, давайте соберем все это вместе в коде Python.

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

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