AI/ML

선형회귀와 경사하강법

hu6r1s 2025. 1. 24. 21:47

서론

머신러닝의 기초를 이루는 알고리즘 중 하나인 선형회귀(Linear Regression)는 데이터를 분석하고 미래를 예측하는 데 있어 가장 기본적인 알고리즘이다.

선형회귀는 주어진 데이터를 기반으로 직선 형태의 관계를 학습하여 독립변수(입력: \( x \))와 종속변수(출력: \( y \)) 간의 연관성을 찾아내는 모델이다. 이를 통해 데이터의 패턴을 이해하고, 미래 값을 예측해 낼 수 있다.

선형회귀 모델이 효과적으로 작동하기 위해서는 데이터를 통해 최적의 모델 파라미터(기울기: \( \omega \), 절편, 가중치: \( {\small b} \) )를 찾는 과정이 필수적이다.

선형회귀

선형회귀(Linear Regression)의 핵심을 입력 변수와 출력 변수 간의 선형적인 관계를 모델링하는 것이다.

주어진 데이터를 기반으로 최적의 직선을 찾아내고, 이를 통해 새로운 데이터에 대한 예측을 수행한다.

선형회귀 기본 개념

선형회귀의 목표는 주어진 데이터를 가장 잘 설명할 수 있는 직선을 찾는 것이다.

이 직선을 아래와 같은 가설 함수(Hypothesis function)를 통해 표현된다

$$ h(x) = \omega x + {\small b} $$

여기서:

  • : 입력 변수의 기울기(가중치)
  • \( {\small b} \) : 절편(bias)
  • \( x \) : 입력 변수
  • : 출력(예측값)

