Sigmoid function & zero-centered

기린이·2023년 7월 10일
0


Sigmoid

0~1사이의 출력값을 갖는 활성화함수.

  • 입력이 -6, 6정도에만 가까워도 미분값이 0이 된다.
    즉 입력의 절댓값이 클수록 작은 미분값을 가진다.
  • 최대 미분값이 0.25로, 여러 레이어에 거쳐 backprop하는 경우 gradient vanishing이 야기될 수 있다.
  • exp연산이 무겁다는 단점
  • 입력이 zero-centered하지 않아 수렴시 zig-zag현상으로 비효율적인 수렴을 하게 된다.(학습속도 저하)

zero-centerd

zero-centerd하지 않아서 zig-zag 수렴을 한다는 것이 무엇일까?

sigmoid는 모든 입력값을 양수로 만든다. 그렇기에 sigmoid를 활성화함수로 사용하면 각 레이어의 입력값이 양수가 되고, 이는 backprop시 모든 가중치의 부호가 동일해진다는 것이다.

만약 가중치 w1, w2가 있고, w1은 작게 w2는 크게 설정하는 것이 최적이라고 할때,
-> w1은 음의 방향으로, w2는 양의 방향으로 업데이트 불가능
-> 대신 w1 작게 +, w2 크게 +++
-> 다음 스텝에서는 w1 크게 ---, w2 작게 - 이런식으로 업데이트하는 것.
=> 이것이 바로 zig-zag현상

즉, 입력이 모두 양수일때 모든 가중치의 그래디언트 부호가 같아지며, zig-zag path로 수렴하게되어 수렴 속도가 느려질 수 있다.

-> sigmoid의 단점 뿐 아니라, 데이터 정규화, batch norm등이 도움되는 이유임

https://velog.io/@ryuni/CS231n-Lec6#1-sigmoid-function
https://gooopy.tistory.com/52?category=824281


추가적인 내용!!!
zero centered가 아닌, 즉 모두 양수로 만드는 sigmoid함수를 사용했을때 모든 가중치의 부호가 같아진다는데, 그럼 그 부호는 누가 정하게 되는 걸까?

물론 단순히 생각하면 Lf\frac{\partial L}{\partial f} 얘의 부호를 따라가겠지. 근데 각 가중치가 위치가 다른데 Lf\frac{\partial L}{\partial f}, 즉 ustream gradient의 부호가 같을지 어떻게 안다는 거지?

라는 의문이 들었다.

상세하게 계산해보자

https://wikidocs.net/37406의 구조를 참고하면 이해가 빠르다.

위의 게시물의 구조를 생각한다면 각 뉴런의 아웃풋(o1o_1, o2o_2)에 대한 타겟(t1t_1, t2t_2)가 있다.

w5w_5w8w_8의 그래디언트를 계산해보면 서로 다른 부호를 가지는 것을 볼 수 있다.

=> 하지만 위의 상황은 여러 아웃풋에 대한 여러 타겟이 존재하는 상황이기 때문이다.

원래 우리는 아래와 같은 형태를 가지게 된다. 하나의 인풋, 인풋의 계산 결과에 대한 타겟하나

그러므로 upstream gradient의 부호는 맨 뒤의 Etotalo\frac{\partial E_{total}}{\partial o} 의 값에 따라 정해진다.

profile
중요한 것은 속력이 아니라 방향성, 공부하며 메모를 남기는 공간입니다.

0개의 댓글