[인공지능개론] Error based learning - multivariable linear regression, gradient descent

 

다변수 선형 회귀 모델과 경사 하강법

단순 선형 회귀 vs. 다변수 선형 회귀

이전 포스팅에서는 단순 선형 회귀 모델을 사용하여 하나의 설명 변수를 기반으로 목표 변수를 예측하는 방법을 살펴보았다. 그러나 실제 문제에서는 여러 개의 설명 변수를 사용하여 목표 변수를 예측해야 하는 경우가 많다. 이러한 경우 다변수 선형 회귀 모델을 사용한다.

다변수 선형 회귀 모델은 단순 선형 회귀 모델을 확장하여 여러 개의 설명 변수를 포함한다. 모델은 다음과 같이 표현된다.

y = w[0] + w[1] * x[1] + w[2] * x[2] + ... + w[m] * x[m]

여기서 y는 목표 변수, x[1], x[2], ..., x[m]은 설명 변수, w[0], w[1], w[2], ..., w[m]은 가중치이다.


SSE 일반화

단순 선형 회귀 모델에서 사용했던 제곱 오차 합 (SSE)은 다변수 선형 회귀 모델에도 적용할 수 있다. SSE는 다음과 같이 일반화된다.

SSE = 1/2 * Σ(t[i] - M[w](d[i]))^2

여기서 t[i]는 i번째 훈련 샘플의 실제 목표 변수 값이고, Mw는 i번째 훈련 샘플에 대한 모델의 예측값이다.


경사 하강법: 최적의 가중치를 찾는 방법

단순 선형 회귀 모델에서는 오류 표면이 볼록 함수이기 때문에 최소 제곱 최적화를 통해 최적의 가중치를 쉽게 찾을 수 있었다. 그러나 다변수 선형 회귀 모델에서는 변수의 수가 증가함에 따라 오류 표면이 복잡해지고, local minima 문제가 발생하여 최소 제곱 최적화만으로는 최적의 가중치를 찾기 어려울 수 있다.

error surface

이러한 문제를 해결하기 위해 경사 하강법이라는 알고리즘을 사용한다. 경사 하강법은 오류 표면의 기울기를 따라 이동하면서 오류를 최소화하는 가중치를 찾는 방법이다.


경사 하강법의 작동 방식

  1. 임의의 가중치 값으로 시작한다.
  2. 현재 가중치에서 오류 표면의 기울기를 계산한다.
  3. 기울기의 반대 방향으로 가중치를 업데이트한다.
  4. 오류가 충분히 작아지거나, 더 이상 감소하지 않을 때까지 2-3단계를 반복한다.

경사 하강법 알고리즘

1. w = 임의의 가중치 값으로 초기화
2. repeat
3.   for each w[j] in w:
4.     w[j] = w[j] - α * ∂L[2]/∂w[j]
5. until convergence

여기서 α는 학습률 (learning rate)로, 가중치 업데이트의 크기를 조절하는 역할을 한다. 이 때 학습률이 너무 크면 최적의 가중치를 찾지 못하고 오류 표면에서 발산할 수 있고, 너무 작으면 학습 속도가 느려진다. 적절한 학습률 값은 문제에 따라 다르며, 일반적으로 실험을 통해 결정한다.


오류 델타 함수

error delta function

학습률에 곱해진 편미분 식은 다른 말로 오류 델타 함수라고 지칭한다. 오류 델타 함수는 가중치 업데이트 방향을 결정하는 함수이다. 오류 델타 함수는 오류 표면의 기울기를 계산하여 기울기의 반대 방향을 가리킨다. 기울기가 양수라면 가중치를 줄이는 방향으로 업데이트하고, 기울기가 음수라면 가중치를 높이는 방향으로 업데이트하도록 유도한다.

equation transformation

오류 델타 함수 식을 적절히 변형하면, 위와 같이 오류 * 데이터값과 같이 표현할 수 있다.


배치 경사 하강법

