๊ธฐ์กด ๋ถ์บ ๋ ๋
ธ์
์ ๊ฐ์ธ์ ์ผ๋ก ์ ๋ฆฌํ ๊ฒ์ ๊ณต๋ถํ ๊ฒธ ์์ฑํ ๊ธ์
๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ํด์ํด์ ์์ฑํฉ๋๋ค. (ํ๋ฆด ์ ์์. ์ ์ ์์ฒญ ์๋งใ
)
** ๊ฐ์์๋ฃ๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค **
** ์์
์ ์ด์ฉ์ ๊ธ์งํฉ๋๋ค **
Today's Keyword
๋ฏธ๋ถ, ๊ธฐ์ธ๊ธฐ, ๊ฒฝ์ฌํ๊ฐ๋ฒ, L2 norm, L2 norm ์ ๊ณฑ, SGD
np.linalg.pinv๋ก ๋ฐ์ดํฐ๋ฅผ ์ ํ ๋ชจ๋ธ๋ก ํด์ํด์ ์ ํํ๊ท์์ ์ฐพ์ ์ ์์. ์ฌ๊ธฐ์ L2 ๋ ธ๋ฆ์ ์ต์ํํ๋ ๊ฒ ๋ชฉํ.
L2 Norm
||์ ๋ต - ๋ ๋ฒกํฐ์ ์ฐจ์ด||²๋ฅผ ์ต์ํํ๋ B๋ฅผ ์ฐพ์์ผ ํจ.
๋ชฉ์ ์์ ์ต์ํํ๋ B๋ฅผ ๊ตฌํ๋ ๊ฒฝ์ฌํ๊ฐ๋ฒ ์๊ณ ๋ฆฌ์ฆ
L2 ๋ ธ๋ฆ์ ์ต์ํํ๋ ๋ฒกํฐ๋, L2 ๋ ธ๋ฆ ์ ๊ณฑ์ ์ต์ํํ๋ ๋ฒกํฐ๋ ๊ฒฐ๊ณผ๋ ๊ฐ์.
๊ทธ๋์ ๊ณ์ฐ ๊ฐ๋จํ๊ฒ ํ๋ ค๋ฉด L2 ๋ ธ๋ฆ ์ ๊ณฑ์ ์ฐ๋ ๊ฒ ๋ ํธํจ.
์ฝ๋ ์์
# L2 ๋
ธ๋ฆ ๊ณ์ฐํ๊ณ ๊ฒฝ์ฌํ๊ฐ๋ฒ ์คํํ๋ ์ฝ๋
import numpy as np
# ๋ฐ์ดํฐ ์ด๊ธฐํ
X = np.random.rand(100, 2) # ์
๋ ฅ ๋ฐ์ดํฐ
y = np.random.rand(100) # ํ๊ฒ๊ฐ
beta = np.zeros(2) # ์ด๊ธฐ ํ๊ท๊ณ์
lr = 0.01 # ํ์ต๋ฅ
T = 1000 # ๋ฐ๋ณต ํ์
for t in range(T):
error = y - X @ beta
grad = - X.T @ error / len(y) # ํ๊ท ์ค์ฐจ์ ๊ธฐ์ธ๊ธฐ ๊ณ์ฐ
beta = beta - lr * grad # ๊ฒฝ์ฌํ๊ฐ๋ฒ ์
๋ฐ์ดํธ
#์ด ์ฝ๋๋ก ๋ฌด์ด-ํ๋ก์ฆ ์ญํ๋ ฌ ์์ด ํ๊ท๊ณ์ ๊ตฌํ ์ ์์.
์ด๋ก ์ ~์ผ๋ก๋~
- Convex ํจ์์์ ์๋ ด ๋ณด์ฅ: ์ ์ ํ ํ์ต๋ฅ (lr)๊ณผ ๋ฐ๋ณต ํ์(t)๋ฅผ ์ฐ๋ฉด ์๋ ด์ด ๋ณด์ฅ๋จ.
- ์ ํํ๊ท: L2 ๋ ธ๋ฆ์ ์ฐ๋ ํ๊ท๊ณ์ beta๋ ๋ณผ๋กํจ์(Convex)์.
- ๋น์ ํ ํ๊ท: ์๋ ด์ด ํญ์ ๋ณด์ฅ๋์ง ์์.
ํ๋ฅ ์ ๊ฒฝ์ฌํ๊ฐ๋ฒ (SGD)
์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๋ค ์ฐ๋ ๊ฒ ์๋๋ผ ์ผ๋ถ ๋ฐ์ดํฐ๋ง ์จ์ ๋ชจ๋ธ์ ์ ๋ฐ์ดํธํจ. ํนํ ๋น๋ณผ๋ก ํจ์(Non-convex)์์ ์ ์ฉํจ.
- ๋ฏธ๋๋ฐฐ์น SGD: ์ผ๋ถ ๋ฐ์ดํฐ(Mini-batch)๋ก ์
๋ฐ์ดํธ. ์ฐ์ฐ๋๋ ์ค๊ณ , ํจ์จ๋ ์ข์.
- ์ ์ฒด (x,y) ๊ฐ ์๋๊ณ ๋ฏธ๋๋ฐฐ์น (X(b), y(b))์จ์ ์ ๋ํ๋ฏ๋ก ์ฐ์ฐ๋์ด b/n์ผ๋ก ๊ฐ์
- ๋ฏธ๋๋ฐฐ์น๋ฅผ ์ฐ๋ค ๋ณด๋ฉด ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ฐ์ง ์์๋ ๊ณก์ ๋ชจ์์ด ๋ฐ๋๋ฉด์ ๋จธ์ ๋ฌ๋์ ๋ ์ ์์ ์ํจ.
ํด์ฆ ์ค๋ต
๋ด๊ฐ ํ๋ ธ๋ ํด์ฆ ์ค๋ต...
'AI ๊ณต๋ถ ํญ์ํ์ > ๊ด๋ จ ์ด๋ก ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Math] Deep-Learning ํ์ต๋ฐฉ๋ฒ ์ดํดํ๊ธฐ (1) | 2025.01.20 |
---|---|
[Math] Gradient Descent (์ฐฉํ๋ฏธ๋ถ๋ง) (2) | 2024.12.16 |
[Math] ํ๋ ฌ์ ์์๋ณด์ (3) | 2024.12.02 |
[Math] ๋ฒกํฐ๋ฅผ ์์๋ณด์ (1) | 2024.11.22 |