작은 신경망을 브라우저에서 직접 학습시켜 보세요. 배경색은 신경망의 '생각'(예측)이고, 점은 정답 데이터예요. 배경이 점의 색과 같아지도록 학습됩니다.
파란 영역 = "파란 점이라고 생각해", 주황 영역 = "주황 점". 옅은 곳은 자신이 없는 곳이에요.
같은 데이터로 함수만 바꿔 다시 학습해 보세요 — ReLU는 경계가 직선 조각으로 각지고, tanh는 부드럽고, 시그모이드는 눈에 띄게 느려요. 왜 그런지는 ⚡ 활성화 함수 실험실에서!
선이 굵고 파랗다 = 강한 양(+)의 가중치, 굵고 주황 = 강한 음(−)의 가중치. 학습이란 이 선들의 굵기를 조정하는 일이에요.
import torch
import torch.nn as nn
model = nn.Sequential(
nn.Linear(2, 4), # 입력 2 → 은닉 뉴런 4
nn.Tanh(), # 직선을 부드럽게 구부리기
nn.Linear(4, 1), # 은닉 4 → 출력 1
nn.Sigmoid(), # 0~1 확률
)
loss_fn = nn.BCELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.5)
for epoch in range(3000):
p = model(X) # X: (N, 2) 좌표들
loss = loss_fn(p, y) # y: (N, 1) 정답 0/1
optimizer.zero_grad()
loss.backward() # 역전파 — 모든 가중치의 기울기
optimizer.step()