Skip to content

Sigmoid Linear Unit (SiLU) : from GELU to MiSH

  • Smooth function과 ReLU의 장점을 조합ELU를 넘어서는 성능을 보이며
  • 보다 복잡한 task의 ANN에 많이 사용되는 activation function
  • Swish라는 이름으로도 잘 알려짐.

SiLU는 이명으로 Swish라고도 불리며,

  • smooth,
  • non-convex and
  • non-monotonic

variants of ReLU의 대표적 activation function임.


SiLU는 이명으로 Swish라고도 불리며,

  • smooth,
  • non-convex and
  • non-monotonic

variants of ReLU의 대표적 activation function임.

  • SiLU was developed with influenced from GELU

Smooth, non-convex and non-monotonic variant of ReLU 의 시작 : GELU

ELU 까지는 activation functions 의 경우

  • monotonic
  • convexity 라는

특성을 가지고 있었음.

하지만 2016년 Gaussian Error Linear Unit (GELU)가 기존의 activation functions 이상의 성능을 보임에 따라, monotonic 하지 않고 convexity 도 만족하지 않는 smooth 한 activation function 이 많이 이용되기 시작함.

Dan Hendrycks and Kevin Gimpel, “Gaussian Error Linear Units (GELUs)”, arXiv preprint arXiv:1606.08415 (2016).


Gaussian Error Linear Unit (GELU)

\[\begin{aligned}\text{GELU}(x) &=x \Phi (x)\\&=xP(X\le x),\quad X \sim \mathcal{N}(0,1)\end{aligned}\]
  • standard Gaussian Cumulative Distribution Function \(\Phi(x)\)를 이용함.
  • ReLU계열보다 훨씬 연산량이 많지만, 복잡한 task에서 ELU를 포함 기존의 activation function들보다 우수한 성능을 보임

GELU좋은 성능을 보이지만 연산량이 많다는 단점 을 가지고 있음. GELU를 제안한 논문에서 Sigmoid Linear Unit (SiLU)를 같이 제안하고 이를 GELU와 비교하였다는 점임.

해당 논문에서는 SiLU는 GELU보다 떨어지는 성능으로 보고되었으나, 이후 더 단순한 수식임에도 GELU를 거의 그대로 모사할 수 있는 Generalization 이 이루어지면서 보다 많이 사용이 되기 시작함.


Sigmoid Linear Unit (SiLU or Swish)

대표적 CNN 중 하나인 mobilenet에서 사용됨.

대표적 CNN 중 하나인 mobilenet에서 사용됨.

SiLU는 다음과 같이 sigmoid function을 기반으로 ReLUGELU와 매우 흡사한 shape의 activation function을 만들 수 있음.

\[\text{SiLU}(x)=x \sigma(x)\]

아래 논문이 SiLU를 재발견한 논문임.

Prajit Ramachandran et al., “Searching for Activation Functions”, arXiv preprint arXiv:1710.05941 (2017).

SiLU의 경우, sigmoid functioninput에 \(\beta\)로 scaling을 하는 generalization 을 통해, GELU와 거의 동등한 동작 (연산의 측면에서는 GELU보다 우수함)보이도록 만들 수 있으며, 보다 나은 성능을 얻을 수 있는 것으로 알려짐.

\[\begin{aligned}\text{SiLU}_{\beta} &= x \sigma (\beta x) \\\\ \text{GELU}(x) &\approx x \sigma (1.702 x) \\ &= \text{SiLU}_{\beta=1.702}(x)\end{aligned}\]

SiLUSwish라는 이름으로 더 유명하며 Keras 등에서 GELU와 함께 제공됨 (2023.9 현재 Keras의 SiLU\(x \sigma (\beta x)\)이며 default \(\beta=1\)임.)

PReLU와 같이 SiLU\(\beta\)를 trainable parameter로 삼는 parameterized Siwsh도 있음 (역시 적은 학습데이터에선 over-fit할 확률이 커짐)


SiLU 미분

\[\dfrac{d}{dx}\text{SiLU}(x) = \text{SiLU}(x) + \sigma (x)(1-\text{SiLU}(x))\]

\[\begin{aligned} \dfrac{d}{dx}f(x) &= 1\sigma(x) + x\sigma(x)(1-\sigma(x)) \\ &= \sigma(x) + x\sigma(x)-x(\sigma(x))^2 \\ &= \sigma(x) + f(x)- f(x)\sigma(x) \\&=\sigma(x) +f(x)(1-\sigma(x))\end{aligned}\]

참고 : Mish

2019년에 Diganta Misra가 제안한 또다른 non-monotonic activation function MishSwishGELU 보다 CNN에서 좀 더 나은 성능을 보이는 것으로 보고함.

Mish: A Self Regularized Non-Monotonic Activation Function

smooth function이면서 non-convex이고 non-monotonic하다는 특성을 가지며, softplus와 hyperbolic tangent를 조합한 activation function임.

\[\text{mish}(x)=x \text{tanh}(\text{softplus}(x)) = \text{tanh}(\log (1+e^x))\]
  • negative input에 대해선 Swish와 비슷
  • positive input에 대해선 GELU와 비슷.

Swish와 비교하여 Mish는 좀더 강한 regularization 효과를 가지면서 gradient가 보다 smooth하다고 알려짐.


References