Yolo 비전 선전
선전
지금 참여하기
용어집

스위글루

SwiGLU를 살펴보세요. 이 고급 활성화 함수는 Ultralytics 언어 모델(LLM)과 Ultralytics 사용됩니다. 게이트 메커니즘이 신경망 훈련과 효율성을 어떻게 향상시키는지 알아보세요.

SwiGLU(Swish Gated Linear Unit)는 심층 기계 학습에 사용되는 전통적인 전방 전달 네트워크(FFN)를 향상시키는 고급 활성화 함수이자 신경망 아키텍처 블록입니다. Swish 활성화 함수의 부드럽고 비단조적인 특성과 게이트드 선형 유닛(GLU) 메커니즘을 결합하여 SwiGLU는 동적이고 데이터에 의존하는 특징 라우팅을 제공합니다. 입력에 선형 투영을 적용하고, 한 분기를 스위시 활성화로 통과시킨 후, 다른 선형 분기와 요소별 곱셈을 수행함으로써 네트워크는 탁월한 표현력을 얻습니다. 이를 통해 현대 AI 아키텍처는 기존 딥러닝 모델에서 사용된 표준 정적 레이어보다 훨씬 효과적으로 복잡한 비선형 의존성을 포착할 수 있습니다.

SwiGLU의 작동 방식

기존의 피드포워드 네트워크가 단순히 입력을 고차원으로 매핑하고 기본적인 비선형성을 적용한 후 다시 하위 차원으로 투영하는 방식과 달리, SwiGLU는 곱셈적 게이트 메커니즘을 도입합니다. 입력은 두 개의 매개변수화된 투영, 즉 "게이트"와 "값"으로 분할됩니다. 게이트 분기는 SiLU / Swish 함수를 사용하여 활성화됩니다. 이 함수는 작은 음수 값을 보존하고 거의 모든 영역에서 부드럽고 0이 아닌 미분값을 보장합니다. 이렇게 활성화된 게이트는 값 분기와 요소별 곱셈을 수행합니다. 이러한 동적 필터링을 통해 신경망은 정보 흐름을 지능적으로 제어하여 기존 아키텍처에서 흔히 발생하는 "죽은 뉴런" 문제를 피할 수 있으며, 모델 훈련 과정 중 기울기 신호를 안정화시킵니다. 이는 어텐션 메커니즘에서 광범위하게 연구된 개념입니다.

SwiGLU와 다른 활성화 함수의 차별화

표준 활성화 함수인 ReLU가 고정 임계값을 사용해 음수 값을 0으로 잘라내는 반면, SwiGLU는 입력 데이터 자체에 기반해 활성화 값을 동적으로 조정합니다. 가우시안 분포 하에서 입력값의 확률에 따라 가중치를 부여하는 GELU와 비교할 때, SwiGLU는 매개변수화된 선형 레이어를 활용해 정보 게이트 방식을 학습합니다. 본질적으로 SwiGLU는 단순한 요소별 수학적 계산이 아닌, 종종 트랜스포머 블록 내 숨겨진 레이어 메커니즘 전체를 대체하는 포괄적인 구조적 구성 요소로 기능합니다. 수학적 특성에 대한 광범위한 비교를 위해 연구자들은 종종 포괄적인 활성화 함수 가이드를 참조합니다.

실제 애플리케이션

계산 효율성과 상당한 성능 향상 덕분에 SwiGLU는 현대 AI 시스템의 핵심 구성 요소로 자리매김했습니다.

PyTorch에서 SwiGLU 구현하기

개발자가 맞춤형 네트워크를 구축하거나 에지 디바이스용으로 비전 모델을 적용할 때 Ultralytics 플랫폼SwiGLU를 구현하는 PyTorch 간단합니다. (또는, 다른 생태계의 개발자들은 사용할 수 있습니다) TensorFlow다음 간결한 Python PyTorch 내장 기능을 사용하는 기본적인 SwiGLU 모듈을 보여줍니다. F.silu 함수:

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))

활성화 블록에 대한 이러한 구조적 접근 방식은 최첨단 신경망 아키텍처가 복잡한 훈련 데이터로부터 더 풍부한 표현을 추출하도록 보장합니다. 이는 자연어 처리(NLP)에 적용되든 실시간 공간 분석에 적용되든 마찬가지입니다. 효율적인 모델 구축 및 가속화에 대한 심층적 이해를 위해 개발자들은 하드웨어 처리량을 극대화하기 위해 arXiv의 원본 GLU 변형에 대한 기초 연구, Meta의 오픈소스 저장소, PyTorch 최적화 문서를 자주 참조합니다.

Ultralytics YOLO 파워업

프로젝트에 필요한 고급 AI 비전을 확보하세요. 오늘 목표에 맞는 라이선스를 찾아보세요.

라이선스 옵션 살펴보기