모델을 학습시키기 위한 데이터는 PyTorch의 Tensor의 형태(torch.tensor)를 가지고 있어야 함
x_train = torch.FloatTensor([[1], [2], [3]])
y_train = torch.FloatTensor([[2], [4], [6]])
비용 함수(Cost Function) = 손실 함수(Loss Function) = 오차 함수(Error Function) = 목적 함수(Objective Function)
평균 제곱 오차(Mean Squared Error, MSE)를 W와 b에 의한 비용 함수로 재정의
$$ cost(W, b) = \frac{1}{n} \sum_{i=1}^{n} [y^{(i)}-H(x^{(i)}]^2 $$
비용 함수의 값을 최소로 하는 W와 b를 찾는 방법
최적화 알고리즘이라고도 함
cost가 최소화되는 지점은 접선의 기울기가 0이 되는 지점, 미분값이 0이 되는 지점
반복 작업에서는 현재 W에 접선의 기울기(gradient)를 구해 특정 숫자 $\alpha$를 곱한 값을 빼서 새로운 W로 사용
$$ gradient = \frac{\partial cost(W)}{\partial W} $$
기울기가 음수일 때(Negative gradient) → W 값이 증가
$$ W := W - \alpha \times(-gradient) = W + \alpha \times gradient $$
기울기가 양수일 때(Positive gradient) → W 값이 감소
$$ W := W - \alpha \frac{\partial}{\partial W} cost(W) $$
학습률 → learning rate, $\alpha$