<aside> ๐ก - ์ง๋ ์๊ฐ์ ์ด์ด ์ข ๋ fancyโจ ํ optimization์ ๋ํด ์์๋ณด์
</aside>
while True:
dx = compute_gradient(x)
x += learning_rate * dx
์ด๊ธฐ์ ์ค์ ํ ํ์ต๋ฅ (step_size)๋ฅผ ์ด์ฉํ์ฌ loss๊ฐ ์ต์๊ฐ ๋๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ค์น๋ฅผ ์ ๋ฐ์ดํธ
๋ฐ์ ๊ฐ๋ฅํ ๋ฌธ์
๋ฌธ์ 1) ์์คํจ์๊ฐ ๋ชจ๋ ๋ฐฉํฅ์์ ๋์ผํ์ง ์์ ๊ฒฝ์ฐ (๋น๋ฑ๋ฐฉ์ฑ ์์คํจ์, Poor conditioning)
๋ฌธ์ 2) Local minima / saddle points
๋ฌธ์ 3) noisy estimate (๋ถ์ ํํ ์ถ์ ๊ฐ)
์์คํจ์๋ฅผ ๊ณ์ฐํ ๋๋ ์์ฒญ๋๊ฒ ๋ง์ training set ๊ฐ๊ฐ์ loss๋ฅผ ์ ๋ถ ๊ณ์ฐํด์ผ ํจ (ํ์ค์ ์ผ๋ก ๋ถ๊ฐ๋ฅ)
๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ์ค์ ๋ก๋ mini-batch์ data ๋ก ์ค์ loss๋ฅผ ์ถ์
โ gradient์ ๋ถ์ ํํ ์ถ์ ๊ฐ๋ง์ ๊ตฌํ ๋ฟ, ์ ํํ gradient๋ฅผ ์ป์ ์ ์๋ค
โ ์๋ ด์ด ๋๋ฆด ์ ์๋ค
์ฆ we wantโฆ
๊ธฐ์ธ๊ธฐ๊ฐ 0์ด์ด๋ update๋ฅผ ๊ณ์ํ ์ ์๋ ๋ฐฉ๋ฒ
vx = 0 # velocity์ ์ด๊ธฐ๊ฐ์ ์ธ์ ๋ 0
while True:
dx = compute_gradinet(x)
vx = rho * vx + dx # rho: ๋ง์ฐฐ ๊ณ์. ๊ธฐ์ธ๊ธฐ๊ฐ ๋๋ฌด ๋น ๋ฅด๊ฒ ๋ณํ๋ ๊ฒ์ ์ ํํ๊ธฐ ์ํจ
x += learning_rate * vx
momentum ๋ฐฉ์์ ์ฝ๊ฐ ๋ ์ ๊ทธ๋ ์ด๋ ํ ๋ฒ์