Linear regression 선형 회귀 모델 구현.
선형 회귀란? = 주어진 x와 y의 값을 가지고 서로 간의 관계를 파악하는 것.
새로운 x 값이 주어졌을 때, y값을 예측 하는 것.
x_data = [1,2,3]
y_data = [1,2,3] 이라고 하자.
X와 y의 상관 관계를 설명하기 위한 변수를 -1.0부터 1.0까지 균등분포 uniform distribution을 가진 무작위 값으로 초기화 한다.
W = tf.Variable(tf.random_uniform([1], -1.0, 1.0)) b = tf.variable(tf.random_uniform([1], -1.0, 1.0)) |
자료를 입력받을 플레이스 홀더를 설정한다.
X = tf.placeholder(tf.float32, name = ”X”)
Y = tf.placeholder(tf.float32, name = “Y”)
Hypothesis = W * X + b
X가 주어졌을 때, Y를 만들어 낼 수 있는 W와 b를 찾는 것.
W는 weight, b는 bias.
Loss function : 한 쌍 (x,y)의 데이터에 대한 손실값을 계산하는 함수.
실제값과 모델로 예측한 값이 얼마나 차이가 나는가를 나타내는 값.
Cost function이라고도 한다.
이 손실값들을 전체 데이터에 대해 구했을 때 cost 라고 한다. Cost가 낮아야 좋은 것.
즉, loss function이 작을수록 그 모델이 주어진 x값에 대해 y값을 정확하게 예측한 것.
함수식. = > Cost = tf.reduce_mean(tf.square(hypothesis – Y))
Gradient descent Optimizer 함수를 사용해서 손실값을 최소화 하는 연산 그래프를 생성해야한다.
W와 b의 값을 변경해가면서 손실값을 최소화 시키도록 하는데, 함수의 기울기를 구하고, 기울기가 낮은 쪽으로 계속 이동시키는 알고리즘이다.
Learning_rate(학습률)을 매개변수로 하는데 이것은 즉, 학습을 얼마나 ‘급하게’ 할 것인가에 대한 변수이다. 학습률이 크면 최적의 손실값을 못 찾고 지나치게 되고, 너무 작으면 학습 속도가 느려진다.
이 것을 hyperparameter라고 하는데, 계속 변경해가며 최적의 값을 찾는 것도 중요하다.
전체 코드 (jupyter notebook)
실행결과
'DeepLearning' 카테고리의 다른 글
Deep Learning | Learning Model 재사용 & 텐서보드 사용 (0) | 2021.06.30 |
---|---|
Computer Vision Summary | 컴퓨터 비전 총정리 -2 (0) | 2021.06.30 |
Computer Vision Summary | 컴퓨터 비전 총정리 -1 (0) | 2021.06.29 |
Deep Learning | 기본 인공 신경망 구현 (0) | 2021.06.24 |
Deep Learning & Tensorflow 사용 기초 1. (0) | 2021.06.17 |
댓글