본문 바로가기

데이터분석(Data analysis)

데이터 분석가가 알려주는 Pytorch Gradient 계산의 이해

 

안녕하세요.

오늘은 딥러닝 프레임워크인 Pytorch를 이용하여 Gradient를 산출하고 그 원리에 대해 알아보도록 하겠습니다.

Gradient란 미분을 통해 얻어지는 기울기이며 학습을 할 때 사용됩니다. 딥러닝이나 머신러닝 프레임 워크를 사용하면 기울기 정도는 자동으로 계산해 주지만 사용자 입장에서는 반드시 이해하고 있어야 할 중요한 개념입니다.

따라서 Gradient를 완벽하게 이해하기 위해 임의의 식을 만들어 Pytorch를 이용해 기울기를 산출하고 직접 풀어 증명해 보도록 하겠습니다.

 

[소스코드]

import torch

x = torch.tensor(1., dtype=torch.float, requires_grad=True)
y = (x+5)**3

y.backward()
x.grad

 [출력결과]

 

Pytorch는 import 할 때 "torch"로 호출해야 합니다. tensor 함수를 이용하여 실수 형태의 스칼라 텐서를 생성하였습니다.

텐서에 대한 Gradient를 저장하기 위해서는 "requires_grad=True"를 해줘야 합니다. 출력결과는 108이 나왔습니다.

 

x가 1일때 (x+5)^3 식의 기울기가 108인지 증명해 보겠습니다.

 

(x+5)^3 식을 전개하면 x^3+15x^2+75x+125가 되고 미분하면 3x^2+30x+75가 됩니다.

3x^2+30x+75 식에서 x에 1을 대입하면 108 나오는 것을 확인할 수 있습니다.

 

또 다른 방법으로 풀어보면 a = x+5이고 b = a^3이라 할 때 3b^2 식으로도 계산할 수 있겠습니다. 위 식과 같이 x에 1을 대입하면 108 나오는 것을 확인할 수 있습니다.

 

다음은 Pytorch 내장함수인 backward()를 빼고 Gradient를 출력해 보겠습니다.

 

[소스코드]

import torch

x = torch.tensor(1., dtype=torch.float, requires_grad=True)
y = (x+5)**3

x.grad

 

[출력결과]

 

아무것도 출력이 안 되는 것을 알 수 있습니다. 이처럼 Pytorch 내장함수인 backward()는 어떠한 식의 기울기를 계산하여 x grad에 저장해 주는 역할을 합니다.

 

이상 오늘은 Gradient의 이해와 Pytorch 내장함수인 backward()의 역할에 대해 알아보았는데요. 기울기는 딥러닝과 머신러닝 같은 AI모델을 공부할 때 필수적으로 알고 있어야 하며 공부하고 있는 분야에서 Pytorch를 사용한다면 backward()가 어떤 기능을 하는지 숙지하고 있어야합니다.

 

오늘은 여기서 마치겠습니다.

감사합니다.