Data Science/ML | DL

Training Technique: Regularization(규제)

402번째 거북이 2023. 3. 6. 12:44

Regularization을 하는 이유: Generalization

규제가 필요한 이유는, deep model이 데이터셋의 truth를 학습하는 것을 넘어서 training set이 포함하고 있는 noise까지 학습하는 것을 막기 위함이다.

즉, Overfitting을 '규제'하기 위한 방법들이 Regularization이라고 생각하면 되겠다.

 

규제 종류에는 아래가 대표적이다.

1. Model에 Extra Constraint 더하기 (e.g. Batch Normalization)

2. Cost Function에 Extra Term 더하기

3. 앙상블 기법

4. Data Augmentation


😶 Extra Term on Cost Function

모델 파라미터는 Cost Function에서 계산되어 나오는 Cost가 최소가 되도록 최적화되어진다.

이 때 Cost Function에 규제 Term을 추가해주는 것으로 Regularization을 할 수 있다.

일반적인 Cost function에 규제 Term이 추가된 것을 알 수 있다.

 

✔️ R(w)

파라미터 (w) 크기에 제약을 거는 함수이다.

종류에는 아래 두 가지가 있다.

# L1 Regurlarizer

$$||w||_{1}$$

크기와 관계 없이 같은 패널티가 부여되는 규제방법이다.

variable shrinkage + selection의 효과가 있다.

아래 그림에서 w1이 0이 되는 것을 확인하자. (sparse solution)

 

# L2 Regurlarizer

$$||w||_{2}$$

L1과 마찬가지로 variable shrinkage 효과가 있으나, 특정 파라미터가 0이 되지는 않는다.

크기에 비례하여 패널티가 부여되는 규제방법이다.

 

✔️ 람다(λ)

하이퍼파라미터다.

얼마나 제약을 걸 것인지를 결정해준다.

0이라면 규제가 없을 것이고(overfitting 우려가 존재), 매우 큰 수라면 너무 규제가 심해 underfitting될 가능성이 있다.

 

+) 왜 b에는 규제를 걸지 않는가?

규제 term에 b는 인자로 들어가지 않는 것을 확인할 수 있는데, 그 이유는 bias는 모델 curvature에 영향을 주지 않기 때문이다.

즉, 모델 모양에 b가 영향을 주지 않기 때문에 규제를 걸지 않는 것이다.

bias에 규제를 걸어버리면 모델이 underfitting하게 된다.


😶 Ensemble

약한 모델 여러 개를 결합함으로써 '강한' 모델을 만들어 규제하는 방식이다.

Model Averaging이라고도 한다.

여기서 강한 모델이라고 하면 training set을 잘 학습했으면서도 test set을 잘 예측하는, Generalized된 모델이다.

(Lower bias, Lower variance)

 

✔️Bagging (Bootstrap Aggregating)

데이터의 경우 복원추출로 랜덤하게 추출된다.

추출한 샘플 데이터들에 대해 parallel하게 모델을 학습시킨다. (아래 그림 참고)

학습시킨 모델의 성능을 testing phase에서 average하는 방식이다.

 

 

✔️ Boosting

Bagging과 비슷하나, parallel한 학습이 아니고 여러 모델을 sequential하게 학습시킨다.

데이터의 경우 Bagging과 마찬가지로 복원추출로 랜덤하게 추출하나, Weighted 라는 조건이 있다.

이전 모델들이 틀린 데이터에 대해서 이후 모델들이 더 집중하여 학습할 수 있도록 해당 데이터에 weight를 주는 것이다.

Testing phase에서도 모델 성능을 weighted average하여 구한다.

 

✔️ 앙상블 기법의 장단점

장점

모델 성능을 올리는 데 도움을 준다! 앙상블 기법의 목적인 Lower variance, Lower bias를 달성가능하다.

Random initialization
Random selection of minibatches
Hyperparameters

위와 같은 요소들이 모델들마다 다르기 때문에, 모든 모델들이 같은 데이터셋으로 훈련하더라도 충분히 다양한 예측값을 얻어낼 수 있기 때문에 규제효과가 있다고 할 수 있겠다. (핵심!)

 

단점

Computationally Expensive..이다.

특히 Bagging의 경우 더 그렇다.

 

✔️ Dropout (Implicit Ensemble)

앙상블기법이 Computational Cost가 크다고 했다.

Dropout은, 상대적으로 적은 Computational Cost로 앙상블과 비슷한 효과를 기대할 수 있는 규제방식이다.

그림과 같이, 랜덤하게 뉴런의 output을 0으로 만듦으로써 마치 형태가 다른 모델을 여러 개 사용하는 효과를 얻을 수 있다.

(주로 input layer는 0.8, hidden layer는 0.5의 뉴런을 남기고 drop한다.)

앙상블보다 computational cost가 적고, weight decay와 같은 standard regularizer(L1, L2)보다 더 효율적이다.

dropout

# Training Phase

minibatch에 데이터 example를 load할 때마다, 랜덤하게 모델을 구성하는 모든 뉴런들에 대한 binary mask(1,1,0,1,0,1,,)를 샘플링해 어떤 뉴런들을 dropout할 것인지 정한다.

평소처럼 forward, backpropagation, parameter update를 진행한다.

(어떤 뉴런을 마스킹할 것인지 정하기만 하는 것이 핵심)

 

# Testing Phase

masking한 모든 모델들에 대한 probability distribution들을 곱해준다.

이렇게 하면 Computational cost가 여전히 크다.

이를 해결하기 위한 방법이 Weight Scaling Inference Rule인데, 한 번 보자.

 

Weight Scaling Inference Rule

Inference phase에서 masking distribution을 곱하는 대신에, training phase에서 포함되는 뉴런의 probability들만 곱해주는 방법이다.

종류에는 Vanilla Dropout과 Inverted Dropout이 있다.

 

# Vanilla Dropout

training phase에서 probability β의 확률로 dropout한다.

그리고 testing phase에서는 activation을 1/β로 나누어준다.

 

# Invertd Dropout

training phase에서 β의 확률로 dropout을 진행하고, 계산된 activation을 1/β로 곱해준다.

미리 training단계에서 모든 연산을 해주었기 때문에, testing phase에서는 따로 연산을 진행하지는 않는다.

 

Weight Scaling Inference Rule 외에 Dropconnect의 방법도 있다.

(output을 0으로 만들지 않고 weight를 0으로 만드는 방법.)

 

 


😶 Data Augmentation

데이터를 이리 저리 변형시켜 다양한 데이터로 기존 데이터를 보간하는 방식이다.

예시로는 아래와 같은 것들이 있다.

 

# noise injection(이미지 등에 의도적으로 노이즈를 넣어 overfitting을 막는 방법)

# stochastic depth(training phase에서 일부 layer를 skip하는 방식)

# random crops

# scales

# color jitter

# mixup(이미지들의 투명도를 조정해 한 이미지에 여러 사진이 있도록 만드는 것)

# cutout(랜덤 patch를 잘라내는 방식)

# cutmix(랜덤 patch를 잘라내서 다른 이미지로 대체하는 방식)