경사 하강법 코드를 보고있으면 requires_grad=True, backward() 등이 나온다. 이는 파이토치에서 제공하고 있는 자동 미분(Autograd) 기능을 수행하고 있는 것이다.
1. 경사 하강법 리뷰
경사하강법을 간단히 복습해본다. 경사 하강법은 비용 함수를 미분하여 이 함수의 기울기(gradient)를 구해서 비용이 최소화 되는 방향으로 찾아내는 알고리즘이다.
모델이 복잡해질수록 경사 하강법을 넘파이 등으로 직접 코딩하는 것은 까다로운 일이다. 파이토치에서는 이런 수고를 하지 않도록 자동 미분(Autograd)을 지원한다. 자동 미분을 사용하면 미분 계산을 자동화하여 경사 하강법을 손쉽게 사용할 수 있게 해준다.
2. 자동 미분(Autograd) 실습하기
자동 미분에 대해서 실습을 통해 이해해본다. 임의로 2w^2 + 5 라는 식을 세워보고, w에 대해 미분해 본다.
In [1]:
import torch
값이 2인 임의의 스칼라 텐서 w를 선언하고 required_grad를 True로 설정해 텐서에 대한 기울기를 저장한다.
In [2]:
w = torch.tensor(2.0, requires_grad=True)
In [3]:
y = w**2
z = 2*y + 5
이제 해당 수식을 w에 대해서 미분해야한다. backward()를 호출하면 해당 수식의 w에 대한 기울기를 계산한다.
In [4]:
z.backward()
이제 w.grad를 출력하면 w가 속한 수식을 w로 미분한 값이 저장된 것을 확인할 수 있다.
In [6]:
print('수식을 w로 미분한 값 : {}'.format(w.grad))
수식을 w로 미분한 값 : 8.0
'Deep Learning with PyTorch > Linear Regression' 카테고리의 다른 글
[Linear Regression] 미니 배치와 데이터 로드(Mini Batch and Data Load) (0) | 2021.08.20 |
---|---|
[Linear Regression] 클래스로 파이토치 모델 구현하기 (0) | 2021.08.20 |
[Linear Regression] nn.Module로 구현하는 선형 회귀 (0) | 2021.08.20 |
[Linear Regression] 다중 선형 회귀(Multivariable Linear Regression) (0) | 2021.08.20 |
[Linear Regression] 선형 회귀(Linear Regression) (0) | 2021.08.12 |