Optimization
Optimization๋ Loss Function์ ๊ฒฐ๊ณผ๊ฐ์ ์ต์ํํ๋ ๊ฐ์ค์น๋ฅผ ์ฐพ์๋ด๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ค.
ย
Random Search
โ ๏ธย ์ฃผ์! ์ ํ๋์ ํธ์ฐจ๊ฐ ํฌ๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก๋ ์ฐ์ด์ง ์๋ ๊ฐ๋
์ด๋ค.
์์๋ก ์ํ๋งํ W๋ค์ ๋ง์ด ๋ชจ์๋๊ณ Loss๋ฅผ ๊ณ์ฐํด์ ์ด๋ค W๊ฐ ์ข์์ง๋ฅผ ์ดํด๋ณด๋ ๋ฐฉ๋ฒ์ด๋ค.
ย
Gradient Descent
1์ฐจ ๋ฏธ๋ถ๊ณ์๋ฅผ ์ด์ฉํด ํจ์์ ์ต์๊ฐ์ ์ฐพ์๊ฐ๋ ๋ฐฉ๋ฒ์ด๋ค. ํจ์ ๊ฐ์ด ๋ฎ์์ง๋ ๋ฐฉํฅ์ผ๋ก ๊ฒฐ๊ณผ๊ฐ์ ๋ณํ์์ผ๊ฐ๋ฉด์ ์ต์ข
์ ์ผ๋ก ์ต์ ํจ์ ๊ฐ์ ๊ฐ๋๋ก ํ๋ ๊ฐ์ ์ฐพ๋ ๋ฐฉ๋ฒ์ด๋ค.
์์ธํ ๋ด์ฉ์ Gradient Descent ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์์ค.
ย
Stochastic Gradient Descent(SGD)
2-2์์ ์ดํด๋ณธ ๋ฐฉ๋ฒ์ Full Gradient Descent๋ผ๊ณ ํ๋๋ฐ ๋ชจ๋ Data์ ๋ํ์ฌ ์ผ์ผ์ด ์์
์ ํ๊ธฐ์๋ ์ฐ์ฐ๋๋ ๋ง๊ธฐ ๋๋ฌธ์ ์ค๋๊ฑธ๋ฆฐ๋ค. ๊ทธ๋์ ์ค์ ๋ก๋ ์๋์ ํจ์จ์ฑ์ ๋์ด๊ธฐ ์ํด Train Data์ ์ผ๋ถ๋ง ์ฌ์ฉํด์ Gradient์ ๊ณ์ฐํ๋๋ฐ ์ด ์ค ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ด Stochastic Gradient Descent(SGD)๋ค.
Minibatch๋ผ๋ ์์ ํธ๋ ์ด๋ ์ํ ์งํฉ์ผ๋ก ๋๋ ์ ๋ฐ๋ณต ํ์ตํ์ฌ Loss์ ์ ์ฒด ํฉ์ ์ถ์ ์น์ ์ค์ Gradient์ ์ถ์ ์น๋ฅผ ๊ณ์ฐํ๋ค.
์ด๋ Minibatch์ ๊ฐ์ผ๋ก๋ ๊ฐ์ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
# ๋ฏธ๋๋ฐฐ์น ๊ฒฝ์ฌํ๊ฐ๋ฒ while True: data_batch = sample_training_data(data, 256) # ์์)๋ฐฐ์น๊ฐ์ 256๊ฐ weights_grad = evaluate_gradient(loss_fun, data_batch, weights) weights += - step_size * weights_grad # ํ๋ผ๋ฏธํฐ ์ ๋ฐ์ดํธ