안녕하세요.
오늘은 딥러닝 프레임워크인 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()가 어떤 기능을 하는지 숙지하고 있어야합니다.
오늘은 여기서 마치겠습니다.
감사합니다.
'데이터분석(Data analysis)' 카테고리의 다른 글
torch.tensor와 torch.Tensor 차이점 - Pytorch 함수 특징 (1) | 2024.02.05 |
---|---|
어떤 그래프가 좋을까? - 데이터분석 (1) | 2020.05.02 |
머신러닝 기초, 지도학습(Supervised Learning)과 비지도학습(Unsupervised Learning), 강화학습(Reinforcement Learning)에 대해 알아보자! (0) | 2020.03.04 |
AI? 머신러닝? - 인공지능에 대해 알아보자! (0) | 2020.03.03 |