-
[모두를 위한 딥러닝 시즌2][Lab2] Simple Liner Regression모두를 위한 딥러닝 시즌2 2021. 10. 9. 21:14
이번 시간에는 Linear Regression과 Hypothesis, Cost와 Cost function,
그리고 최종적으로 Minimize cost와 Gradient descent에 대해 알아볼것이다.
Regression은 많이 줄여진 말로, 정확하게는 Regression toward the mean이라는 의미이다.
데이터들은 결과적으로 전체 평균으로 회귀하려는 특징이 있다는 통계적 원리다.
Linear Regression(선형회귀) - 데이터를 가장 잘 대변하는 직선의 방정식을 찾는 것을 말한다.
데이터들을 한 점으로 좌표평면에 찍어서 그 데이터들을 가장 잘 대변하는 직선의 기울기(W)와 y절편(b)을 구한다.
우선 데이터들을 좌표평면에 찍고 그 점들을 가장 잘 대변한다고 하는 Hypothesis(가설)의 방정식
H(x) = Wx + b 를 세운다.
가설과 실제 값의 차이를 error; H(x) - y라고 하고 이걸로 우리의 가설이 부합한지 확인한다.
이때 H(x) - y 값이 작으면 작을 수록 좋다고 생각할 수 있지만, H(x) - y 값이 음수가 나올 수도 있기 때문에 보통 이 값을 제곱해서 사용한다.
Cost Function
에러 제곱의 평균값이다.
cost = tf.reduce_mean(tf.square(hypothesis - y_data))
Minimize Cost
머신러닝에서 학습의 최종적인 목표는 Cost를 최소화시키는 W와 b를 찾는 것이다.
cost를 minimize하는 알고리즘 중 가장 유명한 알고리즘 중 하나는 Gradient descent(경사 하강법)이다.
Gradient descent(경사 하강법)
경사를 하강하면서 cost가 minimize하는 W와 b를 찾는 알고리즘
learning rate는 gradient값을 얼마만큼 반영할 것인지를 반영한다.
주로 learning_rate값은 0.0001, 0.00001 같이 아주 작은 값으로 한다. learning_rate값이 작을 수록 W와 b가 업데이트되는 폭이 작아진다.
Gradient descent알고리즘을 이용해 직접 파이썬으로 실습해보았다.
import tensorflow as tf tf.enable_eager_execution() x_data = [1, 2, 3, 4, 5] y_data = [1, 2, 3, 4, 5] W = tf.Variable(2, 9) b = tf.variable(0, 5) learning_rate = 0.01 for i in range(100+1): with tf.GradientTape() as tape: hypothesis = W * x_data + b cost = tf.reduce_mean(th.square(hypothsis - y_data)) W_grad, b_grad = tape.gradient(cost, [W, b]) W.assign_sub(learning_rate * W_grad) b.assign_sub(learning_rate * b_grad) if i % 10 == 0: print("{:5}|{:10.4f}|{:10.4}|{:10.6f}".format(i, W.numpy(), b.numpy(), cost))
실행 결과를 보면 학습이 이루어질수록 에러값이 점점 작아지고 W와 b값이 1과 0에 가까워지고 있는 것을 확인할 수 있다.
출처
[모두를 위한 딥러닝 시즌2] - 유튜브 링크
☞ https://www.youtube.com/watch?v=qPMeuL2LIqY&list=PLQ28Nx3M4Jrguyuwg4xe9d9t2XE639e5C&index=2
'모두를 위한 딥러닝 시즌2' 카테고리의 다른 글
[모두를 위한 딥러닝 시즌2][Lab 6] Softmax Regression (0) 2021.10.27 [모두를 위한 딥러닝 시즌2][Lab 5] Logistic Regression (0) 2021.10.25 [모두를 위한 딥러닝 시즌2][Lab 4] Multi variable linear regression (0) 2021.10.24 [모두를 위한 딥러닝 시즌2][Lab 3] Liner Regression and How to minimize cost (0) 2021.10.24 [모두를 위한 딥러닝 시즌2][Lab1] 기본적인 Machine Learning 의 용어와 개념 설명 (0) 2021.10.01