GELU (Gaussian Error Linear Unit)
Изучи функцию активации Gaussian Error Linear Unit (GELU). Узнай, как ее плавная вероятностная нелинейность обеспечивает работу Transformer, BERT и современных систем ИИ.
Гауссова линейная единица ошибки (GELU) — это усовершенствованная функция активации, играющая ключевую роль в производительности современных систем искусственного интеллекта (AI), особенно основанных на архитектуре Transformer. В отличие от традиционных функций, применяющих жёсткий детерминированный порог к входным данным нейрона, GELU вводит вероятностный аспект, вдохновлённый свойствами гауссова распределения. Взвешивая входные значения по их величине, а не просто пропуская или блокируя их, GELU обеспечивает более плавную нелинейность, которая помогает оптимизировать модели глубокого обучения (DL). Эта уникальная характеристика позволяет сетям эффективнее моделировать сложные закономерности в данных, внося значительный вклад в успех масштабных базовых моделей.
Как работает GELU#
В основе любой нейронной сети лежат функции активации, определяющие, будет ли нейрон «срабатывать» в зависимости от входного сигнала. Более старые функции, такие как выпрямленная линейная единица (ReLU), работают подобно переключателю: для отрицательного входного значения они выдают ноль, а для положительного — само входное значение. Хотя такой подход эффективен, резкий порог может затруднять динамику обучения.
GELU улучшает этот подход, масштабируя вход с помощью функции распределения нормального распределения. Интуитивно это означает, что по мере уменьшения значения входа вероятность отключения нейрона увеличивается, но происходит это постепенно, а не резко. Такая кривизна создает гладкую немонотонную функцию, дифференцируемую во всех точках. Эта гладкость способствует более эффективному обратному распространению ошибки градиентов, помогая смягчить такие проблемы, как проблема исчезающего градиента, которая может замедлить обучение глубоких сетей.
Практические применения#
Более плавный ландшафт оптимизации, обеспечиваемый GELU, сделал эту функцию выбором по умолчанию для некоторых наиболее передовых приложений в области машинного обучения (ML).
- Большие языковые модели (LLMs): GELU приобрела популярность после представления исследователями Google модели BERT (двунаправленные представления энкодера из Transformer). Теперь это стандартный компонент серии GPT и других генеративных текстовых моделей. В таких задачах, как суммаризация текста или анализ тональности, GELU помогает модели улавливать тонкие нюансы языковых представлений, которые жёсткие функции активации могут упускать.
- Визуальные Transformer (ViT): В области компьютерного зрения модели, адаптирующие архитектуру Transformer для классификации изображений, активно используют GELU. Обрабатывая изображения как последовательности фрагментов, эти модели применяют GELU для сохранения богатой информации о признаках на протяжении глубоких слоёв, обеспечивая высокую точность на таких наборах для оценки, как ImageNet.
Сравнение со связанными терминами#
Чтобы понять GELU, часто требуется отличать её от других популярных функций активации, представленных в глоссарии Ultralytics.
- GELU и ReLU: ReLU проще с вычислительной точки зрения и создаёт разреженность (точные нулевые значения), что может быть эффективно. Однако «острый угол» в нуле может замедлять сходимость. GELU обеспечивает плавное приближение, которое обычно даёт более высокую точность в сложных задачах, хотя и требует немного больше вычислительных ресурсов.
- GELU и SiLU (Swish): Сигмоидальная линейная единица (SiLU) по структуре очень похожа на GELU и обладает такими же плавными, немонотонными свойствами. Хотя GELU доминирует в области обработки естественного языка (NLP), SiLU часто предпочитают в высокооптимизированных детекторах объектов, таких как YOLO26, благодаря её эффективности на периферийном оборудовании и отличной производительности в задачах обнаружения.
- GELU и Leaky ReLU: Leaky ReLU пытается решить проблему «умирающего нейрона» стандартной ReLU, допуская небольшой постоянный линейный наклон для отрицательных входных значений. В отличие от неё, GELU является нелинейной для отрицательных значений, обеспечивая более сложную и адаптивную реакцию, которая часто приводит к лучшему обучению представлений в очень глубоких сетях.
Пример реализации#
Реализовать GELU просто с помощью современных библиотек глубокого обучения, таких как PyTorch. В следующем примере показано, как применить эту функцию к тензору входных данных.
import torch
import torch.nn as nn
# Initialize the GELU activation function
gelu_activation = nn.GELU()
# Create sample input data including negative and positive values
input_data = torch.tensor([-3.0, -1.0, 0.0, 1.0, 3.0])
# Apply GELU to the inputs
output = gelu_activation(input_data)
# Print results to see the smoothing effect on negative values
print(f"Input: {input_data}")
print(f"Output: {output}")Для разработчиков, стремящихся использовать эти передовые функции активации в собственных проектах по компьютерному зрению, платформа Ultralytics упрощает весь рабочий процесс. Она предоставляет единый интерфейс для разметки данных, обучения моделей с использованием таких архитектур, как YOLO26 (в которой применяются оптимизированные функции активации, например SiLU), и эффективного развёртывания моделей в облаке или на периферийных устройствах.









