Swish는 2022년에 논문을 통해 소개된 활성화 함수(Activation Function)입니다. ReLU의 단점을 개선하였습니다.
Swish
활성화 함수는 아래와 같은 형태입니다. σ(x)는 시그모이드 함수합니다.
𝑓(𝑥) = 𝑥 · σ(𝑥)
where σ(x) = (1 + exp(−x))−1
swish와 다른 활성화함수의 그래프 추이입니다. leaky ReLU와 가장 비슷한 것 같습니다.


ReLU 와 비교
Deep netowrk 에서 성능 비교
Swish 와 ReLU의 정확도를 비교한 결과, Layer 40 ~ 50 층에서 Swish 가 훨씬 좋은 성능을 보였습니다. 레이어가 깊어갈 수록 데이터가 압축되는 squishing 이 일어나는데, Swish 가 ReLU에 비해 squishing 을 잘 대응합니다.
batch-size 성능 비교
batch size가 128 / 256 / ... / 2048 일때 모두 Swish가 더 우수했습니다. (테스트 모델 : ResNet-32 with different activation functions on CIFAR-10)
Swish-β
β 값을 추가하여 활성화 함수를 좀 더 졍교하게 만들 수 있는데요, 논문에서 이 함수를 swish-β 로 소개합니다. 중요한 내용은 아니고, Swish 함수가 ReLU와 비슷하면서도 다른 특성을 지닌다는 것을 알 수 있기에 소개한 것 같습니다.
f(x; β) = 2x · σ(βx)
where σ(x) = (1 + exp(−x))−1
β값에 따라 swish-β는 선형함수가 되기도, ReLU와 유사한 함수가 됩니다.
β : 0 일때
선형함수와 동일합니다.
f(x) = x (β = 0)
β -> infinte 일때
ReLU 함수와 유사해집니다.
특징
swish가 다른 활성화 함수에 비해 동일한 네트워크에서 더 우수한 성능을 내는 이유를 4가지 성질을 통해 설명합니다.
Unbounded Above
비유계, 함수의 출력의 상한 / 하한이 정해지지 않은 것, Swish는 함수 출력 상한이 정해지지 않은 함수입니다. (무한대로 증가)
Bounded Below
아래로 유계, 하계가 존재 (전체 집합에서 부분집한 어떤 값을 가져오더라도, 그 값보다 작거나 같은 값을 하계라고 칭함)

Non-monolitic
비단조성, 결론-관계가 단조롭지 않음, Swish 함수 일부 구간에서 입력값이 증가하더라도, 출력값이 감소하는 구간이 존재

Smoothness
다른 활성화 함수에 비해 같은 범위 내 더 다양한 결과를 도출합니다.
예) "검정색 - 흰색" 이 아니라 "검정색 - 회색90 - 회색80 - ... - 회색10 - 흰색"

Mish
swish를 참고하여 만들어진 Mish라는 활성화 함수도 있습니다.
Mish(x) = x ∗ Tanh(Softplus(x))
생각
좋은 활성화 함수를 '발명' 보다는 '발견'한 느낌 입니다. 논문 저자들이 최대한 swish 가 성능이 좋은 이유를 서술했지만, 뭔가 최대한 다 시도해 보고 이게 제일 괜찮구나 싶어서 논문을 쓴 느낌입니다.
원래 이쪽 논문이 이런 건지는 잘 모르겠습니다. 수학적으로 / 논리적으로 좀 더 규명할 수 있는 근거가 있으면 좋겠다는 생각입니다.
swish 논문을 쭉 읽어보면 모든 예제 및 실험은 배치 정규화를 가정했습니다. swish를 활용하고자 할 때 배치 정규화의 역할이 중요하다는 것을 기억하는 것이 좋을 듯 합니다.
참고 자료
'컴퓨터공학 & 정보통신' 카테고리의 다른 글
| [인공지능] 경사하강법 (Gradient Descent) 이해하기 (0) | 2025.10.15 |
|---|---|
| [인공지능] 인공신경망 (ANN, Artificial Neural Network) 이해하기 (0) | 2025.10.11 |
| [알고리즘] 에라토스테네스의 체 (0) | 2024.09.28 |
| [알고리즘] 최소 신장 트리 MST (Minimum Spanning Tree) (1) | 2024.09.24 |
| [알고리즘] 비잔틴 장애 허용 (Byzantine Fault Tolerance) (1) | 2024.08.23 |