선형 회귀의 모든 것 - Part 1.
선형 회귀는 머신러닝을 공부할 때 첫 번째로 배우는 가장 기본적인 모델 중 하나이다. 하지만 선형회귀를 자세히 살펴보면 그 이론적 기반은 결코 간단하지 않다는 사실을 알 수 있. 본 포스트에서는 선형 회귀의 정의에서부터 시작해, 선형 회귀와 관련된 여러 수학적 이론을 체계적으로 다루는 것을 목표로 한다.
1. 선형 회귀
가장 단순한 형태의 선형 회귀부터 살펴보자. 선형 회귀에서 가설은 입력 변수들과 상수항의 선형결합으로 표현된다. 하나의 입력 변수 \(x\)로 출력 \(y\)를 예측하는 단순 선형 회귀(simple linear regression)는 다음과 같은 가설로 나타낼 수 있다.
여기서 \(\theta_0\)은 절편(intercept), \(\theta_1\)은 기울기(slope)에 해당하는 파라미터이다.
다중 선형 회귀
현실의 문제에서는 입력 변수가 둘 이상인 경우가 많다. 입력 변수가 \(n\)개인 다중 선형 회귀(multiple linear regression)의 가설은 다음과 같다.
이 식을 매번 합의 형태로 쓰는 것은 번거로우므로, 벡터를 이용해 간단히 표현한다. 편의를 위해 \(x_0=1\)이라는 가상의 변수를 도입하면 입력과 파라미터를 각각 다음과 같은 열벡터(column vector)로 나타낼 수 있다.
이때 가설은 두 벡터의 내적으로 표현할 수 있다.
설계 행렬 (Design Matrix)
훈련 집합 전체에 대한 계산을 한 번에 표현하기 위해 \(m\)개의 훈련 예제를 행렬로 묶어보자. \(i\)번째 훈련 예제의 입력 벡터를 \(x^{(i)}\in\mathbb{R}^{n+1}\)이라 할 때, 이들을 행(row)으로 쌓은 행렬을 설계 행렬(design matrix) \(X\)라 한다.
이렇게 하면 모든 훈련 예제에 대한 예측값을 다음과 같이 행렬과 벡터의 곱으로 나타낼 수 있다.
즉, \(X\theta\)는 현재 파라미터 \(\theta\)를 기준으로 모델이 각 훈련 예제에 대해 내놓는 예측값들을 모아놓은 벡터가 된다.
2. 비용 함수: 평균제곱오차
오차를 그대로 더하면 양수와 음수 오차가 서로 상쇄될 수 있으므로, 각 오차를 제곱한 뒤 평균을 취한다. 이를 평균제곱오차(MSE, Mean Squared Error)라 한다.
선형 회귀에서는 미분 과정의 계산을 간단하게 만들기 위해 MSE의 절반을 비용 함수(cost function) \(J(\theta)\)로 정의한다.
\(1/2\)은 양의 상수이므로 이를 곱해도 \(J(\theta)\)를 최소로 만드는 파라미터의 위치는 변하지 않는다. 대신 제곱식을 미분할 때 나타나는 계수 \(2\)와 약분되어 이후 계산이 간단해진다.
3. 그래디언트와 경사하강법
앞 절에서 선형 회귀의 학습을 다음 비용 함수를 최소화하는 문제로 나타냈다.
이제 실제로 \(J(\theta)\)를 가장 작게 만드는 파라미터 \(\theta\)를 찾아보자.
변수가 하나인 함수에서는 도함수의 부호를 이용해 함수가 증가하거나 감소하는 방향을 알 수 있었다. 그러나 선형 회귀의 비용 함수는 다음과 같이 여러 개의 파라미터를 입력으로 받는다.
이때 각 파라미터 방향으로의 변화율을 한꺼번에 나타내기 위해 그래디언트(gradient)를 사용한다.
편미분과 그래디언트
함수 \(J(\theta_0,\theta_1,\ldots,\theta_n)\)를 생각하자. 다른 변수들을 고정한 채 \(\theta_j\)만 변화시켰을 때의 변화율을 \(\theta_j\)에 대한 편미분(partial derivative)이라 하며 다음과 같이 나타낸다.
예를 들어 이변수함수 \(f(x,y)=x^2+xy^2\)를 생각해보자. 이때 각 변수 \(x,y\)에 대해 독립적으로 미분을 수행할 수 있다. \(y\)를 상수로 고정하고 \(x\)에 대해서만 미분한 것을 \(x\)에 대한 편미분이라 하며, \(\frac{\partial f}{\partial x}\)와 같이 나타낸다. 실제로 편미분을 수행하면 다음과 같다.
모든 파라미터에 대한 편미분을 모아 만든 열벡터를 \(J\)의 그래디언트라 한다.
파라미터 벡터 \(\theta=(\theta_0,\theta_1,\ldots,\theta_n)^T\)에 대한 함수 \(J(\theta)\)의 그래디언트는 다음과 같이 정의한다.
그래디언트는 현재 위치에서 함수값이 가장 빠르게 증가하는 방향을 나타낸다. 이를 조금 더 정확히 살펴보자.
길이가 \(1\)인 방향벡터 \(u\)에 대하여, \(u\) 방향으로의 변화율인 방향도함수(directional derivative)는 다음과 같다.
코시-슈바르츠 부등식에 의해 다음이 성립한다.
등호는 다음 방향에서 성립한다.
따라서 유클리드 거리를 기준으로 함수값을 가장 빠르게 감소시키는 방향은 그래디언트의 반대 방향이다.
경사하강법
경사하강법(gradient descent)은 현재 파라미터에서 비용 함수의 그래디언트를 계산한 뒤, 그 반대 방향으로 파라미터를 조금씩 이동시키는 방법이다.
\(t\)번째 반복에서의 파라미터를 \(\theta^{(t)}\)라 하면, 경사하강법의 갱신식은 다음과 같다.
여기서 \(\alpha>0\)는 한 번의 갱신에서 얼마나 크게 이동할지를 결정하는 학습률(learning rate)이다.
그래디언트의 반대 방향으로 이동하는 이유는 테일러 전개를 통해서도 확인할 수 있다.
여기에 \(\Delta\theta=-\alpha\nabla_\theta J(\theta)\)를 대입하면 다음을 얻는다.
따라서 \(\alpha\)가 충분히 작다면 그래디언트가 영벡터가 아닌 한 비용 함수의 값은 감소한다.
학습률이 지나치게 작으면 한 번에 이동하는 거리가 짧아 학습 속도가 느려진다. 반대로 학습률이 지나치게 크면 최솟값을 지나쳐 반대편으로 이동하거나 비용 함수가 발산할 수 있다.
선형 회귀 비용 함수의 그래디언트
선형 회귀의 비용 함수는 다음과 같다.
여기서 가설은 다음과 같다.
연쇄법칙을 이용하면 \(\theta_j\)에 대한 편미분은 다음과 같이 계산된다.
따라서 각 파라미터는 다음과 같이 갱신된다.
모든 파라미터에 대한 식을 벡터로 묶으면 더욱 간단해진다.
따라서 선형 회귀에 대한 경사하강법의 갱신식은 다음과 같다.
이 식에서 \(X\theta^{(t)}-y\)는 각 훈련 예제에 대한 오차를 모은 벡터이고, \(X^T\)를 곱하는 과정은 각 입력 변수가 전체 오차에 얼마나 기여했는지를 계산하는 과정으로 이해할 수 있다.
4. 확률 모형의 기초
지금까지는 모델을 입력에 대해 하나의 예측값을 출력하는 함수로 다루었다. 그러나 현실의 관측값에는 측정 오차와 설명되지 않은 요인이 포함되므로, 같은 입력에서도 서로 다른 출력이 나타날 수 있다.
이러한 불확실성을 다루기 위해 데이터가 확률분포에 따라 생성된다고 보는 확률 모형의 기본 개념을 먼저 살펴보자.
확률 모형의 기본 개념
앞에서는 모델을 입력 \(x\)를 받아 하나의 예측값 \(h_\theta(x)\)를 출력하는 함수로 설명했다. 예를 들어 선형 회귀 모델은 다음과 같이 주어진 입력에 대해 하나의 수를 예측한다.
그러나 현실에서 같은 입력이 주어졌다고 해서 항상 정확히 같은 출력이 관측되는 것은 아니다. 예를 들어 키가 같은 두 사람의 몸무게가 서로 다를 수 있고, 같은 크기와 위치를 가진 주택이라도 실제 거래 가격은 달라질 수 있다. 이는 모델에 포함하지 않은 여러 요인과 측정 오차가 출력에 영향을 주기 때문이다.
따라서 실제 출력 \(y\)를 하나의 고정된 값으로만 생각하기보다, 여러 값 중 하나가 확률적으로 관측된다고 생각할 수 있다. 이처럼 데이터가 어떤 확률분포에 따라 생성된다고 가정하는 수학적 표현을 확률 모형(probabilistic model)이라고 한다.
확률 모형은 가능한 관측값들에 확률 또는 확률밀도를 부여하여, 데이터가 생성되는 불확실한 과정을 수학적으로 나타낸 모형이다.
확률 모형은 보통 다음 두 요소로 구성된다.
- 데이터가 따르는 확률분포의 종류
- 그 확률분포의 모양을 결정하는 파라미터
예를 들어 앞면이 나올 확률이 \(p\)인 동전 던지기에서는 한 번의 시행 결과 \(Z\)를 다음과 같이 나타낼 수 있다.
이때 다음이 성립한다.
이를 하나의 식으로 쓰면 다음과 같다.
여기서 가능한 관측값은 \(0\)과 \(1\)이고, 파라미터 \(p\)는 앞면과 뒷면에 얼마의 확률을 부여할지를 결정한다. 즉, 서로 다른 \(p\)를 선택하면 서로 다른 확률 모형이 만들어진다.
예를 들어 \(p=0.5\)이면 앞면과 뒷면이 같은 확률로 나오는 동전을 가정한 것이고, \(p=0.9\)이면 앞면이 훨씬 자주 나오는 동전을 가정한 것이다.
결정론적 모델과 확률적 모델
입력 \(x\)에 대해 하나의 값 \(h_\theta(x)\)만 출력하는 모형을 결정론적 모형(deterministic model)이라고 할 수 있다. 결정론적 선형 회귀 모델은 다음과 같이 표현된다.
반면 확률적 선형 회귀에서는 입력 \(x\)가 주어졌을 때 출력 \(y\)가 어떤 확률분포를 따른다고 가정한다.
이는 입력 \(x\)가 주어졌을 때 출력 \(y\)가 평균이 \(\theta^Tx\), 분산이 \(\sigma^2\)인 정규분포를 따른다는 뜻이다.
즉, \(h_\theta(x)=\theta^Tx\)는 출력값 자체를 완전히 결정하는 값이라기보다, 주어진 입력에서 출력이 분포할 중심을 나타낸다.
| 구분 | 수학적 표현 | 의미 |
|---|---|---|
| 결정론적 모델 | \(\hat y=\theta^Tx\) | 입력 \(x\)에 대해 하나의 예측값을 출력한다. |
| 확률적 모델 | \(y\mid x\sim\mathcal N(\theta^Tx,\sigma^2)\) | 입력 \(x\)에 대해 가능한 출력값들의 확률분포를 제시한다. |
확률분포의 파라미터
확률분포의 모양을 결정하는 값을 파라미터(parameter)라고 한다. 이는 앞에서 모델의 형태를 결정한다고 배운 파라미터와 같은 개념이다.
동전 던지기에서는 앞면의 확률 \(p\)가 파라미터이다.
정규분포에서는 평균 \(\mu\)와 분산 \(\sigma^2\)가 파라미터이다.
선형 회귀의 확률 모형에서는 평균이 입력에 따라 변한다.
따라서 이 모형의 파라미터는 회귀식의 계수 \(\theta\)와 잡음의 분산 \(\sigma^2\)이다. 이 값들이 달라지면 동일한 입력에 대해 출력에 부여되는 확률분포도 달라진다.
조건부 확률 모형
지도학습에서는 입력 \(x\)가 주어졌을 때 출력 \(y\)가 어떻게 생성되는지를 알고 싶다. 따라서 출력의 확률분포를 다음과 같이 조건부 확률 또는 조건부 확률밀도로 나타낸다.
이 표기는 입력 \(x\)와 파라미터 \(\theta\)가 주어졌을 때 출력 \(y\)가 관측될 가능성을 의미한다.
여기서 세 대상의 역할을 구분해야 한다.
- \(x\): 관측된 입력
- \(y\): 확률적으로 생성되는 출력
- \(\theta\): 출력의 분포를 결정하는 파라미터
선형 회귀에서 정규분포를 가정하면 조건부 확률밀도는 다음과 같다.
이 식은 \(y\)가 예측값 \(\theta^Tx\)에 가까울수록 큰 확률밀도를 부여하고, 멀어질수록 작은 확률밀도를 부여한다.
특히 두 값의 차이 \(y-\theta^Tx\)가 제곱된 형태로 지수함수 안에 들어간다. 추후 살펴보겠지만, 이로부터 선형 회귀의 제곱 오차 비용 함수가 유도된다.
데이터가 생성된다는 것의 의미
확률 모형에서는 데이터를 다음과 같은 과정을 통해 얻었다고 생각한다.
- 어떤 파라미터 \(\theta\)를 가진 확률분포가 존재한다.
- 그 확률분포에 따라 무작위로 관측값이 하나 생성된다.
- 이 과정을 반복하여 훈련 데이터를 얻는다.
예를 들어 동전 던지기에서는 정해진 \(p\)를 가진 동전을 반복해서 던져 앞면과 뒷면의 결과를 얻는다. 선형 회귀에서는 각 입력 \(x^{(i)}\)에 대해 다음과 같이 출력이 생성되었다고 가정한다.
이때 \(\varepsilon^{(i)}\)는 모델이 설명하지 못하는 무작위 오차이며 다음 정규분포를 따른다고 가정한다.
실제로 데이터를 생성한 파라미터 \(\theta\)는 알 수 없다. 우리가 관측할 수 있는 것은 훈련 데이터뿐이다. 따라서 학습의 목표는 관측된 데이터로부터 그 데이터를 생성했을 것으로 가장 그럴듯한 파라미터를 역으로 추정하는 것이다.
Comments ()