SwiGLU
LLM과 Ultralytics YOLO26에 사용되는 고급 활성화 함수인 SwiGLU를 살펴보세요. 게이트 메커니즘이 신경망 학습과 효율성을 어떻게 향상시키는지 배우세요.
SwiGLU (Swish Gated Linear Unit)는 심층 머신러닝에서 사용되는 전통적인 피드포워드 네트워크(FFN)를 향상시키는 고급 activation function 및 neural network 아키텍처 블록입니다. Swish 활성화 함수의 부드럽고 단조증가하지 않는 속성과 Gated Linear Unit (GLU) 메커니즘을 결합한 SwiGLU는 동적이고 데이터에 의존적인 피처 라우팅을 제공합니다. 입력에 선형 투영을 적용하고, 하나의 분기를 Swish 활성화에 통과시킨 다음, 다른 선형 분기와 요소별(element-wise)로 곱함으로써 네트워크는 우수한 표현력을 얻게 됩니다. 이를 통해 최신 AI 아키텍처는 이전의 deep learning 모델에서 사용되던 표준 정적 레이어보다 복잡하고 비선형적인 종속성을 훨씬 더 효과적으로 포착할 수 있습니다.
SwiGLU의 작동 원리#
입력을 더 높은 차원으로 매핑하고, 기본 비선형성을 적용한 뒤 다시 축소하는 전통적인 피드포워드 네트워크와 달리, SwiGLU는 곱셈 방식의 게이팅 메커니즘을 도입합니다. 입력은 "게이트(gate)"와 "값(value)"이라는 두 가지 매개변수화된 투영으로 분할됩니다. 게이트 분기는 작은 음수 값을 보존하고 거의 모든 곳에서 부드럽고 0이 아닌 도함수를 보장하는 SiLU / Swish 함수를 사용하여 활성화됩니다. 이 활성화된 게이트는 값 분기와 요소별로 곱해집니다. 이러한 동적 필터링을 통해 신경망은 정보 흐름을 지능적으로 제어할 수 있으며, 구형 아키텍처에서 흔히 발생하는 "죽은 뉴런(dead neuron)" 문제를 방지하는 동시에 모델 학습 과정에서 그래디언트 신호를 안정화합니다. 이는 attention mechanisms에서 널리 연구되는 개념입니다.
SwiGLU와 다른 활성화 함수의 차이점#
ReLU와 같은 표준 Activation Functions은 고정된 임계값을 사용하여 음수 값을 0으로 잘라내는 반면, SwiGLU는 입력 데이터 자체를 기반으로 활성화를 동적으로 조정합니다. 가우스 분포 하에서의 확률에 따라 입력에 가중치를 부여하는 GELU와 비교할 때, SwiGLU는 특히 매개변수화된 선형 레이어를 활용하여 정보를 게이트하는 방법을 학습합니다. 본질적으로 SwiGLU는 단순한 요소별 수학적 계산에 그치지 않으며, Transformer 블록 내부의 전체 은닉층 메커니즘을 대체하는 포괄적인 구조적 구성 요소 역할을 합니다. 수학적 속성에 대한 광범위한 비교를 위해 연구원들은 종종 포괄적인 activation function guides를 참고합니다.
실제 애플리케이션 사례#
컴퓨팅 효율성과 상당한 성능 향상으로 인해 SwiGLU는 현대 AI 시스템의 핵심 기반 구성 요소가 되었습니다.
- 대규모 언어 모델(LLMs): 주요 generative AI 애플리케이션은 SwiGLU에 크게 의존합니다. 예를 들어 Meta는 전통적인 GeLU 기반 피드포워드 레이어를 대체하기 위해 Llama 3 architecture에 SwiGLU를 통합하여 더 나은 학습 안정성을 구현하고 대규모 컨텍스트 창을 처리할 수 있도록 지원합니다. 유사한 아키텍처가 Google's pathways language model (PaLM)에 배포되어 있으며 Kaggle deep learning discussions에서 널리 분석되고 있습니다.
- 고급 컴퓨터 비전: Multi-modal models 및 고급 computer vision 시스템은 트랜스포머 블록내에서 SwiGLU를 사용하여 복잡한 이미지-텍스트 관계를 효율적으로 처리합니다. 네이티브 엔드투엔드 방식을 포함하는 혁신적인 비전 프레임워크인 Ultralytics YOLO26은 Object Detection과 같은 작업을 위해 매개변수 효율성을 극대화하기 위해 최적화된 아키텍처 블록과 hyperparameter tuning을 지속적으로 탐색합니다.
PyTorch에서 SwiGLU 구현하기#
Ultralytics Platform을 사용하여 사용자 정의 네트워크를 구축하거나 에지 장치용 비전 모델을 조정하는 개발자의 경우, PyTorch documentation을 통해 SwiGLU를 구현하는 것은 간단합니다. (대안으로 다른 생태계의 개발자는 TensorFlow implementations을 사용할 수 있습니다.) 다음의 간결한 파이썬 스니펫은 PyTorch의 내장 F.silu 함수를 사용하는 기본 SwiGLU 모듈을 보여줍니다.
import torch
import torch.nn as nn
import torch.nn.functional as F
class SwiGLU(nn.Module):
def __init__(self, in_features, hidden_features):
super().__init__()
# SwiGLU requires two projections: one for the gate, one for the value
self.gate_proj = nn.Linear(in_features, hidden_features)
self.value_proj = nn.Linear(in_features, hidden_features)
self.out_proj = nn.Linear(hidden_features, in_features)
def forward(self, x):
# Element-wise multiplication of the SiLU-activated gate and the linear value
hidden = F.silu(self.gate_proj(x)) * self.value_proj(x)
return self.out_proj(hidden)
# Example usage with a dummy input tensor
module = SwiGLU(in_features=512, hidden_features=1365)
output = module(torch.randn(1, 512))활성화 블록에 대한 이러한 구조적 접근 방식은 Natural Language Processing (NLP)에 적용되든 실시간 공간 분석에 적용되든 최첨단 신경망 아키텍처가 복잡한 training data로부터 더 풍부한 표현을 추출할 수 있도록 보장합니다. 효율적인 모델 구축 및 가속화에 대한 더 깊은 이해를 위해 개발자는 하드웨어 처리량을 극대화하기 위해 original GLU variants on arXiv, Meta's open-source repositories, PyTorch's optimization documentation에 대한 기초 연구를 자주 참고합니다.






