활성화 함수를 사용하는 이유
선형 시스템은 아무리 쌓더라도 망을 깊어지게 할 수는 없다.
예를 들어 a,b라는 상수 x,y라는 변수에 대해 f(ax+by) = af(x) + bf(y)라는 성질으로 인해
깊은(deep) 망을 구현할 수 없다는 단점을 가지고 있다. 이런 단점을 해결하기 위해 활성화 함수를 사용한다.
결론적으로 활성화함수는 non-linearity한 시스템을 만들어준다.
non-linearity(비선형성)의 중요성
데이터가 복잡해지고, feature들의 차원이 증가하면서 데이터의 분포가 선형적이지 않고 비선형적으로 나타나는데,
예를 들어 이진 분류 문제에서 직선으로 두 분포를 나눌 수 있으면 좋겠지만 선형 boundary로 표현하지 못할 가능성이 더 높다.
이런 문제를 non-linearity를 사용하여 비선형의 boundary로 표현할 수 있다.
활성화 함수 종류
시그모이드(Sigmoid)
0, 1사이의 값을 가지는 선형 함수. input 값이 크거나 작을 경우 기울기가 작아지는데,
이로 인해 시그모이드를 활용하여 여러 레이어를 쌓을 경우 기울기 소실(Vanishing gradient) 문제가 발생한다.
소실 문제는 기울기가 0에 가까운 노드들로 인해 gradient가 소실되어 학습이 되지 않는 문제를 말한다.
또한 0,1사이라 평균이 0.5이기 때문에 편향 이동(bias shift) 문제가 발생해 레이어가 많을 수록 계속해서 분산이 커진다. 이 역시 출력 값이 0,1사이에 수렴하게 되고 이는 기울기가 0이 되는 문제로 똑같이 베니싱 문제가 발생할 수 있다.
그렇기 때문에 시그모이드는 binary classification 문제 등을 위해
0,1사이의 출력 결과를 원할 때 최종 레이어에 사용한다.
하이퍼볼릭탄젠트(Tanh)
시그모이드와 유사하지만 -1, 1사이의 값을 가지고 있다는 차이점이 존재한다.
시그모이드와 유사한만큼 베니싱문제에서 자유롭지못하다.
다만 평균이 0인 만큼 편향 이동 문제에서는 자유롭고, 시그모이드와 비교했을 때 대부분의 상황에서 성능이 높다고 한다.
렐루(ReLU)
자주 사용되는 활성화 함수로 max(0,x)로 쉽게 표현된다. 즉 0 이하에서는 0, 이상은 선형 함수로 표현된다.
대부분의 상황에서 기울기가 0이 되지 않기 때문에 시그모이드가 가진 문제점인 베니싱을 방지할 수 있다는 장점이 있다. 또한 은닉층에서 대부분 노드의 input값이 0보다 크기 때문에 기울기가 0이 될 수도 있는 문제는 실제로는 거의 무시할 수 있다고 한다.
leaky ReLU
렐루와 거의 똑같지만 max(0.01x,x)로 0미만일 때 기울기가 0.01이 된다는 장점이 존재한다.
엘루(ELU)
이 활성화 함수 역시 렐루와 거의 똑같다.
0 이상일 때에는 x값을 그대로 사용하며, 0미만일 때 alpha(e^x - 1)의 값을 가진다. alpha는 하이퍼파라미터이며 보통 1으로 둔다.