>  기사  >  기술 주변기기  >  대규모 언어 모델이 SwiGLU를 활성화 기능으로 사용하는 이유는 무엇입니까?

대규모 언어 모델이 SwiGLU를 활성화 기능으로 사용하는 이유는 무엇입니까?

王林
王林앞으로
2024-04-08 21:31:11972검색

대형 언어 모델의 아키텍처에 관심을 가져왔다면 최신 모델과 연구 논문에서 "SwiGLU"라는 용어를 본 적이 있을 것입니다. SwiGLU는 대규모 언어 모델에서 가장 일반적으로 사용되는 활성화 함수라고 할 수 있습니다. 이 기사에서는 이에 대해 자세히 소개하겠습니다. SwiGLU는 실제로 Google이 2020년에 제안한 활성화 기능으로 SWISH와 GLU의 특성을 결합한 것입니다. SwiGLU의 전체 중국어 이름은 "양방향 게이트 선형 장치"입니다. SWISH와 GLU라는 두 가지 활성화 기능을 최적화하고 결합하여 모델의 비선형 표현 능력을 향상시킵니다. SWISH는 대규모 언어 모델에서 널리 사용되는 매우 일반적인 활성화 함수인 반면, GLU는 자연어 처리 작업에서 잘 수행됩니다. SwiGLU의 장점은 SWISH의 Smoothing 특성과 GLU의 Gating 특성을 동시에 얻을 수 있어 모델의 비선형적 표현을 더욱 돋보이게 한다는 점입니다

为什么大型语言模型都在使用 SwiGLU 作为激活函数?

하나씩 소개하겠습니다.

Swish

Swish는 다음과 같이 정의된 비선형 활성화 함수입니다.

Swish(x) = x*sigmoid(ßx)

为什么大型语言模型都在使用 SwiGLU 作为激活函数?

여기서 ß는 학습 가능한 매개변수입니다. Swish는 더 부드러운 전환을 제공하여 더 나은 최적화로 이어질 수 있으므로 ReLU 활성화 함수보다 더 나을 수 있습니다.

Gated Linear Unit

GLU(Gated Linear Unit)는 두 개의 선형 변환의 구성요소 제품으로 정의되며, 그 중 하나는 시그모이드에 의해 활성화됩니다.

GLU(x) = sigmoid(W1x+b)⊗(Vx+c)

为什么大型语言模型都在使用 SwiGLU 作为激活函数?

GLU 모듈은 LSTM 및 GRU와 같은 다른 게이팅 메커니즘과 관련된 사라지는 그라데이션 문제 중 일부를 피하면서 시퀀스의 장거리 종속성을 효과적으로 캡처할 수 있습니다.

SwiGLU

우리는 이미 SwiGLU가 이 둘의 조합이라고 말했습니다. GLU이지만 활성화 함수로 시그모이드를 사용하는 대신 ß=1인 swish를 사용하므로 다음 공식으로 끝납니다.

SwiGLU(x) = Swish(W1x+b)⊗(Vx+c)

SwiGLU 함수를 사용하여 피드포워드 네트워크를 구성합니다

FFNSwiGLU(x) = (Swish1(xW)⊗xV)W2

Pytorch의 간단한 구현

위의 수학적 원리가 번거롭고 지루해 보인다면 아래 코드를 사용하여 직접 설명하겠습니다.

class SwiGLU(nn.Module): def __init__(self, w1, w2, w3) -> None:super().__init__()self.w1 = w1self.w2 = w2self.w3 = w3 def forward(self, x):x1 = F.linear(x, self.w1.weight)x2 = F.linear(x, self.w2.weight)hidden = F.silu(x1) * x2return F.linear(hidden, self.w3.weight)

우리 코드에서 사용한 F.silu 함수는 ß=1일 때 swish와 동일하므로 직접 사용합니다.

코드에서 볼 수 있듯이 활성화 함수에는 훈련할 수 있는 3개의 가중치가 있는데, 이는 GLU 공식의 매개변수입니다.

SwiGLU의 효과 비교

SwiGLU를 다른 GLU 변형과 비교하면 SwiGLU가 두 사전 훈련 기간 동안 더 나은 성능을 발휘한다는 것을 알 수 있습니다.

为什么大型语言模型都在使用 SwiGLU 作为激活函数?

다운스트림 작업

为什么大型语言模型都在使用 SwiGLU 作为激活函数?

은 최고의 성능을 제공하므로 이제 LLAMA, OLMO 및 PALM과 같은 llm은 모두 구현에 SwiGLU를 사용합니다. 그런데 왜 SwiGLU가 다른 것보다 나은가요?

이 문서는 테스트 결과만 제공하고 이유를 설명하지 않았습니다. 대신 다음과 같이 말했습니다.

우리는 이러한 아키텍처가 작동하는 것처럼 보이는 이유에 대해 설명하지 않습니다.

저자는 연금술이 성공했다고 했어요.

지금은 2024년이고 이를 강력하게 설명할 수 있습니다.

1 음수 값에 대한 Swish의 상대적으로 작은 반응은 일부 뉴런의 출력이 항상 0이라는 ReLU의 단점을 극복합니다

2. GLU의 게이팅 특성은 입력 상황에 따라 어떤 정보를 통과해야 하고 어떤 정보를 필터링해야 하는지 결정할 수 있음을 의미합니다. 이 메커니즘을 통해 네트워크는 유용한 표현을 보다 효과적으로 학습할 수 있으며 모델의 일반화 능력을 향상시키는 데 도움이 됩니다. 대규모 언어 모델에서 이는 장거리 종속성이 있는 긴 텍스트 시퀀스를 처리하는 데 특히 유용합니다.

3 SwiGLU의 매개변수 W1, W2, W3, b1, b2, b3 W1, W2, W3, b1, b2, b3은 학습을 통해 학습할 수 있으므로 모델은 다양한 매개변수에 따라 이러한 매개변수를 동적으로 조정할 수 있습니다. 작업 및 데이터 세트 강화된 모델 유연성 및 적응성.

4. 좋은 성능을 유지하면서도 계산 효율성은 좀 더 복잡한 활성화 함수(예: GELU)보다 높습니다. 이는 대규모 언어 모델의 훈련 및 추론을 위한 중요한 고려 사항입니다.

비선형 기능, 게이팅 특성, 기울기 안정성 및 학습 가능한 매개변수의 장점을 결합하기 때문에 SwiGLU를 대규모 언어 모델의 활성화 함수로 선택합니다. SwiGLU는 복잡한 의미 관계와 언어 모델의 긴 종속성 문제를 처리하고 훈련 안정성과 계산 효율성을 유지하는 데 탁월한 성능을 제공하므로 널리 채택됩니다.

문서 주소

https://www.php.cn/link/86e33d550dc162366a02003089ab9894

위 내용은 대규모 언어 모델이 SwiGLU를 활성화 기능으로 사용하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제