Pytorch Linear regression 기본 정리
모두를 위한 딥러닝 - 파이토치 강의 참고
하나의 x값을 통해 하나의 y를 예측하는 간단한 모델을 만들어보자.
다음과 같이 세개의 데이터를 만들고 이를 통해 간단한 선형 예측 모델을 학습시켜본다.
1 | x_train = torch.FloatTensor([[1], [2], [3]]) |
- 선형 모델에서 x값이 주어졌을 때 y값(hypothesis-H(x))을 계산하기 위해서는 다음과 같은 식을 따르게 된다.
1 | H(x) = W * x + b |
가지고 있는 데이터를 위 식을 통해 학습시키고자 한다면 우리가 알아야 하는 값 즉, 학습해야 하는 값은 W 와 b이다.
“requires_grad=True” 를 설정하여 다음과 같이 0으로 초기화된 W 와 b 를 만들 수 있다.
1 | w = torch.zeros(1, requires_grad=True) |
우리가 만든 모델을 평가하기 위해서는 Mean Squared Error(MSE) 를 사용할 것입니다.
MSE는 예측값과 실제값의 차이를 제곱한 후 평균을 구한 값으로 다음과 같이 나타낼 수 있습니다.
1 | loss = torch.mean((hypothesis - y_train) ** 2) |
loss 를 구했다면 이를 통해 학습해야 하는 W 와 b 값을 개선해야 합니다.
이를 위해 Stochastic gradient descent(SGD)를 사용할 것입니다.
optim 라이브러리의 SGD에 학습할 tensor를 리스트 형태로 넣어주고 learing rate를 지정해 다음과 같이 나타낼 수 있습니다.
1 | optimizer = torch.optim.SGD([w, b], lr=0.01) |
- optimizer를 정의했다면 아래와 같은 순서를 통해 W와 b를 개선해준다.
1 | optimizer.zero_grad() # gradient 초기화 |
- 이러한 학습 방법을 따라 모델을 100회 한 후 x가 4일때의 y값을 살펴보면 8에 근접하는 값이 나오는 것을 확인할 수 있다.
1 | x_test = torch.FloatTensor([[4]]) |