새소식

딥러닝

Regularization

  • -

Normalization : 데이터들을 scaling하는 것

Regulraization : 모델에 제약(penalty)을 주는 것으로 학습데이터에만 잘 동작하는 것이 아니라 테스트데이터에도 잘 동작하도록 하는 것이 목표


Regularization 방법들

▮ Early Stopping

validation dataset으로 성능을 평가하고 어느 시점부터 loss가 커지기 시작하면 해당 시점에서 멈추는 방법

 

 

 Parameter Norm Penalty (=weight decay)

NN의 파라미터들이 너무 커지지 않게 하는 것

function space속에서 최대한 부드러운 함수일 수록 generalization 성능이 높을 것이다.

 

 

 Data Augmentation

데이터셋이 어느정도 이상 커지게 되면 ML의 경우 이 많은 데이터를 표현하는 표현력이 부족하게 된다.

딥러닝의 경우는 데이터가 많을수록 성능이 좋아진다.

 

따라서 갖고 있는 데이터의 양을 늘리기 위해 원본에 각종 변환을 적용하여 개수를 증강시키는 기법을 augmentation이라고 한다.

 

 

https://wikidocs.net/164688

 

 

 Noise Robustness

input이나 weight에 random noise를 집어넣으면 성능이 더 좋아진다.

 

 

 Label Smoothing

데이터 2개를 뽑아서 섞어(mix-up)주거나 잘라버리거나(Cutout), 둘을 합친 방법(CutMix)을 사용하면 성능이 좋아진다.

 

 Dropoput

NN의 p 퍼센트의 weight를 0으로 바꾸는 방법

Neuron들이 robust한 feature를 잡을 수 있다고 해석을 한다.

 

▮ Batch Normalization

레이어 수가 많아질 수록 학습이 잘 되지않는 근본적인 문제는 Internal Covariate Shift 때문이다.

학습을 시킬 때, 이전 layer의 값에 따라 다음 layer의 weight가 영향을 받게된다. 즉, 매번 입력 데이터의 분포가 바뀌게 되는 현상이 일어난다.

SGD를 이용하여 Batch 단위로 학습하게 되면 Batch 간의 데이터 분포가 상이해지는 문제가 발생한다.

따라서 Batch별로 평균과 분산을 이용해 정규화하여 문제를 해결한다.

 

728x90

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

Gradient Accumulation  (0) 2022.08.01
Keras Callback - ModelCheckpoint, ReduceLROnPlateau, EarlyStopping  (0) 2022.07.28
Neural Network  (0) 2022.07.11
Batch Normalization  (0) 2022.07.10
Gradient Descent Methods  (0) 2022.07.06
Contents