저희가 저번시간에는 XOR 문제를 해결해 보았습니다.

XOR를 사용하기 위해서 Perceptron 사이사이 Sigmoid를 사용해 주었습니다.

이런 함수들을 Activation Function이라고 부릅니다.

다음 Layer로 값이 넘어갈때 임의의값을 기준으로 활성화를 시킬지 말지의

기능을 하기 때문에 Activation Function이라고 불립니다.

 

Activation Function을 Sigmoid로 적용한 후 Backpropagation을 실행하면

엄청난 문제가 발생합니다.

깊지 않은 Layer을 쌓았을때는 그렇게 크게 문제가 되지는 않지만

깊은 Layer를 쌓았을때는 기울기 소실문제(Gradient Vanishing)가 발생하게 됩니다.

 

 

Backpropagation을 진행을 하면서 Chain Rule을 통해 많은 미분을 하게 됩니다.

즉, Sigmoid를 미분하게 됩니다.

그런데 여기서 Sigmoid를 미분하게 되면 0~1 사이의 값을 가지게 됩니다.

Sigmoid

그런데 여기서 Sigmoid의 미분값이 0.00000001 일수도 있고

0.001이 연속적으로 이어질 수 있습니다.

결국 이러한 값들이 계속 곱해지게 되면 기울기가 0에 가까운 값에 수렴되면서

기울기 소실문제가 발생하게 됩니다.

 

이러한 문제를 해결하기 위해 여러가지 Activation들이 나오게 됩니다.

그렇게 ReLU라는 Activation Function이 나오게 됩니다.

ReLU

ReLU는 기울기가 0 or 1이기 때문에 Sigmoid의 기울기 소실문제를

어느정도 해결할 수 있게 되었습니다.

ReLU 말고도 다른 Activation Function들도 많이 개발되었습니다.

ex) tanh, ELU, swish, Leaky ReLU 등등...

 

하지만 성능적인 측면에서 어마어마한 효과가 있는것이 아니기 때문에

실무에서는 ReLU를 주로 사용하고 있습니다. (제 기준)

 


CODE

 

 

 

출처:

https://www.youtube.com/watch?v=cKtg_fpw88c&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=30 

https://www.youtube.com/watch?v=86vpXy1TA5s&list=PLQ28Nx3M4JrhkqBVIXg-i5_CVVoS1UzAv&index=14 

'Deep Learning > Pytorch' 카테고리의 다른 글

15_Pytorch_Overfitting_Dropout  (0) 2021.09.14
14_Pytorch_Weight Initialization  (0) 2021.09.09
12_Pytorch_Multi_Layer_Perceptron_XOR  (0) 2021.08.25
11_Pytorch_Backpropagation  (0) 2021.08.25
10_Pytorch_Perceptron_XOR  (0) 2021.08.25

+ Recent posts