선형 회귀의 모든 것 - Part 2.

선형 회귀의 모든 것 - Part 2.
Photo by Conny Schneider / Unsplash

지난 포스트에서는 선형회귀의 기본적인 구조와 비용 함수, 경사하강법을 살펴본 뒤, 데이터가 확률분포에 따라 생성된다고 보는 확률 모형을 간단히 소개하며 글을 마무리했다. 처음 접하는 독자에게는 확률 모형이 앞선 내용과 다소 동떨어진 것으로 느껴질 수 있다.

한편 선형회귀를 학습할 때는 일반적으로 평균제곱오차를 비용 함수로 사용한다. 그러나 절댓값 오차나 다른 형태의 함수를 사용할 수도 있는데, 왜 하필 오차의 제곱을 최소화하는 것일까? 단순히 미분하기 편하고 계산이 간단하기 때문일까?

놀랍게도 이 질문에 대한 답은 앞서 소개한 확률 모형에서 얻을 수 있다. 실제 관측값이 선형회귀 모델의 예측값을 중심으로 정규분포를 따른다고 가정하면, 관측된 데이터가 나타날 가능성을 가장 크게 만드는 과정은 정확히 제곱오차를 최소화하는 과정과 일치한다. 이번 글에서는 이를 설명하기 위해 우도와 최대 우도 추정의 개념을 살펴보고, 평균제곱오차가 선형회귀의 확률적 가정으로부터 어떻게 자연스럽게 유도되는지 알아본다.


5. 최대 우도 추정

앞 절에서는 데이터가 파라미터에 의해 결정되는 확률분포로부터 생성된다고 보았다. 그러나 실제로 데이터를 생성한 파라미터는 알 수 없으므로, 관측된 데이터로부터 그 값을 추정해야 한다.

최대 우도 추정(MLE, Maximum Likelihood Estimation)은 관측된 데이터를 가장 그럴듯하게 만드는 파라미터를 선택하는 방법이다.

우도 함수

파라미터 \(\theta\)에 따라 데이터가 생성되는 확률 모형이 주어졌다고 하자. 관측된 데이터 집합을 \(\mathcal D\)라 하면 다음을 \(\theta\)우도 함수(likelihood function)라고 한다.

\[ L(\theta;\mathcal D)=p(\mathcal D\mid\theta) \]

확률과 우도는 같은 수식을 사용하지만 관점이 다르다. 확률에서는 파라미터 \(\theta\)를 고정하고 어떤 데이터가 나타날 가능성을 생각한다. 반면 우도에서는 이미 관측된 데이터 \(\mathcal D\)를 고정하고, 그 데이터를 가장 잘 설명하는 파라미터가 무엇인지 생각한다.

최대 우도 추정량은 우도 함수를 가장 크게 만드는 파라미터로 정의한다.

\[ \hat{\theta}_{\mathrm{MLE}} = \operatorname*{argmax}_{\theta} L(\theta;\mathcal D) \]

각 데이터가 주어진 파라미터 아래에서 서로 독립이라면 전체 데이터의 우도는 각 데이터가 나타날 확률의 곱으로 표현된다.

\[ L(\theta;\mathcal D) = \prod_{i=1}^{m} p\left(z^{(i)}\mid\theta\right) \]

많은 확률을 곱하면 값이 매우 작아져 수치 계산이 불안정해질 수 있다. 또한 곱의 미분은 계산이 복잡하다. 따라서 실제로는 우도에 로그를 취한 로그 우도(log-likelihood)를 주로 사용한다.

\[ \ell(\theta)=\log L(\theta;\mathcal D) \]

로그 함수는 단조 증가 함수이므로 다음이 성립한다.

\[ \operatorname*{argmax}_{\theta}L(\theta;\mathcal D) = \operatorname*{argmax}_{\theta}\log L(\theta;\mathcal D) \]

또한 로그를 취하면 확률의 곱을 합으로 바꾸어 다룰 수 있다.

\[ \ell(\theta) = \sum_{i=1}^{m} \log p\left(z^{(i)}\mid\theta\right) \]

동전 던지기의 최대 우도 추정

예시: 동전 던지기

앞면이 나올 확률이 \(p\)인 동전을 \(n\)번 독립적으로 던졌다고 하자. 그 결과 앞면이 \(k\)번, 뒷면이 \(n-k\)번 나왔다. 관측된 결과를 가장 잘 설명하는 \(p\)의 값을 최대 우도 추정으로 구해보자.

