본문 바로가기
  • Deep dive into Learning
  • Deep dive into Optimization
  • Deep dive into Deep Learning
Deep dive into Deep learning

Deep dive into Deep learning part 16. Regularization - Updated

by Sapiens_Nam 2023. 5. 5.

 

 

"모바일 앱 환경에서는 latex 수식이 깨져 나타나므로, 가급적 웹 환경에서 봐주시길 바랍니다."

 

 

오늘은 머신러닝 / 딥러닝 발전의 적지 않은 기여를 한 Regularization에 대해 살펴보고자 한다.

 

딥러닝/머신러닝의 목표는 Deep dive into Deep learning 시리즈 초반부에서도 이야기하였듯 결국 모델을 훈련하는 데 사용한 데이터뿐만이 아니라, 새로운, 이전에 본 적이 없는 데이터에 대해서도 알고리즘이 잘 동작하도록 만드는 것이다.

이러한 모델의 능력을 우리는 'generalization' (일반화)라고 한다.

이를 간단하게 복습해보자.

 

우리가 가지고 있는 데이터셋을 $S := ( \{x_i, y_i \})_{i=1}^n$이라 하자. 이 때 $x$는 data (feature)가 될 것이고 $y$는 label이 될 것이다. 이 데이터는 어떤 모르는 확률분포에 기초해서 생성된 데이터이다. 우리는 모르는 이 확률분포로부터 $i.i.d$하게 sampling한 (Training) data를 가지고 있다.

이 확률분포를 $\mathcal{D}$라고 하자. 즉, $\{ (x, y) \} \sim D$이다.

우리가 원하는 것은 Expected risk를 최소화하는 것이고 이것이 곧 모델의 generalization 성능이다.

즉, $\mathbb{E}_{(x, y) \sim D}[\ell(x, y)]$를 최소화하고자 한다. 하지만, 이를 최소화하기 위해서는 데이터 생성 분포를 우리가 알아야 하는데 이는 쉽지 않다. 

따라서 우리는 Expected risk의 '대리 함수'인 Empirical Risk를 최소화한다.

즉, $\frac{1}{n}\sum_{i=1}^n \mathcal{L}(x_i, y_i)$를 최소화하는 것이고 이를 최소화하는 과정을 우리는 모델을 training시킨다고 이야기하고 이를 최소화하는 알고리즘을 우리는 optimizer라고 한다.

우리는 Empirical risk를 최소화하는 training 과정을 거치고 이 모델에 대해 Expected risk를 추정하는 Test 과정을 거친다.

당연히, Training dataset과 Test dataset은 교집합이 없어야 한다.

 

그렇다면 결국 모델의 성능은 다음 두 가지 능력으로 우리는 평가할 수 있다.

$1$. Training loss를 최소화하는 것
$2$. Train loss와 Validation loss의 '차이'를 최소화하는 것

 

이번에 다루고자 하는 것은 $2$번 문제이다. $1$번이 잘 되었다면 우리 모델은 학습이 잘 된 것이다. 하지만, 학습이 잘 되었다고 해서 항상 $2$번이 성립하지 않는다. 즉, Train loss는 충분히 낮아졌지만, Validation loss는 높은 상태가 존재할 수 있다.

(특히 요즘같이 overparameterized neural network는 충분히 길게 학습시키면 train loss는 0에 가깝게 만드는 것이 가능하다.)

이를 머신러닝/딥러닝에서는 과적합  (overfitting)이라고 한다. 참고로 1번이 잘 되지 않으면, 즉 Train loss가 충분히 낮아지지 않으면 이를 과소적합 (underfitting)이라고 한다.

주어진 모델의 overfitting 능력에 영향을 미치는 것은 가장 큰 요소는 모델의 수용력 (capacity)training dataset의 크기이다. 모델의 수용력을 측정하고 이를 정량적으로 표현하는 분야는 '통계적 학습 이론'이라고 하며 Vapnik-Chervonenkis dimension (VC-dimension), Rademacher complexity, Uniform stability, PAC-bayesian 등등 여러 유명한 이론들이 있고 

