05. Linear & Logistic Regression
05. Linear & Logistic Regression¶
์ด์ : ํ๋ จ ๊ธฐ๋ฒ | ๋ค์: Multi-Layer Perceptron (MLP)
๊ฐ์¶
์ ํ ํ๊ท์ ๋ก์ง์คํฑ ํ๊ท๋ ๋ฅ๋ฌ๋์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ building block์ ๋๋ค. ์ ๊ฒฝ๋ง์ ๊ฐ ๋ ์ด์ด๋ ๋ณธ์ง์ ์ผ๋ก ์ ํ ๋ณํ + ๋น์ ํ ํ์ฑํ์ ์กฐํฉ์ ๋๋ค.
ํ์ต ๋ชฉํ¶
- ์ํ์ ์ดํด
- Gradient Descent ์๋ฆฌ
- Loss Function (MSE, Cross-Entropy)
-
ํ๋ ฌ ๋ฏธ๋ถ
-
๊ตฌํ ๋ฅ๋ ฅ
- Forward/Backward pass ์ง์ ๊ตฌํ
- ๊ฐ์ค์น ์ด๊ธฐํ
-
ํ์ต ๋ฃจํ ์์ฑ
-
์ค์ต
- MNIST ์ด์ง ๋ถ๋ฅ
- ๊ณผ์ ํฉ/์ ๊ทํ ์คํ
์ํ์ ๋ฐฐ๊ฒฝ¶
1. Linear Regression¶
๋ชจ๋ธ: ลท = Xw + b
์์ค: L = (1/2n) ฮฃ(y - ลท)ยฒ (MSE)
๊ทธ๋๋์ธํธ:
โL/โw = (1/n) X^T (ลท - y)
โL/โb = (1/n) ฮฃ(ลท - y)
์
๋ฐ์ดํธ:
w โ w - ฮท ร โL/โw
b โ b - ฮท ร โL/โb
2. Logistic Regression¶
๋ชจ๋ธ: z = Xw + b
ลท = ฯ(z) = 1/(1 + e^(-z))
์์ค: L = -(1/n) ฮฃ[yยทlog(ลท) + (1-y)ยทlog(1-ลท)] (BCE)
๊ทธ๋๋์ธํธ:
โL/โw = (1/n) X^T (ลท - y) โ ๋๋๊ฒ๋ Linear์ ๊ฐ์ ํํ!
โL/โb = (1/n) ฮฃ(ลท - y)
ํ์ผ ๊ตฌ์กฐ¶
01_Linear_Logistic/
โโโ README.md # ์ด ํ์ผ
โโโ theory.md # ์์ธ ์ด๋ก (์ํ์ ์ ๋)
โโโ numpy/
โ โโโ linear_numpy.py # Linear Regression (NumPy)
โ โโโ logistic_numpy.py # Logistic Regression (NumPy)
โ โโโ test_numpy.py # ๋จ์ ํ
์คํธ
โโโ pytorch_lowlevel/
โ โโโ linear_lowlevel.py # PyTorch ๊ธฐ๋ณธ ops ์ฌ์ฉ
โ โโโ logistic_lowlevel.py
โโโ paper/
โ โโโ linear_paper.py # ํด๋ฆฐํ nn.Module ๊ตฌํ
โโโ exercises/
โโโ 01_regularization.md # L1/L2 ์ ๊ทํ ์ถ๊ฐ
โโโ 02_softmax.md # Softmax ํ์ฅ
๋น ๋ฅธ ์์¶
NumPy ๊ตฌํ ์คํ¶
cd numpy/
python linear_numpy.py # ์ ํ ํ๊ท ํ์ต
python logistic_numpy.py # ๋ก์ง์คํฑ ํ๊ท ํ์ต
python test_numpy.py # ํ
์คํธ ์คํ
PyTorch ๊ตฌํ ์คํ¶
cd pytorch_lowlevel/
python linear_lowlevel.py
ํต์ฌ ๊ฐ๋ ¶
1. Gradient Descent¶
# ๊ธฐ๋ณธ ์๊ณ ๋ฆฌ์ฆ
for epoch in range(n_epochs):
# Forward
y_pred = model.forward(X)
# Loss
loss = compute_loss(y, y_pred)
# Backward (gradient ๊ณ์ฐ)
gradients = compute_gradients(y, y_pred)
# Update
model.weights -= learning_rate * gradients
2. ํ๋ ฌ ๋ฏธ๋ถ (์ค์!)¶
โ(Xw)/โw = X^T
โ(w^T X^T)/โw = X
โ(||Xw - y||ยฒ)/โw = 2 X^T (Xw - y)
3. Sigmoid์ ๊ทธ ๋ฏธ๋ถ¶
def sigmoid(z):
return 1 / (1 + np.exp(-z))
def sigmoid_derivative(z):
s = sigmoid(z)
return s * (1 - s) # ฯ(z)(1 - ฯ(z))
์ฐ์ต ๋ฌธ์ ¶
๊ธฐ์ด¶
- Linear Regression์ bias ์์ด ๊ตฌํํด๋ณด๊ธฐ
- ํ์ต๋ฅ (lr)์ ๋ฐ๊พธ๋ฉฐ ์๋ ด ์๋ ๊ด์ฐฐ
- Batch vs Stochastic Gradient Descent ๋น๊ต
์ค๊ธ¶
- L2 ์ ๊ทํ ์ถ๊ฐ (Ridge)
- L1 ์ ๊ทํ ์ถ๊ฐ (Lasso)
- Mini-batch GD ๊ตฌํ
๊ณ ๊ธ¶
- Momentum, Adam ์ตํฐ๋ง์ด์ ๊ตฌํ
- Early Stopping ๊ตฌํ
- Softmax Regression (๋ค์ค ํด๋์ค) ํ์ฅ
์ฐธ๊ณ ์๋ฃ¶
- CS229 (Stanford) Lecture Notes
- Deep Learning Book Chapter 5, 6
- Coursera ML - Andrew Ng