Linear Regression · 학습
이번에 배울 내용
오차가 줄어드는 과정과 얻은 예측식을 함께 보면 학습률이나 Bias가 왜 필요한지 판단할 수 있습니다.
전체 흐름
입력·목표값 → 선형식 → Loss·Gradient → 예측 오차
예측식과 학습
Linear Regression의 예측식은 ŷ=wx+b입니다. Loss를 줄이는 방향으로 w와 b를 바꿉니다. Bias가 없으면 입력 0의 예측도 0으로 제한되어 센서 Offset을 설명하기 어렵습니다.
Loss 곡선을 읽는 이유
학습률이 너무 크면 Loss가 커지거나 흔들릴 수 있고, 너무 작으면 정해진 횟수 안에 충분히 줄지 않습니다. 같은 자료·초기값·반복 수에서 한 조건만 바꾸어 원인을 구분합니다.
풀이 예제
제공 코드는 ,…,3.5에서 y=1.8x+.7에 작은 노이즈를 더한 합성 자료를 만듭니다. seed=7입니다.
import numpy as np
import matplotlib.pyplot as plt
import torch
from torch import nn
torch.manual_seed(7)
x=torch.arange(0,4,.5).reshape(-1,1)
y=1.8*x+.7+.15*torch.randn_like(x)
def fit_regression(lr=.05,bias=True,epochs=200):
torch.manual_seed(7);model=nn.Linear(1,1,bias=bias);opt=torch.optim.SGD(model.parameters(),lr=lr);history=[]
for _ in range(epochs):
loss=((model(x)-y)**2).mean();opt.zero_grad();loss.backward();opt.step();history.append(loss.item())
return model,history
model,history=fit_regression()
print('weight',model.weight.detach().numpy(),'bias',model.bias.detach().numpy())
weight [[1.8055699]] bias [0.72974294]