본문 바로가기

학습공간/빅데이터활용실무

[5주차] Regularization

반응형

 Generalization

일반화는 정규화를 언급하기 전에 정의할 필요가 있다. 결국, 머신 러닝에서는 학습을 통해 모델을 만들고 새로운 데이터에 대해서 얼마나 성능을 발휘하는지 검증이 된다. 이것은 일반화 성능을 만족해야 하는 것이다. 그러나, 모델을 생성하는 데 있어서 사용된 학습 데이터가 너무 적거나 과하게 학습되어버리는 underfitting, overfitting 문제로 인해 일반화 성능을 만족하지 못하는 문제가 있다. 이에 따라, 정규화를 비롯한 다양한 기법을 통해 우리가 알지 못하는 새로운 데이터에서도 높은 성능을 발휘할 수 있도록 설계해야 한다.

\[ \mbox{training dataset }𝐷 = \{(𝒙_1,𝑦_1),(𝒙_2,𝑦_2),…,(𝒙_𝑛,𝑦_𝑛)\} \, \mbox{is given.} \, \cdots \, 𝐷^{test} \]

Generalization Error (underfitting, overfitting)

 

 Bias and Variance for Generalization

먼저, 데이터의 분포로부터 발생되는 편향분산에 대한 관계를 공부하고, 일반화하려면 어떻게 접근해야하는지 알아보도록 한다.

Generalization is related to Bias and Variance

- Bias-Variance Decomposition

\[ \mbox{Generalization Error } = \mbox{Bias²+ Variance + Irreducible Error} \]

Bias-Variance Trade-off in Supervised Learning

학습된 모델이 일반화 성능을 만족시키려면, 일반화 오류(Generalization Error)를 줄여야 한다.

하지만, 모델이 학습되는 과정의 데이터 분포에서는 편향(Bias)분산(Variance)이 발생되기 마련이고,

이는 어떤 Trade-off 관계를 이루고 있다. (Bias↑ Variance↓, Bias↓ Variance↑)

• The bias and variance by a learning algorithm
Bias(편향) : 모델이 예측한 값과, 실제 값의 차이(GAP), 적중률?

Variance(분산) : 모델의 예측 변동성, 매 결과가 일관적이지 않고 산포 됨

※ 가정이 Linear 하다고 한다면 Bias↑, Neural Net 이라고 한다면 Variance↑ ...
※ parameters 증가하면 Bias↓Variance↑ ... , noise 증가하면 Variance↑ ...

그렇다면, 이 편향과 분산을 동시에 줄일 수 없는 방법은 없을까?

결과적으로는 일반화 오류를 줄이기만 하면 된다. 예를 들면, 적당한 위치에 이를 제어해줄 수 있는 hyperparameter(e.g., 𝜆)를 페널티로 사용하는 등 정규화(Regularization) 과정을 거치도록 만들어준다.

• Examples : K-nearest neighbors (KNN)
 - 분류 문제와 회귀 문제에 대해서 hyperparameter k 값을 증가시켜보자.
bias 값은 증가하고 variance 값은 감소된다.

• Examples : the effect of the size of training data
 - 학습 데이터가 더 많아지면 분산은 낮아지고 특징이 더 잘 드러난다. (예측이 잘 된다)
Small-Big Training Dataset

 

• Regularization: Any modification we make to a learning algorithm that is intended to reduce its generalization error but not its training error
⇒ 학습 오류가 아니고 일반화 오류를 줄여야 한다.
• Regularization Strategies for Neural Networks
- Data Augmentation (데이터 증강)
- Parameter Norm Penalties (파라미터 Norm 페널티)
- Early Stopping (검증 셋 오류가 더 이상 줄지 않을 때 정지)
- Dropout (히든 레이어 유닛 랜덤 오프)
- Batch Normalization (입력 데이터 일괄 표준화)
- Multitask Learning (다중 작업 학습)
- Transfer Learning (전이 학습)
- Ensemble (bagging, etc.) (집단 지성 모델)
- …

 

 Regularization

