ย
์ผ์ฐจ ํจ์์ธ ๊ฒฝ์ฐ ์๋ ์๊ณผ ๊ฐ์ด ํจ์์ ๋ฏธ๋ถํ์ฌ ๊ณ์ฐํ๋ค. ์ด๋ ๊ฒ ์์น์ ์ผ๋ก ๊ฒฝ์ฌ๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ Numerical Gradient๋ผ๊ณ ํ๋ค.
ย
ย
๋งจ ์ผ์ชฝ์ด ํ์ฌ์ Weight ๊ฐ์ด๊ณ ์๋์๋ Loss ๊ฐ์ด ๋ํ๋์๋ค. ๋ฅผ 0.0001์ผ๋ก ์ค์ ํ ํ Gradient๋ฅผ ๊ตฌํ๊ธฐ์ํด ์์ ์์์ ์ด์ฉํ ๊ฒฐ๊ณผ๋ ๋งจ ์ค๋ฅธ์ชฝ๊ณผ ๊ฐ๋ค. -2.5๋ผ๋ Gradient ๊ฐ์ ํ์ธ ํ ์ ์๋๋ฐ ์ด ๋ ๊ธฐ์ธ๊ธฐ๊ฐ ์์๋ผ๋ ๊ฒ์ Loss์ ์์ ์ํฅ์ ์ค๋ค๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
Numerical Gradient์ ๊ฒฝ์ฐ Debugging ํ๊ธฐ ์ข๋ค๋ ์ฅ์ ์ด ์์ง๋ง ์ด๋ ๊ฒ ํ๋์ ๊ฐ๋ค์ ์ผ์ผ์ด ๊ณ์ฐํ๋ฉด ๋ถ์ ํํ๊ณ ๋งค์ฐ ์ค๋๊ฑธ๋ฆด ๊ฒ์ด๋ค.
ย
์ด๋ฌํ ๋จ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฏธ๋ถ์์ ์ด์ฉํ์ฌ Gradient ๊ฐ์ ํ๋ฒ์ ์ป๋ ๋ฐฉ๋ฒ์ Analytic Gradient๋ผ๊ณ ํ๋ค.
ย
Analytic Gradient์ ๋น ๋ฅด๊ณ ๊ฐํธํ์ง๋ง ์ฝ๋ ์์ฑ์ ์๋ฌ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์ ๊ฒํ ๊ณผ์ ์์ Numerical Gradient ๋ฐฉ๋ฒ์ ํ์ฉํ์ฌ Gradient Check๋ฅผ ์ค์ํ๋ค.
# ๋ฏธ๋ถ ์ด์ฉํ ๊ฒฝ์ฌํ๊ฐ๋ฒ (Analytic Gradient) while True: weights_grad = evaluate_gradient(loss_fun, data, weights) weights += - step_size * weights_grad # ํ๋ผ๋ฏธํฐ ์ ๋ฐ์ดํธ
ย