Created at : 2024-06-26 11:48
Auther: Soo.Y
๋ชฉ์ฐจ
- ์ ๊ฒฝ๋ง์ด๋?
- ์ ๊ฒฝ๋ง์ ์ญ์ฌ
- ์ ๊ฒฝ๋ง์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์
- ์ ๊ฒฝ๋ง์ ๋์ ์๋ฆฌ
- ์ ๊ฒฝ๋ง์ ํ์ต ๊ณผ์
- ๋ค์ํ ์ ๊ฒฝ๋ง์ ์ ํ
- ์ ๊ฒฝ๋ง์ ์ฃผ์ ์์ฉ ๋ถ์ผ
- ์ ๊ฒฝ๋ง ๊ตฌํ ์์
- ์ ๊ฒฝ๋ง์ ์ฅ๋จ์
- ๊ฒฐ๋ก
1. ์ ๊ฒฝ๋ง์ด๋?
์ ๊ฒฝ๋ง(Neural Network)์ ์ธ๊ฐ ๋์ ์ ๊ฒฝ์ธํฌ ๊ตฌ์กฐ๋ฅผ ๋ณธ๋ ๋ง๋ ์ธ๊ณต ์ง๋ฅ ๋ชจ๋ธ์ ๋๋ค. ์ฌ๋ฌ ๊ฐ์ ์ธ๊ณต ๋ด๋ฐ์ด ๊ณ์ธต์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉฐ, ๋ณต์กํ ํจํด ์ธ์๊ณผ ๋ฐ์ดํฐ ๋ถ์์ ์ํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
2. ์ ๊ฒฝ๋ง์ ์ญ์ฌ
์ ๊ฒฝ๋ง์ ์ญ์ฌ๋ 1940๋ ๋๊น์ง ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋๋ค. ์ฒ์์๋ ๋จ์ํ ์ํ์ ๋ชจ๋ธ๋ก ์์ํ์ผ๋ฉฐ, 1980๋ ๋ ์ดํ๋ก ์ปดํจํ ์ฑ๋ฅ์ ๋ฐ์ ๊ณผ ํจ๊ป ๊ธ์๋๋ก ๋ฐ์ ํ์ต๋๋ค. ํนํ 2010๋ ๋์ ๋ค์ด์ ๋ฅ๋ฌ๋์ ๋ถ์์ผ๋ก ์ ๊ฒฝ๋ง์ ์ค์์ฑ์ด ๋์ฑ ๊ฐ์กฐ๋์์ต๋๋ค.
3. ์ ๊ฒฝ๋ง์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์
์ ๊ฒฝ๋ง์ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค:
- ๋ด๋ฐ(Neuron): ์ ๋ ฅ์ ๋ฐ์์ ํ์ฑํ ํจ์์ ๋ฐ๋ผ ์ถ๋ ฅ์ ์์ฑํฉ๋๋ค.
- ๋ ์ด์ด(Layer): ๋ด๋ฐ์ด ๋ชจ์ฌ ํ๋์ ์ธต์ ์ด๋ฃน๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ ๋ ฅ์ธต(Input Layer), ์๋์ธต(Hidden Layer), ์ถ๋ ฅ์ธต(Output Layer)์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ๊ฐ์ค์น(Weights): ๋ด๋ฐ ๊ฐ์ ์ฐ๊ฒฐ ๊ฐ๋๋ฅผ ๋ํ๋ด๋ฉฐ, ํ์ต์ ํตํด ์กฐ์ ๋ฉ๋๋ค.
- ๋ฐ์ด์ด์ค(Bias): ๋ด๋ฐ์ ํ์ฑํ ํจ์์ ๋ํด์ง๋ ๊ฐ์ผ๋ก, ๋ชจ๋ธ์ ์ ์ฐ์ฑ์ ๋์ ๋๋ค.
4. ์ ๊ฒฝ๋ง์ ๋์ ์๋ฆฌ
์ ๊ฒฝ๋ง์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๊ฐ ๋ด๋ฐ์ ๊ฐ์ค์น์ ๋ฐ์ด์ด์ค๋ฅผ ์ ์ฉํ์ฌ ์ถ๋ ฅ์ ๊ณ์ฐํฉ๋๋ค. ์ด ๊ณผ์ ์์ ํ์ฑํ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋น์ ํ์ฑ์ ์ถ๊ฐํฉ๋๋ค. ์ถ๋ ฅ์ ๋ค์ ์ธต์ผ๋ก ์ ๋ฌ๋๋ฉฐ, ๋ง์ง๋ง ์ถ๋ ฅ์ธต์์๋ ์ต์ข ์์ธก๊ฐ์ ์์ฑํฉ๋๋ค.
5. ์ ๊ฒฝ๋ง์ ํ์ต ๊ณผ์
์ ๊ฒฝ๋ง์ ํ์ต ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์์ ํ(Forward Propagation): ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ํตํด ์ถ๋ ฅ์ ๊ณ์ฐํฉ๋๋ค.
- ์์ค ํจ์(Loss Function): ์์ธก๊ฐ๊ณผ ์ค์ ๊ฐ ๊ฐ์ ์ค์ฐจ๋ฅผ ๊ณ์ฐํฉ๋๋ค.
- ์ญ์ ํ(Backpropagation): ์ค์ฐจ๋ฅผ ์ต์ํํ๊ธฐ ์ํด ๊ฐ์ค์น์ ๋ฐ์ด์ด์ค๋ฅผ ์กฐ์ ํฉ๋๋ค.
- ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ(Optimization Algorithm): ๊ฒฝ์ฌ ํ๊ฐ๋ฒ ๋ฑ์ ์ฌ์ฉํ์ฌ ๊ฐ์ค์น์ ๋ฐ์ด์ด์ค๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
6. ๋ค์ํ ์ ๊ฒฝ๋ง์ ์ ํ
์ ๊ฒฝ๋ง์๋ ์ฌ๋ฌ ๊ฐ์ง ์ ํ์ด ์์ต๋๋ค. ์ฃผ์ ์ ํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ํผ์ ํธ๋ก (Perceptron): ๋จ์ผ์ธต ์ ๊ฒฝ๋ง์ผ๋ก, ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํํ์ ๋๋ค.
- ๋ค์ธต ํผ์ ํธ๋ก (MLP, Multi-Layer Perceptron): ์ฌ๋ฌ ๊ฐ์ ์๋์ธต์ ๊ฐ์ง ์ ๊ฒฝ๋ง์ ๋๋ค.
- ํฉ์ฑ๊ณฑ ์ ๊ฒฝ๋ง(CNN, Convolutional Neural Network): ์ฃผ๋ก ์ด๋ฏธ์ง ์ฒ๋ฆฌ์ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ํ ์ ๊ฒฝ๋ง(RNN, Recurrent Neural Network): ์๊ณ์ด ๋ฐ์ดํฐ๋ ์์ฐ์ด ์ฒ๋ฆฌ์ ์ฌ์ฉ๋ฉ๋๋ค.
7. ์ ๊ฒฝ๋ง์ ์ฃผ์ ์์ฉ ๋ถ์ผ
์ ๊ฒฝ๋ง์ ๋ค์ํ ๋ถ์ผ์์ ํ์ฉ๋ฉ๋๋ค. ์ฃผ์ ์์ฉ ๋ถ์ผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ด๋ฏธ์ง ์ธ์: ๊ฐ์ฒด ํ์ง, ์ผ๊ตด ์ธ์ ๋ฑ
- ์์ฐ์ด ์ฒ๋ฆฌ: ํ ์คํธ ๋ถ๋ฅ, ๋ฒ์ญ, ์์ฑ ์ธ์ ๋ฑ
- ์ถ์ฒ ์์คํ : ์ฌ์ฉ์ ์ทจํฅ ๋ถ์์ ํตํ ์ถ์ฒ
- ์๋ฃ ์ง๋จ: ์ง๋ณ ์์ธก ๋ฐ ์ง๋จ ๋ณด์กฐ
8. ์ ๊ฒฝ๋ง ๊ตฌํ ์์
๋ค์์ PyTorch๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ ์ ๊ฒฝ๋ง์ ๊ตฌํํ๋ ์์ ์ ๋๋ค:
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
from torch.utils.data import DataLoader
# ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ๋ฐ ๋ก๋
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])
train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
# ์ ๊ฒฝ๋ง ๋ชจ๋ธ ์ ์
class SimpleNN(nn.Module):
def __init__(self):
super(SimpleNN, self).__init__()
self.fc1 = nn.Linear(28 * 28, 128)
self.fc2 = nn.Linear(128, 64)
self.fc3 = nn.Linear(64, 10)
def forward(self, x):
x = x.view(-1, 28 * 28)
x = torch.relu(self.fc1(x))
x = torch.relu(self.fc2(x))
x = self.fc3(x)
return x
# ๋ชจ๋ธ ์ด๊ธฐํ
model = SimpleNN()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
# ํ์ต ํจ์ ์ ์
def train(model, criterion, optimizer, train_loader, num_epochs=5):
for epoch in range(num_epochs):
for data, target in train_loader:
optimizer.zero_grad()
output = model(data)
loss = criterion(output, target)
loss.backward()
optimizer.step()
print(f'Epoch {epoch + 1}, Loss: {loss.item():.4f}')
# ํ์ต ์คํ
train(model, criterion, optimizer, train_loader, num_epochs=5)
9. ์ ๊ฒฝ๋ง์ ์ฅ๋จ์
์ฅ์ :
- ๋ณต์กํ ํจํด ์ธ์ ๋ฐ ๋ฐ์ดํฐ ๋ถ์์ด ๊ฐ๋ฅ
- ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ก ์ธํ ๋น ๋ฅธ ์ฐ์ฐ ์๋
- ๋ค์ํ ๋ถ์ผ์์ ๋์ ์ฑ๋ฅ์ ๋ณด์
๋จ์ :
- ๋ง์ ๋ฐ์ดํฐ์ ๊ณ์ฐ ์์์ด ํ์
- ๊ณผ์ ํฉ(overfitting) ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ
- ๋ชจ๋ธ ํด์์ด ์ด๋ ค์
10. ๊ฒฐ๋ก
์ ๊ฒฝ๋ง์ ํ๋ ์ธ๊ณต์ง๋ฅ์ ํต์ฌ ๊ธฐ์ ๋ก, ๋ค์ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. ๊ธฐ์ด ๊ฐ๋ ์ ์ดํดํ๊ณ , ๋ค์ํ ์ ํ๊ณผ ์์ฉ ๋ถ์ผ๋ฅผ ํ์ตํจ์ผ๋ก์จ ์ ๊ฒฝ๋ง์ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ ์ ์์ต๋๋ค. ์ ๊ฒฝ๋ง์ ๋ํ ์ง์์ ์ธ ์ฐ๊ตฌ์ ํ์ต์ ํตํด ๋ ๋ง์ ๊ฐ๋ฅ์ฑ์ ํ๊ตฌํ ์ ์์ ๊ฒ์ ๋๋ค.
๊ด๋ จ ๋ฌธ์
https://aws.amazon.com/ko/what-is/neural-network/