반응형
강의 목표
- PyTorch의 자동 미분 기능인 Autograd의 기본 개념 이해
- Autograd를 사용한 기울기 계산 및 활용법 습득
- 실제 문제에 Autograd를 적용하여 모델 학습 이해
강의 내용
1. 자동 미분 개념
- Autograd란 무엇인가?
- 자동 미분(Automatic Differentiation)은 기계 학습 모델의 학습 과정에서 기울기(Gradient)를 자동으로 계산하는 기능입니다.
- PyTorch의 Autograd는 후방 전달(Backpropagation) 알고리즘을 사용하여 연산 그래프를 통해 기울기를 계산합니다.
- 자동 미분의 원리
- 연산 그래프(Computation Graph)
- 기울기 계산을 위한 그래프의 역전파
2. 기본 개념 실습
- Tensor의 requires_grad 속성
- requires_grad=True로 설정된 Tensor는 연산 기록을 추적하여 기울기를 계산할 수 있습니다.
import torch
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
print(x)
- 기울기 계산
- 기본 연산을 통해 생성된 Tensor의 기울기 계산
y = x + 2
z = y * y * 2
result = z.mean()
result.backward() # 기울기 계산
print(x.grad) # x의 기울기 출력
3. Autograd를 활용한 기울기 계산
- 예제 1: 간단한 함수의 기울기 계산
- $f(x) = x^2 + 3x + 2$ 에 대한 기울기 계산
x = torch.tensor(2.0, requires_grad=True)
y = x**2 + 3*x + 2
y.backward()
print(x.grad) # x에서의 기울기 출력
- 예제 2: 다중 변수를 사용하는 함수의 기울기 계산
- $f(x, y) = 3x^2 + 2xy + y^2$ 에 대한 기울기 계산
x = torch.tensor(1.0, requires_grad=True)
y = torch.tensor(2.0, requires_grad=True)
z = 3*x**2 + 2*x*y + y**2
z.backward()
print(x.grad) # x에서의 기울기 출력
print(y.grad) # y에서의 기울기 출력
4. 연산 그래프 이해
- 연산 그래프의 생성 및 기울기 계산 과정 이해
- 각 연산이 그래프의 노드로 표현되고, 역전파를 통해 기울기가 계산됩니다.
a = torch.tensor([2.0, 3.0], requires_grad=True)
b = torch.tensor([6.0, 4.0], requires_grad=True)
Q = 3*a**3 - b**2
external_grad = torch.tensor([1.0, 1.0])
Q.backward(gradient=external_grad)
print(a.grad) # a의 기울기 출력
print(b.grad) # b의 기울기 출력
5. 실습 및 과제
- 실습 과제
- Autograd를 활용한 다양한 함수의 기울기 계산 실습
- 주어진 함수에 대해 기울기를 계산하고, 기울기를 활용한 간단한 최적화 문제 해결
# 실습 과제 예시
# 1. 주어진 함수 f(x) = 4x^3 + 2x^2 + x 에 대해 x=1에서의 기울기를 구하세요.
x = torch.tensor(1.0, requires_grad=True)
y = 4*x**3 + 2*x**2 + x
y.backward()
print(x.grad)
# 2. 다중 변수 함수 f(x, y) = x^2 + y^3 에 대해 x=2, y=3에서의 기울기를 구하세요.
x = torch.tensor(2.0, requires_grad=True)
y = torch.tensor(3.0, requires_grad=True)
z = x**2 + y**3
z.backward()
print(x.grad)
print(y.grad)
- 과제 제출
- Jupyter Notebook 파일로 제출
- 제출 기한: 다음 강의 시작 전까지
반응형
'AI Framework > PyTorch' 카테고리의 다른 글
[PyTorch] 5주차: 데이터셋 및 DataLoader (0) | 2024.05.30 |
---|---|
[PyTorch] 4주차: 신경망 기본 구조 (0) | 2024.05.30 |
[PyTorch] 2주차: PyTorch의 기본 연산 (0) | 2024.05.30 |
[PyTorch] 1주차: PyTorch 소개 및 설치 (0) | 2024.05.30 |
[PyTorch] 강의 목차 (0) | 2024.05.30 |