머신 러닝의 개념을 이해하기 위해 가장 먼저 살펴볼 수 있는 주제는 바로 1차원 선형 회귀 분석이다. 선형 회귀 분석은 지도 학습의 한 종류로, 이미 알고 있는 데이터를 바탕으로 예측 모델을 만들고, 나중에 새로운 데이터가 들어왔을 때 그 결과를 예측하는 데 사용된다.
선형회귀분석
선형 회귀 분석에서 사용하는 데이터는 보통 2차원, 즉 x와 y로 구성된
데이터쌍이다. 이때 x는 입력값, y는 결과값이다. 예를 들어 x가 1일 때 y는 2이고, x가 2일 때 y는 4라는 식으로 몇 가지 데이터가 주어졌다고 하자. 우리가 목표로 하는
것은 학습 데이터에는 없는 x값이 주어졌을 때 y값을 예측할
수 있는 모델을 만드는 일이다.
비용함수
현실 세계의 데이터는 완벽하게 일직선 위에 있지 않지만, 그래도 대체로
선형에 가까운 경향을 보이는 경우가 많다. 이럴 경우, 데이터를
가장 잘 설명할 수 있는 1차 함수 하나를 찾아내면, 다소
오차는 있더라도 대략적인 예측은 가능해진다. 다시 말해, 데이터를
가장 잘 통과하는 직선을 하나 그리는 것이 선형 회귀 분석의 본질이다.
이 직선은 수학적으로 y = Wx + b라는 식으로 표현된다. 여기에서 W는 기울기, b는 y절편을 의미한다. 머신 러닝에서는 이 두 값을 각각 가중치(Weight) 와 편향(Bias) 라고 부른다. 우리가 해야 할 일은 이 W와 b를 적절한 값으로 찾아내는 것이다. 이 두 값만 제대로 찾아낸다면, 어떤 x값이 들어오더라도 그에 대응하는 y값을 계산할 수 있게 된다. 그것이 바로 예측 모델이다.
W와 b를 어떻게 찾아낼까?
처음에는 임의의 값을 W와 b에 넣어 본다. 예를 들어 W=1, b=3이라고 가정해 보자. 그리고 학습 데이터 중 하나인 (x, y) = (10, 6)을 대입해
본다. 이 모델에 x=10을 넣으면 계산된 y값은 13이 된다. 하지만
실제 데이터에서의 y는 6이었다. 예측값과 실제값의 차이, 즉 13
- 6 = 7이라는 값이 생긴다. 이 차이를 우리는 오차(Error) 혹은 비용(Cost) 이라고 부른다.
우리는 오차가 가장 작아지는 W와
b를 원한다. 오차가 작다는 것은 예측이 실제에 가까워졌다는 의미이며, 결과적으로 좋은 모델이라는 뜻이 된다. 그러기 위해서는 오차가 얼마나
되는지를 계산하는 기준이 필요하다. 이때 사용하는 것이 손실 함수(Loss Function) 또는 비용 함수(Cost Function) 이다. 가장 흔히 쓰이는 손실 함수는 평균제곱오차(Mean Squared
Error, MSE) 라고 해서, 예측값과
실제값의 차이를 제곱한 뒤 평균을 내는 방식이다. 제곱을 하는 이유는 예측값이 실제값보다 클 수도 있고
작을 수도 있는데, 단순히 합하면 양수와 음수가 섞여서 오차가 상쇄되기 때문이다. 제곱을 하면 항상 양수이므로 정확한 크기를 판단할 수 있게 된다.
이제 남은 문제는 W와 b를
어떤 방식으로 조정할 것인가이다. 바로 여기서 경사 하강법(Gradient
Descent) 이라는 개념이 등장한다.
경사 하강법은 머신 러닝에서 아주 자주 쓰이는 기본 개념 중 하나다. 앞에서
설명한 것처럼 우리는 데이터를 가장 잘 설명할 수 있는 직선 하나, 즉 y = Wx + b 형태의 수식을 만들고 싶다. 그래야 x 값이 주어졌을 때 y 값을
예측할 수 있기 때문이다.
그런데 어떤 W와 b가
가장 좋은 값인지 우리는 처음엔 알 수 없다. 그래서 W와 b를 임의의 값으로 시작해서, 조금씩 수정하면서 더 나은 값으로
바꿔가는 방법이 필요하다. 이때 사용하는 방식이 바로 경사 하강법(Gradient Descent) 이다.
경사 하강법이란, 오차가 가장 작아지는 방향으로 W와 b를 천천히 이동시키는 과정을 반복하는 알고리즘이다. 마치 산 꼭대기에서 출발해서 가장 낮은 계곡을 찾아 내려가는 것과 같다. 어디가
낮은지는 잘 모르지만, 발밑의 경사를 보고 ‘더 낮아지는
방향’을 알아낼 수 있다면 그 방향으로 조금씩 걸어가면서 결국 가장 낮은 지점에 도달하게 된다.
오차가 가장 작아지는 방향을 찾기 위해 사용하는 수학적인 도구가 바로 편미분이라는 것이다. 이 책에서는 편미분 자체를 깊이 설명하진 않지만, 간단히 말하면 ‘이쪽으로 W를 바꾸면 오차가 줄어들까?’, ‘b를 조금 줄이면 오차가 작아질까?’를 계산해보는 과정이다. 그렇게 해서 계산된 방향으로 W와
b를 조금씩 조정하면서 모델을 계속 개선해 나간다.
이 과정을 여러 번 반복하다 보면, 어느 순간 더 이상 오차가 줄어들지
않고 거의 일정해지는 지점이 나타난다. 그 지점이 바로 오차가 가장 작아지는 최적의 값이다. 예를 들어 경사 하강법을 통해 오차가 가장 작아졌을 때의 W와 b가 각각 0.15와 5라는
값이 나왔다고 해보자. 그럼 우리가 찾은 모델은 이렇게 표현된다:
Y = 0.15 × X + 5
이제 이 수식이 완성되었으니, x에 어떤 숫자를 넣든지 y 값을 계산할 수 있다.
예를 들어 x = 20이라면, y는 0.15 × 20 + 5 = 8이 된다.
이렇게 우리가 만든 모델을 통해 앞으로는 모르는 값에 대한 예측이 가능해진다.
결국, 경사 하강법은 W와 b를 계속 수정하면서 예측이 정확해지도록 만들어 주는 도구라고 생각하면 된다. 이 책에서는 경사 하강법의 수학적인 원리까지는 깊이 다루지 않지만, 머신
러닝이 어떻게 똑똑해 지는지를 이해하기 위해 이 개념을 간단하게라도 알고 넘어가는 것이 중요하다.