배치 경사 하강법은 훈련 샘플을 일정한 단위의 묶음으로 만들고, 그에 대한 오류를 계산하여 가중치를 업데이트하는 방법이다. 일반 경사 하강법의 경우, 데이터 하나마다 반복해야 하기 때문에 빅데이터를 다룰 때 학습 시간이 오래걸린다는 단점이 있다. 배치 경사 하강법은 묶음에 해당하는 데이터들의 squared error를 더하여 가중치를 한번만 업데이트하기에 효율적이다. 


지난 시간 다뤘던 임대 가격 예측 모델에 feature를 확대한 예시를 통해 자세히 알아보자.

data set

일단 ENERGY RATING에 대해서는 숫자형이 아니기에 생략하고 나머지 데이터로 다뤄보겠다.
ID = d[0] = 1, SIZE = d[1], FLOOR = d[2], BROADBAND RATE = d[3]

Gradient Descent Iteration 1

Gradient Descent Iteration 2

위와 같이 초기 가중치를 설정하고, 이를 이용해 error를 계산할 수 있다. 앞서 오류 델타 함수는 error와 데이터 값의 곱으로 표현할 수 있다고 하였으므로, 함수값을 구할 수 있다. 이 예제에서 batch size는 10이므로, 이를 다 더하여 가중치를 업데이트하는데 이용할 수 있다.

이때 경사 하강법의 속도를 높이기 위해 초기 가중치를 적절히 설정하는 것이 중요하다. 일반적으로 설명 변수 값을 정규화하여 초기 가중치를 [-0.2, 0.2] 범위에서 균등하게 선택하는 것이 효과적이다. 정규화는 squared error가 너무 커지는 것을 방지하는 데에도 도움이 된다.



범주형 설명 변수 처리

앞선 예시에서 ENERGY RATING는 A, B, C로 표현된 변수였다. 이러한 범주형 설명 변수는 선형 회귀 모델에서 어떻게 다뤄야 할까? 이에 대한 답은 one-hot encoding에 있다. one-hot encoding은 각 범주에 대해 새로운 이진 변수를 생성하는 방법이다.

One hot encoding

one-hot encoding을 통해 범주에 해당하면 1, 해당하지 않으면 0과 같이 숫자로 표현하여 선형 회귀 모델을 학습하는데 이용 가능하다.

비선형 관계 모델링

설명 변수와 목표 변수 간의 관계가 비선형일 경우, basis function을 사용하여 비선형 관계를 모델링할 수 있다. basis function은 입력 값을 변환하여 비선형 관계를 선형 모델로 표현할 수 있도록 한다.

basis function

예를들어, 강수량과 잔디의 성장과의 관계를 다음과 같이 나타낼 수 있다.

polynomial relationship

basis function에 의해 non-linear할 것 같지만, 모델 입장에서는 weight의 관점에서 보기 때문에 여전히 linear하다.

마치며

이번 포스팅에서는 다변수 선형 회귀 모델과 경사 하강법에 대해 알아보았다. 경사 하강법은 다변수 선형 회귀 모델의 최적 가중치를 찾는 데 유용하게 사용되는 알고리즘이다. 다음 시간에는 최근의 인공지능을 있게 한 Neural Networks에 대해 알아보겠다.

hyeon_B

안녕하세요! AI 기술을 이용해 더 나은 세상을 만들어 나가고 싶은 과기원생 Hyeon이라고 합니다. 저는 앞으로 인공지능 시대에는 지식을 '활용'하는 능력이 중요해질 것이라고 생각합니다. 대부분의 일들은 인공지능이 뛰어난 모습을 보이지만, 인공지능은 데이터로 부터 연관관계를 학습하기 때문에 지식들을 새로 통합해서 활용하는 능력이 부족합니다. 인공지능이 뉴턴 전에 만들어졌다면 사과가 떨어지는 이유에 대답하지 못했을 것이고, 아인슈타인 전에 만들어졌다면 중력이 어떻게 생기는지 설명하지 못했을 것입니다. 따라서 앞으로 우리는 '본질'을 탐구하고 그 본질로부터 다른 곳에 적용하며 인공지능을 현명하게 활용해야 할 것입니다. 함께 인공지능 시대를 준비합시다!

댓글 쓰기

다음 이전

POST ADS1

POST ADS 2