728x90
반응형
1. gradient descent
gradient descent는 함수의 최소값을 찾는 알고리즘이다.
그림과 같이 무작위 값에
기울기 값 * learning_rate를 곱해서 빼는 과정을 반복하면서 점점 주변 값보다 작은 값을 찾아간다.
2. gradient descent in tensorflow
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import tensorflow as tf
tf.random.set_seed(0)
W = tf.Variable(tf.random.normal([1], -100., 100.))
for step in range(300) :
learning_rate = 0.01
with tf.GradientTape() as tape :
func = tf.square(W)
W_grad = tape.gradient(func, [W])[0]
W.assign_sub(tf.multiply(learning_rate, W_grad).numpy())
if step % 10 == 0 :
print('{} | {} | {}'.format(step, func.numpy(), W.numpy()))
|
cs |
3. 랜덤 시드를 정의한다.
5. W를 변수로 정의하고 무작위 값을 넣는다.
10. 미분을 위해서 GradientTape를 생성한다.
11. 이차함수를 정의한다.
13. W에서 함수의 기울기를 구한다.
14. W -= learning_rate * W_grad
16~17. 10번 실행할 때마다 step, func(W), W를 출력한다.
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
|
0 | [2611.85] | [50.084137]
10 | [1743.692] | [40.922386]
20 | [1164.1028] | [33.43657]
30 | [777.1642] | [27.32011]
40 | [518.84094] | [22.32252]
50 | [346.38245] | [18.239126]
60 | [231.24765] | [14.902693]
70 | [154.38278] | [12.176585]
80 | [103.0672] | [9.949158]
90 | [68.808495] | [8.129187]
100 | [45.9371] | [6.6421375]
110 | [30.667976] | [5.42711]
120 | [20.47419] | [4.4343443]
130 | [13.668731] | [3.6231823]
140 | [9.125353] | [2.9604034]
150 | [6.092157] | [2.418865]
160 | [4.067172] | [1.9763887]
170 | [2.7152765] | [1.6148534]
180 | [1.8127401] | [1.3194528]
190 | [1.2102] | [1.078089]
200 | [0.807939] | [0.8808772]
210 | [0.5393866] | [0.7197408]
220 | [0.3600988] | [0.5880807]
230 | [0.24040481] | [0.48050472]
240 | [0.16049618] | [0.39260736]
250 | [0.10714854] | [0.3207888]
260 | [0.07153322] | [0.26210782]
270 | [0.04775614] | [0.21416116]
280 | [0.03188238] | [0.17498526]
290 | [0.02128493] | [0.14297569]
|
cs |
위와 같이 결과를 보면 func(w) = w^2 인 함수의 최솟값인 0을 향해 가까워 지는 것을 볼 수 있다.
728x90
반응형
'Deep Learning' 카테고리의 다른 글
RHO-1: Not All Tokens are What You Need 논문 리뷰 (0) | 2024.05.03 |
---|---|
Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets 논문 리뷰 (0) | 2024.04.01 |
손으로 마우스 조종 with Mediapipe (0) | 2024.01.10 |
Recurrent Neural Network in Tensorflow (2) | 2024.01.07 |
Convolution Neural Network in Tensorflow (0) | 2023.12.15 |