Функция активации – это фрагмент программного кода, добавляемый в искусственную Нейронную сеть (Neural Network), чтобы помочь ей изучить сложные закономерности данных. В сравнении с нейронами нашего мозга, Функция (Function) активации решает, что должно быть запущено в следующий нейрон. Она принимает выходной сигнал из предыдущей ячейки и преобразует его в некоторую форму, которую можно использовать в качестве входных данных для следующей ячейки. На изображении ниже – устройство нейрона человеческого мозга (слева) и искусственного. Аксон – это отросток нейрона, по которому идут импульсы к иннервируемым органам и другим нервным клеткам:
Зачем это нужно?
Существует несколько причин для использования нелинейных функций активации:
- Помимо биологического сходства, они также помогают поддерживать значение выходного сигнала нейрона, ограниченного определенным пределом в соответствии с нашими требованиями. Это важно, потому что входными данными в функцию активации являются:
Значение Смещения (Bias), если не ограничиваться определенным пределом, может быть очень большим, особенно в случае глубоких нейронных сетей, которые имеют миллионы параметров. Это может привести к вычислительным проблемам. Существуют некоторые функции активации (например, Softmax), которые выводят определенные значения для бинарных входных значений (0 или 1).
- Наиболее важной особенностью функции активации является ее способность добавлять нелинейность в нейронную сеть. Чтобы понять это, давайте рассмотрим многомерные данные, такие как показано на рисунке ниже:
Линейный классификатор, использующий три характеристики (вес, систолическое артериальное давление и возраст на рисунке выше), может дать нам линию в трехмерном пространстве, но он никогда не сможет точно изучить закономерность, которая делает человека курильщиком или некурящим, потому что шаблон, который определяет эту классификацию, просто не является линейным. Если мы используем Искусственную нейронную сеть (ANN) с одной ячейкой, но без функции активации, то "предсказывающее" уравнение равно W * x + b, что бесполезно, ибо W * x также имеет степень, равную 1 (x просто не возводится в степень), следовательно, это линейный классификатор.
Однако сложения слоев недостаточно, особенно для высокоуровневых проблем, например, Компьютерного зрения (CV) или Обработкой естественного языка (NLP).
Чтобы модель получила возможность (или более высокую степень сложности) изучать нелинейные паттерны, между ними добавляются определенные нелинейные уровни – функции активации.
Желательные особенности функции активации
- Проблема исчезающего градиента: нейронные сети обучаются с использованием процесса Градиентного спуска (Gradient Descent), который состоит из Обратного распространения ошибки (Backpropagation). Последний представляет собой цепное правило для получения изменения весов с целью уменьшения потерь после каждой Эпохи (Epoch).
- С нулевым центром: выход функции активации должен быть симметричным относительно нуля, чтобы градиенты не смещались в определенном направлении.
- Вычислительные затраты: функции активации применяются после каждого уровня и должны рассчитываться миллионы раз в глубоких сетях. Следовательно, их вычисление должно быть недорогим в вычислительном отношении.
- Дифференцируемость: как уже упоминалось, нейронные сети обучаются с использованием процесса градиентного спуска, поэтому слои в модели должны быть дифференцируемыми. Это необходимое требование для того, чтобы функция работала как уровень функции активации.
Сигмоид – одна из нелинейных функции активации:
Эта функция активации используется только по историческим причинам и никогда не используется в реальных Моделях (Model). Это затратно с точки зрения вычислений, вызывает проблему исчезающего градиента и не имеет нулевого центра. Этот метод обычно используется для задач Двоичной классификации (Binary Classification).
Фото: @tyssulpatel
Автор оригинальной статьи: Vandit Jain
Понравилась статья? Поддержите нас, поделившись статьей в социальных сетях и подписавшись на канал. И попробуйте курсы на Udemy.