모두를 위한 딥러닝 시즌2 - TensorFlow

Lab-10-1 Relu

sososoy 2021. 11. 17. 15:15

Sigmoid의 문제점

ground-truth와 output의 차이를 loss라고 하는데, 이 loss를 미분한 것을 gradient라고 한다.

gradient = 그래프의 기울기

 

그래프 가운데는 기울기가 크지만, 양 극단의 경우 기울기가 매우 작다. (분홍색 부분)

backpropagation을 할 때 이러한 sigmoid를 쓰면 매우 작은 gradient가 계층이 쌓일수록 많아지게 되고,
이는 vanishing gradient를 초래한다. 이러한 경우 네트워크 학습이 잘 되지 않게 된다.

 

 

대안: Relu

0 이상의 gradient = 1

따라서 아무리 네트워크가 deep해도 gradient 값이 잘 전달된다.

 

그러나 0보다 작은 gradient는 아예 0의 값을 가지기 때문에 전달이 잘 안 된다는 단점이 있다.

그래도 Relu가 가진 장점(간단하면서 좋은 성능)으로 널리 쓰인다. 

sigmoid, relu 등은 keras activations에 있다. 

 

0 미만의 Relu를 극복하기 위해 leaky relu를 사용한다.

이때 leaky relu는 keras의 layer쪽에 있다는 것을 주의한다.

 

relu는 0보다 작은 음수의 값을 가질 때 어떠한 알파에 (매우 작은 값: 0.01 등) x를 곱하여 값을 추출한다. 

0보다 큰 값을 가질 때는 x값 그대로 추출한다.

 

<코드>

클래스형 네트워크 구현

함수형 네트워크 구현

파라미터 설정

모델 설정 - Adam optimizer 사용

Sigmoid에 비해 Relu가 4% 성능 향상이 된 것을 확인할 수 있다.

 

 

출처: https://youtu.be/pAFnPKFHvqE