Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- ComputerVision
- layernormalization
- focalloss
- labelsmoothing
- fasterRCNN
- inference
- l2penalty
- 네이버AI부스트캠프
- clibration
- f1loss
- mmdetectionv3
- 자료구조끝판왕문제
- 정렬
- ImageClassification
- autograd
- Focal Loss
- 네이버 ai 부스트캠프
- 중복순열
- BatchNormalization
- 힙
- 프로그래머스
- cmp_to_key
- objectdetection
- DataAugmentation
- 밑바닥부터 시작하는 딥러닝
- pytorch
- Optimizer
- noiserobustness
- 우선순위큐
- labelsmoothingloss
Archives
- Today
- Total
HealthyAI
DL) Regularization 본문
반응형
Regularization
Backgrounds
Overfitting이 일어나지 않게 하고, generalization performance(일반화 성능)를 높이기 위해 필요한 방법들을 말해요.
모델의 복잡성을 조절하고 처음 본 test data에 일반화된 성능을 더 잘 보여줄수 있게 해줘요.
Overfitting(과적합)
- 정의 : 학습데이터에 과하게 치중되게 학습되어 테스트 데이터, 성능평가 시 좋은 성능을 보이지 못하는 현상을 말한다.
- 발생
- 매개변수가 많고 표현력이 높은 모델, 훈련데이터가 적은 경우에 주로 발생
- 가중치 매개변수의 값이 커서 주로 발생
Regularization 방법
L1, L2 regularization
Cost function(loss function) = Loss + Regularization term
- L1
- 모델을 경량화 시킬때 유용하게 사용돼요.
- 그럴 경우가 아니면 주로 L2 방법이 많이 사용돼요.
- 가중치가 너무 작은 경우는 상수 값에 의해 weight가 0이 되어버려요.
- 결과적으로 몇몇 중요한 가중치들만 남게 돼요.
- 모델을 경량화 시킬때 유용하게 사용돼요.
- L2
- 편미분을 통해 back propagation 시 loss 뿐만 아니라 가중치 또한 줄어드는 방식으로 학습해요.
- 특정 가중치가 비이상적으로 커지는 상황을 방지해요.
- weight 값이 0에 가깝게 줄어들어요. 그래서 weight decay 방법으로도 알려져 있어요.
- 전체적으로 가중치를 작게 하여 과적합을 방지해요.
Dropout
- 신경망이 복잡 해지면 가중치 감소만으로는 대응하기 어려워요. 이때 Dropout ****이라는 기법을 사용해요.
- 주로 신경망이 복잡한 Large Neural Network 일 경우 무작위성을 확보하기 위해 사용해요.
- 정의 : Train 과정에 뉴런을 임의로 삭제하면서 학습하는 기법
- 학습과정에 데이터를 흘릴 때마다 무시할 노드를 무작위로 선택해요.(설정 비율이 하이퍼 파라미터에요)
- Test 때는 모든 뉴런에 신호를 전달해요.
- network 로 하여금 더 robust(강건한) 하고 independent feature 들을 학습하게 해줘요. 특정 뉴런에 의존할 수 없기 때문이에요.
- 앙상블 기법중에 하나로 생각될 수 있어요.
- code
- class Dropout: def __init__(self, dropout_ratio = 0.5): self.dropout_ratio = dropout_ratio self.mask = None def forward(self, x, train_flg = True): if train_flg: self.mask = np.random.rand(*x.shape) > self.dropout_ratio return x*self.mask def backward(self, dout): return dout * self.mask
Early Stopping
- CV(cross validation) strategy
- validation 과정에서 loss 값이 정해진 스텝동안 연속적으로 증가하는 시점에 학습을 멈춰주는 기법이에요.
- generalization 성능을 높이기 위해 training error 와 test error의 gap이 증가하지 않도록 막아줘요.
- 설정한 patience 수치 만큼의 epoch 까지 validation 과정의 성능 향상이 없을 경우 학습을 중단해요.
- 이 patience 수치를 잘 고려해서 설정 해야돼요.
Data Augmentation
- 데이터가 한정적일 때 사용해요.
- 이미지의 변화 - 라벨이 바뀌지 않는 한도 내에서 이미지를 변화 시켜요.
- Mirroring, RandomCrop, Rotation, Shearing, ColorShifting…
- albumentation 라이브러리 사용
- 데이터를 증가 시켜 오버피팅(과적합) 을 줄일 수 있어요.
- 포토샵, 사진 필터, 카메라 앱의 기능과 비슷한 역할을 해요.
Noise Robustness
- input 과 더불어 weight 에서도 noise를 집어 넣어요.
Label Smoothing
- model generalization 에 효과가 좋아요.
- 이미지 분류 과정에서 빈번히 발생하는 문제 → Mislabeling 되어 있을수 있어요.
- 이때 Mislabeling 된 sample 에 대해서는 Loss 값이 크게 계산되어요… 이러한 문제를 해결하기 위한 한 가지 방법이 label smoothing 이에요.
- 반드시 0 또는 1이 아닐수 있다는 것이 핵심이에요.
- 사람이 잘못 labeling 하여 잘못된 Loss 의 영향을 줄이기 위해 label을 0또는 1이 아닌 그 중간 값들로 smooth하게 만들어 주는 것이에요.
- 모델이 정답을 정확하게 예측하지 않아도 되기 때문에 clibration, regularization 효과를 줄수 있어요.
- Input과 output을 섞어 decision boundary 를 부드럽게 만들어 주어요.
- CutMix
- Mixup
- 라벨을 섞어요.
- 이미지도 섞어요. (자르는 것이 아님)
- 성능이 많이 올라가는 경우가 많아요.
- Cutout
- 이미지의 일정 부분을 떼어내요.
- Cutmix
- 일정 부분에 특정 이미지를 잘라서 섞어 붙여줘요.
- Mixup
Batch Normalization 배치 정규화
- Batch 마다 입력값의 범위를 스케일링 하는 과정이에요. (데이터 종류에 따라 값의 범위는 천차만별이에요.)
- 데이터 분포가 평균이 0, 분산이 1이 되도록 정규화 해줘요.
- 각 층이 활성화를 적당히 퍼뜨리도록 ‘강제’해요
- 장점
- 어떠한 데이터 분포가 입력으로 들어와도 모두 정규화 하기 때문에 모든 layer 의 feature 가 동일한 scale 이 되도록 만든다.
- batch 마다 데이터 분포가 달라지는 internal covariate shift 현상을 방지할 수 있고 학습률 결정 시 효과적
- 학습률 결정에 도움이 됨
- 활성화 함수 종류에 맞게 적합한 분포로 변환이 가능하다
- 학습 속도 개선
- 초깃값 의존 X
- 오버피팅 억제
- 어떠한 데이터 분포가 입력으로 들어와도 모두 정규화 하기 때문에 모든 layer 의 feature 가 동일한 scale 이 되도록 만든다.
Layer Normalization
- 입력값이 가변 값일 때 사용해요.
- 하나의 데이터에서 나온 activation 을 다 합해서 평균을 구해요.
- Batch 통계량을 사용하지 않아 Batch Normalization의 단점인 batch가 모두 계산되기 전까지 다음 단계로 넘어갈수 없는 문제를 해결해줘요.
- 따라서 RNN, Transformer 등 Sequential 한 데이터를 다루는 모델에서 많이 사용돼요.
Reference
반응형
'AI > Deep Learning' 카테고리의 다른 글
DL) Loss Function (0) | 2023.04.20 |
---|---|
DL) Training Inference (0) | 2023.04.19 |
DL) Pre-trained Information (0) | 2023.04.02 |
DL) Optimization - Gradient Descent (0) | 2023.02.10 |