Search
Duplicate

Activation Functions

입력 신호의 총합이 활성화를 일으키는지 정하는 역할을 하는 함수로 input과 weight의 내적 값에 bias를 더한 값을 얼마나 출력시킬지 정하기 위해 사용한다.

Sigmoid

σ(x)=11+ex\sigma(x)=\frac{1}{1+e^{-x}}
특징
입력을 받아서 그 입력을 [0, 1] 사이의 값이 되도록 변경한다.
입력의 값이 크면 Sigmoid의 출력은 1에 가까울 것이고 값이 작으면 0에 가깝게 출력된다.
0 근처 구간(rigime)을 보면 선형함수 같은 형태를 띈다.

문제점

Vanishing Gradient

입력값이 너무 작거나, 크면 미분한 값이 0에 가까워져 gradient 가 소멸하게 된다.
위의 그래프를 보면 x가 -10, 10일 때 기울기가 0에 가까워짐을 확인 할 수 있다. 이는 Backpropagation을 할때 0에 가까운 값이 계속해서 곱해지게 되고 해당 gradient를 죽이는 결과가 나타난다.

not zero-centered

input이 sigmoid 연산을 거치기 때문에 항상 양수의 값으로 들어온다. 이 때 gradient의 값은 input값과 미분 값의 곱셈으로 나타나기 때문에 항상 양수이거나 항상 음수를 갖게 된다.
결국 가중치가 모두 같은 방향으로만 움직이게 되고 파라미터를 업데이트 할 때 다 같이 증가하거나 다 같이 감소하거나 할 수밖에 없어 gradient 업데이트는 매우 비효율적인 과정을 갖는다.

exp()로 인한 큰 계산비용

Tanh

tanh(x)tanh(x)
특징
범위가 [-1 , 1]인 출력값을 갖는다.
함수값이 zero-centered 되어있다.
saturation 때문에 여전히 gradient를 죽이는 현상이 나타나게 된다.

ReLU

f(x)=max(0,x)f(x) = max(0,x)
특징
element-wise 연산을 수행하며 입력이 음수면 값이 0, 양수면 입력 값 그대로를 출력
양의 값에서는 saturetion되지 않는다 → 절반은 saturation 되지 않는다 → 양의 값에서 Vanishing Gradient 문제 해결
계산 효율이 아주 뛰어남

문제점

not zero-centered
양의 수에서는 saturation 되지 않지만 음의 경우에서는 그렇지 않기 때문에 dead ReLU 라는 현상이 발생한다.
이하의 값들 미사용

dead ReLU 발생 이유

초기화를 잘 못한 경우
가중치 평면이 data cloud에서 멀리 떨어져 있어 어떤 데이터 입력에서도 activate 되는 경우가 존재하지 않을 것이고 backporp이 일어나지 않게 된다. 이런 경우 update되지도 activate되지도 않아 dead ReLU가 발생한다.
Leraning rate가 지나치게 높은 경우
update를 지나치게 크게 해 버려 가중치가 날뛴다면 ReLU 가 데이터의 manifold를 벗어나게 되어 처음에는 학습이 잘 되다가 갑자기 죽어버리는 경우가 생긴다.

leaky ReLU

f(x)=max(0.01x,x)f(x) = max(0.01x,x)
특징
negative에도 기울기를 살짝 주게 되어 ReLU의 문제를 상당 부분 해결한 함수이다.
negative space 에서도 saturation 되지 않는다.
sigmoid 나 tanh보다 수렴을 빨리 할 수 있다.
dead ReLU 현상도 발생하지 않는다.

PReLU

f(x)=max(αx,x)f(x) = max({\alpha}x,x)
특징
negative space에 기울기가 있다는 점에서 Leaky ReLU와 유사하다.
Leaky ReLU가 0.01을 곱해서 dying을 방지했다면, PReLU는 alpha를 곱해서 사용한다.
기울기가 alpha 라는 파라미터로 결정된다.
alpha는 backpro으로 학습시키는 파라미터로 만들며 활성함수가 조금 더 유연해 질 수 있다.

ELU

특징
zero-mean 에 가까운 출력값을 갖는다.
negative에서 기울기를 가지는 것 대신에 또다시 saturation 문제 발생하게 된다.
하지만 saturation이 noise에 강한 모습을 보인다고 주장한다.

Maxout Neuron

max(w1Tx+b1,w2Tx+b2)max(w^{T}_1x+b1, w^{T}_2x+b2)
특징
w1에 x를 내적한 값 + b1과 w2에 x를 내적한 값 + b2 의 최댓값을 사용 → 기본형식을 미리 정의하지 않는다.
선형이기때문에 saturation 되지 않으며 gradient가 죽지 않는다.
뉴런당 파라미터의 수가 두배가 되어 연산량이 증가하는 단점이 있다.