[비전공자를 위한 딥러닝] 2.2 선형회귀 (2) - 오차와 비용


목차 보기

지난 장에서 선형회귀의 개념에 대해 간단하게 살펴보았다. 그런데 선형회귀를 통해 나오는 직선은 어떤 원리로 나오는 걸까? 다음 그림에서 어느 쪽이 선형회귀이며, 왜 다른 쪽은 아닐까?



이 질문에 답을 하려면 우선 오차(error)에 대해 알아야한다. 우선 데이터를 가로지르는 선이 임의로 그어졌다고 가정해보자.

오차란 데이터와 회귀직선 사이의 거리를 의미한다. 위 그림에서 데이터1에 대한 오차는, 데이터1을 수직으로 이동했을 때 회귀직선과 만나는 점까지의 거리다.

이 거리의 의미가 무엇일까? 회귀직선은 데이터를 아우르는 예측 모델로서, 특성x 값이 들어오면 그에 대한 타겟("집의 가격") 값을 알려준다.

이때 우리는 데이터1을 활용해서, 데이터1의 특성x 값을 회귀모델에 넣었을 때 어떤 값을 예측하는지 확인해볼 수 있다. 이 값이 데이터1의 실제 집 가격과 얼마나 차이가 나는지를 바로 오차라고 하는 것이다. 한 마디로 말하면, 예측한 값이 실제 값과 얼마나 차이가 있는지 그 정도를 의미한다.
특성1만 주어진 새로운 데이터에 대한 집의 가격을 예측하는 회귀직선


이를 다음과 같이 표현할 수 있다.
ŷ ("와이 햇(hat)")은 데이터1을 회귀직선에 내렸을 때 y좌표를 말하고, y는 데이터1의 y좌표를 말한다. 이 두 값의 차이인 오차는 둘 중에 어떤 수가 더 크냐에 따라서 양수가 될 수도 있고 음수가 될 수도 있다. 따라서 이 오차들을 합할 때는 보통 제곱을 취한 후 합하게 된다.



설명에 앞서 잠깐 함수(function)의 개념에 대해서 간단하게 짚고 넘어가자.

함수란 위과 같이 어떤 입력이 들어오면 특정한 출력을 반환한다. 선형회귀 모델도 하나의 함수로서, 어떤 특성x 값이 들어오면 특정한 "집의 가격"을 반환한다.

이와 같은 표현을 사용해서 오차를 좀 더 정리해보자.


이때 ŷ은 회귀직선의 식 (y = wx + b) 에 해당 데이터1의 x값을 대입함으로써 구할 수 있다.




이렇게 구한 것이 바로 데이터1에 대한 오차다. 그렇다면 나머지 데이터들에 대해서도 같은 방식으로 오차를 구할 수 있는데, 이 전체 오차들을 각각 제곱한 후 합한 것을 비용(cost)이라고 한다.


비용을 계산하는 함수를 비용함수(cost function)라고 하는데, 이는 어떤 데이터를 가지고 어떤 목적의 학습을 진행하느냐에 따라 다르게 바꿔줄 수 있다. 이 비용을 어떻게 주느냐에 따라 모델이 학습되는 방향과 속도가 달라진다. 1챕터에서 대략적인 학습 알고리즘을 설명하면서 "틀린 문제(예측)들에 대한 피드백"을 받고 정답 레이블에 가까워지도록 모델을 수정하게 된다고 했는데, 그 피드백에 해당하는 것이 바로 비용함수라고 볼 수 있다.



오른쪽의 모델이 비용이 낮기 때문에 (최소한 학습 데이터 안에서는) 더 예측력이 좋다.
(학습에 주어진 데이터만 가지고는 일반화 성능을 판단할 수 없다. 이에 대해서는 추후에 다룰 예정이다.)

비용을 수식으로 나타내볼텐데, 우선 총합을 나타내는 기호인 시그마(sigma)에 대해서 간략하게 살펴보자.

시그마는 위와 같이 "~부터(아래) ~까지(위) ~를(오른쪽) 다 합한 것"으로 생각하면 되는데, 이를 이용해서 데이터1부터 데이터m까지의 모든 오차를 제곱한 뒤 다 더하는 것을 표현할 수 있다.




이와 같이 실제값과 예측값의 차이를 제곱한 뒤 모두 더해주는 과정을 오차제곱합이라고 한다. 이 값을 전체 데이터 수로 나눠서 데이터 1개 당 평균 오차제곱합을 나타내면 평균제곱오차(MSE, Mean Square Error)가 된다.

선형회귀는 평균제곱오차를 가장 작게하는, 모든 데이터를 적절히 아우르는 예측 직선을 찾는 것이다. 이는 최소제곱법(least square method)이라는 공식을 통해 계산할 수 있다.



지난 장에 이어 이번 장에서는 선형회귀에 대해 살펴보았다. 이 단순한 선형회귀 모델만으로도 다양한 문제에서 꽤나 충분한 예측이 가능하다. 하지만 훨씬 더 복잡한 문제*를 해결해야 하거나, 훨씬 높은 정확도가 필요할 경우에는 어떻게 할까?

* 단순히 데이터의 분포가 직선으로 충분히 표현되지 않는 경우를 말하는 것은 아니다. 선형회귀도 특성에 제곱을 하거나 로그를 씌우는 등의 변환을 통해 직선이 아닌 분포도 표현이 가능하다.



새로운 방법을 소개하기에 앞서, 선형회귀가 응용되는 방법을 간단히 살펴보기로 하자. 위와 같이 타겟(집의 가격)에 위치한 것을 "새로운 특성"으로 해석해볼 수 있다. 즉, "집의 가격"이라는 변수의 의미가 이전 층(layer)에 있는 세 가지 특성의 가중합에 의해 계산되는 새로운 특성이기도 하다는 것이다.

그렇다면 새로운 특성을 더 만들어 내어, 새로 생성된 특성들을 통해 타겟(집의 가격)을 예측해볼 수 있지 않을까? 그렇게 하면 더 복잡한 데이터의 분포를 표현할 수 있게 되고, 예측의 정확도도 높아지지 않을까?



이러한 접근이 바로 신경망의 시작이라고 할 수 있는데, 이는 다음 장에서 다뤄보도록 하겠다.

댓글 쓰기

1 댓글

  1. 마지막 그림에 대한 설명중 '새로 생성된 특성들을 통해 타겟(집의 가격)을 예측해볼 수 있지 않을까?' 라는 의미는 new특성1 그리고 new특성2가 최종적으로 집의 가격이 아닌 집의넓이, 건축연도, 집의위치와 같은 임의의 새로운 특성이 생겨났다는 말인가요?

    직관적으로 봤을때 생성된 new특성1과 2는 각각의 특성1,2,3에 대한 다른 가중치값을 곱해줘서 기울기가 서로 다른 선형회귀 함수를 거쳐서 나온 집값 같은데 어떻게 해석하는게 맞을까요?

    답글삭제