앞면의 수 \(K\)는 이항분포를 따른다.

\[ K\sim\operatorname{Binomial}(n,p) \]

따라서 앞면이 정확히 \(k\)번 나타날 우도는 다음과 같다.

\[ L(p) = \binom{n}{k}p^k(1-p)^{n-k} \]

여기서 데이터인 \(n\)\(k\)는 이미 고정되어 있고, \(p\)만 변화하는 변수이다. 로그 우도를 구하면 다음과 같다.

\[ \ell(p) = \log\binom{n}{k} + k\log p + (n-k)\log(1-p) \]

\(p\)와 무관한 상수항 \(\log\binom{n}{k}\)는 최댓값의 위치에 영향을 주지 않는다. 로그 우도를 미분하면 다음을 얻는다.

\[ \frac{d\ell}{dp} = \frac{k}{p} - \frac{n-k}{1-p} \]

이를 \(0\)으로 두면 다음과 같다.

\[ \begin{aligned} \frac{k}{p} &= \frac{n-k}{1-p},\\ k(1-p) &= p(n-k),\\ k &= np \end{aligned} \]

따라서 다음의 최대 우도 추정량을 얻는다.

\[ \hat p_{\mathrm{MLE}}=\frac{k}{n} \]

즉, 동전의 앞면 확률에 대한 최대 우도 추정값은 실제 시행에서 관측된 앞면의 비율이다.

\(0<k<n\)일 때 로그 우도의 이계도함수는 다음과 같다.

\[ \frac{d^2\ell}{dp^2} = -\frac{k}{p^2} - \frac{n-k}{(1-p)^2} \lt 0 \]

그러므로 위에서 구한 값은 실제로 로그 우도의 최댓값이다.

예를 들어 동전을 \(100\)번 던져 앞면이 \(63\)번 나왔다면 다음과 같이 추정한다.

\[ \hat p_{\mathrm{MLE}} = \frac{63}{100} = 0.63 \]

6. 최대 우도 추정과 평균제곱오차

이제 최대 우도 추정을 이용해 선형 회귀의 평균제곱오차를 유도해보자. 중요한 점은 오차가 정규분포를 따른다고 가정하는 것이다.

확률적 선형 회귀 모형

\(i\)번째 훈련 예제의 출력값이 다음과 같이 생성된다고 가정하자.

\[ y^{(i)} = \theta^Tx^{(i)} + \varepsilon^{(i)} \]

여기서 \(\varepsilon^{(i)}\)는 측정 오차나 모델이 설명하지 못하는 요인을 나타내는 잡음(noise)이다.

선형 회귀에서는 일반적으로 잡음들이 서로 독립이고, 평균이 \(0\), 분산이 \(\sigma^2\)인 정규분포를 따른다고 가정한다.

\[ \varepsilon^{(i)} \overset{\mathrm{i.i.d.}}{\sim} \mathcal N(0,\sigma^2) \]

기호 \(\mathrm{i.i.d.}\)는 각 확률변수가 서로 독립이며 동일한 확률분포를 따른다는 뜻이다.

위 가정에 따르면 다음이 성립한다.

\[ y^{(i)}\mid x^{(i)} \sim \mathcal N\left( \theta^Tx^{(i)},\sigma^2 \right) \]

즉, 입력 \(x^{(i)}\)가 주어졌을 때 출력값은 모델의 예측값 \(h_\theta(x^{(i)})=\theta^Tx^{(i)}\)을 평균으로 하는 정규분포를 따른다.

따라서 확률밀도함수는 다음과 같다.

\[ p\left( y^{(i)} \mid x^{(i)},\theta,\sigma^2 \right) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left( -\frac{ \left(y^{(i)}-\theta^Tx^{(i)}\right)^2 }{ 2\sigma^2 } \right) \]

전체 훈련 집합의 우도

각 훈련 예제의 잡음이 서로 독립이므로, 전체 훈련 집합의 우도는 각 확률밀도의 곱이다.

\[ \begin{aligned} L(\theta,\sigma^2) &= \prod_{i=1}^{m} p\left( y^{(i)} \mid x^{(i)},\theta,\sigma^2 \right)\\ &= \prod_{i=1}^{m} \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left( -\frac{ \left(y^{(i)}-\theta^Tx^{(i)}\right)^2 }{ 2\sigma^2 } \right)\\ &= (2\pi\sigma^2)^{-m/2} \exp\left( -\frac{1}{2\sigma^2} \sum_{i=1}^{m} \left( y^{(i)}-\theta^Tx^{(i)} \right)^2 \right) \end{aligned} \]

