Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Зачем нужны функции активации?

ПрограммированиеМашинное обучение+3
  · 1,1 K
Openstack DevOps and IBM/Informix Certified DBA . Phd in Math (Duality of spaces of...  · 5 мар 2022
Элементы нейронной сети: -
Входной слой: этот слой принимает входные объекты. Он предоставляет информацию из внешнего мира в сеть, на этом уровне не выполняются никакие вычисления, здесь узлы просто передают информацию (функции) скрытому уровню. Скрытый слой: узлы этого слоя не открыты внешнему миру, они являются частью абстракции, предоставляемой любой нейронной сетью. Скрытый слой выполняет все виды вычислений над функциями, введенными через входной слой, и передает результат в выходной слой. Выходной уровень: этот уровень выводит информацию, полученную сетью, во внешний мир.
================================================
Что такое функция активации и зачем их использовать?
================================================
Определение функции активации: функция активации решает, должен ли нейрон быть активирован или нет, путем вычисления взвешенной суммы и дальнейшего добавления к ней смещения. Функция активации предназначена для введения нелинейности в выходные данные нейрона.
Объяснение :-
Мы знаем, что в нейронной сети есть нейроны, которые работают в соответствии с весом, смещением и соответствующей функцией активации. В нейронной сети мы будем обновлять веса и смещения нейронов на основе ошибки на выходе. Этот процесс известен как обратное распространение. Функции активации делают возможным обратное распространение, поскольку градиенты предоставляются вместе с ошибкой для обновления весов и смещений.
Зачем нужны нелинейные функции активации: -
Нейронная сеть без функции активации — это, по сути, просто модель линейной регрессии. Функция активации выполняет нелинейное преобразование входных данных, что позволяет ей обучаться и выполнять более сложные задачи.
Желательные характеристики функции активации
Проблема исчезающего градиента: нейронные сети обучаются с использованием процесса градиентного спуска. Градиентный спуск состоит из шага обратного распространения, который в основном является цепным правилом, чтобы получить изменение весов, чтобы уменьшить потери после каждой эпохи. Рассмотрим двухслойную сеть, и первый уровень представлен как f₁(x), а второй уровень представлен как f₂(x). Общая сеть o (x) = f₂ (f₁ (x)). Если мы вычисляем веса во время обратного прохода, мы получаем o`(x) = f₂(x)*f₁`(x). Здесь f₁(x) — составная функция, состоящая из Act(W₁*x₁ + b₁), где Act — функция активации после слоя 1. Снова применяя цепное правило, мы ясно видим, что f₁`(x) = Act(W₁*x₁ + b₁)*x₁, что означает, что это также напрямую зависит от значения активации. Теперь представьте, что такое цепное правило проходит через несколько уровней при обратном распространении.
Если значение Act() находится в диапазоне от 0 до 1, то несколько таких значений будут перемножены для вычисления градиента начальных слоев. Это снижает значение градиента для начальных слоев, и эти слои не могут правильно обучаться. Другими словами, их градиенты стремятся к нулю из-за глубины сети и активации, сдвигающей значение к нулю.
Это называется проблемой исчезающего градиента.
Для нас очень важно, чтобы наша функция активации не сдвигала градиент к нулю. Смотри
========================================
Как их использовать в глубоких нейронных сетях?
Tanh и сигмоид вызывают огромные проблемы с исчезающим градиентом. Следовательно, их не следует использовать.
Начните с ReLU в вашей сети. Слой активации добавляется после слоя веса (что-то вроде CNN, RNN, LSTM или линейного плотного слоя), Если вы считаете, что модель перестала обучаться, вы можете заменить ее LeakyReLU, чтобы избежать проблемы Dying ReLU. Однако Leaky ReLU немного увеличит время вычислений. Функции активации лучше всего работают с гиперпараметрами по умолчанию, которые используются в популярных фреймворках, таких как Tensorflow и Pytorch. Детально смотри первую ссылку сверху
=======================================
Zero-Centered: выходные данные функции активации должны быть симметричны нулю, чтобы градиенты не смещались в определенном направлении.
======================================
Вычислительные затраты: функции активации применяются после каждого уровня, и в глубоких сетях их необходимо вычислять миллионы раз. Следовательно, они должны быть вычислительно недорогими для расчета.
Дифференцируемость: как уже упоминалось, нейронные сети обучаются с использованием процесса градиентного спуска, поэтому слои в модели должны быть дифференцируемыми или, по крайней мере, дифференцируемыми по частям. Это необходимое требование для того, чтобы функция работала как уровень функции активации.
23 y.o. designer from San Francisco   · 11 апр 2022
Функции активации требуются для правильной работы нейронной сети. Без этой функции нейронная сеть не сможет рабоать правильно. Вам же это не нужно?