본문 바로가기
AI_Student/Pytorch

2. Pytorch 미분 연산 개념

by Ralp 2021. 1. 20.

2. Pytorch 미분 연산 개념

 

 

딥러닝 연산에서 파라미터를 업데이트할 때마다 Descent Method라는 미분값이 필요한 연산을 하기 때문에 이 미분에 대한 개념을 잡고 시작하는 것이 중요하다.

 

그러면 , 그 딥러닝에서 미분을 계산하는 원리를 살펴보자.

 


순서가 :  변수 선언(데이터 입력) -> 모델 내 연산 예측값 산출 -> 손실함수 계산 -> 손실 산출

로 이루어지는데, 

import torch
x = torch.ones(2,2,requires_grad= True)
print(x)

변수 선언(데이터 입력)

-> 먼저, torch라이브러리에서 2행 2열짜리 텐서를 생성하고, x에 대해서 연산을 추적 가능하도록 requires_grad = True로 설정하였다.

y = x + 1
print(y)

y라는 모델 -> 연산 예측값 산출

z = 2*y**2
res = z.mean()
print(res)

손실함수 계산

-> z에서 2 곱하기 Y에 2승을 해주고 평균을 res에 저장시킨 모습이다. 

#d(res) / dx_i = x_i + 1
#res = (z_1 + z_2 +.. + z_4 )/ 4
#z_i = 2*y_i**2 = 2*(x_i+1)**2

res.backward()
print(x.grad)

res를 기준으로 backward(연쇄법칙)을 적용하여 x에 대한 미분값을 구한 결과

 

최적화 -> 손실함수를 기준으로 해서 각 변수마다 미분을 하게 되는 것, 

 

정리하면, x 로 데이터 입력 받고 y라는 모델을 통해서 연산하여 예측값을 돌려준 다음에 z에서 Loss를 계산 -> z의 평균을 res에 저장하였다. 손실함수(res)를 기준으로 변수에 대해서 backward로 미분진행하여 x의 미분값을 구하였다.

 

위의 예시는 간단하게 딥러닝에서 미분연산이 어떻게 진행되는지를 나타낸 것이고,

 

실제 딥러닝에서는 다음과 같은 라이브러리를 활용한다.

import torch.nn as nn
#nn 라이브러리 사용하거나

import torch.nn.funtional as F
#Conv연산을 하거나 linear연산시에는 functional 라이브러리를 사용.

 

'AI_Student > Pytorch' 카테고리의 다른 글

1. Pytorch Tensor[파이토치, 텐서]  (0) 2021.01.13

댓글