Regularization

Jiwon Kim
|2023. 12. 17. 23:41

1. Regularization for Neural Networks

< Overfitting >

 

- 학습 데이터의 일반적인 패턴 뿐만 아니라 노이즈까지 적합이 된다면?

- 과적합 시 학습 데이터셋에 대해서는 loss가 계속 낮아지지만 평가 데이터셋에 대해서는 loss가 다시 높아지기 시작

- 고차원 데이터나 노이즈가 많은 데이터일수록 과적합에 유의해야 함

- 모델이 불필요하게 복잡할수록 과적합될 가능성이 높아짐

 

 

< Regularization >

 

- adding an additional penalty term in the objective function (loss function)

- 모델이 너무 복잡하기 않도록 regularize하는 작업

- weight가 작아지는 방향으로, 아예 필요하지 않다면 아예 0으로 만들어줌

 

▶ Ridge Regression (L2)

 

▶ Lasso Regression (L1)

 

 

 

 

정규화에 따른 multiclass SVM Loss

 

보통 L2 Regularlization은 weight 값의 분포를 분산시키는 쪽으로, L1 Regularization은 weight 값에 0이 많아지는 쪽으로 (희소행렬) 적용됨

 


2. Regularization for Deep Neural Networks

- DNN은 overfitting에 취약함

- 그래서 weight decay, early stopping, dropout, cutout 도입 

 

< Weight Decay >

 

똑같이 penalty term을 더해서 적용 : weight decay에서 penalty term은 L2 정규화 페널티 

multi - layered networks에 대해서는 모든 레이어에 대해 위의 penalty term들을 더해주면 된다. 

 

 

< Early Stopping >

 

- validation set을 따로 분리해두고 train set으로 모델 후련 후에 validation set으로 평가한다

- validation set이 과적합되기 시작하면 (loss가 증가) 멈춘다

단점 : train set의 일부를 검증용으로 분리해 놓아야하기 때문에 데이터셋의 크기가 너무 작다면 성능이 떨어질 수 있다

 

 

< Dropout >

 

 

- 각 forward pass에 대하여, 임의로 neuron을 0으로

- neuron을 drop하는 비율(확률)을 하이퍼파라미터로 둔다. (보통 0.5)

- forces the model to learn from various clues, which will be useful when some of the clues are not visible later

- 주의할 점은 test data 에 대해 예측을 시행할 때는 모든 neuron을 활성화시켜야 한다는 것 

- pytorch에서는 모델을 정의할 때 nn.Dropout(p=0.5) layer를 추가해주면 된다

 

 

< Cutout >

 

 

- set zero to some randomly chosen sub-area within the training images

- works well for small datasets like CIFAR, but less common for large datasets like ImageNet. (매번 크롭할 영역을 랜덤하게 정해주는데 드는 연산이 너무 크다)

 

 

▣ 정리

 

보통 Regularization을 시행하는 방법

- consider "Dropout" for large fully-connected layer

- "Batch Normalization" ( layer normalization ) is always a good idea

- try "Data Augmentation", especially on small-scale datasets

- do "Early Stopping" using your final metric

 


 

'Study > 딥러닝' 카테고리의 다른 글

TTS 모델 조사  (0) 2024.01.28
Batch Normalization  (1) 2023.12.19
Pytorch Tensorboard  (1) 2023.12.12
파이토치  (0) 2023.12.11
Weight Initialization  (1) 2023.10.22