🤔 Deep Learning 학습 과정에서 PyTorch는 왜 중요할까?
➡︎ PyTorch의 텐서(tensor)가 "자동 미분(autograd)" 기능을 갖고 있기 때문
✅ 자동 미분 (Automatic Differentiation) 이란?
➡︎ 수학과 컴퓨터 대수학에서 자동 미분 (auto-differentiation, autodiff 또는 AD)은 알고리즘 미분, 계산 미분, 미분 산술 이라고도 함. 자동 미분은 컴퓨터 프로그램에서 지정한 함수의 편미분을 계산하는 기술 집합. 자동 미분은 미분의 기호 표현이 필요 없이 임의로 복잡한 함수와 그 미분의 수치적 값을 동시에 계산하는 것을 자동화하는 미묘하고 핵심적인 도구
[출처 https://en.wikipedia.org/wiki/Automatic_differentiation]
⭐️ 딥러닝 학습의 핵심 과정 → 딥러닝 모델은 다음 단계를 반복함
- 입력 → 모델 → 예측값(출력) 계산 (순전파, forward)
- 예측값과 정답 비교 → 손실(loss) 계산
- 손실을 줄이기 위해 파라미터(가중치)의 변화량(기울기) 계산 ← 여기서 "미분"이 필요함
- 가중치를 업데이트 ← 경사하강법 등의 최적화 알고리즘 사용
🔍 PyTorch 텐서가 해주는 일
import torch
x = torch.tensor(1.0, requires_grad=True)
y = x * 2
z = y ** 2 z.backward()
print(x.grad) # 8.0
- requires_grad=True는 해당 변수가 미분 대상임을 표시
- z.backward()는 z를 x에 대해 미분한 값(∂z/∂x)을 자동으로 계산 ➡︎ 역전파 (backward)
- 결과적으로 x.grad에는 8.0이 들어있음 ➡︎ z = (2x)^2 → z = 4x^2 → dz/dx = 8x = 8
✅ 모델 학습 적용
loss = criterion(output, y)
loss.backward() # 기울기 계산
optimizer.step() # 가중치 업데이트
- PyTorch 텐서와 모델 파라미터들이 자동으로 연결되어 있음
- loss.backward() 한 줄만 써주면 모든 가중치의 기울기를 자동으로 계산
- 따라서 수학적으로 일일이 미분하지 않아도 됨
📌 정리
기능 | PyTorch가 하는 일 |
연산 그래프 구성 | 연산을 기억하고 연결시킴 (z = x * y 등) |
기울기 자동 계산 | backward() 한 줄로 모든 파라미터에 대한 미분 수행 |
기울기 저장 | 각 텐서에 .grad 속성으로 저장 |
학습 | Optimizer가 .step()으로 가중치 자동 업데이트 |
'개발 > Python' 카테고리의 다른 글
Python > Meachine Learning > cross_val_score, cross_validate (0) | 2025.06.03 |
---|---|
Scikit-Learn > fit(), transform() (0) | 2025.05.10 |
DB > fetchmany, fetchone, fetchall (0) | 2025.04.27 |
🪄매직 메소드 __xxx__ (0) | 2025.04.17 |
🦭바다코끼리 연산자 (0) | 2025.04.13 |