ํด๋น ๊ธ์ FastCampus - '[skill-up] ์ฒ์๋ถํฐ ์์ํ๋ ๋ฅ๋ฌ๋ ์ ์น์ ๊ฐ์๋ฅผ ๋ฃ๊ณ ,
์ถ๊ฐ ํ์ตํ ๋ด์ฉ์ ๋ง๋ถ์ฌ ์์ฑํ์์ต๋๋ค.
1. ๋ค์, ๋ฅ๋ฌ๋์ ๋ชฉ์ ์?
- ์ฐ๋ฆฌ์ ๋ชฉ์ ์ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ์ ๋, ์ํ๋ ์ถ๋ ฅ์ ๋ฐํํ๋ ๊ฐ์์ ํจ์๋ฅผ ๋ชจ์ฌํ๋ ๊ฒ
- Linear Layer๋ฅผ ํตํด ์ด๋ฌํ ํจ์๋ฅผ ๊ทผ์ฌํจ
- ํด๋น ํจ์๊ฐ ์ผ๋ง๋ ์ ์๋ํ๋์ง๋ฅผ ์ธก์ ํ ์ ์๋ ๊ธฐ์ค์ด ํ์ํจ
- ์ด ๊ธฐ์ค์ด ๋ฐ๋ก Loss Function
2. Loss๋?

- Loss(์์ค๊ฐ): ์ค์ ์ถ๋ ฅ๊ฐ(ลท)๊ณผ ๋ชฉํ ์ถ๋ ฅ๊ฐ(y) ์ฌ์ด์ ์ฐจ์ด
- Loss๊ฐ ์์์๋ก ๋ชจ๋ธ์ด ๋ชฉํ ํจ์์ ์ ๊ฐ๊น์์ง๋ค๊ณ ๋ณผ ์ ์์
- ๋ฐ๋ผ์ Loss๊ฐ ์์ Linear Layer๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ค์
3. Loss Function์ ๊ฐ๋
- Linear Layer์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ๊ฟ ๋๋ง๋ค Loss ๊ฐ์ ๊ณ์ฐ
- Loss Function์ ๋ค์๊ณผ ๊ฐ์ ํจ์๋ก ์ดํดํ ์ ์์

์
๋ ฅ: Linear Layer์ ํ๋ผ๋ฏธํฐ
์ถ๋ ฅ: ํด๋น ํ๋ผ๋ฏธํฐ์์์ Loss ๊ฐ
4. ๋ํ์ ์ธ Loss ๊ณ์ฐ ๋ฐฉ์
4.1 ์ ํด๋ฆฌ๋์ ๊ฑฐ๋ฆฌ (Euclidean Distance)
- L2 (L1์ ์ ๋๊ฐ)
- ๋ ์ ์ฌ์ด์ ์ง์ ๊ฑฐ๋ฆฌ

4.2 RMSE (Root Mean Square Error)
- ํ๊ท ์ ๊ณฑ ์ค์ฐจ์ ์ ๊ณฑ๊ทผ
- ์ ํด๋ฆฌ๋์ ๊ฑฐ๋ฆฌ์์ ์ฐจ์์ ํฌ๊ธฐ๋งํผ Normalize ํ ๊ฒ

4.3 MSE (Mean Square Error)
- ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉ๋๋ Loss Function
- RMSE์์ ์ ๊ณฑ๊ทผ์ ์๋ตํ ํํ (์ต์ ํ ๋ฐฉํฅ์ ๋์ผ)
- 1/n๋ ์ ๊ฑฐํด์ ์ฐ๊ธฐ๋ ํจ (์ด์ฐจํผ ์ต์ ํ ๋ฐฉํฅ์ ๋ฐ๋์ง ์์ผ๋)

- ์ฌ๋ฌ ๊ฐ์ batch ๊ฒฝ์ฐ

def mse(x_hat, x):
y = ((x - x_hat)**2).mean()
return y
import torch.nn.functional as F
print(F.mse_loss(x_hat, x))
print(F.mse_loss(x_hat, x, reduction='sum'))
print(F.mse_loss(x_hat, x, reduction='none'))
import torch.nn as nn
mse_loss = nn.MSELoss()
mse_loss(x_hat, x)
5. Summary
-
์ฐ๋ฆฌ๊ฐ ์ํ๋ ํจ์๋ฅผ ์ ๋ชจ์ฌํ๋ ค๋ฉด,
- ํ์ต์ฉ ์
๋ ฅ ๋ฐ์ดํฐ๋ฅผ Linear Layer์ ๋ฃ๊ณ
- ๊ทธ ๊ฒฐ๊ณผ ์ถ๋ ฅ๊ฐ(ลท)๊ณผ ๋ชฉํ๊ฐ(y)์ ์ฐจ์ด๋ฅผ ๊ณ์ฐํด
- ๊ทธ ์ฐจ์ด๋ฅผ ์ต์ํํ๋ ํ๋ผ๋ฏธํฐ(ฮธ)๋ฅผ ์ฐพ์์ผ ํจ
-
๋ฐ๋ผ์, ํ์ต์ ํต์ฌ์ Loss๋ฅผ ์ต์ํํ๋๋ก ๋ชจ๋ธ์ ์กฐ์ ํ๋ ๊ฒ์