본문 바로가기
  • Seizure But Okay Developer
머신러닝/Coursera 강의 정리

1주차 강의 내용 정리 - 7

by Sky_Developer 2023. 7. 18.

개요

이제 앞서 배웠던 학습율과 cost function을 통해서 우리의 첫 머신러닝 알고리즘을 만들어본다. 결과적으로 선형 회귀 모델을 학습시켜 학습데이터와 밀접한 직선을 그릴 수 있다.

내용

지금까지 배운 공식들을 아래와 같이 정리한다.

gradient descent 의 경우 미분공식을 적용한 결과 오른쪽 결과와 같이 정리되는 것을 확인할 수 있다.

w에 대한 미분 공식이 풀이되는 과정은 아래와 같고, 미분 개념에 대한 설명은 첨부링크를 확인하길 바란다.

 

링크: https://zekesnote.tistory.com/411 

 

공식을 보면, cost function의 공식에서 값을 좀 더 그럴싸하게(neater) 구하기 위해 2를 추가로 나눴던 이유에 대해서 알수 있다. 2로 나누는 작업이 있었기 때문에 위 공식이 전개되면서 2가 곱해졌을 때 소거가 되는 것을 확인할 수 있다.

 

b가 미분되는 과정에 대해서 글로 서술하자면, wx + b -y 를 b로 미분할 경우 남는 값은 1이다. 그래서 공식의 결과가 아래와 같이 나온다.

정리하면 w, b 값을 아래와 같은 공식으로 값이 수렴할 때까지 반복을 하는데 이때 w, b 값은 동시에 수정이 되야 한다.

f(x) 함수는 linear regression model 이다.

gradient descent 에 대해서 배울 때 봤던 아래 그림을 다시 보면서 복기를 해보자. local minimum이 1개 이상 존재하고 이 경우 global minimum(모든 지점을 통틀어 존재하는 가장 작은 값)은 존재하지 않는다.

또한 시작 지점이 어디냐에 따라서 수렴하는 local minimum 값이 다르다는 것 또한 배웠다.

 

이제 제곱 오차 비용함수(squared error cost function) 그림을 통해서 global minimum에 대해서 보도록 하자. 아래 그림과 같이 그릇 형태로 표현되는 제곱 오차 비용함수(squared error cost function)는 항상 한개의 global minimum을 가진다. 이러한 형태의 비용함수를 convex function 이라고도 부르며, 적절한 학습율을 설정한다면 항상 global minimum 값에 수렴이 된다.

 

이제 앞서 정리한 gradient descent 알고리즘을 직접 선형회귀 모델에 적용해보도록 하자.

왼쪽은 학습 데이터와 선형회귀 모델을 적용한 직선이 나타난 패턴 그래프이다. 오른쪽은 비용 함수를 등차선으로 나타낸 그래프이다. 아래쪽은 비용 함수를 삼차원으로 나타낸 surface plot 이다.

위 그림에선 w와 b를 각각 -0.1, 900으로 세팅하였다. 그 경우 그림은 위와 같이 나타난다.

 

이제 비용함수를 더욱 최소화 시키기 위해 다른 w, b 값을 계속 대입해보자. 다른 값들을 대입할 때마다 cost function 그래프의 J(w) 값이 점점 최소화 되는 것과 선형회귀모델을 나타낸 f(x) 함수의 형태가 학습 데이터와 점점 밀접한 형태로 달라지는 것을 볼 수 있다. 우리가 원하는 값을 찾을 수 있게끔 올바른 방향으로 동작하고 있다는 것을 의미한다.

위 과정을 거쳐 global minimum 값을 찾을 수 있고 global minimum은 f(x) 함수 그래프에서 학습 데이터들과 잘 밀착된 형태의 직선을 나타낸다. 결과적으로 우리는 gradient descent 를 통해 이상적인 모델을 찾을 수 있고 해당 모델을 통해서 집값을 잘 예측할 수 있다.

 

이러한 gradient descent 는 보통 "Batch" gradient descent 라고 부른다. 배치라고 부르는 이유는 모든 학습 데이터들을 일부 데이터만 학습하는 것이 아니라 모든 데이터를 동원해서 학습하기 때문이다.

그래서 배치 gradient descent는 gradient descent 공식을 사용할 때 모든 학습 데이터를 사용하여 minimum 값을 찾기 위한 스텝을 밟는다, 즉 J(w) 값을 수정한다.

batch 가 모든 학습 데이터를 가져가 쓰는 것을 의미한다고 했는데, 학습 데이터의 일부만을 사용하는 gradient descent도 존재한다.

 

여기까지가 1주차 학습 내용이고, 선형회귀모델을 구하는 과정을 쭈욱 살펴봤다. 다음 강의에선 다양한 변수로 구성된 모델을 어떻게 동작시키고 구하는지를 살펴볼 것이다. 또한 비선형회귀에 대해서도 알아볼 것이며 이를 통해 훨씬더 유용한 알고리즘을 사용할 수 있다. 마지막으로 실제 앱에서 linear regression을 적용시켜 보는 방법에 대해서도 살펴볼 것이다.

댓글