본 게시글은 필자가 강의, 책 등을 통해 개인적으로 학습한 것으로
본문의 모든 정보는 최하단 출처를 기반으로 작성되었습니다.
선형 회귀(linear regression)는 '예측선 긋기'와 같다.
독립 변수 $x$와 종속 변수 $y$로 이루어진 실제 값, 데이터셋(data set)으로 부터
얻은 예측선을 이용하여 임의의 $x$에 대한 예측 결과 $y$를 얻는 것을 목표로 한다.
Linear Hypothesis
$H(x) = W*x + b$
예측선은 일차 함수로 수식은 위와 같다.
이제 상수 $W$와 $b$의 값을 구하는 과정이 필요하다.
최소 제곱법
$W = \displaystyle\frac{(x-mean(x))(y-mean(y))의 합}{(x-mean(x))^2의합}$
$b = mean(y) - (mean(x)*W)$
하지만 간단한 data set이 아닌 이상 위 방법으로 예측선을 구하는것은
사실상 불가능하다. 또한 ML다운 방법도 아니기 때문에 알아만 두자.
※다음 방법을 알아보기 전에 알아야 할 개념
Cost function(Loss function)
$cost(W,b) = \frac{1}{m}*\sum_{i=1}^{m}(H(x_{i})-y_{i})^2$
위 수식은 통계학에서 평균 제곱 오차(Mean Squared Error, MSE)라고 한다.
(MSE는 Linear regression에서 자주 사용하는 cost function이다.)
수식 안의 $H(x) - y$가 말하는 바와 같이
우리가 얻은 Linear Hypothesis와 실제 값의 오차를 측정하는 함수이다.
여기서 cost는 $H(x)$안의 $W,b$에 의해 달라질 것이다.
결국, 보다 정확한 예측선을 구하기 위해 이 오차가 어떻게 이용될 것인지는 뻔하다.
오차값(cost)을 점점 줄이기만 하면 된다.
Gradient descent algorithm
경사 하강법이라 한다. 이 gradient descent algorithm의 목표는
바로 위에서 언급한 cost(W,b)를 점점 작게 만들어 최소에 수렴하게 만드는 것이다.
그리고 최종적으로 찾은 상수 W,b의 값을 이용하여 비로소 정확한 Linear Hypothesis를 찾게 된다.
다음으로 이 경사 하강법의 원리를 살펴보자.(편의상 상수 b를 제외)
우선, 위의 cost fuction은 독립변수 w에 대한 이차식이기 때문에
w에 대한 cost의 변화는 아래와 같이 표현될 것이다.
여기서 cost가 최솟값을 갖도록 하는 w를 찾기 위해
미분을 사용하여 그래프 위의 기울기가 0이 되는 w값을 탐색한다.
결국 Gradient descent algorithm의 원리는,
임의의 w에서의 미분값(즉, 기울기)이 +라면 w를 왼쪽으로 이동,
반대로 기울기가 -라면 오른쪽으로 이동하는 것이다.
(이때, 점점 더 최솟값에 수렴하도록 만들기 위해 적절한 상수$\alpha$를 가중치로 둔다.)
이를 수식으로 표현해보자.
$W := W - \alpha \frac{\partial}{\partial W}cost(W)$
(위 식에서 편의상 cost fuction을 2로 나누고 미분하면)
$W := W - \alpha\frac{1}{m}\sum_{i=1}^{m}(Wx_{i}-y_{i})x_{i}$
(tensorflow 기능을 통해 코드 구현시 직접 미분할 필요는 없을 것이다.)
이제 최종적으로 나온 gradient descent algorithm을 사용하면
예측선을 구할 수 있다.
단, 이 경사 하강법은 cost fuction이 볼록 함수(Convex fuction)일 때만
사용 가능한데 현재 사용하는 Hypothesis가 대입 된 MSE의 경우 항상 convex하기 때문에 지금은 걱정할 필요 없다.
참고 문헌 및 자료
1. Sung Kim Youtube channel : https://www.youtube.com/channel/UCML9R2ol-l0Ab9OXoNnr7Lw
Sung Kim
컴퓨터 소프트웨어와 딥러닝, 영어등 다양한 재미있는 이야기들을 나누는 곳입니다.
www.youtube.com
2. Andrew Ng Coursera class : https://www.coursera.org/learn/machine-learning
3. 조태호(2017). 모두의 딥러닝. 서울: 길벗
'IT study > 모두를 위한 딥러닝' 카테고리의 다른 글
Logistic Regression(1) (0) | 2020.08.03 |
---|---|
Reading csv Files in tensorflow(+ using google colab) (0) | 2020.07.29 |
Linear Regression(4) - ex.2 (0) | 2020.07.29 |
Linear Regression(3) - ex.1 (0) | 2020.07.28 |
Linear Regression(2) - multi variable (0) | 2020.07.27 |