[비전공자를 위한 딥러닝] 2.1 선형회귀


챕터 1에서 살펴보았듯이, 머신러닝이란 데이터를 통해 학습시킨 모델을 가지고 새로운 데이터를 예측하는 하나의 문제 해결 방법이다. 그런데 데이터를 학습한다는 것의 의미는 무엇일까?

머신러닝이 등장하기 훨씬 전부터 통계학에서는 데이터를 활용해 모델을 만들고, 모델을 활용해 새로운 데이터를 예측하는 방법을 사용해왔다. 그 대표적인 방법이 "선형회귀"다. 예를 들어 생각해보자.

우리는 집의 가격을 예측하는 모델을 만들고자 한다. 열심히 데이터를 모아봤더니, "집의 넓이", "건축연도", "집의 위치", "집의 가격" 이렇게 네 가지 값을 각각 가지고 있는 1만 개의 집 데이터를 수집했다고 가정하자.


우리가 예측하고자 하는 변수는 네 가지 값 중에 "집의 가격"이기 때문에, 나머지 세 변수를 통해 집의 가격을 잘 표현하는 모델을 만들어야 한다.


1. 세 변수를 가지고 "집의 가격"을 잘 표현하는 모델을 만들고,

2. 새로운 데이터가 들어왔을 때 그 모델을 사용해 집의 가격을 예측할 것이다.


예측하고자 하는 변수인 "집의 가격"을 타겟(target)이라고 하고, 나머지를 데이터의 특성(feature)이라고 한다.

그렇다면 어떻게 "집의 넓이", "건축 연도", "집의 위치"라는 특성들로 타겟, 즉 "집의 가격"을 잘 표현할 수 있을까? 가장 먼저 생각해볼 수 있는 것은, 특성별로 집의 가격에 영향을 미치는 정도가 다를 것이라는 점이다. 따라서 다음과 같이 가중합(weighted sum)의 관계로 나타내볼 수 있다.




세 가지 특성이 각각 "집의 가격"에 대해 얼마나 영향을 미치는지 그 중요도, 즉 가중치(weight)를 가지고 있는 것을 나타낸 그림이다. 예를 들어 "건축 연도"라는 특성이 갖는 가중치가 "집의 넓이"라는 특성이 갖는 가중치보다 훨씬 작다고 가정해보자. 그 의미는, 건축 연도가 집의 가격에 미치는 영향보다, 집의 넓이가 집의 가격에 미치는 영향이 더 크다는 것이다. 따라서 가중치 w1이 w2보다 큰 값을 가지는 모델이 된다.

"집의 가격"에 대해서, 특성1의 가중치(w1)가 더 크다


이를 좀 더 일반화시키면 다음과 같이 된다.


이때 각 특성과 집의 가격을 그래프로 그려보면 다음과 같다. 실제로는 특성2와 특성3이 함께 표현된 4차원 그래프가 되겠지만, 시각화하기가 어렵기 때문에 한 특성씩 나누어 살펴보기로 하자.

이때 각각의 점은 1000개의 집 데이터를 의미하며, 이 분포를 잘 표현하는 하나의 직선을 찾는 것이 선형회귀의 목적이다. (여러 특성이 함께 표현된 다차원 그래프에서는 직선보다 높은 차원인 면 등의 하이퍼플레인으로 표현될 수 있다.)
이때 직선의 기울기가 특성1에 대한 가중치 w1에 해당하게 되는데, 가중치 w1의 의미 - (특성1이 "집의 가격"에 얼마나 영향을 끼치는지) 를 생각해보면 이해하기 어렵지 않다.*

* 이 의미를 잘 기억해두면, 역전파에서 편미분의 값을 이해할 때 도움이 될 것이다.


이렇게 얻은 직선을 가지고, ("집의 가격"이 빈 칸인) 새로운 데이터가 들어왔을 때 위와 같이 "집의 가격"을 예측할 수 있다.


하지만 데이터의 분포가 다음과 같을 경우에는 어떨까?

이 경우에는 원점 (0,0)에 붙어 있는 직선으로는 분포를 제대로 표현하기가 힘들다.* 따라서 편향(bias)을 수식에 포함해 원점에서 해방될 수 있는 자유를 주면 훨씬 좋은 예측을 할 수 있는 모델이 된다.
(모든 특성이 함께 표현된 4차원 그래프에서는 원점 (0,0,0,0)에서 해방된다고 볼 수 있다.)

* y = ax 인 직선은 항상 (0,0)을 지난다. 위 그래프의 직선 target = (feature1) x (weight1) 역시 마찬가지다. 



여기까지 소개한 개념을 정리해보면 다음과 같은데, 이것이 바로 선형회귀(linear regression)라고 할 수 있다.



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

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



새로운 방법을 소개하기에 앞서, 선형회귀가 응용되는 방법을 간단히 살펴보기로 하자. 위와 같이 타겟(집의 가격)에 위치한 것을 "새로운 특성"으로 해석해볼 수 있다. 즉, 이전 층(layer)에 있는 세 가지 특성의 가중합에 의해 계산되는 새로운 특성이라는 것이다. 물론 위의 예시에서는 그 새로운 특성이 우리가 타겟으로 설정한 "집의 가격"과 정확히 일치하기 때문에 더 이상의 결과는 얻을 수 없다. 그렇다면, 새로운 특성을 더 만들어 내어, 새로 생성된 특성들을 통해 타겟(집의 가격)을 예측해볼 수 있지 않을까? 그렇게 하면 더 복잡한 데이터의 분포를 표현할 수 있게 되고, 예측의 정확도도 높아지지 않을까?



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


댓글 쓰기

0 댓글