티스토리 뷰

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*
 
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 

의 내용을 보고 정리한 글입니다.







댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/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
글 보관함