본격적으로 뉴럴 넷 계열에서의 다양한 정규화 기법들을 다뤄보도록 한다. 학습 오류에 손대지 않고 일반화 오류를 줄이기 위한 시도로, 목적 함수에 대한 Capacity 조절이라던가 Penalty 를 부여한다던가 그게 아니면 Input dataset 자체를 손보는 여러가지 방법들이 있다.

 

- Data Augmentation : 가장 직관적인 방법

데이터 증강은 정규화의 단순하고 직관적인 방법이다. 쉽게 말하면 진짜같은 가짜를 많이 만들어내서 위의 Small-Big Training Dataset 과 같이 Variance 줄이는 데 도움이 된다. 즉, 고품질 데이터를 많이 만들어낸다면 정규화 효과가 있다는 의미이다. 자르거나, 필터를 씌우거나, 노이즈를 섞거나, 회전시키거나 변환시키는 작업 등의 예시가 있다.

Data Augmentation for image data

 

- Parameter Norm Penalties : 그 다음으로 가장 많이 사용하는 정규화 기법

\[ \tilde{𝐽}(𝜽)=𝐽(𝜽)+{\color{Red}𝜆}{\color{Blue}Ω(𝜽)} \, \cdots \, {\color{Red}\mbox{𝜆 controls the trade-off}} \]

비용 함수에 놈 페널티[Ω(𝜽)]를 부여함으로써, 파라미터 𝜽가 exploding 되는 것을 방지할 수 있다.

이 때, 놈 페널티로 L1 Norm[‖𝜽‖₁]을 부여하면 Lasso Regression,

- In the gradient descent, (L1 Regularization)
𝜽 := 𝜽 - 𝜖𝛻\({}_𝜽\tilde{𝐽}\)(𝜽) = 𝜽 - 𝜖(𝛻\({}_𝜽\)𝐽(𝜽) + 𝜆⋅sign(𝜽))
   = (𝜽 − 𝜖𝜆⋅sign(𝜽)) − 𝜖𝛻\({}_𝜽\)𝐽(𝜽)
parameter 가 zero 에 가까워지도록 약간의 값을 더하거나 빼주는 역할

L2 Norm[½‖𝜽‖²₂]을 부여하면 Ridge Regression 문제로 풀이할 수 있다.

- In the gradient descent, (L2 Regularization)
𝜽 := 𝜽 - 𝜖𝛻\({}_𝜽\tilde{𝐽}\)(𝜽) = 𝜽 - 𝜖(𝛻\({}_𝜽\)𝐽(𝜽) + 𝜆𝜽)
   = (1 - 𝜖𝜆)𝜽 − 𝜖𝛻\({}_𝜽\)𝐽(𝜽)
parameter update 전에 벡터의 크기를 줄여주는 역할

- Early Stopping : 검증 오류가 더 이상 줄어들지 않는 단계에서 멈추는 것이 최적이다.

파라미터 업데이트는 학습 데이터 셋에서 진행한다. 이 때, 검증 데이터 셋을 사용하여 학습 epoch 수를 줄이는(제약을 가하는) 방법을 통해 실제 test error 가 줄어드는 효과를 기대할 수 있다.

가령, 아래 그림처럼 학습 오류는 계속해서 줄어들고 있지만, 검증 오류가 더이상 줄어들지 않는 단계가 있다.

이 단계는 학습 오류와 일반화 오류의 갭이 벌어지는 시작 단계라고도 볼 수 있다. (stop training point)

- Dropout : 히든 레이어의 유닛 몇 개를 랜덤하게 꺼버리면, 대칭을 깨고 다양성을 높여준다.

\[ {\color{Red}\mbox{“randomly set some units to zero for each iteration”}} \]

Bernoulli 분포 p 확률을 각 weight 앞에 곱해준다.