이 이론들은 모델의 수용력, 알고리즘의 성능등을 평가하기 위한 여러 틀을 제시한다. 이러한 '학습 이론'은 유한한 개수의 training data로부터 훈련한 알고리즘이 임의의 새로운 자료들 (test data)에 잘 적합되는 것 (일반화)이 가능하다는 것을 설명해준다.

하지만 이 이론들은 본 시리즈의 영역과 범위를 크게 넘어서기 때문에 자세한 소개는 넘어간다.

 

자, 다시 본론으로 들어가서 여기서 우리는 한 가지 문제점이 등장한다. $1$번 목표를 위해서라면 우리의 모델은 충분한 수용력, 복잡도를 가져야 한다. (현재 가지고 있는 데이터셋을 표현할 수 있는 함수를 현재 모델이 근사할 수 있어야 하므로.)

하지만, 과한 수용력, 복잡도를 가지게 되면 모델의 함수가 매우 높은 고차원의 함수가 되기 때문에, 새로운 데이터에 대한 오차값이 커지게 된다. (여기서 새로운 데이터란 학습할 때 모델이 경험하지 못한 데이터를 의미한다.)

(-> 즉, Validation loss가 증가)

 

 

* 여담이지만, 위 그래프는 전통적인 머신러닝 모델, 딥러닝 모델에는 일반적으로 잘 들어맞지만, 최근 overparameterized neural network는 위 그래프에 부합하지 않는다고 알려져 있다. overparameterized neural network는 train loss를 0에 가깝게 학습시켜도 좋은 일반화 성능을 갖고 있다. (Double descent phenomenon)

 

Best Fit을 기준으로 좌측은 underfitting (모델의 복잡도/수용력이 training dataset을 표현할만큼 충분히 높지 않은 상태),

우측은 overfitting (모델의 복잡도/수용력이 training dataset을 잘 표현하는 수준을 넘어서서 너무 복잡한 고차원의 함수가 되기 때문에)이다.

 

 

그렇다면 위와 같이 overfitting의 문제점을 보완하는 기술들은 무엇일까? 이것이 바로 정칙화 (regularization)라고 한다.

이를 본격적으로 들어가기 전에 마지막으로 필요한 배경 지식, Bias-Variance trade off를 이야기하자.

 

머신러닝 모델 학습을 '파라미터에 대한 통계적 추정'으로 볼 수 있다. 확률분포 변수의 참값  $\theta$에 대해 우리가 실제로 갖고 있는 추정값을 (estimator) $\tilde{\theta}$라고 하자. 

우리는 현재 갖고 있는 training dataset ($ \{x_1, \cdots, x_n \}$) 에 대해서 $\tilde{\theta}$는 다음과 같이 정의할 수 있다.

$\tilde{\theta} = f_{\tilde{\theta}}(x_1, \cdots, x_n)$

 

여기서 Bias (편향)란 다음과 같이 정의된다.

$bias(\tilde{\theta}) := \mathbb{E}(\tilde{\theta}) - \theta$

 

bias$(\tilde{\theta}) = 0$일 때, 추정값 $\tilde{\theta}$을 Unbiased estimator (불편추정량)이라고 한다.

이때 추정값 $\tilde{\theta}$도 하나의 확률분포이기 때문에 (분포로부터 random sampling된, 생성된 데이터에 대해 값이 바뀌므로) 분산이 있을 것이고 이 분산의 제곱근을 표준 오차 (standard error)라고 한다.

 

분산 : $\mathbb{E}[| \tilde{\theta} - \theta |^2]$.

편향과 분산은 estimator에 존재하는 오차의 서로 다른 두 원천을 측정한 값이다. 

