코딩
[Python] 행렬 미분 정리
obin01
2025. 2. 19. 21:06
1. 행렬미분
스칼라, 벡터, 행렬에 대한 미분을 포함하며 그레디언트 행렬 또는 야코비안 행렬로 표현됨
머신러닝에서는 선형 회귀, 로지스틱 회귀, 신경망의 역전파등의 활용
2. 경사 하강법에 활용
import torch
# 데이터 정의 (입력 X, 정답 y)
# 입력 데이터
X = torch.tensor([[1.0], [2.0], [3.0]], requires_grad=False)
# 실제 값 (y = 2x)
y = torch.tensor([[2.0], [4.0], [6.0]], requires_grad=False)
# 가중치 초기화 (학습할 값)
w = torch.tensor([[1.0]], requires_grad=True) # 초기값 w = 1.0
# 학습률 설정
lr = 0.1
for epoch in range(10):
y_pred = X @ w
# 손실 함수
loss = ((y_pred - y) ** 2).mean()
# 미분 계산
loss.backward()
with torch.no_grad():
# 경사 하강법 적용
w -= lr * w.grad
# 기울기 초기화
w.grad.zero_()
print(f"Epoch {epoch+1}: Loss = {loss.item()}, w = {w.item()}")
결과)