[PyTorch]The mechanics of learning

MA·2022년 7월 24일
0

PyTorch

목록 보기
3/6

이번 챕터에서 어떻게 알고리즘이 데이터를 통해 학습할 수 있는지 이해하고, defferentitation and gradient descent를 이용한 parameter estimation로 학습을 재구성한다.

위 그림처럼 학습이 진행된다.

입력이 주어졌을 때, GT(Ground Truth)와 입력값으로 부터 나온 모델의 아웃풋 결과 값이 다를 때, Errors(Loss Function)값을 weights로 전달하고, weights는 error를 감소하는 방향으로 변환된다. 그리고 이걸 계속 반복한다.


# In[2]:
t_c = [0.5,  14.0, 15.0, 28.0, 11.0,  8.0,  3.0, -4.0,  6.0, 13.0, 21.0]
t_u = [35.7, 55.9, 58.2, 81.9, 56.3, 48.9, 33.9, 21.8, 48.4, 60.4, 68.4]
t_c = torch.tensor(t_c)
t_u = torch.tensor(t_u)

여기서 t_c는 Celsius 온도이고, t_u는 알 수 없는 unit이다.

만약 이 모델이 선형 모델일 것이라고 예측하고 함수를 예측하면

t_c = w * t_u + b일 것이다.

이게 합리적인 추론일 지 아닐 지는 얼마나 마지막 모델이 잘 동작하는지 확인해 보면 될 것이다. 여기서 w와 b를 구하는 것이 목표이다.

이를 구하기 위해서 lossfunctionloss function 혹은 costfunctioncost function으로 불리는 함수를 정의내린다. 우리가 원하는건, t_u에 따른 t_c를 예측한 값이 t_c와 얼마나 일치하는 가를 평가해줄 수 있는 loss function을 설정하면 될것이다. 따라서 예측값을 t_p로 두고 t_p - t_c를 loss함수로 두면 될 것이다. 근데 이러면 - 값이 될 수도 있으니까 이를 처리하기 위해 절대값을 씌우거나, 제곱을 해줌으로써 두개가 같을 때를 가장 최소가 되도록 만들어준다.


From problem back to PyTorch

# In[3]:
def model(t_u, w, b):
	return w * t_u + b
# In[4]:
def loss_fn(t_p, t_c):
	squared_diffs = (t_p - t_c)**2
    return squared_diffs.mean()
profile
급할수록 돌아가라

0개의 댓글