강의자료 · 전기공학머신러닝실습

Linear Regression · 학습

이번에 배울 내용

오차가 줄어드는 과정과 얻은 예측식을 함께 보면 학습률이나 Bias가 왜 필요한지 판단할 수 있습니다.

전체 흐름

입력·목표값 → 선형식 → Loss·Gradient → 예측 오차

예측식과 학습

Linear Regression의 예측식은 ŷ=wx+b입니다. Loss를 줄이는 방향으로 w와 b를 바꿉니다. Bias가 없으면 입력 0의 예측도 0으로 제한되어 센서 Offset을 설명하기 어렵습니다.

ŷ=wx+b\hat{y}=wx+b

Loss 곡선을 읽는 이유

학습률이 너무 크면 Loss가 커지거나 흔들릴 수 있고, 너무 작으면 정해진 횟수 안에 충분히 줄지 않습니다. 같은 자료·초기값·반복 수에서 한 조건만 바꾸어 원인을 구분합니다.

풀이 예제

제공 코드는 x∈{0,.5}x\in\{0,.5\},…,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]

참고 예제

추가 예제 보기

참고 자료