이 가설 함수는 데이터를 기반으로 기울기와 절편을 학습하며, 입력 편수 \( x \) 에 대해 예측값 \( h(x) \)

  • 단순선형회귀(Simple Linear Regression):
    단일 입력 변수 \( x \) 를 사용하는 선형회귀이다.
    예를 들어, 주택 가격을 예측할 때 방의 개수 \( x \) 만을 고려한다면 다음과 같은 형태가 된다:
    $$
    h(x) = \omega x + {\small b}
    $$
  • 다중선형회귀(Multiple Linear Regression):
    여러 개의 입력 변수 \( x_1,x_2,…,x_d를 사용하는 선형회귀이다.
    주택 가격 예측에서 위치, 면적, 방 개수 등 여러 요소를 고려한다면, 가설 함수는 아래와 같이 확장된다:
    $$
    h(x) = \omega_0 x_0 + \omega_1 x_1 + \cdots + \omega_d x_d + {\small b}
    $$

여기서 \( x_0 \)은 상수 1로 설정하여 절편을 포함시키는 방식으로 표현된다.

선형회귀의 목표: 비용 함수 최소화

선형회귀의 궁극적인 목표는 예측값 \( h(x) \)과 실제값 \( y \) 간의 차이를 최소화하는 것이다. 이를 위해 비용 함수(cost function)를 정의하고, 비용 함수의 값을 최소화하는 방향으로 모델을 학습한다.
일반적으로 비용 함수로는 평균제곱오차(Mean Squared Error, MSE)를 사용한다.

$$ J(\omega, {\small b} ) = \frac{1}{2m} \sum_{i=1}^{m} \left( h(x^{(i)}) - y^{(i)} \right)^2 $$

여기서:

  • \( m \) : 데이터의 개수
  • \( h(x^{(i)}) \): ii-번째 입력 데이터의 예측값
  • \( y^{(i)} \): ii-번째 데이터의 실제값

모델은 경사하강법(Gradient Descent) 등을 사용하여 비용 함수 \( J( \omega , {\small b} ) \) 를 최소화함으로써 최적의 기울기 \( \omega \)와 절편 \( {\small b} \) 를 학습한다.

다음은 비용 함수와 경사하강법을 통해 이를 어떻게 최적화할 수 있는지 더 자세히 살펴보자.

비용함수

비용 함수(Cost Function)는 머신러닝 모델이 얼마나 잘 예측하고 있는지를 평가하는 기준이다. 선형회귀에서 비용 함수는 모델의 예측값과 실제값 간의 차이를 측정하고, 이를 최소화하는 방향으로 모델을 학습시킨다.

평균제곱오차( Mean Squared Error, MSE )

선형회귀에서 가장 널리 사용되는 비용 함수는 평균제곱오차(Mean Squared Error, MSE)이다. 이는 예측값 \( 과 실제값 \( 간의 오차를 제곱하여 평균을 구한 값이다. MSE는 다음과 같이 정의된다:

$$ J(\omega, {\small b} ) = \frac{1}{2m} \sum_{i=1}^{m} \left( h(x^{(i)}) - y^{(i)} \right)^2  $$

여기서:

  • \( J(\omega, {\small b} ) \): 비용 함수 값
  • \( m \): 데이터 샘플의 개수
  • \( h(x^{(i)}) \): ii-번째 입력 데이터에 대한 예측값
  • \( y^{(i)} \): ii-번째 데이터의 실제값

이 식은 \( h(x) \)\( y \) 간의 차이를 제곱해 음수를 제거하고, 이를 평균내어 모델의 성능을 측정한다.

비용 함수의 의미와 직관적 이해

비용 함수는 모델의 예측값이 실제값과 얼마나 가까운지를 나타낸다:

  • \( J(\omega, {\small b} ) \) 의 값이 작을수록 예측값이 실제값에 가까워지고, 모델이 데이터를 더 잘 설명하고 있다는 의미이다.
  • \( J(\omega, {\small b} ) \) 의 값이 클수록 예측값과 실제값의 차이가 크고, 모델의 성능이 떨어진다.

왜 제곱을 사용하는지:

  • 오차의 절대값을 사용하는 대신, 제곱을 사용하면 오차가 더 큰 값에 대해 더 큰 페널티를 부여한다.
  • 제곱 덕분에 기울기가 연속적이고 매끄러운 형태를 가지게 되어 최적화에 유리하다.

경사하강법 (Gradient Descent)

경사 하강법은 머신러닝에서 모델의 매개변수(parameter)를 최적화하는 데 널리 사용되는 알고리즘입니다. 특히, 선형 회귀 모델에서 오차를 최소화하는 최적의 회귀 계수를 찾기 위해 사용된다.

경사 하강법의 개념과 동작 원리

경사 하강법은 함수의 기울기(gradient)를 이용하여 함수의 최솟값을 찾아가는 방법이다. 마치 산에서 가장 낮은 곳을 찾기 위해 경사를 따라 내려가는 것과 유사하다. 현재 위치에서 가장 가파른 내리막길 방향으로 조금씩 이동하면서 최종적으로 최저점에 도달하는 원리이다.

선형 회귀에서 우리가 최소화하고자 하는 함수는 비용 함수(Cost Function)라고 하며, 이는 예측값과 실제값의 차이를 나타낸다. 경사 하강법은 이 비용 함수의 기울기를 계산하여 비용 함수를 최소화하는 방향으로 모델의 매개변수를 업데이트한다.

경사 하강법의 수식 유도

선형 회귀의 비용 함수는 보통 평균 제곱 오차(Mean Squared Error, MSE)를 사용한다. 위에서 정의한 평균 제곱 오차를 다시 정의해보자.

$$ J(\omega, {\small b} ) = \frac{1}{2m} \sum_{i=1}^{m} \left( h(x^{(i)}) - y^{(i)} \right)^2  $$

\( h(x^{(i)}) \) 는 곧 \( h(x) = \omega x + {\small b} \) 를 뜻한다.

경사 하강법은 비용 함수 \( 를 \( \omega \) 에 대해 편미분하여 기울기를 계산한다.

$$ \frac{\partial J(\omega, b)}{\partial \omega} = \frac{1}{2m} \sum_{i=1}^{m} 2(h(x^{(i)}) - y^{(i)}) \frac{\partial h(x^{(i)})}{\partial \omega} $$

\( h(x^{(i)}) = \omega x^{(i)} + {\small b} \) 이므로, \( \frac{\partial h(x^{(i)})}{\partial \omega} = x^{(i)} \) 이다. 따라서 아래와 같은 수식이 완성된다.

$$ \frac{\partial J(\omega, {\small b} )}{\partial \omega} = \frac{1}{m} \sum_{i=1}^{m} (h(x^{(i)}) - y^{(i)}) x^{(i)} $$

\( {\small b} \) 도 \( \omega \) 와 같이 편미분을 해주면 아래와 같이 수식이 나온다.

$$ \frac{\partial J(\omega, {\small b} )}{\partial {\small b} } = \frac{1}{m} \sum_{i=1}^{m} (h(x^{(i)}) - y^{(i)}) $$

업데이트 과정

경사 하강법은 다음 식을 이용하여 가중치 를 반복적으로 업데이트한다.

$$ \omega := \omega - \alpha \frac{\partial J(\omega, b)}{\partial \omega} $$

$$ {\small b} := {\small b} - \alpha \frac{\partial J(\omega, {\small b} )}{\partial {\small b} }  $$

즉, 각 매개변수에서 비용 함수의 기울기에 학습률을 곱한 값을 빼서 업데이트한다. 이 과정을 반복하면서 가중치와 바이어스는 점차 최적의 값에 수렴하게 된다.

학습률(Learning Rate)의 역할

학습률(learning rate, )은 경사를 따라 얼마나 이동할지를 결정하는 중요한 매개변수이다. 너무 큰 학습률은 최솟값을 지나쳐 발산하게 만들 수 있고, 너무 작은 학습률은 수렴 속도를 매우 느리게 만들 수 있다. 적절한 학습률을 선택하는 것이 중요하다.

경사 하강법이 전역 최적화로 수렴하는 이유

선형 회귀의 비용 함수인 MSE는 볼록 함수(convex function)이다. 볼록 함수는 단 하나의 전역 최솟값(global minimum)만을 가지므로, 경사 하강법을 통해 항상 전역 최적해에 수렴할 수 있다. 즉, 지역 최솟값(local minimum)에 빠질 염려가 없다.

정리하자면, 경사 하강법은 선형 회귀 모델의 매개변수를 효율적으로 최적화하는 강력한 알고리즘이다. 적절한 학습률 선택과 반복적인 업데이트를 통해 전역 최적해를 찾을 수 있다.