Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

SiLU (Sigmoid Linear Unit)

SiLU, также называемая Swish, умножает входное значение на его сигмоиду, формируя плавную функцию активации с саморегуляцией. Рассматриваются её математика, происхождение и сравнение с ReLU.

Линейный блок с сигмоидой (SiLU) — это функция активации, определяемая как SiLU(x) = x · σ(x), где σ — функция сигмоиды. Большие положительные значения она пропускает почти без изменений, большие отрицательные значения сводит почти к нулю, а между ними плавно меняется, достигая минимума около −0.278 при x ≈ −1.278. SiLU — та же функция, что и Swish при β = 1; эти названия используют как взаимозаменяемые. Она часто используется по умолчанию в свёрточных моделях компьютерного зрения, а в блоке SwiGLU также служит функцией активации в полносвязных слоях многих больших языковых моделей (LLM).

Определение и свойства#

SiLU умножает каждый вход на управляющий сигнал σ(x), который находится в диапазоне от 0 до 1 и вычисляется на основе самого входа. Поэтому функцию называют саморегулируемой. Её производная равна σ(x) · (1 + x · (1 − σ(x)); вместе они придают SiLU четыре свойства, отличающие её поведение при обучении от ReLU:

  • Гладкость во всех точках: кривая и её производная непрерывны, без излома в нуле. Поэтому небольшие изменения весов вызывают небольшие изменения выходных значений, что подходит для градиентного спуска.
  • Градиент для отрицательных входов: нейрон с отрицательным входом всё равно получает небольшой градиент и продолжает обучаться. Нейроны ReLU, входы которых остаются отрицательными, вообще не получают градиента и могут навсегда перестать обучаться. Это явление называют «умирающей ReLU».
  • Немонотонность: при росте x от сильно отрицательных значений примерно до −1.28 выход немного уменьшается, а затем начинает расти. Поэтому функция немонотонна.
  • Ограниченность снизу и неограниченность сверху: выходные значения не опускаются ниже примерно −0.278, а положительные входы проходят без насыщения, как и в ReLU. Это позволяет избежать исчезающего градиента, характерного для сигмоиды и tanh в глубоких сетях.

Приведённый ниже код на PyTorch вычисляет значения SiLU и градиенты SiLU и ReLU для пяти точек.

import torch
import torch.nn.functional as F

x = torch.tensor([-4.0, -1.28, 0.0, 1.0, 4.0], requires_grad=True)

# SiLU(x) = x * sigmoid(x) в сравнении с ReLU на тех же входах
silu = F.silu(x)
relu = F.relu(x)

# Градиент каждой функции активации относительно её входа
silu_grad = torch.autograd.grad(silu.sum(), x)[0]
relu_grad = torch.autograd.grad(relu.sum(), x)[0]

print("SiLU output:  ", [round(v, 4) for v in silu.tolist()])
print("SiLU gradient:", [round(v, 4) for v in silu_grad.tolist()])
print("ReLU gradient:", relu_grad.tolist())

Вывод содержит значения SiLU [-0.0719, -0.2785, 0.0, 0.7311, 3.9281], градиенты SiLU [-0.0527, -0.0003, 0.5, 0.9277, 1.0527] и градиенты ReLU [0.0, 0.0, 0.0, 1.0, 1.0]. При −4 ReLU выдаёт 0 и не передаёт градиент, а SiLU всё ещё передаёт −0.0527. При −1.28 SiLU достигает минимума −0.2785, а её градиент практически равен 0; при 4 градиент немного превышает 1.

Происхождение названия#

Хендрикс и Гимпель назвали x · σ(x) линейным блоком с сигмоидой в статье 2016 года, где представили GELU. В статье эта функция выступала как родственник GELU на основе сигмоиды: она работала хуже GELU, но обычно лучше ReLU и ELU. В 2017 году Элфвинг, Учибе и Доя применили SiLU для аппроксимации функций нейронными сетями в обучении с подкреплением. Позже в том же году исследователи Google независимо открыли x · σ(βx) с помощью автоматического поиска функций активации, назвали её Swish и сообщили, что замена ReLU на Swish повысила точность top-1 на ImageNet на 0,9% для Mobile NASNet-A и на 0,6% для Inception-ResNet-v2. В версии 1.7 PyTorch добавил nn.SiLU, используя прежнее название.

SiLU и другие функции активации#

  • ReLU: max(0, x) вычисляется быстрее, выдаёт точные нули и имеет постоянный градиент 1 для положительных входов. SiLU требует вычисления одной сигмоиды на элемент, но обеспечивает гладкость и градиенты для отрицательных значений.
  • GELU: x · Φ(x), где Φ — функция распределения стандартного нормального закона. Формы двух кривых одинаковы, а масштабированная SiLU x · σ(1.702x) аппроксимирует GELU с погрешностью около 0.02 или меньше во всех точках. GELU обычно используют в трансформерах, таких как BERT и ViT, а SiLU чаще встречается в детекторах на основе CNN.
  • Сигмоида: σ(x) сама по себе сжимает входы в диапазон от 0 до 1 и насыщается на обоих концах, поэтому подходит для выходного слоя, который вычисляет вероятности. В SiLU сигмоида используется только как управляющий сигнал.
  • Hard-Swish: x · ReLU6(x + 3) / 6 — аппроксимация SiLU, представленная вместе с MobileNetV3. Вместо сигмоидного управляющего сигнала здесь используется кусочно-линейная функция, которая позволяет избежать вычисления экспоненты на мобильном оборудовании.
  • SwiGLU: управляемый линейный блок, который поэлементно умножает SiLU(xW) на вторую проекцию xV. Он образует полносвязный блок LLaMA и многих других LLM.

Где используется SiLU#

SiLU под названием Swish используется как функция активации во всей модели EfficientNet и часто встречается в современных детекторах объектов реального времени. Модели Ultralytics YOLO используют SiLU начиная с YOLOv5: в версии 4.0 в январе 2021 года она заменила LeakyReLU и Hardswish. В YOLO26 каждый блок Conv состоит из свёртки, пакетной нормализации и SiLU.

Изучи решения

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

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

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

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

Компьютерное зрение в сельском хозяйстве

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

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения