티스토리 뷰
Simplified hypothesis
여기서는 간략한 hypothesis를 사용하겠습니다.(b생략)
cost 최소화의 tensorflow 구현
x축은 w가 되고 y축은 cost가 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import tensorflow as tf import matplotlib.pyplot as plt X=[1,2,3] Y=[1,2,3] W=tf.placeholder(tf.float32) hypothesis=X*W cost=tf.reduce_mean(tf.square(hypothesis-y)) sess=tf.Session() sess.run(tf.global_variables_initializer()) W_val=[] cost_val=[] for i in range(-30,50): feed_W=i*0.1 curr_cost,curr_W=sess.run([cost,W],feed_dict={W:feed_W}) W_val.append(curr_W) cost_val.append(curr_cost) plt.plot(W_val,cost_val) plt.show() | cs |
실행하면 다음과 같은 그래프가 실행된다.
Gradient Descent구해보기
이제 Gradient Descent를 이용해 w의 값을 구해보자
여기서 알파는 어느정도 내려가는지의 대한 정도를 나타낸다.
기울기가 +면 w의 값은 감소하고, 기울기가 -면 w의 값은 증가하여 기울기가 0인 부분을 구한다.
이제 위 Gradient Descent를 tensorflow로 구현해 보자
1 2 3 4 5 | learning_rate=0.1 gradient=tf.reduce_mean((W*X-Y)*X) descent=W-learning_rate*gradient update=W.assign(descent) | cs |
위 코드는 사람이 직접 값을 미분한 것이다. 수동으로 미분을 해서 최소값을 구해도 되지만 코드가 복잡해 지기 때문에 자동으로 최소값을 구해주는 함수를 사용하면 다음과 같다.
1 2 | optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.1) train=optimizer.minimize(cost) | cs |
전체 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | import tensorflow as tf X=[1,2,3] Y=[1,2,3] W=tf.Variable(5.0) hypothesis=X*W cost=tf.reduce_mean(tf.square(hypothesis-Y)) #learning_rate=0.1 #gradient=tf.reduce_mean((W*X-Y)*X) #descent=W-learning_rate*gradient #update=W.assign(descent) optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.1) train=optimizer.minimize(cost) sess=tf.Session() sess.run(tf.global_variables_initializer()) for step in range(10): print(step,sess.run(W)) sess.run(train) | cs |
처음에 5.0이라는 말도 안되는 값을 주고 시작한다. 하지만 실행해보면 점점 1에 가까워지면서 1에 수렴하게 된다.
W의 값을 -3.0으로 바꿔도 1로 수렴하게 된다.
-----------------------------------------------
이 글은
https://hunkim.github.io/ml/, https://gist.github.com/haje01/202ac276bace4b25dd3f, http://pythonkim.tistory.com/8
의 내용을 보고 정리한 글입니다.
'AI > 딥러닝(sung kim)' 카테고리의 다른 글
multi-variable linear regression을 tensorflow에서 구현하기 (0) | 2018.05.22 |
---|---|
multi-variable linear regression (1) | 2018.05.22 |
Tensorflow로 간단한 linear regression을 구현 (0) | 2018.05.18 |
Tensorflow의 기본적인 operations (0) | 2018.05.14 |
Linear Regression의 cost 최소화 알고리즘의 원리 (0) | 2018.05.09 |
댓글