본문 바로가기
딥러닝

3. Generalization

by 볼록티 2020. 3. 28.
728x90
반응형

딥러닝의 핵심 컨셉인 Generalization 에 대하여 알아보자.

 

 

 

아래의 그림을 살펴보자. 어떤게 좋은 모델일까?

M은 차수를 나타낸다. polinomial degree.

왼쪽 위부터 그림을 보면 빨간색 직선이 관측치 파란 점들의 분포를 제대로 설명해주고 있지 않다. 이것은 관측치들의 평균값(상수)을 직선상에 표시한 그래프로써 예측이라기 보다는 하나의 대푯값으로 사용한다. 

 오른쪽 위의 그림은 실제값 파란점들은 곡선을 따라 유하게 분포되어 있는데 이를 직선으로 표현하려니 파란점들의 분포를 제대로 설명할 수 없다.

 왼쪽 아래의 그래프의 경우 파란색 실제값 분포를 곡선형태의 함수 그래프로 표현하여 대부분의 파란점들을 표현할 수 있다. 그 오른쪽의 그래프를 보면 모든 파란점들을 지나는 함수 그래프를 그림으로써 100% 파란점들에 대한 설명을 할 수 있지만, 이 고차원의 그래프는 새로운 파란점이 등장할 경우 전혀 새로운 엉뚱한 예측을 하게 된다. 이러한 현상을 overfitting이라고 한다. 즉 학습 데이터에 너무 치중되어 있어서 새로운 데이터에 대해 대비가 되지 않는 다는 것이다.

 

즉 세번째그림인 왼쪽 아래의 그래프에서 나타난 빨간색 함수 그래프는 다음과 같은 식으로 표현할 수 있을 것이다.

$\hat{y} = \beta_{0} + beta_{1} x_{1} + beta_{2} x_{2} + beta_{3} x_{3}$

 

 

 

 

Overfitting and Underfitting 

 

* 우리가 만든 모델은 새로운 입력에 대하여 성능이 좋게 잘 작동을 해야한다. 이러한 능력을 우리는 generalization 이라고 하는 것이다. 

 

* 전형적으로 머신러닝 모델을 학습시킬 때 우리는 훈련데이터 셋에 접근을 한다.

  - 훈련데이터 셋에서 학습과 오차를 계산하는 것은 훈련데이터 셋의 오차를 줄이는 것이다

  - 우리는 generalization error(a.k.a test error)가 낮아지기를 원한다.

  - generalization error는 새로운 입력에 대한 오차의 기댓값이라고 할 수 있다.

  - 우리는 훈련데이터 셋으로부터 분리된 테스트셋에서 성능을 측정함으로써 genaralization error를 추정하게 된다.

 

머신러닝이 얼마나 잘 작동하는지를 결정하는 요소로는 훈련데이터셋으로부터 나오는 training error를 낮추고, 또한 테스트데이터셋과 훈련데이터셋 사이의 오차의 간격을 줄이는 것으로 확인할 수 있다.

즉, overfitting과 underfitting을 최대한 모두 피해야한다. 아래의 그림의 가운데 처럼 말이다.

 

 

 

위의 그림은 언더피팅과 오버피팅의 이해를 도와 일반화 갭을 줄이는 이해를 돕기 위한 그림이다. x축을 기준으로 Capacity가 증가할수록 Training error와 Generalization error의 갭이 멀어지게 되는데 이는 곧 test set에 대한 error가 증가하게 되면서 Generalization에서 멀어진다는 것을 나타낸다. 

 Capacity는 위의 그래프에서 본 polynomial function에서 M이라고 생각하면된다. 차수. 즉 얼마나 관측치에 더더더더 가깝게 분포를 그려내느냐 대신 너무 오버피팅되지않게 적당히 끊어주어야 한다. 그 지점이 바로 Optimal Capacity라고 빨간줄 그어놓은 곳이다. 저 지점이 가장 Genaralization error가 낮은 지점이다. 

 

최근에는 이렇게 오버피팅을 하면할수록 당연히 Generalization error가 커진다고 생각했는데 계속 하다보며 다시 줄어드는 구간이 생긴다하여 이에 대한 연구가 계속되고 있다고 한다. 위의 그림에서 초록색 점선으로 친 부분 말이다.

 

 

어떻게 오버피팅을 피할까?

* Regularization

 training error가 아닌 ! generalization error를 줄이기 위한 학습 알고리즘을 만드는 약간의 수정을 통해서 일반화를 도울 수 있게 되는데 예시를 보자.

 

* Example

$l(\beta) = MSE_{train}  + \lambda\Omega (\beta)$

비용함수(cost function; 크면안좋음.)로써 오메가 베타라는 것을 목적함수(objective function;우리가최소화하려는)에 더함으로써 표현한다. 람다 상수(constant)는 이 비용함수의 가중치 조율(상대적인 중요도를 결정)을 위한 설정값이라고 하겠다.

 

$\Omega (\beta)$ 의 의미는 회귀식에서 나온 $\beta$를 생각해보면 그 추정식이 polynomial function 의 degree가 커질수록 오버피팅 된다는 말을 했었는데, 여기서 이 $\Omega (\beta)$ 는 $ \beta^{T} \beta$로 표현된다. 즉 이 magnitude(크기)가 커질수록 오버피팅된다고 할 수 있기 때문에 위 식의 목적함수 부분을 최소화시키는 우리의 목표에다가 이 오메가 term을 붙여서 둘다 최소화 시킴으로써 generalization을 돕자라는 의미이다.

 

여기서 베타를 내적하느냐 아니면 그냥 벡터내 값의 합으로 할 것이냐에 따라서 L2 regularization 과 L1 regularization 으로 나뉘고 각각 ridge, lasso 회귀로 분류된다. 자세한 설명은 searching the internet ~!

 

 

Hyperparameters and validation sets

대부분의 머신러닝 알고리즘은 하이퍼파라미터를 가지고 있다. 선형회귀와 같은 경우는 없다. 우리가 추정하는 $\beta_{i}$베타 값들만 찾으면 되는 식이기 때문이다.

 

훈련데이터셋을 기반으로 하이퍼파라미터를 고르는 건 적!절!치! 않다. 

 -> 바로 오버피팅 되어버리죠~. 오버피팅을 하고 싶어서 안달이 난거죠~.

 

그럼 어디에다가 적용을 할까? validation 셋을 만들자. 훈련데이터

 

 

validation셋은 training셋에서 쪼개서 만든 데이터셋이다. 이 validation 셋에다가 하이퍼 파라미터에 대한 실험과 학습을 진행하는 것이다. 이후 Test셋에서 학습한 모델을 토대로 성능을 측정한다. 아래의 그림의 빨간 글씬 우리 테스트 데이터셋은 절대 건들지 맙시다. 섞이면 안됩니다. 그런 뜻이다.

 

 

머신러닝 분류표

 

 

 

 

 

 

 

 

 

sangheumHwang. deep learning. [Graduate Class at Seoultech]

 

 

 

 

 

 

 

 

728x90
반응형

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

binary classification_multi perceptron  (0) 2020.06.20
MNIST 데이터를 활용한 딥러닝 기초  (2) 2020.05.16
4. How Deep learning work  (0) 2020.03.28
2. Machine learning  (0) 2020.03.28
1. Introduction to Deep Learning  (0) 2020.03.28

댓글