김성훈 딥러닝 2 - Linear Regression의 가설(Hypothesis)과 비용(cost) 설명

기타/웹 2.0 2017.11.15 12:46 Posted by 드론의 미래가 궁금한 푸른하늘이

Lec 02 - Linear Regression의 가설(Hypothesis)과 비용(cost) 설명

https://www.youtube.com/watch?v=Hax03rCn3UI

  • 시험성적 예측 (supervised learning) 선형 회귀분석
    • x(hours), y(score) ->[[10,90], [9,80], [3,50], [2,30]] 의 경우.
    • regression 모델로 training 시킴
    • (x,y) ->[[1,1], [2,2], [3,3]] 의 경우
    • 가설(Hypothesis) : linear regression.
      • 최적의 선을 찾는 것이 학습과정
  • 선형 회귀분석의 가설 : H(x) = Wx + b 에서, 가장 좋은 W와 b 를 찾아야 함.
    • 어떤 가설이 좋은지를 찾는다는 것은, 실제 데이터와, 가설 H(x)에 의한 점과의 거리가 가까울 수록 좋은 모델임. 
  • 이렇게 거리를 측정하는 것을 Cost Function, Loss Function 이라고 함. 대부분 두 값의 차이의 제곱을 구하게 됨

  •  Cost function 의 정의

    • 이 cost 함수는 W와 b 의 함수가 되는데, cost를 최소로 줄여주는 W, b를 찾는 것이 학습임.

Lab 02 TensorFlow로 간단한 linear regression을 구현하는 방법

  • TF 연산을 사용하여 그래프를 Build
    • Hypothesis

x_train = [1,2,3]
y_train = [1,2,3]

# tf의 Variable이란, TF가 t사용하는, 자체적으로 변경시키는, trainable 변수.
# [1]는 shape.
W = tf.Variable(tf.random_normal([1]), name = 'weight')
b = tf.Variable(tf.random_normal([1]), name = 'bias')

# 우리는 Linear Regression을 가정했으므로, W *x + b 가 hypothesis
hypothesis = x_train * W + b

    • Cost function

# reduce_mean 은 평균을 구하라는 연산
cost = tf.reduce_mean(tf.square(hypothesis - y_train)) 

    • GradientDescent : Minimize. 현재는 그냥 이렇게 쓴다고만 생각할 것.

# Minimize
optimizer = tf.train.GradientDescentOptimizer (learning_rate = 0.01)
train = optimizer.minimize(cost)

  • 그래프를 실행/갱신 한뒤, 결과를 출력

#  세션에서 그래프를 실행시킨다.
sess = tf.Session()
#그래프에서 글로벌 변수(W, b)를 초기화한다.
sess.run(tf.global_variables_initializer())

# train을 실행시키면 여기에 연결된 optimizer-cost-hypothesis-W/b 가 모두 실행된다.
for step in range(2001) :
    sess.run(train)
    if step % 20 ==0 :
        print(step, sess.run(cost), sess.run(W), sess.run(b))

  • 결과

0 1.65899 [ 0.83828998] [-0.95781285]
20 0.0862329 [ 1.26493335] [-0.72846115]
40 0.0654389 [ 1.29238355] [-0.67667371]

1960 6.32628e-06 [ 1.00292134] [-0.00664066]
1980 5.7456e-06 [ 1.00278401] [-0.0063286]
2000 5.21818e-06 [ 1.00265312] [-0.00603121]

=========

  • Placehoder를 사용할 경우

import tensorflow as tf

W = tf.Variable(tf.random_normal([1]), name = 'weight')
b = tf.Variable(tf.random_normal([1]), name = 'bias')
X = tf.placeholder(tf.float32, shape=[None])   # None 이면 실수. 갯수는 자유
Y = tf.placeholder(tf.float32, shape=[None])

hypothesis = X * W + b

cost = tf.reduce_mean(tf.square(hypothesis - Y))

optimizer = tf.train.GradientDescentOptimizer (learning_rate = 0.01)
train = optimizer.minimize(cost)

sess = tf.Session()

sess.run(tf.global_variables_initializer())

# 세션을 실행시킬 때, 여러개의 변수를 한꺼번에 돌릴 수 있다.
for step in range(2001) :
    cost_val, W_val, b_val, _ = sess.run([cost, W, b, train], feed_dict={X:[1,2,3,4,5], Y:[2.1, 3.1, 4.1, 5.1, 6.1]})
    if step % 20 ==0 :
        print(step, cost_val, W_val, b_val)

#여기까지는 optimize 시킨 W,b를 찾는 과정임.
#이를 사용하여 predict를 해보면...
print(sess.run(hypothesis, feed_dict={X: [5]}))
print(sess.run(hypothesis, feed_dict={X: [1.5, 5.5]}))

#이러한 답이 나온다.
[ 6.10004997]
[ 2.59992599  6.60006762]


신고

댓글을 달아 주세요

◀ Prev 1 2 3 4 5 6 7 8 9 10 ··· 1557  Next ▶
BLOG main image
드론과 지도
드론이 세상을 바꾸고 있습니다.드론의 활용처가 계속 넓어지고 있고, 글로벌 기업들의 참여가 많아지고 있으며, 새로운 기술들이 속속 등장하고 있습니다. 하지만 우리나라의 드론 산업은 일부 기업을 제외하면 중국에서 생산된 드론을 가져다가 조립하는 수준이 대부분입니다. 드론은 하드웨어, 소프트웨어, 데이터처리가 복합된 기술입니다. 어떤 기술들을 어떻게 조합할지에 성패가 달렸죠. 5년뒤 10년뒤에 이 블로그엔 어떤 글이 적힐까요? 그것이 궁금합니다.
by 푸른하늘이
Profile for bluesky61

달력

«   2017/12   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

카테고리

전체보기 (1557)
구글어스 (829)
측량/GPS/GIS (215)
사진 (96)
드론/쿼드콥터 (239)
지오캐싱 (47)
기타 (130)
  • 4,226,345
  • 574956
TNM Media textcube get rss

드론과 지도

푸른하늘이's Blog is powered by Tistory. / Supported by TNM Media.
Copyright by 푸른하늘이 [ http://www.ringblog.com ]. All rights reserved.

Textcube TNM Media
푸른하늘이's Blog is powered by Tistory. Designed by Qwer999. Supported by TNM Media.