티스토리 뷰

반응형


이전 까지의 내용 

  • 이전 글에서는 역전파 알고리즘에 대해 예제를 통해 살펴보았고 Vanishing Gradient 현상에 대해 살펴보았습니다. 이번 글에서는 Vanishing Gradient 현상이 왜 일어나는지, 어떻게 해결해 나가는지에 대해 살펴보겠습니다.

  • 전체 내용은 SlideShare 에서 한번에 보실 수 있으며 youtube 로도 볼 수 있습니다.


Vanishing Gradient 정의 및 원인 

  • Vanishing Gradient 문제는 MLP 를 학습시키는 방법인 Backpropagation 중 Gradient 항이 사라지는 문제 입니다. 이전 글에서 Backpropagation 학습식을 보면 Cost Function 의 Gradient 항이 존재하는 것을 알 수 있습니다. 이 항이 0이나 0에 가까워져 학습이 불가능해지는 현상을 말하는 것입니다.


  • 왜 gradient 항이 사라지는 현상이 발생할까요. 이는 우리가 Activation Function 으로 Sigmoid Function 을 사용했기 때문입니다. Sigmoid Function 에 대해 자세히 살펴보겠습니다.


  • Sigmoid Function 의 도함수를 살펴보면 최대값이 0.25 인 것을 알 수 있습니다. 다시 말해, 망이 깊어질 수록 Gradient 가 1/4 씩 줄어든다는 의미입니다.



  • 또한 Feed Forward 상황 에서도 Sigmoid 는 문제가 있을 수 있습니다. Sigmoid Function 이 3 번 중첩 되었을 경우에 모든 출력값이 0.659 로 수렴하는 구조를 가지고 있습니다.



  • 더 중요한 부분은 역전파 과정 입니다. 역전파 시의 Gradient 들을 그래프로 그려보면 층이 깊어질 수록 급격히 Gradient 값이 줄어드는 것을 확인할 수 있습니다. 이를 해결하기 위해 새로운 Activation Function 을 사용해보면 어떨까요.



새로운 Activation Function 



  • 처음 찾은 새로운 Activation Function 은 Tanh ( 하이퍼볼릭 탄젠트 ) 함수 입니다. 이 함수는 Sigmoid Function 과 동일한 형태를 가지고 있지만 -1 부터 1까지 출력값을 갖습니다. 또한 도함수의 최대값이 1이기 때문에 Vanishing Gradient 현상이 조금은 완화되는 현상을 보입니다.



  • 최근 가장 많이 사용하는 함수인 ReLU (Rectified Linear Unit) 함수 입니다. 도함수가 계단함수 형태인 것을 알 수 있습니다. Sigmoid 나 Tanh 의 도함수는 계산식으로 나오기 때문에 컴퓨팅 자원을 소모해야하지만 ReLU 의 도함수는 0 이나 1 이기 때문에 컴퓨팅 자원측면에서 경제적입니다. 또한 최대값이 1보다 큰 값도 가능하기 때문에 학습이 빠르다는 장점이 있습니다.

  • 하지만 0보다 작은 경우 0 을 반환하고 0 을 반환한 노드의 경우에는 다시 값을 갖기 어렵기 때문에 신경이 죽어버리는 현상이 발생합니다. 그래서 이 ReLU 함수를 개선한 PReLU, Leaky ReLU 등의 함수들이 발표 됩니다만 핵심은 0 이하에서도 작은 값을 갖게 해서 신경이 죽어버리는 현상을 막아보려는 노력입니다. 기타 여러 함수들을 살펴보시고 싶으시다면 이 페이지 를 참고해 주십시오.

  • 기본적으로 Activation Function 에 ReLu 나 Tanh 함수를 사용하면 큰 문제 없습니다.


  • Vanishing Gradient 현상은 Activation Function 의 변경을 통해 어느정도 보완할 수 있게 되었습니다. 하지만 처음부터 weight 값들이 0 이라면 이 또한 학습이 불가능한 상황일겁니다. 아니면 처음부터 weight 값들이 최적의 값들이라면 gradient 가 작아지더라도 훌륭한 모델이 생성될 수 있겠지요. 또한 처음부터 weight 값들이 최적의 값들이라면 학습횟수가 많지 않아도 훌륭한 모델을 만들 수 있을 것입니다.

  • 다음 글에서는 Weight 를 초기화 하는 방법들에 대해서 살펴보겠습니다.


다음 글 - Part. 6 : 가중치 초기화 ( Weight Initialization ) 







부족한 블로그에 방문해 주셔서 감사합니다.

잘못된 부분이나 질문이 있으시면 

댓글로 말씀해주세요.


금방 확인하고 피드백 드리겠습니다.


좋은 하루 되세요. ^^



반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함