print(model)# Linear(in_features=1, out_features=1, bias=True) #in입력 /out 출력 /bias=편향(절편)
print(list(model.parameters()))#지금 내가 가지고 있는 기울기와 bias(절편)를 보여준다.
✔️ 해석 1. input이 1개이고, output이 1개인 선형 회귀 모델을 셋팅 2. list(model.parameters()))로 현재 테스트로 만들어진 기울기와 절편을 확인할 수 있다.
5. 비용함수를 이용 (단순 선형회귀이때문에 오차의 최소를 찾기 위해서)
y_pred = model(x_train)
print(y_pred)
6. 오차율 구하기
MSE
# MSE구하는 함수 모양 특이🔴
loss = nn.MSELoss()(y_pred,y_train)
loss
7. 경사하강법 (비용함수 최적화)
✔️ 경사하강법
* Gradient Descent * 선형회귀:실제값과 가장 비슷한 기울기와 절편을 찾는게 최종목표 * 비용함수의 값을 최소로 하는 기울기와 절편을 찾는 알고리즘을 옵티마이저 알고리즘이라고함 * 최적화 알고리즘이라고 부르기도 한다. * 옵티마이저 알고리즘을 통해 w(기울기)와 b(절편)을 찾아내는 과정을 학습이라 부른다. * 경사 하강법은 가장 기본적인 옵티마이저 알고리즘
출처 https://i.imgur.com/0fW4LTG.png
8. 경사하강법 적용하기
#랜덤하게 데이터를 뽑아서 학습하는 경사하강법 알고리즘 중 1개
#학습율(Learning Rate): 한 번 움직이는 거리 (increment step)
optimizer = optim.SGD(model.parameters(),lr=0.01)
lr: 학습율을 의미하며 그래프가 한번에 움직일 거리를 정하는 것
loss = nn.MSELoss()(y_pred,y_train)
#🔴 3개가 세트처럼 사용
optimizer.zero_grad()# 옵티마이저가 가진 기울기, 절편을 초기화 시키는 것
loss.backward()# 역전파가 일어나게 된다. 비용 함수를 미분을 취해서 기울기와 절편을 새롭게 찾아내는 것