https://www.youtube.com/watch?v=I5tzleCHg9s&list=PL0E_1UqNACXDlqJLNLK8IwzVV_EK3Kffj&index=7
- 많이 쓰이는 활성화 함수 종류. Sigmoid, tanh, ReLU가 많이 쓰임
- 시그모이드 함수는 input에 대해 e를 이용해서 0-1 사이의 값을 만들어 줌.
- 이는 확률처럼 보이기 때문에 초기에는 많이 사용했음
- 그러나 시그모이드는 몇 가지 문제가 있음
- Gradient를 죽임
- 값이 양수만 나옴
- exponential 함수를 써서 연산이 많이 걸림
- 시그모이드 함수에서 input이 5이상의 큰 값이 들어오면 gradient가 0이 되게 됨.
- (이미지 중간의 분포도 참고, -5 ~ 5 사이의 분포는 적절한 값을 갖지만 그 범위를 벗어나게 되면 0에 가까운 값이 나옴)
- 엄밀히 말해 0에 가까운 값이 되지만 layer가 겹겹이 쌓여 있기 때문에 layer를 지나가면서 점점 0으로 수렴하게 됨.
- 때문에 layer를 점점 지나면서 학습이 이루어지지 않음
- sigmoid가 0-1 사이의 양수만 나오기 때문에 학습이 항상 양수 방향으로만 진행이 됨
- 오른쪽 아래 그래프와 같이 최적점이 우하향하는 경우 (파란 화살표) 학습은 우하향하는 방향으로 못가고 (+, +), (-, -)를 반복해서 학습이 됨 (빨간 화살표)
- 비효율적인 상황 발생
- 비효율적인 문제이므로 앞의 gradient를 죽이는 것보다는 덜 치명적인 문제
- 시그모이드의 문제를 해결하고자 했던게 탄젠트 하이퍼볼릭 함수
- 음의 값이 나오기 때문에 zero-centered 문제는 해결이 되었지만, 근본적으로 탄젠트 하이퍼볼릭은 시그모이드 함수를 2배하고 -1을 준 형태이기 때문에 killing gradients 문제는 해결을 못 함