반면에, 액티베이션 함수로바꾸는 경우엔 신경망이Relu(rectified linear unit) 함수를 적용 !
모든 양수에 대해 1이되고,그렇기 때문에 기울기가0으로 줄어드는 확률은 급격히 감소됩니다.
그래서, 여기 이 부분에서 기울기는값이 0이지만,시그모이드 함수에서,ReLU 함수로 변경하면서,gradient descent (기울기 강하)라는 알고리즘을생성시켰다.
빠른 계산은 매우 중요하기 때문에 활성화 함수 변경 매우 중요!!
여기서 활성화함수는 sigmoid함수를 사용한다.
tanh(hyperbolic tangent) 함수는 -1과 +1 사이의 값을 가지며, sigmoid 함수보다 거의 항상 우월하다.
한 가지 예외는 이진 분류에 사용하는 경우이다. 왜냐하면 y 는 0 이거나1 인데, 그럴 경우 y hat (y의 예측 값) 은0과 1 사이의 출력 값이기 때문에 출력층에 시그모이드 함수를 사용한다.
시그모이드 함수와 tanh 함수의 한 가지 단점은 z 가 매우 크거나 매우 작을 때,그래디언트, 즉 함수의 미분값(기울기)가 매우 작은 값이 된다는 것이다. 따라서 z 가 매우 크거나 작게 되면,함수의 기울기는 거의 0이 된다. 그래서 Gradient Descent 알고리즘을 느리게 만듭니다.
그래서 우리는 RELU(Recified Linear Unit) 함수를 사용한다. z가 0일 때, 미분 값이 마치0 또는 1 인 것 마냥 취급할 수 있기 때문! 대부분 활성함수는 RELU 사용한다.
Leaky RELU는 z가 음수일 때 0이 되는 대신,약간의 기울기를 갖게 되기 때문에 leaky(새는) ReLU 라고 불린다.
ReLU와 leaky ReLU 의 장점은z 의 많은 영역에서 활성함수의 미분 값,, 즉 활성함수의 기울기가 0 과 매우 다른 값이라는 것이다. 실제로 ReLU 활성함수를 사용하는 것은여러분의 신경망이 종종 tanh 나 시그모이드를사용할 때 보다 훨씬 빨리 동작하게 된다. 그 주된 이유는 기울기에 의한 효과가 적다는 것인데,기울기가 0에 가까워져서 학습을 느리게 하는 것이다. z 의 절반의 영역에서 ReLU 의 기울기는 0인데, 실제로는 은닉층 유닛들의 z 값이 0 보다는 충분히 클 것이다. 그래서 학습이 training example 들에 대해서 상당히 빠르게 이루어 질 수 있다.
+ 선형 activation 함수를 사용하는 이유?
예를 들어, 집값을 예측하려고 한다면 y는 0, 1이 아니라 실수가 된다. 만약 y가 이러한 실수를 갖는 경우는 선형 함수를 가져도 괜찮을 수 있다. 그러면 결과값 ŷ은 또한 -무한대 ~+무한대의 값을 범위로 한다. 이 경우, hidden layer는 새로운 activation 함수를 쓰면 안된다. 보통 선형함수를 쓴 경우는 결과값 층에서이다.
댓글