로그 우도를 취하면 다음을 얻는다.

\[ \ell(\theta,\sigma^2) = -\frac{m}{2}\log(2\pi\sigma^2) - \frac{1}{2\sigma^2} \sum_{i=1}^{m} \left( y^{(i)}-\theta^Tx^{(i)} \right)^2 \]

\(\sigma^2\)가 고정되어 있다고 생각하면 첫 번째 항은 \(\theta\)와 무관한 상수이다. 또한 \(1/(2\sigma^2)\)는 양수이므로, 로그 우도를 최대화하는 것은 제곱 오차의 합을 최소화하는 것과 같다.

\[ \begin{aligned} \hat{\theta}_{\mathrm{MLE}} &= \operatorname*{argmax}_{\theta} \ell(\theta,\sigma^2)\\ &= \operatorname*{argmin}_{\theta} \sum_{i=1}^{m} \left( y^{(i)}-\theta^Tx^{(i)} \right)^2\\ &= \operatorname*{argmin}_{\theta} \lVert X\theta-y\rVert_2^2 \end{aligned} \]

목적 함수에 양의 상수를 곱하거나 나누어도 최솟값을 만드는 파라미터는 변하지 않는다. 따라서 다음이 성립한다.

\[ \operatorname*{argmin}_{\theta} \lVert X\theta-y\rVert_2^2 = \operatorname*{argmin}_{\theta} \frac{1}{2m} \lVert X\theta-y\rVert_2^2 \]

오른쪽 식은 앞에서 정의한 선형 회귀의 비용 함수 \(J(\theta)\)와 일치한다.

따라서 선형 회귀에서 제곱 오차를 사용하는 것은 단순히 계산이 편리하기 때문이 아니다. 실제 출력이 선형 예측값을 중심으로 정규분포를 따른다고 가정하면, 제곱 오차는 최대 우도 추정으로부터 자연스럽게 유도할 수 있다.

확률분포와 비용 함수의 관계

평균제곱오차가 모든 회귀 문제에서 반드시 사용되어야 하는 것은 아니다. 비용 함수의 형태는 출력값에 어떤 확률 모형을 가정하는지에 따라 달라진다.

예를 들어 잡음이 정규분포가 아니라 라플라스 분포를 따른다고 가정하면, 최대 우도 추정은 다음 값을 최소화하는 문제로 이어진다.

\[ \sum_{i=1}^{m} \left| h_\theta(x^{(i)})-y^{(i)} \right| \]

이는 평균절대오차(MAE, Mean Absolute Error)에 해당한다.

또한 출력이 \(0\) 또는 \(1\)인 베르누이 확률변수라면 최대 우도 추정으로부터 교차 엔트로피(cross-entropy) 비용 함수가 유도된다.

따라서 비용 함수는 임의로 선택되는 대상으로 접근하기보다, 데이터가 생성되는 방식에 대한 확률적 가정을 반영한 결과로 보는 것이 합리적이다.

7. 연습문제

1. 선형 회귀 모델의 예측값과 비용 함수를 계산하시오.

다음 설계 행렬, 출력 벡터, 파라미터가 주어졌다.

\[ X= \begin{pmatrix} 1&0\\ 1&1\\ 1&2 \end{pmatrix}, \qquad y= \begin{pmatrix} 1\\ 2\\ 4 \end{pmatrix}, \qquad \theta= \begin{pmatrix} 1\\ \frac32 \end{pmatrix} \]
(1) 예측 벡터 \(X\theta\)와 오차 벡터 \(X\theta-y\)를 구하시오.
(2) 다음 값을 각각 구하시오.
\[ \operatorname{MSE}(\theta) = \frac13\lVert X\theta-y\rVert_2^2, \qquad J(\theta) = \frac16\lVert X\theta-y\rVert_2^2 \]
2. 비용 함수를 직접 최소화하여 최적의 파라미터를 구하시오.

다음 세 훈련 예제에 대하여

\[ (0,1),\qquad(1,2),\qquad(2,5) \]

절편이 \(1\)로 고정된 선형 회귀 모델을 사용한다.

