본문 바로가기

【1】Deep Learning 시작하기/다시 마주친 장벽, Vanishing Gradient Problem

발전된 비선형 함수(Nonlinearity) (Ricky ReLU / Parametric ReLU 등)

혜성처럼 등장한 ReLU는 그 존재감만큼 완벽할것 같지만 아쉽게도 약간의 문제점이 존재한다. 모든 0 이하의 입력에 대해서는 미분 값이 0이 된다는 것이다. 가중치가 업데이트 되면서 가중합이 음수가 되는 순간 ReLU는 0만 출력하여 그 이후의 노드들이 활성화되지 않게 된다. 이를dying ReLU라고 하며 이러한 문제를 해결하기 위해 ReLU를 변형시킨 함수들이 등장했는데, 그 중 대표적인 몇 가지를 소개하겠다. 

 


리키렐루 (Leaky ReLU) 

 

리키렐루는 아래와 같은 식을 가지는 ReLU의 변형된 함수이다. 

 

LeakyReLU(x) = max⁡(αx , x)

 

0보다 작은 입력에 대해서 기울기를 약간 기울인 형태로 α라는 파라미터를 사용해 0보다 작은 입력에 대해 기울기를 준 형태이다. 주로 α는 0.01로 설정을 한다. 이로써 0보다 작은 입력에 대해 0을 출력하던 ReLU와는 달리 입력에 α만큼 곱해진 값을 출력하게 한다. 이로써 입력값이 수렴하는 구간을 제거해 dying ReLU문제를 해결했다. 



파라메틱 렐루(Parametric ReLU, PReLU)

 

PReLU는 리키렐루와 같은 식을 가지는데 α값을 주로 0.01로 주는 리키렐루와 다르게 PReLU는 를 학습시켜야 할 대상으로 보고 역전파에 의해 값을 변형시킨다는 차이점이 있다. 데이터셋이 클 때 ReLU보다 성능이 좋지만 데이터셋이 작을 때에는 오버피팅 될 위험이 있다.

 

 


ELU (Exponential Linear Unit, ELU)

 

ELU는 2015년 Clevert et al 논문에 제안된 활성화 함수로 입력이 음수일때 exp를 활용한 함수이다. ELU는 ReLU의 장점을 모두 가지며 0보다 작은 입력에 대해 미분 값이 0이 아니므로 dying ReLU 문제가 발생하지 않는다. 하지만 exp() 계산이 필요해 연산 비용이 든다는 문제가 있다.  

 


SoftPlus   

 

Softplus 함수는 sigmoid 함수를 적분한 함수이다. 즉, softplus 함수의 미분은 sigmoid 함수가 된다. 항상 양수의 출력값을 가지며 렐루가 0이 되는 순간을 완화한 함수이다. 

 

 

Initializer 와 Nonlinearity의 사이 

이 책에서 미처 소개하지 못한 다양한 초기화 방식과 활성화함수들이 있다. 앞으로도 조금 씩 개선된 방식들이 지속적으로 등장할 것이다. 그렇다면 우리는 어떠한 초기화 방식과 활성화 함수를 써야 하는지에 혼란에 빠질 수 있다. 

 

가이드를 제시하자면 활성화 함수는 일반적으로 가장 많이 사용되는 ReLU를 먼저 적용해보고 LeakyReLU 혹은 ELU와 같은 ReLU 계열 함수들을 사용하는 것을 추천한다.  Xavier초기화는 sigmoid와 tanh와 같은 비선형 함수에서 좋은 결과를 보여준다. 하지만 ReLU에서는 출력값이 0이 되는 현상이 발생하므로 ReLU 계열의 함수에서는 he 초기화 방법을 사용하며 대부분 he 초기화를 많이 사용한다. 

 

중요한 것은 모든 상황에서 좋은 함수는 없다는 것이다. 각 함수들이 갖는 특징들을 파악하고 다양한 시도를 해보는 태도가 필요하다.

 

 

 

 

 

 


작성자 홍다혜 ghdek11@gmail.com / 이원재 wonway333@gmail.com