Recent Posts
Recent Comments
Archives
반응형
250x250
«   2024/04   »
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
Today
Yesterday

Total
04-27 00:00
관리 메뉴

Hey Tech

[딥러닝] Drop-out(드롭아웃) 개념, 사용이유, 수식 본문

AI & 빅데이터/머신러닝·딥러닝

[딥러닝] Drop-out(드롭아웃) 개념, 사용이유, 수식

Tony Park 2021. 8. 10. 00:26
728x90
반응형

본 포스팅에서는 딥러닝에 있어서 Generalization 기법 중 하나인 Drop-out(드롭아웃)에 대해 알아봅니다.

📚 목차

1.  Drop-out 개념
2.  Drop-out 사용이유
3.  Mini-batch 학습 시 Drop-out
4.  Test 시 Drop-out 

1. Drop-out 개념

그림 1. Drop-out 개념


Drop-out은 서로 연결된 연결망(layer)에서 0부터 1 사이의 확률로 뉴런을 제거(drop)하는 기법입니다. 예를 들어, 위의 그림 1 과 같이 drop-out rate가 0.5라고 가정하겠습니다. Drop-out 이전에 4개의 뉴런끼리 모두 연결되어 있는 전결합 계층(Fully Connected Layer)에서 4개의 뉴런 각각은 0.5의 확률로 제거될지 말지 랜덤하게 결정됩니다. 위의 예시에서는 2개가 제거된 것을 알 수 있습니다. 즉, 꺼지는 뉴런의 종류와 개수는 오로지 랜덤하게 drop-out rate에 따라 결정됩니다. Drop-out Rate는 하이퍼파라미터이며 일반적으로 0.5로 설정합니다.

2. Drop-out 사용 목적

그렇다면 Drop-out 기법을 사용하는 이유는 무엇일까요? 결론부터 말씀드리자면, Drop-out은 어떤 특정한 설명변수 Feature만을 과도하게 집중하여 학습함으로써 발생할 수 있는 과대적합(Overfitting)을 방지하기 위해 사용됩니다.

그림 2. Drop-out 사용의 장점

그 이유에 대해 천천히 알아보겠습니다. 위의 그림 2 에서 노란색 박스 안에 있는 Drop-Out이 적용된 전결합계층은 하나의 Realization 또는 Instance라고 부릅니다. 각 realization이 일부 뉴런만으로도 좋은 출력값을 제공할 수 있도록 최적화되었다고 가정했을 때, 모든 realization 각각의 출력값에 평균을 취하면(=ensemble) 그림 2의 화살표 우측 과 같이 모든 뉴런을 사용한 전결합계층의 출력값을 얻을 수 있습니다. 특히 이 출력값은 Drop-out을 적용하기 전과 비교했을 때, 더욱 편향되지 않은 출력값을 얻는 데 효과적입니다.

편향되지 않은 출력값, 직관적으로 이해가 되시나요? 예시를 통해 자세히 설명해 보겠습니다.

 

어느 특정 Feature가 어떤 출력값에 가장 큰 상관관계가 있다고 가정하겠습니다. Drop-out을 적용하지 않고 모델을 학습하면 해당 Feature에 가중치가 가장 크게 설정되어 나머지 Feature에 대해서는 제대로 학습되지 않을 것입니다.

반면 Drop-out을 적용하여 상관관계가 강한 Feature를 제외하고 학습해도 좋은 출력값을 얻을 수 있도록 최적화되었다면, 해당 Feature에만 출력값이 좌지우지되는 과대적합(overfitting)을 방지하고 나머지 Feature까지 종합적으로 확인할 수 있게 됩니다. 이것이 모델의 일반화(Generalization) 관점에서 Drop-out을 사용하는 이유입니다.

3. Mini-batch 학습 시 Drop-out

 

그림 3. Mini-batch 학습 시 batch별로 새로운 drop-out 적용


위의 그림 3과 같이 전결합 계층에서 Mini-batch 학습 시 Drop-out을 적용하면 각 batch별로 적용되는 것을 알 수 있습니다. Drop-out Rate를 0.5로 설정했기 때문에 뉴런별로 0.5의 확률로 drop 될지 여부가 결정됩니다. 즉, 그림 3처럼 첫 번째 batch에서는 위에서 2, 3번 뉴런이 꺼졌고, 2번째 batch에서는 3번 뉴런 1개만 꺼졌고, 3번째 batch에서는 1, 2, 3번 뉴런 3개가 꺼질 수 있습니다.

4. Test 시 Drop-out

그림 3. Test 단계에서의 Drop-out 적용


Test 단계에서는 모든 뉴런에 scaling을 적용하여 동시에 사용합니다. 여기서 \(a\)는 activation function, \(\alpha\)는 drop-out rate를 의미합니다. Drop-out rate를 활용해 scaling 하는 이유는 기존에 모델 학습 시 drop-out rate 확률로 각 뉴런이 꺼져 있었다는 점을 고려하기 위함입니다. 즉, 같은 출력값을 비교할 때 학습 시 적은 뉴런을 활용했을 때(상대적으로 많은 뉴런이 off 된 경우)와 여러 뉴런을 활용했을 때와 같은 scale을 갖도록 보정해 주는 것이죠.

📚참고할 만한 포스팅

1. [Deep Learning] 퍼셉트론(Perceptron) 개념 이해
2. [Deep Learning] 퍼셉트론(Perceptron) 학습방법 및 절차
3. [Deep Learning] 활성화 함수의 개념 및 종류: sign, tanh, sigmoid, softmax, ReLU
4. [Deep Learning] 손실함수(Loss Function) 개념
5. [Deep Learning] 평균제곱오차(MSE) 개념 및 특징
6. [Deep Learning] 평균절대오차(MAE) 개념 및 특징
7. [Deep Learning] 최적화 개념과 경사 하강법(Gradient Descent)
8. [Deep Learning] 최적화 기법: (1) Momentum
9. [Deep Learning] 최적화 기법: (2) AdaGrad
10. [Deep Learning] 최적화 기법: (3) RMSProp
11. [Deep Learning] 최적화 기법: (4) Adam

오늘은 딥러닝 모델의 일반화(Generalization) 관점에서 Drop-out의 개념과 사용 이유에 대해 알아봤습니다.
포스팅 내용에 오류가 있을 경우 댓글 남겨주시면 감사드리겠습니다.
그럼 오늘도 즐거운 하루 보내시길 바랍니다 :-D
고맙습니다🙏

728x90
반응형
Comments