티스토리 뷰
본 내용은 Coursera에서 Andrew ng 의 Machine Learning(기계학습, 머신러닝)을 수강한 내용을 정리한 것입니다. 이번 장에서는 Overfitting(과적합)문제와 이를 해결하기 위한 Regularization(정규화)에 대해서 알아보도록 하겠습니다.
1. The Problem of overfitting
[ Example: Linear Regression ]
위와 같은 Linear Regression 집값 예측 문제가 있다고 할 때, 직선의 가설함수를 세울 때, 이차함수의 가설함수를 세울 때, 다차 함수의 가설함수를 세울 때 각각의 상황에 대한 판단이 아래와 같이 내려집니다.
직선: Underfitting or high-bias
이차함수: Just Right
다차함수: Overfitting
직선으로 가설함수를 세우는 경우에는 데이터가 가설함수에 잘 들어맞지 않고 강한 선입견(Pre-Conceptual)을 갖는다고 하여 Underfitting 또는 high-bias 문제를 갖고 있다고 합니다. 2차함수의 가설함수는 size가 커지면 감소하기 때문에 적합한 가설함수는 아니지만 그래도 주어진 데이터들은 꽤나 잘 들어맞는 것으로 보입니다. 다차함수의 가설함수는 지나치게 데이터를 맞추려고 하다보니 커브가 많이 생기고 휘어지는 등 High Variance(높은 분산) 또는 Overfitting(과적합) 문제가 발생합니다. 물론 주어진 훈련용 데이터에 관해서는 매우 좋은 성능을 나타내지만 새로운 Data가 왔을 때 제대로 된 예측을 하기에는 부족합니다. 즉, 많은 Feature를 가지고 있는 경우에 가설함수가 훈련용 데이터에 관해서는 비용함수가 0에 근접할 정도로 매우 잘 맞지만 새로운 데이터들이 오면 일반화를 하는데 실패하는 것을 과적합 문제라고합니다. 어떤 고차함수를 데이터에 맞추려고 할 때 맞출수는 있지만 커다란 변동성을 갖게 되는데, 이러한 변동성에 의해 새로운 examples에 대해서 제대로된 예측을 하지 못하는 문제입니다.
[ Example: Logistic Regression ]
예를 들어 위와 같은 Logistic Regression 문제가 있다고 할 때, 3가지 가설함수 역시도 각각 다른 모습을 보여줍니다.
직선: Underfitting or High bias
이차식: Just Right
다차식: Overfitting or High variance
첫번째 직선의 경우는 직선과 데이터들이 잘 들어맞지 않습니다. 두번째 포물선의 경우에는 우리가 얻을 수 있는 최적의 선으로 보입니다. 마지막으로 엄청 고차원의 가설함수를 만들면 데이터에 딱 맞는 자잘자잘 꼬여진 Decision Boundary를 갖게 되지만 제대로 된 예측을 해내지 못합니다. 그리고 이를 Overfitting or High Variance 문제라고 합니다.
[ Addressing overfitting ]
그렇다면 먼저 과적합인지를 어떻게 알아낼 수 있을까요?
가설함수의 그래프를 그려보기
학습데이터가 너무 적지 않은지 검사하기
이러한 과적합 문제를 해결하기 위해서는 아래의 2가지 방법을 수행하면 됩니다.
Reduce number of features
Regularization
먼저 Feature들 중에서도 중복이 되거나 예측을 하는데 중요한 요소가 아닌 Feature들이 있을 수 있습니다. 그러므로 불필요한 Feature들을 먼저 제거해주거나 알고리즘이 어떤 특성을 사용할 것인지 자동으로 선택해주는 Model Selection Algorithm을 이용할 수도 있습니다. 그리고나서 Regularization(정규화)를 해주면 되는데, 정규화는 모든 특성을 유지하되 $\theta$ 에 미치는 영향규모를 줄이는 것으로 y를 예측하기 위한 수많은 Feature들이 존재하며 그 Feature들이 y에 영향을 주는 경우에 잘 작동합니다. 즉, Regularization은 모델이 너무 복잡해지지 않도록 임의로 제약을 가하는 것입니다.
2. Cost Function
[ Intuition ]
위와 같은 Linear Regression 집값 예측 문제에서 왼쪽의 경우는 잘들어맞는 경우이며 오른쪽의 경우는 Overfitting이 걸린 경우입니다. 그래서 우리는 $\theta_3$ 와 $\theta_4$ 를 최소화하기를 바랍니다. 그렇게 되서 $\theta_3$ 와 $\theta_4$ 가 0에 근접한다면 가설함수는 2차함수에 근접해는 동시에 더욱 간단하며 smooth해질 뿐 아니라 결과적으로 Overfitting하는 경향이 줄어들 것입니다. 즉, $\theta_3$ 와 $\theta_4$ 에 각각 가중치(Penalty)를 먼저 부여하여(여기서는 1000) $\theta$ 들을 구한 후에는 다시 Penalty를 제거함으로 $\theta_3$ 와 $\theta_4$를 최소화시키자는 아이디어입니다. 이렇게 하면 4차함수 모델을 2차함수의 모델에 거의 근접하도록 만들 수 있습니다. $$ \min_{\theta} \frac{1}{2m} \sum_{i=1}^{m} \left( h_\theta (x^{(i)})-y^{(i)} \right) ^2 \color{red}{ + 1000} \theta_3^2 + \color{red}{1000} \theta_4^2 $$
[ Regularization ]
"Simpler" Hypothesis
Less prone to overfitting
만약 Parameter들이 정규화를 통해 작은 값을 갖게 된다면, 복잡한 커브를 많이 지녔던 가설함수는 더욱 간단해질 것이며, Overfitting의 문제가 줄어드는 경향을 보일 것이다. 그래서 각 $\theta$ 에 가중치를 부여하기 위해서 기존의 비용함수를 아래와 같이 수정할 수 있습니다. $$ J(\theta) = \frac{1}{2m} \sum_{i=1}^{m} \left( h_\theta( x^{(i)}) - y^{(i)} \right)^2 \color{royalblue}{+ \lambda \sum_{i= \color{red}{1}}^{100} \theta_j^2} $$ 여기서 합이 1부터 시작하는 이유는 $\theta_0$ 은 1로 고정되어있으므로 줄여줄 필요가 없기 때문입니다. 여기서 $\lambda$ 는 Regularization Parameter로 비용함수와 정규화의 균형을 유지함으로 Hypothesis Function을 Simple하게 만들어 Overfitting을 피하게 해줍니다.
기존에 정규화를 하지 않은 파란색의 함수는 상당히 많이 구부러져 제대로 된 예측을 하지 못하는 반면에 정규화를 하여 보다 smooth하고 simple해진 파란색 함수는 보다 좋은 가설함수로 보입니다. 단, 여기서 $\lambda$ 가 너무 크면 Underfitting하는 문제가 발생하여 $\theta$ 들 중에서 $\theta_0$ 만 남게 될 것입니다. 그러므로 적절한 $\lambda$ 값을 정해주는 것이 중요합니다.
3. Regularized Linear Regression
[ Regularized Linear Regression ]
$$ J(\theta) = \frac{1}{2m} \left[ \sum_{i=1}^{m} \left( h_\theta(x^{(i)}) - y^{(i)} \right)^2 \color{royalblue}{+\lambda\sum_{j=1}^{n} \theta_j^2} \right]$$ $$ \min_\theta J(\theta) $$ Linear Regression 문제에서 최적의 parameter를 찾는 데에는 Gradient Descent와 Normal Equation을 이용하는 2가지 방법이 있습니다.
[ Gradient Descent ]
Repeat until convergence{
$\theta_0 := \theta_0 - \alpha \frac{1}{m}\sum_{i=1}^{m} \left( h_\theta( x^{(i)}) - y^{(i)} \right) x_0^{(i)}$
$\theta_j := \theta_j(1- \alpha \frac{\lambda}{m}) -\alpha\frac{1}{m} \sum_{i=1}^{m} \left( h_\theta(x^{(i)}) - y^{(i)} \right) x_j^{(i)} $
} simultaneously update for every $j=0,...,n$
$\theta_0$ 는 Penalize 하지 않기 때문에 Regularized Gradient Descent를 위한 알고리즘에서 따로 처리해주어야 합니다. 여기서 $\alpha \frac{\lambda}{m} \gt 0 $ 이므로 $ 1 \gt \alpha \frac{\lambda}{m}$ 이며 이 식은 $\theta_j$ 가 점점 작아지는 효과를 보여줄 것입니다.
[ Normal Equation ]
기존의 $\theta = (X^TX)^{-1}X^ty$ 였다면 Regularized된 Normal Equation은 다음과 같습니다. $$\theta = (X^TX + \lambda\left[ \begin{array}{ccc} 0&0&0&0\\ 0&1&0&0\\ 0&0&1&0\\ 0&0&0&1 \end{array} \right])^{-1}X^ty$$ 여기서 $\lambda$ 에 곱해진 행렬은 n개의 Feature들에 $\theta_0$ 가 더해진 n+1, n+1크기의 행렬입니다.
[ Non-invertibility ]
예를 들어 $ m \leq n$ 이라고 할 때, 우리는 $X^{T}X$ 가 Non-invertible/Singular 라는 것을 알 수 있습니다. 하지만 Regularized Normal Equation을 사용하면 역행렬이 항상 존재하게됩니다.
4. Regularized Logistic Regression
[ Regularized Logistic Regression ]
위와 같은 Logistic Regression 문제를 해결하기 위한 비용함수는 다음과 같습니다.$$ J(\theta) = - \left[ \frac{1}{m} \sum_{i=1}^{m} y^{(i)}\log h_{\theta}\left(x^{(i)}\right) + \left(1-y^{(i)}\right)\log \left(1-h_{\theta}\left(x^{(i)}\right)\right) \right] + \color{red}{\frac{\lambda}{2m}\sum_{j=1}^{n}{\theta_j}^2} $$
[ Gradient Descent ]
Repeat until convergence{
$\theta_0 := \theta_0 - \alpha \frac{1}{m}\sum_{i=1}^{m} \left( h_\theta( x^{(i)}) - y^{(i)} \right) x_0^{(i)}$
$\theta_j := \theta_j(1- \alpha \frac{\lambda}{m}) -\alpha\frac{1}{m} \sum_{i=1}^{m} \left( h_\theta(x^{(i)}) - y^{(i)} \right) x_j^{(i)} $
} simultaneously update for every $j=0,...,n$
Gradient Descent 는 외관상으로 Linear Regression동일한 것으로 보이지만 $h_\theta(x)$ 가 다르기 때문에 다르게 작동합니다.
관련 포스팅
- 기계학습이란? (1/11)
- 지도 학습과 비지도 학습 (2/11)
- Model and Cost Function (3/11)
- Gradient Descent (4/11)
- Multivariate Linear Regression (5/11)
- Logistic Regression (6/11)
- Regularization (7/11)
- Neural Networks: Representation (8/11)
- Neural Networks: Learning (9/11)
- Advice for Applying Machine Learning (10/11)
- Machine Learning System Design (11/11)
'인공지능' 카테고리의 다른 글
[Machine Learning] Neural Networks:Learning (0) | 2018.01.13 |
---|---|
[Machine Learning] Neural Networks:Representation (0) | 2018.01.08 |
[Machine Learning] Logistic Regression (1) | 2017.12.31 |
[Machine Learning] Gradient Descent (2) | 2017.12.20 |
[Machine Learning] Model and Cost Function (0) | 2017.12.18 |