본문 바로가기
[ 딥러닝 ]

Sigmoid가 Activate Function으로 안 쓰이는 이유 / Saturation / 지그재그 가중치 업데이트

by 불주먹고양이 2023. 7. 29.

시그모이드는 딥러닝에서 활성 함수 그리고 출력 함수로 쓰이는 대표적인 함수이다.

1. Sigmoid 함수의 특징

(1) Sigmoid 함수의 용도

Activation 함수

모델의 복잡도를 향상하기 위해서 활성화 함수로써 시그모이드를 사용한다. 선형의 결합은 결국 선형이기 때문이다.

비선형성을 주기 위해서 은닉층 출력값에 활성화 함수를 적용한다.

 

Output 함수

Sigmoid 함수의 특징은 0에서 1 사이의 값을 출력하는 것에 있다. 이를 이용하여 0 또는 1의 이진분류를 가능하게 하는데, 이를 'squarshing'이라고 한다.

Output 함수를 Squarsh 함수라고도 부른다.

 

 

(2) Sigmoid 함수의 장점

Sigmoid 함수는 활성화 함수로서의 장점이 없다. 그래서 활성화 함수로는 다른 함수를 사용하고 마지막에 Output 함수로만 Sigmoid를 쓰라는 말도 있다.

 

 

(3) Sigmoid 함수의 단점

Sigmoid 함수의 단점으로는 두 개가 있는데, 첫번째로는 Saturation 현상이고 두번째로는 가중치의 업데이트가 지그재그 모양이라는 것이 있다. 각각의 단점을 하나씩 살펴보도록 한다.

 

 

 

2. Saturation 현상

Saturation은 한국어로 '포화상태'인데, 이는 변수의 값이 어느 순간 이후로는 증가 또는 감소하지 않는 것을 말한다.

Sigmoid 함수를 보면 양과 음으로 갈수록 접선의 기울기가 0이 되는 것을 확인할 수 있다.

 

실제로 Sigmoid의 미분한 함수는 다음과 같다.

 

이렇다보니, Backpropagation으로 가중치를 업데이트하려고 할 때 그 값이 0이 되는 것이다. 그뿐만 아니라 앞쪽의 모든 가중치의 업데이트도 중단되게 된다.

 

Saturation 현상이 있는지 확인하고 싶다면 활성화함수를 시각화해보면 된다.

이처럼 Saturation 현상을 포함한 가중치의 업데이트가 되지 않는 현상을 Vanishing Gradient라고 한다.

 

 

 

3. 지그재그 가중치 업데이트

Squarshing이 의도가 아니었음에도 불구하고 Sigmoid의 결과값이 0에서 1 사이로 나오는 것이 Sigmoid의 활성화 함수로서의 단점이라고 할 수 있다.

 

다음과 같이 가중치 업데이트를 하려고 하면 가중치의 업데이트 부호 결정이 단 하나의 요소로 결정되게 된다.

결국 최적의 가중치를 찾아가는 과정의 업데이트 방향이 항상 같은 부호의 행렬로 구성되다보니 지그재그 모양으로 업데이트 되는 것이다.

 

이렇게 되면 속도 측면에서 가장 이상적인 업데이트 방식인 'y = x'와 차이가 많이 나게 되면서 업데이트 속도가 느려진다. 물론 y = x는 선형적이라서 실제 활성화 함수로 사용되지는 않는다. 어쨌든 가중치 업데이트가 비효율적인 방향으로 진행된다는 것은 자명하다.

 

 

참고 :

https://nittaku.tistory.com/267

https://www.inflearn.com/questions/951582/sigmoid-%ED%95%A8%EC%88%98%EC%9D%98-%ED%8A%B9%EC%84%B1

(제가 질문한 글입니다!)