Adore__

[BoostCourse DL] 3.2 Optimization_Regularization 본문

AI Learner/DL

[BoostCourse DL] 3.2 Optimization_Regularization

3_GreenHeart 2023. 4. 6. 16:30
728x90

Source: Boost course 'DL 기초다지기'

 

 

앞에서 배웠던 generalization 성능을 높이기 위해 regularization을 사용한다.

이것의 목적은 학습을 규제, 즉 방해하는 것이다. 이로서 model이 train data뿐만 아니라 test data에서도 잘 작동하도록 한다.

 

다음은 Regularization 도구들이다

 

▪️ Early stopping

training data를 학습하는 동시에 validation data를 사용하여 평가한다.

어느 순간 validation error가 증가하는 시점에 학습을 멈추는 방법이다. (당연히 training

data 이외에 학습하지 않은 validation data가 필요하다. 이는 test data와 다르다. cross validation방법을 참고하자)

 

▪️ Parameter Norm Penalty

NN parameter가 너무 커지지 않게 하는 것이다. parameter들을 각각 제곱해서 다 더한 값을 같이 줄인다.

이왕이면 Network weight 숫자들이 작으면 좋다는 것이다. (크기,절댓값의 관점에서)

물리적으로 보았을 때, 부드러운 함수일수록 generalization 성능이 좋을 것이다라는 가정이 포함되어 있다.

 

▪️ Data Augmentation

DL에서 가장 중요한 개념이다. 대부분 DL 모델은 데이터가 무한이 많으면 잘 된다.

 

데이터가 적을 때는, gradient Boost나 Random Forest와 같은 전통적인 방법이 더 성능이 좋다.

하지만 dataset이 어느정도 커지게 되면, 기존 ML 방법들은 이 데이터를 표현할 능력이 부족하기때문에 DL을 사용한다.

 

문제는 데이터가 한정적이라는 것인데, 이를 해결하기 위한 방법이 data augmentation이다.

label이 변하지 않는 조건 하에 내가 갖고있는 데이터를 살짝씩 바꿔서 새로운 데이터를 만들어내는 것이다.

 

 

▪️ Noise Robustness

data augmentation과 비슷하지만, noise를 단순히 입력데이터에만 집어 넣는 것이 아니라 NN의 weight에도 넣는다. (input, weight 모두에 noise를 넣는다)

이처럼 학습시킬 때 weight를 조금씩 변화시켜주면 성능이 더 잘 나온다는 결과가 있다.

 

https://www.sciencedirect.com/science/article/abs/pii/S1746809415000865

 

▪️ Label Smoothing

train data 중 2개를 뽑아서 이 두개를 섞어준다. 이 방법은 분류 문제에서 decision boundary를 부드럽게 만들어주는 효과가 있다.

 

아래를 참고하면,

Mixup : 강아지와 고양이 2개의 이미지를 고른 후에, label을 섞는다 (50:50). 그리고 이미지도 섞는다. 이에 대한 label은 고양이 0.5, 강아지 0.5가 된다.

Cutout : 일정부분을 제거하고 이에 해당하는 label을 부여한다. 고양이 머리를 제거한 부분은 강아지이므로 label은 dog 이 된다.

CutMix : 섞어줄 때 blending해서 섞는게 아니라, 특정 영역은 강아지, 특정 영역은 고양이로 집어 넣는다.

Regularization Strategy to Train Strong Classifiers with Localizable Features, 2019

 

분류 문제에서 dataset이 한정적이고 더 많은 데이터를 얻을 수 없을 때, mixup과 같은 방법들이 성능을 올려주는데 매우 효과적이다.

 

 

▪️ Dropout

Neural Network 의 weight 중 일정 부분을 랜덤하게 0로 바꾸는 것이다.

p=0.5라고 설정하면, neural network와 inference할 때에 layer마다 뉴런 중 50%를 0으로 바꿔준다.

이로서 각각의 neuron들이 조금 더 robust한 feature가 잡을 수 있다고 한다.

 

 

▪️ Batch Normalization

내가 BN을 적용하고자 하는 Layer의 statistics 를 정규화하는 것이다.

예를 들어 이 layer가 1000개의 parameter로 되어있는 hidden layer라고 할 때, parameter 각각 값들의 분포가 정규분포를 따르게 만드는 것이다. (평균을 빼고 표준편차로 나눠준다)

Accelerating Deep Network Training by Reducing Internal Covariate Shift, 2015

 

이를 조금 변형해서 layer가 아니라 각각의 instance의 statics를 변경시키는 방법도 있다.

논란이 조금 있는 논문이지만, 분류 문제를 풀 때 BN을 활용해서 성능을 높일 수 있다는 점을 배울 수 있다.

Group Normalization, 2018

 

'AI Learner > DL' 카테고리의 다른 글

[BoostCourse DL] 4. CNN  (0) 2023.04.06
[BootCourse DL] 3. Optimization_Gradient Descent Methods  (0) 2023.04.06
[BoostCourse DL] 2. Neural Network, MLP  (0) 2023.04.03
[BoostCourse DL] 1. Start  (0) 2023.04.03
[Keras] VGG16 implementation  (0) 2023.04.03
Comments