๐ ์ผ๋ผ์ค ์ฐฝ์์์๊ฒ ๋ฐฐ์ฐ๋ ๋ฅ๋ฌ๋ (ํ๋์์ ์๋ , ๋ฐํด์ , ๊ธธ๋ฒ) ์ฐธ๊ณ
f(x) = y ๋ผ๋ ์ฐ์์ ์ธ ํจ์์์ x๋ฅผ epsilon_x๋งํผ ์ฆ๊ฐ์ํค๋ฉด y๊ฐ epsilon_y๋งํผ ๋ฐ๋๊ฒ ๋๋ค.
f(x + epsilon_x) = y + epsilon_y
๊ทธ๋ฆฌ๊ณ ์ด ํจ์์์ epsilon_x๊ฐ ์ถฉ๋ถํ ์๋ค๋ฉด ์ด๋ค ํฌ์ธํธ p์์ ๊ธฐ์ธ๊ธฐ a์ ์ ํ ํจ์๋ก f๋ฅผ ๊ทผ์ฌํ ์ ์๋ค. ์ฆ, epsilon_y๋ a * epsilon_x์ด๋ค.
f(x + epsilon_x) = y + a * epsilon_x
์ด ๊ธฐ์ธ๊ธฐ๋ฅผ p์์ f์ ๋ณํ์จ(๋ํจ์)์ด๋ผ๊ณ ํ๋ค. ๋ณํ์จ์ ํฌ๊ธฐ๋ f(x)์ ์ฆ๊ฐ๋ ๊ฐ์๊ฐ ์ผ๋ง๋ ๋น ๋ฅด๊ฒ ์ผ์ด๋๋์ง ์๋ ค์ค๋ค.
ํ ์ ์ฐ์ฐ์ ๋ณํ์จ์ ์๋ฏธํ๋ค. ์ ๋ ฅ ๋ฒกํฐ x, ํ๋ ฌ W, ํ๊น y์ ์์คํจ์ loss๊ฐ ์์ ๋ w๋ฅผ ์ฌ์ฉํ์ฌ ํ๊น์ ์์ธก y_pred๋ฅผ ๊ณ์ฐํ๊ณ y_pred์ ํ๊น y ์ฌ์ด์ ์ค์ฐจ๋ฅผ ๊ณ์ฐํ ์ ์๋ค.
y_pred = dot(W, x)
loss_value = loss(y_pred, y)
์ ๋ ฅ ๋ฐ์ดํฐ x์ y๊ฐ ๊ณ ์ ๋์ด ์์ ๊ฒฝ์ฐ loss_value = f(W) ๋ผ๊ณ ๋ณผ ์ ์๋ค.
W์ ํ์ฌ ๊ฐ์ W0์ด๋ผ๊ณ ํ ๋ W0์์ f์ ๋ณํ์จ์ W์ ๊ฐ์ ํฌ๊ธฐ์ ํ ์ gradient(f)(W0)์ด๋ค. ์ด ํ ์์ ๊ฐ ์์ gradient(f)(W0)[i, j]๋ W0[i, j]๋ฅผ ๋ณ๊ฒฝํ์ ๋ loss_value๊ฐ ๋ฐ๋๋ ๋ฐฉํฅ๊ณผ ํฌ๊ธฐ๋ฅผ ๋ํ๋ธ๋ค. gradient(f)(W0)๋ W0์์ f(W)์ ๊ธฐ์ธ๊ธฐ๋ฅผ ๋ํ๋ด๋ ํ ์์ด๋ค.
f(W)์ ๋ํด์ ๊ทธ๋๋์ธํธ์ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก W๋ฅผ ์์ง์ด๋ฉด f(W)์ ๊ฐ์ ์ค์ผ ์ ์๋ค.
์ ๊ทธ๋ํ๋ ๊ธฐ์จ์ ๋ฐ๋ฅธ ๋น์ ํ๋งค์จ์ ๋ํ๋ธ ๊ฒ์ด๋ค. ๊ธฐ์จ์ด ๋์ ์๋ก ๋น์ ํ๋งค์จ์ด ๋๋ค.
๋น์ ํ๋งค์จ์ ์์ธกํ๋ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ๋ง๋ ๋ค๊ณ ์๊ฐํ๊ณ ์ด ๋ ๋จธ์ ์ ํจ์๋ผ๊ณ ์๊ฐํด๋ณด์!
(์ฌ์ค ๋จธ์ ์ ํจ์๋ง ํฌํจ๋๋ ๊ฒ์ ์๋๋ค. ๋ค๋ฅธ ํํ๋ ์กด์ฌํ์ง๋ง ์ดํด๋ฅผ ์ํด์ ์ ์ ํจ์๋ก ์๊ฐํ์)
์ง์ ์ ํ๋ ๊ทธ๋ ธ๋ค. ์ด ์ง์ ์ y = wx + b๋ผ๋ ํจ์๋ก ๋ํ๋ผ ์ ์๋ค. ์ด ๋ w๋ ๊ธฐ์ธ๊ธฐ, b๋ y์ ํธ์ด๋ค.
ํ์ฌ ์ ์ง์ ์ ์ ๋ค์ ๋ถํฌ๋ฅผ ์ ๋ํ๋ด๊ณ ์์ง ์๋ค. ๋ค์ ๋งํด ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ์ ํํํ์ง ๋ชปํ๋ค. w์ b๋ฅผ ๋ฐ๊ฟ๋ณด์!
๋ณด๋ผ์ ์ง์ ์์ w์ b์ ๊ฐ์ ๋ณ๊ฒฝํ์ฌ ํ๋์ ์ง์ ์ ๊ทธ๋ ธ๋ค. ์ด ์ง์ ์ ์ฐ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ํํํ๊ณ ์๋ค! ์ฐ๋ฆฌ๊ฐ ๋ณ๊ฒฝํ w์ b๋ parameter๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ฆ, ์ฐ๋ฆฌ๋ ๋ฐฉ๊ธ parameter update๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ํํํ ์ ์๋ ์ง์ ์ ๊ทธ๋ฆฐ ๊ฒ์ด๋ค! ์ด๋ ๊ฒ ๋ง๋ค์ด์ง ์ง์ ์ ์ฐ๋ฆฌ๋ model์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค!
์ฐ๋ฆฌ๊ฐ ๋ง๋ ๋ชจ๋ธ์ ๊ธฐ์จ์ด x1์ผ ๋ y_hat์ ๋น์ ํ๋งค์จ์ ์์ธกํ๊ณ ์๋ค. ํ์ง๋ง ์ค์ ๋น์ ํ๋งค์จ์ y์ด๋ค. y - y_hat, ์ฆ ๊ทธ๋ํ์์ ๋ ธ๋์ ๋น๊ธ์ผ๋ก ์น ํด์ ธ์๋ ๋ถ๋ถ์ด ๋ฐ๋ก ์ค์ ๊ฐ์์ ์์ธก๊ฐ์ ๋บ ์๋ฌ์ด๋ค. ์ฐ๋ฆฌ๋ ์ด ์๋ฌ๊ฐ ์ต๋ํ ์์ ๋ชจ๋ธ์ ๋ง๋ค๊ณ ์ถ๋ค.
๋ชจ๋ธ์ด 1๋ฒ ํ์ดํ๋ฅผ ๋ฐ๋ผ ์ด๋ํ๋ฉด ์ค์ฐจ๊ฐ ์ ์ ์ค์ด๋ ๋ค. ํ์ง๋ง ๋ค์ 2๋ฒ ํ์ดํ๋ฅผ ๋ฐ๋ผ ์ด๋ํ๋ฉด ์ค์ฐจ๊ฐ ๋ค์ ์ปค์ง๊ฒ ๋๋ค.
์ ๋ด์ฉ์ ๊ทธ๋ํ๋ก ๋ํ๋ด๋ฉด ์ ๋ฐ ๊ทธ๋ํ๋ก ๋ํ๋ผ ์ ์๋ค.(parameter๊ฐ w์ b๊ฐ ์์ง๋ง ์ฐ์ w๋ง ๊ณ ๋ คํ์ ๊ทธ๋ฆฌ๊ธฐ ์ด๋ ต๋ค ..!) ์ค์ฐจ๊ฐ ๊ฐ์ฅ ์ ์ ๋ถ๋ถ์ ๋ฐ๋ก ์ ์ ์ ๊ธฐ์ธ๊ธฐ, ๋ฏธ๋ถ๊ฐ์ด 0์ด ๋๋ ์ง์ ์ด๋ค.
w1์์์ ์๊ฐ๋ณํ์จ์ ๊ตฌํด๋ณด๋ฉด +๊ฐ์ด ๋์ฌ ๊ฒ์ด๋ค. w1์์ dw1(w1์ ์๊ฐ๋ณํ์จ/๊ธฐ์ธ๊ธฐ/๋ฏธ๋ถ๊ฐ)์ ๋นผ๋ฉด w2๋ก ์ด๋ํ๊ฒ ๋๋ค. ์ฆ ์ต์๊ฐ์ ๊ฐ๊น์์ง๋ ๊ฒ์ด๋ค!
์ด๋ฒ์ w1์์ ์๊ฐ๋ณํ์จ์ด -๊ฐ์ด๋ค. w1์์ dw1์ ๋นผ๋ฉด ์ฐ์ธก์ผ๋ก ์ด๋ํ์ฌ w2๋ก ์ด๋ํ๊ฒ ๋ ๊ฒ์ด๋ค. ์ญ์ ์ต์๊ฐ์ ๊ฐ๊น๊ฒ ์ด๋ํ๊ฒ ๋๋ค.
ํ์ง๋ง ๋ฏธ๋ถ๊ฐ์ด ๋๋ฌด ์ปค์ ์ ๊ทธ๋ฆผ์ฒ๋ผ ์ต์๊ฐ์ผ๋ก ๊ฐ๊น์์ง๋ ๊ฒ์ด ์๋๋ผ ์คํ๋ ค ์๋ฌ๊ฐ ์ปค์ง๋ ๊ฒฝ์ฐ๊ฐ ์์ ์๋ ์๋ค. ์ด ๊ฒฝ์ฐ ๋ฐ์ฐํ๊ฒ ๋์ด์ ํ์ต์ด ๋์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด w = w - dw๊ฐ ์๋๋ผ w = w - r * dw๋ผ๋ ์์์ ์ด์ฉํ๋ค. ์ด ๋ r์ ํ์ต๋ฅ ๋ก 0 ~ 1 ์ฌ์ด์ ๊ฐ์ ๊ฐ์ง๋ค.