일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- sklearn
- TD
- 그래프 이론
- Python
- 백준
- MinHeap
- machine learning
- image processing
- 자료구조
- 딥러닝
- canny edge detection
- SIFT
- clustering
- dynamic programming
- MySQL
- 인공지능
- C++
- Mask Processing
- exists
- Reinforcement Learning
- DP
- BFS
- IN
- 강화학습
- dfs
- classification
- 머신러닝
- AlexNet
- edge detection
- opencv
- Today
- Total
JINWOOJUNG
[ 컴퓨터 비전 ] Ch5. Deep Learning...4 본문
본 컴퓨터 비전 개념과 기법들에 대한 공부를 진행하면서 배운 내용들을 중심으로 정리한 포스팅입니다.
책은 Computer Vision: Algorithms and Applications를 기반으로 공부하였습니다.
또한, 인하대학교 박인규 교수님의 컴퓨터 비전 과목을 기반으로 제작된 포스팅입니다.
https://jinwoo-jung.tistory.com/113
Overfitting
Overfitting
Overfitting은 Model이 Training Dataset에 Overfitting되어 새로운 데이터에 대하여 성능이 떨어지는 일반화되지 않는 현상을 의마한다.
아래는 Traininig Dataset과 학습된 모델을 시각화 한 것이다. Linear Model로 학습시킨 결과는 약간의 오차는 존재하지만 잘 학습된 것으로 보인다. 하지만, Non-Linear Model의 경우 Training Dataset에 너무 Overfitting 된 모습을 확인할 수 있다.
Underfitting
Underfitting은 반대로 모델이 주어진 Training Data를 기반으로 충분히 학습되지 못한 현상을 의미한다.
Regularization
일반적으로 모델이 커질수록 즉, 깊어질수록 Overfit 될 가능성이 높다. 따라서 Overfit을 방지하기 위해 학습 과정에서 Guidline(선호하는 방향)을 제안하는 것을 Regularzation이라 한다.
Forward Pass에서 계산되는 Loss에 다음과 같이 Regularization Term $ \lambda L_{reg} $을 추가시킨다. 이대, " \lambda L_{reg}"는 여러가지 방법으로 계산되지만, 아래 예에서는 L2 Norm을 사용하였다. $\lamda$가 작을수록, 정확하게 구분하지만 Training Dataset에 너무 Overfitting 되어 일반화 되지 못함을 확인하였다. 반면, $ \lambda $가 커질수록 일반화가 잘 된, 높은 정확도를 보임을 확인할 수 잇다.
Regularization은 다음과 같이 여러가 방법으로 구현될 수 있다. 여기서 $W$는 Weight를 의미한다.
Weight Decay
앞서 Regularization Term을 Grdient 계산을 위해 편미분 형태로 나타내면 $\frac{\partial L}{\partial W} = \lambda W $와 같다. 기존 Gradient Term은 $$ W \leftarrow W - \frac{ \partial L_{data} }{\partial W} $$ 이고, Regularization Term은 $-\alpha \lambda W$이다. 즉, Regularization Term은 현재의 Weight에 $\alpha \lambda$의 비율로 감소시키는 역할을 한다. 이를 통해 Overfitting을 방지한다.
Dropout
Overfitting을 줄이는 또하나의 방법은 Dropout이다.
Dropout은 학습 과정에서 일부 Node를 확률 $p$에 근거하여 Deactivation 시키는 방법이다. Test 과정에서는 모든 Node를 Activation 시키고 Error를 분석한 결과, Dropout을 적용한 경우가 성능이 훨씬 좋은 것을 확인할 수 있다.
오른쪽 사진과 같이 매 Mini-Batch 단위로 학습시키는 과정에서 Random하게 확률 $p$에 근거하여 Zero로 만들어 Node를 Deactivation 시킨다.
실제로 CNN Architecture 중 하나인 AlexNet의 Fully Connected Layer에서 Droupout이 사용됨을 확인할 수 있다.
Batch Normalization
우리는 앞서 모델이 Mini-Batch 단위로 학습한다는 것을 배웟다. 만약 아래 파란색의 Distribution을 가지는 Training Dataset을 기반으로 모델이 학습하게 되고, Test Dataset의 Distribution이 Training Dataset과 많이 차이가 난다면 좋은 성능을 보이지 못할 것이다. 이를 Covariate Shift라 하며, 이 문제를 해결하기 위해 Input Data를 Normalization 하기도 한다.
그럼에도 CNN 구조에서는 Internal Covariate Shift 문제가 여전히 발생한다. 오른쪽과 같이 Input 영상이 Normalization을 진행하였다 하더라도 Layer를 거쳐가면서 분포가 바뀜을 확인할 수 있다. 이는 여전히 Training에 영향을 주기 때문에 이를 방지하는 것이 Batch Normalization이다.
Batch Normalization Activation Function의 Input인 Pre-activate Value에 대하여 Zero Mean, Unit Variance를 가지도록 Normalization 하는 방법이다. 따라서 수식적으로 표현하면 아래와 같다.
조금 더 자세히 살펴보면, Mini-Batch의 Size는 $N$, 입력 데이터의 데이터 $x$의 길이가 $D$일 때, 아래의 수식을 기반으로 Batch Normalization이 진행된다. Mini-Batch 단위의 평균 $\mu_{i, j}$와 분산 $\sigma^2_j$를 계산한 뒤 Mini-Batch 단위로 Normalization 시킨다.
하지만 Batch Normalization을 수행하면 몇가지 문제점이 있다. 평균이 0, 분산이 1인 분포를 가지게 되면 활성화 함수는 0 부근에서는 Linear한 성향을 가지기 때문에 Non-Lear을 학습할 수 없어 NN의 Train 성능이 줄어들게 됩니다. 또한 모든 Feature가 동일한 분포를 가지게 되면, 모델은 데이터의 중요도를 학습할 수 없게 됩니다.
따라서 Batch Normalization 된 $\hat{x}_{i,j}$에 대하여 $\gamma_j, \beta_j$를 이용해 Rescaling합니다. 이때, $\gamma_j, \beta_j$는 Learnable Parameter로, 현재 Layer에서의 최적의 분포로 조절할 수 있게 하며 이는 학습 과정에서 학습되게 됩니다.
따라서 Batch Normalization은 FC Layer 이후에 사용되며 아래와 같은 장점이 있지만, 여전히 약간의 문제점도 존재한다.
따라서 실용적으로 Batch Normalization은 각 Node가 아닌 Batch 단위의 모든 Node의 평균으로 Normalization되며, 모든 Node에 공통적으로 적용된다. Layer Normalization은 Mini Batch 단위에서 모든 Sample에 대해서가 아닌 하나의 Sample의 모든 Channel에 대해서 정규화 하는 기법이다.
Instance Normalization은 Mini Batch 단위에서 모든 Sample에 대해서가 아닌 하나의 Sample의 하나의 Channel에 대해서 정규화 하는 기법이고, Group Normalization은 일정한 Group을 생성하여 Normalization 하는 기법이다.
'2024 > Study' 카테고리의 다른 글
[ 컴퓨터 비전 ] Ch5. Deep Learning...6 (0) | 2024.12.03 |
---|---|
[ 컴퓨터 비전 ] Ch5. Deep Learning...5 (0) | 2024.12.02 |
[ 컴퓨터 비전 ] Ch5. Deep Learning...3 (0) | 2024.11.26 |
[ 컴퓨터 비전 ] Ch5. Deep Learning...2 (0) | 2024.11.23 |
[ 컴퓨터 비전 ] Ch5. Deep Learning...1 (0) | 2024.11.23 |