\[ h_a(x)=1+ax \]
(1) 비용 함수를 \(a\)에 대한 이차식으로 나타내시오.
\[ J(a) = \frac16 \sum_{i=1}^{3} \left( h_a(x^{(i)})-y^{(i)} \right)^2 \]
(2) \(J'(a)=0\)을 이용하여 \(J(a)\)를 최소화하는 \(a\)를 구하시오.
(3) 구한 모델을 이용하여 \(x=3\)에서의 출력값을 예측하시오.
3. 경사하강법의 수렴을 분석하시오.

2번 문제의 비용 함수에 대하여 다음을 이용하자.

\[ J'(a)=\frac{5a-9}{3} \]

경사하강법의 갱신식은 다음과 같다.

\[ a^{(t+1)} = a^{(t)} - \alpha\frac{5a^{(t)}-9}{3} \]
(1) 최적값 \(a^*=\frac95\)에 대하여 오차 \(e^{(t)}=a^{(t)}-a^*\)를 정의하자. 다음 관계를 유도하시오.
\[ e^{(t+1)} = \left( 1-\frac{5\alpha}{3} \right)e^{(t)} \]
(2) \(a^{(t)}\)\(a^*\)로 수렴하기 위한 학습률 \(\alpha\)의 범위를 구하시오.
(3) \(a^{(0)}=0\), \(\alpha=\frac{3}{10}\)일 때 \(a^{(1)}\)\(a^{(2)}\)를 구하시오.
4. 사건 발생 횟수의 최대 우도 추정량을 구하시오.

어떤 웹 서버에 1분 동안 접속하는 사용자의 수를 확률변수 \(Z\)라 하자. \(Z\)가 파라미터 \(\lambda>0\)인 푸아송 분포를 따른다고 가정한다.

\[ P(Z=z\mid\lambda) = \frac{e^{-\lambda}\lambda^z}{z!}, \qquad z=0,1,2,\ldots \]

서로 독립인 다섯 번의 관측 결과가 다음과 같이 주어졌다.

\[ 2,\qquad0,\qquad1,\qquad3,\qquad4 \]
(1) \(\lambda\)에 대한 로그 우도 \(\ell(\lambda)\)를 구하고, \(\lambda\)와 무관한 항을 상수로 처리하여 정리하시오.
(2) 로그 우도를 최대화하는 \(\hat\lambda_{\mathrm{MLE}}\)를 구하시오.
5. 두 선형 회귀 모델의 우도를 비교하시오.

다음 훈련 데이터와 두 파라미터가 주어졌다.

\[ X= \begin{pmatrix} 1&0\\ 1&1\\ 1&2 \end{pmatrix}, \qquad y= \begin{pmatrix} 1\\ 2\\ 4 \end{pmatrix} \]
\[ \theta_A= \begin{pmatrix} 1\\ \frac32 \end{pmatrix}, \qquad \theta_B= \begin{pmatrix} 0\\ 2 \end{pmatrix} \]

각 출력은 서로 독립이고 다음 분포를 따른다고 가정한다.

\[ Y\mid X=x \sim \mathcal N(\theta^Tx,1) \]
(1) 두 모델의 잔차 제곱합을 각각 구하시오.
\[ \operatorname{SSE}(\theta) = \lVert X\theta-y\rVert_2^2 \]
(2) 다음 우도비를 구하시오.
\[ \frac{L(\theta_A)}{L(\theta_B)} = \exp\left( -\frac12 \left[ \operatorname{SSE}(\theta_A) - \operatorname{SSE}(\theta_B) \right] \right) \]
(3) 최대 우도 추정의 관점에서 두 파라미터 중 하나를 선택하시오.
6.

각 훈련 예제의 출력이 다음을 따르며, 오차들은 서로 독립이라고 하자.

\[ y^{(i)} = \theta^Tx^{(i)} + \varepsilon^{(i)}, \qquad \varepsilon^{(i)} \sim \mathcal N(0,\sigma_i^2) \]
(1) \(\theta\)에 대한 로그 우도를 정리하여 최대 우도 추정이 다음 문제와 동치임을 보이시오.
\[ \hat\theta_{\mathrm{MLE}} = \operatorname*{argmin}_{\theta} \sum_{i=1}^{m} \frac{ \left( y^{(i)}-\theta^Tx^{(i)} \right)^2 }{\sigma_i^2} \]
(2) 모든 \(\sigma_i^2\)가 같을 때 위 식이 보통의 제곱 오차 최소화 문제로 바뀜을 보이시오.