반면에, 액티베이션 함수로바꾸는 경우엔 신경망이Relu(rectified linear unit) 함수를 적용 !
모든 양수에 대해 1이되고,그렇기 때문에 기울기가0으로 줄어드는 확률은 급격히 감소됩니다.
그래서, 여기 이 부분에서 기울기는값이 0이지만,시그모이드 함수에서,ReLU 함수로 변경하면서,gradient descent (기울기 강하)라는 알고리즘을생성시켰다.
빠른 계산은 매우 중요하기 때문에 활성화 함수 변경 매우 중요!!
2layerNN 표현식들 정리n개의 트레이닝 샘플에서 벡터화시키는 방법
여기서 활성화함수는 sigmoid함수를 사용한다.
가로 : A매트릭스의 n개 트레이닝 샘플 / 세로 : A메트릭스의 인덱스. hidden layer 개수activation function 활성화함수
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 함수를 쓰면 안된다. 보통 선형함수를 쓴 경우는 결과값 층에서이다.
댓글