그렇다면 bias가 작고, variance가 작은 estimator가 가장 최적의 estimator인데 우리가 이 목표를 항상 달성할 수 있는 것은 아니다. 그렇다면, "bias가 크고 variance가 작은 모델", "bias가 작고 variance가 큰 모델" 중 우리는 무엇을 선택해야 할까?

이를 판단할 때 머신러닝에서는 흔히 'Cross validation' 방법을 사용하거나 추정량들의 평균 제곱 오차 (MSE, Mean squared error)를 비교해서 선택할 수 있다.

이 때 MSE는 다음과 같이 정의된다.

$MSE = \mathbb{E}[(\tilde{\theta} - \theta)^2]

= Bias(\tilde{\theta})^2 + Var(\tilde{\theta})

 

MSE는 매개변수 추정치 $\tilde{\theta}$와 참값 $\theta$ 사이의 전반적인 기대 편차를 나타낸다.

이 식의 계산에는 우리의 두 관심사, bias와 variance가 모두 관여하고 MSE가 최소인 추정치는 결국 bias와 variance가 최소인 추정치를 선택하는 것으로 볼 수 있다.

하지만 항상 우리가 MSE가 최소인 최적의 estimator를 찾을 수 있는 보장은 할 수 없기 때문에 우리는 결국 bias와 variance를 적절하게 trade-off 시켜서 가장 괜찮은 estimator를 찾아나가야 한다.

(MSE가 같은 $\tilde{\theta}$라면 bias가 낮은 estimator 또는 variance가 낮은 estimator 중 선택해야 한다.)

 

Bias-variacnce의 trade-off 관계는 결국 앞서 언급한 모델의 수용력 (complexity), underfitting, overfitting 등과 밀접하게 관련돼 있다.

 

https://www.analyticsvidhya.com/blog/2020/08/bias-and-variance-tradeoff-machine-learning/

 

 

위 그래프를 보면 MSE가 같은 $\tilde{\theta}$집합의 모델에서 Bias, Variance의 차이는 Model의 complexity 차이에서 유래될 수 있음을 표현하고 있고, 가장 최적의 complexity를 가진 모델을 선택해야 우리는 가장 낮은 error를 가진 모델을 선택할 수 있음을 알 수 있다.

 

그렇다면 우리가 이제 다루고자 하는 Regularization technique에 대해 정의를 내려보자.

Regularization이 무엇인가에 대해 다음과 같이 이야기할 수 있다.

 

$1$. Training loss와 Validation loss의 차이를 최소화하기 위한 기술

$2$. Bias를 약간은 희생하더라도, Variance를 낮추기 위해 Model complexity를 규제하는 기술

$3$. Model의 Overfitting을 완화하기 위한 기술

 

전통적인 머신러닝에서는 적절한 크기의 파라미터를 갖는 model을 찾는 것이 regularization이었으나, 딥러닝에서는 다르다. layer가 무수히 많은 deep한 모델일수록 파라미터의 개수는 많고 이 모델의 complextiy는 클 것이다. 우리는 이 모델을 적절하게 규제 (정규화)하여서 최적의 모형 (=Expected risk가 최소인 모형) 을 찾아내는 방향으로 나아가야 한다. 즉, 단순히 파라미터의 개수를 줄이는 것이 정답이 아니다.

 

Regularization은 하나의 알고리즘/방법론을 표현하는 용어는 아니고, 위와 같은 목적의 기술들을 아우르는 표현이다.

가장 유명한 Regularization은 L1/L2-norm regularization, dropout, batch normalization 등이 있다.

다음 글에서는 위 3가지 기술들에 대해 이야기하도록 하겠다.

 

위 3가지 방법말고도 dataset의 크기를 늘리는 data augmentation, 학습을 조기 종료하는 early stopping 도 regularization 효과가 커서 많이 쓰이지만 본 시리즈에서는 위 3가지 기술들에 대해서만 소개하도록 하겠다.

728x90

댓글