[Pattern Recognition and Machine Learning] Chapter 1.1. Example: Polynomial Curve Fitting
PRML(Pattern Recognition and Machine Learning, Bishop) 정리 문서입니다.
다음 웹 사이트에서 관련 최신 자료를 확인할 수 있습니다.
https://www.microsoft.com/en-us/research/people/cmbishop/
본 chapter에서는 실수 값을 가지는 입력 변수인 $x$를 관찰한 후 이 값을 바탕으로 실수 값을 가지는 타겟 변수 $t$를 예측하고자 한다.
$$\sin \left(2\pi x\right)$$
위 함수를 통해 데이터를 임의로 만들었으며, 타겟 변수에는 random noise를 추가하였다.
위 그림은 데이터 수를 나타내는 N이 10일 경우(파란색 원)를 나타낸다.
- sample은 일정한 구간 단위로 추출되었으며, 노이즈가 포함된 상태이다.
위와 같이 노이즈에 의해 변질된 데이터를 이용하여 정확히 타겟 변수를 예측하는 것은 쉬운 일이 아니다.
즉, 어떤 값이 적합한지 불확실하다.
따라서, 다음의 이론을 이용하여 이를 살펴보고자 한다.
확률론(probability theory): 이러한 불확실성(uncertainty)을 정확하고 정량적으로 표현할 수 있게 한다.
의사 결정 이론(decision theory): 특정 기준에 따라 최적의 예측을 하는 데 있어 확률적인 표현을 활용할 수 있도록 한다.
$$y(x,w)=w_0+w_1x+w_2x^2+...+w_Mx^M=\sum _{j=0}^Mw_jx^j$$
위의 다항식(polynomial)을 통해 해당 곡선을 피팅해보자.
다항 함수 $y(x, w)$ 는 $x$에 대해서는 비선형이지만, 계수 $x$에 대해서는 선형이다.
다항 함수와 같이 알려지지 않은 변수에 대해 선형인 함수들은 중요한 성질을 지녔으며, 선형 모델이라 불린다.
다항식을 training set에 피팅해서 계수의 값들을 정할 수 있다.
Training set의 타겟들의 값과 함수값 $y(x, w)$와의 오차를 측정하는 오차함수(error function)을 정의하고 이 함수의 값을 최소화하는 방식으로 피팅할 수 있다.
나중의 편의를 위해 앞에 1/2이 추가되었다.
제곱의 합을 사용하는 이유는 y 함수가 convex를 만족하게 되어, 미분 가능한 최소화 문제를 풀 수 있기 때문이다.
정의된 에러 함수가 $w$ 에 대해 이차형식(quadratic)의 함수 꼴이므로, 이를 최소화 하는 값은 유일 해를 가지게 됨을 보장 받는다.
이 오차 함수를 최소화하는 $w$는 유일한 값인 $w^*$를 찾아낼 수 있다.
즉, 결과에 대당하는 다항식은 함수 $y(x,w^*)$의 형태를 띈다.
다항식의 차수 $M$을 결정하는 문제가 여전히 남아있다.
이러한 문제를 모델 비교(model comparison) 혹은 모델 결정(model selection)이라 한다.
위 그림은 M = 0, 1, 3, 9인 네 가지 경우에서 다항식을 피팅하는 예시를 보여준다.
상수(M = 0)와 일차(M = 1) 다항식을 사용할 경우에는 피팅이 잘 되지 않는다.삼차(M = 3) 다항식의 경우가 sin 함수를 가장 잘 표현하는 것으로 보인다.구차(M = 9) 다항식의 경우 완벽한 피팅이 가능하지만, 피팅된 곡선은 sing 함수를 완벽히 표현하지 못한다. -> 이것이 과적합(over-fitting)의 예이다.
각각의 차수 M에 대해서 잔차가 어떻게 변화하는지 확인 하는 것은 평균 제곱근 오차(root mean square error, RMS error)를 사용하면 편리하게 계산할 수 있다.
M = 9 일경우 training set의 오차는 0 이지만, test set의 오차가 급격하게 커지는 것을 확인할 수 있다.
이러한 지점이 위에서 언급한 과적합이 발생하는 지점이다.
이로부터 약간의 insight를 얻을 수 있는데,
다항 함수로부터 얻어진 w 의 값을 확인해보면 M = 9 에서 각각의 w 값들이 매우 크거나 매우 작은 것을 알 수 있다.
이는 데이터 주변으로 모델 함수를 최대한 가깝게 이동시키기 위해 각각의 w 값을 극단적으로 보정하려고 했기 때문이다.
-> (항상 그런 것은 아니지만) 과적합 시의 모수 값들은 서로 편차가 커지게 되는 현상을 보인다.
만약 데이터 집합의 크기가 달라지는 경우는 어떻게 될까?
모델의 복잡도를 일정하게 유지시킬 때, 사용하는 데이터 집합의 수가 늘어날수록 과적합 문제가 완화되는 것을 확인할 수 있다.
즉, 데이터 집합의 수가 클수록 더 복잡한(더 유연한) 모델을 활용하여 피팅할 수 있다.
(경험적으로 모델의 hyper-parameter 수의 일정 숫자(5 or 10)를 곱한 것 이상의 데이터 포인트가 있는 것이 필요하다)
앞으로 살펴볼 최대 가능도(maximum likelihood)를 통해 이 문제를 좀 더 살펴볼 것이다.
또한 베이지안(Bayesian) 접근 방식을 통해 이 문제를 해결하고 효율적으로(effective) 모델 파라미터 개수를 결정하는 것도 확인할 것이다.
과적합 문제를 해결하기 위해 자주 사용되는 기법 중 하나는 바로 정규화(regularization)다.
위 식 1.2 오차 함수에 계수의 크기가 커지는 것을 막기 위한 페널티항을 추가하는 것이다. (이러한 현상은 주로 회귀(regression)문제 등에서 나타난다.)
w가 취할 수 있는 값의 범위를 제한하여 가급적 큰 범위의 값을 가지는 w가 등장하지 못하도록 막는 것이 정규화의 핵심이다.
여기서 $∥w∥^2≡w^Tw≡w_0^2+w_1^2+\dots +w_M^2$이며, 계수 $\lambda$가 정규화항의 제곱항 오류항에 대한 상대적 중요도를 결정짓는다.
식 1.4의 오차 함수의 최솟값을 찾는 문제도 닫힌 형식이기 때문에, 앞의 방법 처럼 미분을 통해 유일해를 찾아낼 수 있다.
통계학 문헌들에서 이러한 방법을 수축법(shrinkage method)이라고 한다. (방법 자체가 계수의 크기를 수축시키는 방식을 이용하기 때문)
이차 형식(quadratic) 정규화는 리지 회귀(ridge regression)라고 부르며, 일차 형식 정규화는 라소 회귀(lasso regression)라고 부른다. 뉴럴 네트워크 맥락에서는 이를 가중치 감쇠(weight decay)라 한다.
위 그림을 통해 $\lambda$의 영향을 확인할 수 있다.
$ln\lambda=-18$인 경우 과적합이 많이 줄어들었으며, 기존의 sin 함수와 매우 근접한 것을 확인할 수 있다.
하지만, 너무 큰 $\lambda$ 값은 좋지 않은 피팅 결과를 얻게 된다. (그림 오른쪽 $ln\lambda=0$ 사례)
1.3 절에서 모델의 복잡도와 이에 관련된 내용들에 대해 자세히 알아볼 것이다.
여기서는 오차 함수를 줄이는 방식으로 문제를 해결할 경우에는, 적합한 정도의 모델 복잡도를 선택하는 방법을 잘 활용해야 한다 정도로 이해하면 되겠다.
지금까지의 결과를 바탕으로 모델 복잡도를 잘 선택하는 단순한 방법 하나를 생각해 볼 수 있다.
데이터 집합을 training set과 validation set으로 나누는 것이다.
Training set은 계수 $w$를 결정하는데 활용하고, validation set은 모델 복잡도($M$ or $\lambda$)를 최적화하는 데 활용하는 방식이다.
[Pattern Recognition and Machine Learning] Chapter 1. Introduction (0) | 2021.09.25 |
---|
댓글 영역