- Dropout as Bayesian Approximation : Dropout 의 또 다른 방법

  - Monte-Carlo Dropout: 정규화 방법이지만, 예측 값을 추론할 때에도 사용할 수 있다.

  new data point x* 에 대하여, Dropout 을 킨 채로 T번 수행하면 T개의 다른 결과가 만들어지는데,

  이에 대한 평균으로 추정하거나, 분산을 통해 불확실성을 추정한다.

 

- Batch Normalization : 입력 데이터에 대한 전체 표준화 처리를 해줘도 성능이 좋다.

  각각 히든 유닛에 대해서 Zero-Centered 가 되지 않는 문제, Vanishing/Exploding 문제를 해결하기 위해서

  각 미니배치마다 평균이 0 분산이 1이 되도록 표준화한다. (ReLU 인 경우면, Activation 이후에 수행한다.)

input data nomalization for each mini-batch

 

- MultiTask Learning : 다중 작업 학습

  하나의 Shared layers (공통된 부분)을 가지고 학습하는 것이, 각각 독립적으로 학습하는 것보다 좀 더 좋은 성능을 보일 수 있다.

  - Task-specific parameters: only for the target task, benefit from the data of the target task.

  - Generic parameters: shared across all the tasks, benefit from the pooled data of all the tasks.

 

- Transfer Learning : 앞장의 전이학습 내용 : 더 빠르고 더 좋은 성능이 목표

  과거 Task 정보를 재활용하여 Target 모델을 학습시키기 위함. 지식 이전을 통한 새 작업의 일반화 개선.

 

- Ensemble Learning(앙상블) : 집단 지성을 이용하여 문제를 해결해보자.

  여러 개의 다르게 학습된 모델을 가지고 집단 지성으로 문제를 해결해본다. 여러 개의 모델이 조금씩 달라야 좀 더 좋은 집단 지성 성능을 낼 수 있는데, 2 가지 방법이 존재한다. 뉴럴 넷의 경우에는 parameter initializing 만 다르게 잡아도 모두 다른 local optimum 에 빠진다. 또는 어떤 combination 조건을 걸 것인가에 따라 이 자체가 곧 정규화가 될 수 있다.

• Two main steps of constructing an ensemble:
(1) Diversity Generation
    • Data manipulation
    : Data distibution (data points) / Input variables / Output variables (labels)
    : Sampling /Partitioning
    • Learning algorithm
    : Homogeneous / Heterogeneous
(2) Combination
    • Unweighted / Weighted
    • Linear / Non-linear
    • Static / Dynamic

  대표적으로 가장 심플하지만 효과가 좋은 Bagging 예를 보도록 하면,

• Bagging (“bootstrap agregating”)
[Training] for a training set 𝐷, ⋯ 𝑘 개의 Bootstrap 샘플 추출
1. Take 𝑘 bootstrap samples (sampling with replacement) from 𝐷
2. Train 𝑘 different base models on thest bootstrap samples
Output: 𝑓1(𝒙),…,𝑓𝑘(𝒙) ⋯ 𝑘 개의 모델 생성

[Inference] for a new data point 𝒙,
1. Let all models predict
2. Take an average (for regression) or majority vote (for classification)
Output: \(\hat{𝑦} = \frac{1}{𝑘}\, {\sum_𝑖 𝑓_𝑖(𝒙)} \) (for regression) or \(\hat{𝑦} = \operatorname*{argmax}\limits_{𝑗}\, {\sum_𝑖 𝐼(𝑓_𝑖(𝒙))=𝑗} \) (for classification)
⋯ 최종 예측을 수행(회귀: average, 분류: majority vote)
※ 만약, 베이스 모델들이 서로 연관성이 없는 오류로 만들어졌다면, 더 좋은 성능을 낼 수 있다.

결과적으로, k 개의 모델에 대한 variance 평균이기 때문에 분산을 줄이는 효과가 있다.

반응형