[Tensorflow]2.Linear Regression(1)
in Language on tensorflow
Lenear Rigression(1)
이번 시간에는 tensorflow를 이용하여 머신러닝(기계학습)을 구현하는 방법을 간단하게 설명하고 간단한 예제 실행도 해보겠습니다.
0.tensorflow는 무엇인가? 에서 간단하게 설명했었지만
머신러닝은 기존 훈련 데이터들을 이용하여 데이터를 구분지을 수 있는 판별식(WX+b)를 구한 후
새로운 데이터가 왔을 때 이를 예측하는 방법이라고 하였습니다.
말로 설명하면 아직 감이 안 오시는 분들이 많죠~ 직접 예제를 실행해보면서 알아가는 시간을 갖겠습니다.
머신러닝은 크게 4단계로 이뤄진다고 보면 됩니다.
1.training data를 준비한다.
2.Hypothesis(판별식)을 설정한다.
3.Cost함수를 설정한다.
4.cost함수를 최소화시키는 W,b를 구한다.
1.Training data set을 준비한다.
여기서 Training set이라고 하면 x_data(속성 값), y_data(실제 값)을 말합니다.
예를 들어 어떤 사람의 수학 점수를 가지고 대학교 합격,불합격 여부를 알고 싶다고 합시다.
그러면 학습을 하기 위해서 실제 데이터들이 필요한데, 학습데이터는 다음과 같은 형태입니다.x_data=[100,58,95,72,83] #학생1 100점,학생2 58점,학생3 95점, 학생4 72점,학생5 83점 y_data=[1,0,1,0,1] #합격(1) 불합격(0) 합격 불합격 합격
2.Hypothesis(판별식)을 설정한다.
여기서 Hypothesis는 데이터들을 구분할 수 있는 직선 정도라고 생각하면 됩니다.
그리고 이는 어떤 데이터가 주어졌을 때 예측한 값이 됩니다hypothesis=X*W+b
3.Cost함수를 설정한다.
cost 함수는 우리가 hypothesis로 설정한 직선으로 구한 예측 값과 실제 값이 얼마나 다른가를 나타내는 함수정도로 생각하면 됩니다.
cost함수를 일단 다음과 같이 정의하겠습니다.
H(x^i):예측 값
y^i:실제 값
cost=tf.reduce_mean(tf.square(hypothesis-Y))
tf.reduce_mean는 평균을 구해주고, tf.square는 제곱을 해준다.
4.cost함수를 최소화시키는 W,b를 구한다.
컴퓨터는 데이터를 훈련시키면서 cost 함수(우리가 예측한 값과 실제 값의 차이)를 작게 하는 W와 b 값을 구합니다.
W,b를 구하는 법은 Gradient decent algorithm(경사감소법)을 이용하는데 구체적인 방법은 알지 못해도 좋아요.
왜냐하면 컴퓨터가 알아서 하기 때문이죠!!!!
심지어 W,b도 컴퓨터가 스스로 변경한답니다!!
optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.0001) train=optimizer.minimize(cost)
tf.train.GradientDescentOptimizer는 경사감소법을 해주는 기계로 생각
learning_rate은 cost함수를 최소화 시킬 때 W,b값을 변화시키는 정도로 생각 (너무 커서도 작아서도 안 된다!)
optimizer.minimize(cost) cost를 최소화시킴
다음 장에서 직접 tensorflow를 이용해서 직접 훈련도 시켜보고 예측 값도 구해보겠습니다.