Dropout과 ReLU Activation 기초개념

2019-05-20

Data_EngineeringTIL(20190518)

study program : https://www.fastcampus.co.kr/extension_des

[학습목표]

  • Dropout과 ReLU Activation 이해

[학습기록]

1. Dropout

  • 딥러닝에서 정규화 방법의 일종이다.

  • 딥러닝에서 감초같은 도구다.

  • 뉴럴네트워크에서 랜덤하게 일부 노드를 제외시키는 방법으로 특정노드에 지나치게 의존하지 않도록 만드는 것이다.

  • 딥러닝은 대부분 굉장히 표현력이 좋다. 이 말은 상당히 디테일한 부분의 특징도 잡아내기 때문에 오버피팅하기도 쉽다. 그래서 training set에서는 loss function을 극적으로 줄일 수 있는데 막상 test set으로 test를 해보면 training set 만큼 성능이 안나오는 경우가 많다. 이런 경우를 극복하기 위해서는 데이터가 엄청나게 많거나 정규화(드랍아웃) 같은 테크닉을 쓸 수 있다.

  • 이미지 데이터 같은 경우에는 피쳐를 줄일 수 있는 여지가 없기 때문에 피쳐를 더 줄일 수는 없고 네트워크를 단순하게 만드는 방법도 있지만 네트워크를 단순하게 만드는 방법은 당연히 퍼포먼스의 저하를 불러올 수 있는 문제가 발생하므로 드랍아웃 방법이 정말 좋은 옵션이 될 수 있다.

  • 매번 학습할때마다 랜덤하게 어떤 노드들을 제외를 해준다. 그래서 어떤 특정노드에 지나치게 의존하지 않는 특성을 지니게 되면서 네트워크가 안정적으로 되고, 오버피팅을 줄일 수 있다.

  • 그래서 딥러닝에서는 거의 기본적으로 이 방법을 쓴다.

1

2. ReLU Activation

  • 뉴럴네트워크도 노드 하나하나를 보면 logistic regression이라고 할 수 있다. -무한대 ~ 무한대까지의 범위를 0 ~ 1로 바꾸기 위해서 시그모이드, Tanh 등 logistic function을 활성화함수로 사용한다.

  • 사실 더 중요한 것은 sigmoid 함수가 없으면 학습을 시킬 수가 없다. “그냥 스레시홀드를 50을 두면 되지 sigmoid 함수를 굳이 안씌워도 되지 않느냐”라는 생각이 들수도 있다. 시그모이드가 필요한 이유는 아래그림처럼 깔끔하게 떨어지는 cost function의 미분값을 구할 수 있기 때문이다.

3

  • 렐루는 아래 그림처럼 곡선모양이 아닌 직선모양으로 활성화 함수이다.

2

  • 뉴럴네트워크에서 시그모이드를 activation function으로 쓰면 back propogation 시 activation function의 미분값이 시그모이드처럼 끝의 영역에서 0으로 수렴하게 되는 vanishing gradient 문제가 발생하는 경우가 있다. 그래서 학습이 매우 느리거나 학습이 잘 안되는 문제가 있다.

  • 다시 설명하면 시그모이드는 각 레이어의 미분값을 다음 레이어를 학습할때 곱하게 되므로, 중간에 하나라도 0에 가까운 미분값들이 있으면 점점 0으로 수렴하게 된다. 시그모이드 활성화함수는 넓은 영역에서 기울기가 0에 가까우므로 vanishing gradient 문제가 심각하다.

  • 그래서 등장한게 렐루 활성화 함수이다. ReLU activation를 쓰게 되면 음수영역에서만 gradient가 0, 양의 영역에서는 gradient가 1이므로, vanishing gradient 문제를 해결 할 수 있다. 그래서 딥러닝에서는 실제로 렐루를 많이 쓰는 편이다.

  • 렐루함수는 음수영역에서는 gradient가 아예 0이 되어버리므로 학습이 아예 진행이 안되는데 이런 특징이 학습을 방해하는 것도 있지만 dropout처럼 정규화 효과도 있다.