Forwarded from asisakov
ReLU, GELU, SiLU и ELU
Несколько лет назад на курсах нам рассказывали только про несколько функций активации: sigmoid, tanh, ReLU. Было круто, когда кто-то дополнительно ещё рассказывал про Leaky ReLU. И всего этих четырёх функций активации было достаточно, чтобы шатать сеточки.
Буквально несколько дней назад я слушал разбор статьи, где говорилось о том, что применение ReLU позволяет увеличить скорость инференса с небольшой потерей качества. Сравнение проводилось с функциями активации: GELU, SiLU. Я понял, что немного отстал от современных технологий в DL и решил погуглить и поделиться с вами.
Начнем с функции ReLU (Rectified Linear Unit). Эта функция активации имеет форму f(x) = max(0, x), что делает ее чрезвычайно эффективной для операций с большим количеством признаков, поскольку она увеличивает нелинейность модели без затрат на вычислительные ресурсы и без риска исчезновения градиента. Одним из главных недостатков ReLU является проблема «мертвых нейронов», когда нейроны перестают активироваться и вносить вклад в обучение сети из-за отрицательных значений на входе.
GELU (Gaussian Error Linear Unit), впервые представленная в 2016 году, стала более гладкой альтернативой ReLU. Функция GELU умножает входное значение на вероятность того, что значение будет активировано, что делает ее подходящей для использования в трансформерах и сетях с self-attention. Такая структура приводит к более динамичной адаптации нейронов к разным фазам обучения, позволяя достигать лучших результатов на сложных задачах.
Следующая в нашем списке — SiLU (Sigmoid Linear Unit). Эта функция активации представляет собой произведение входа на сигмоидную функцию от этого же входа, f(x) = x * σ(x). SiLU показала хорошие результаты в экспериментах по глубокому обучению, часто превосходя ReLU по разнообразным метрикам.
ELU (Exponential Linear Unit) добавляет еще одну интересную возможность в арсенал функций активации. В отличие от ReLU, ELU вводит отрицательные значения для отрицательных входов, что помогает сохранять более богатую информацию о распределении входных данных. Функция имеет форму f(x) = x, если x > 0, и f(x) = α(exp(x) - 1), если x ≤ 0, где α — параметр, обычно равный единице. Это улучшает скорость сходимости модели.
Вкратце: эти функции активации позволяют уменьшить вероятность возникновения проблемы размывания градиентов, но при этом тратят чуть больше компьюта на вычисления.
Пояснение с кодом есть тут
Дополнительное чтиво: 1, 2
#dl #code
Несколько лет назад на курсах нам рассказывали только про несколько функций активации: sigmoid, tanh, ReLU. Было круто, когда кто-то дополнительно ещё рассказывал про Leaky ReLU. И всего этих четырёх функций активации было достаточно, чтобы шатать сеточки.
Буквально несколько дней назад я слушал разбор статьи, где говорилось о том, что применение ReLU позволяет увеличить скорость инференса с небольшой потерей качества. Сравнение проводилось с функциями активации: GELU, SiLU. Я понял, что немного отстал от современных технологий в DL и решил погуглить и поделиться с вами.
Начнем с функции ReLU (Rectified Linear Unit). Эта функция активации имеет форму f(x) = max(0, x), что делает ее чрезвычайно эффективной для операций с большим количеством признаков, поскольку она увеличивает нелинейность модели без затрат на вычислительные ресурсы и без риска исчезновения градиента. Одним из главных недостатков ReLU является проблема «мертвых нейронов», когда нейроны перестают активироваться и вносить вклад в обучение сети из-за отрицательных значений на входе.
GELU (Gaussian Error Linear Unit), впервые представленная в 2016 году, стала более гладкой альтернативой ReLU. Функция GELU умножает входное значение на вероятность того, что значение будет активировано, что делает ее подходящей для использования в трансформерах и сетях с self-attention. Такая структура приводит к более динамичной адаптации нейронов к разным фазам обучения, позволяя достигать лучших результатов на сложных задачах.
Следующая в нашем списке — SiLU (Sigmoid Linear Unit). Эта функция активации представляет собой произведение входа на сигмоидную функцию от этого же входа, f(x) = x * σ(x). SiLU показала хорошие результаты в экспериментах по глубокому обучению, часто превосходя ReLU по разнообразным метрикам.
ELU (Exponential Linear Unit) добавляет еще одну интересную возможность в арсенал функций активации. В отличие от ReLU, ELU вводит отрицательные значения для отрицательных входов, что помогает сохранять более богатую информацию о распределении входных данных. Функция имеет форму f(x) = x, если x > 0, и f(x) = α(exp(x) - 1), если x ≤ 0, где α — параметр, обычно равный единице. Это улучшает скорость сходимости модели.
Вкратце: эти функции активации позволяют уменьшить вероятность возникновения проблемы размывания градиентов, но при этом тратят чуть больше компьюта на вычисления.
Пояснение с кодом есть тут
Дополнительное чтиво: 1, 2
#dl #code
❤1