본문 바로가기
DeepLearning

Deep Learning | Linear regression(선형 회귀 모델 구현)

by daewooki 2021. 6. 17.
반응형

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)

 

 

 

 

실행결과

 

 

반응형

댓글