UC Berkeley, Toyota Technological Institute at Chicago 2016
GELU 설명
GELU는 저자들은 dropout + zoneout + ReLU를 조합하여 쓰는 것에 영감을 받아서 개발한 성능 좋은 activation function 입니다. RNN계열에서 사용되는 zoneout을 배제하고, dropout + ReLU에 대해서만 생각해보겠습니다. ReLU는 0이하는 버리고 0이상의 값들은 input 그대로 가져가는 역할을 합니다. 단순히 0이상의 값의 경우에는 input을 그대로 가져간다고 볼 수 있습니다. Dropout은 0부터 1까지 일정 확률로 마스킹을 해주는 역활을 합니다. 이 과정을 베르누이 distribution의 함수(dropout 대체)와 input x(ReLU)의 곱으로 표현한 것이 바로 GELU라고 볼 수 있는 것입니다. 이때 베르누이 distribution은 정규분포 함수의 누적 분포 함수로 생각하면 됩니다. 식으로 본다면 다음과 같습니다.
참고로 erf는 오차 함수(error function) 입니다. 아래와 같은 식과 같이 근사해서 사용한다고도 합니다.
이걸 아래와 같은 식으로 근사할 수 있다고 합니다. 저자들은 이걸 SILU(Sigmoid Linear Unit)라고 부릅니다. 시그모이드 함수를 써서 표현하였기 때문에 저러한 이름을 붙인 것으로 보입니다.
위 2개의 근사값 함수들은 GELU보다는 성능이 좋지는 않지만 구현이 쉽고 속도가 빠르며, 이전의 activation function들인 ReLU, ELU와 같은 것들 보다 성능이 좋다고 합니다. 그래서 실 사용에 있어서는 근사 함수들을 쓰는 것을 저자들은 추천하였습니다.
아까 정규분포를 따르는 베르누이 함수로 GELU가 정의 된다고 했는데 이 말은 즉슨 평균과 분산의 값에 따라서 다양한 CDF로써 표현이 가능합니다. 아래 그림을 보시면 정규 분포의 경우에 평균과 분산에 따라서 다양한 형태로 정의 될 수 있음을 확인 할 수 있습니다.
하지만 대다수의 실험에서 GELU는 평균 0, 분산은 1로 정의하여 사용하고 있습니다. 이에 대한 결과를 시각화 한다면 아래와 같습니다.
참고로 ELU는 Exponential Linear Unit의 약자로 activation function 중 하나 입니다.
실험 결과
결론적으로 이야기 하자면 GELU는 결과가 다른 activation function과 비교해서 거의 대부분 괜찮습니다. 그래서 BERT, Wav2Vec 2.0과 같은 최신의 논문에서 이 활성화 함수를 많이 사용하는 것 입니다.
MNIST Classification 결과물 입니다
MNIST autoencoder의 비교 결과물 입니다.