본문 바로가기

AI/TensorFlow 학습

2. TensorFlow 2.x - Linear Regression 이론

참고: https://youtu.be/X4MeAAOy4cQ?si=pNBEW-9__29aq77v

 

 

Linear Regression은 미래를 예측하는데 많이 사용하는 방법으로,

과거의 데이터로부터 경향에 대해 파악하고 앞으로 있을 미래도 비슷한 경향을 가질거라는 전제하에 선형적으로 예측하는 것이다.

위에서 공부시간이 늘어날 수록 시험성적이 좋아지는데 더 몇시간을 공부하면 내가 원하는 점수에 도달할 수 있을 지 같은 문제를 푸는 것이다. 선형으로만 예측하기에 y = ax + b의 식에서 a, b를 찾는 문제가 된다. 

여기서 문제는 원래 직선함수는 두개의 점만 주어지면 되는데, 여기서는 여러개의 점(데이터)가 주어지므로 딱 맞는 직선을 구할 수 없다. 그러면 어떤 직선이 이 데이터를 잘 표현할까? --> 여기서, mse 또는 lms 라는 방식이 나오는 것이다. 

mse : mean square error, lms: least mean square

직선과 점의 거리(절대값)의 제곱의 합이 제일 작아지는 직선을 구하는 것이 답이 되는 것이다. 

한 점 x1에서의 결과는 y1이 되고 실제 성적 t1이라고 하면 그 점에서의 오차 e1 = y1 - t1 = ax1 + b - t1 이 된다.이 오차들의 제곱의 합은 mse = e1^2 + e2^2 + ... + eN^2 이 되고 이 문제는 mse값이 최소인 a, b를 찾는 문제가 되는 것이다.이러한 오차들의 합을 loss function으로 정하고 이것이 제일 작도록 만드는 것이 학습의 목적이 되는 것이다.

 

아래는 이 설명들에 대한 장표이다.

 

 

 

이러한 문제를 정작 어떻게 해결해야할지 컴퓨터에게 알려줘야 한다.

이때, 경사하강법(Gradient decent algorithm)이라는 방법을 사용한다.

이 문제에 대해, 위에서 언급한 loss function에 대해서 상기해보자.

loss function = {(ax1+b-t1)^2 + (ax1+b-t2)^2 + ... (axN+b-tN)^2 } /N

(맨 뒤에 /N은 평균을 만들어주기 위함이지 큰 의미없다.)

a와 b 중에서 b는 상수가 될 것이므로 a의 아래로 볼록한 이차 함수로 볼 수 있고, 이차함수의 최소값은 꼭지점에서 나타난다.

 

컴퓨터보고 "꼭지점을 찾아!"라고 명령한다고 듣지 않을 것이다. 꼭지점을 찾는 방법이 경사하강법이다.

임의의 점에서 시작하여 기울기를 구하고 값이 작아지는 방향(경사가 하강하는 방향)으로 점을 이동시키는 것을 반복함으로써 값이 더이상 작아지지 않는 a값을 찾아내는 것이다. (영상의 W가 여기서는 a)

 

기울기가 양수(dE(W)/dW>0, W로 편미분)이면, 그 다음 W는 현재 W보다 작아져야 하고, 

기울기가 음수(dE(W)/dW<0, W로 편미분)이면, 그 다음 W는 현재 W보다 커져야 한다. 그것을 수식으로 쓴 것이 아래이다.

Wn = Wn-1 - alpha*(dE(W)/dW)

 

마찬가지로, b에 대해서 같은 수식이 적용된다.

 

위 슬라이드는 경사하강법을 적용한 경우를 도식화 한것이다.

 

다음 글에서는 실제 코드를 만들어서 실행해 보자.