본문 바로가기
함수 설명/인공지능 (Pytorch)

[PyTorch] 딥러닝 최적화 알고리즘: torch.optim.Adam() 사용 가이드

by First Adventure 2024. 8. 17.
반응형

소개

  torch.optim.Adam은 PyTorch에서 제공하는 인기 있는 옵티마이저(Optimizer) 중 하나로, 딥러닝 모델을 학습시키기 위해 가중치 업데이트를 효율적으로 수행합니다. Adam(Adaptive Moment Estimation)은 모멘텀과 RMSProp의 장점을 결합하여 학습 속도를 높이고 안정적인 수렴을 돕습니다. 이 알고리즘은 학습 속도, 수렴 성능 및 일반화 능력에서 좋은 성능을 보여주기 때문에 널리 사용됩니다.

 

기본 사용법

상세 설명

  • Adam 옵티마이저의 장점
    • 학습률을 동적으로 조정하여 수렴 속도를 높이고, 초기 설정에 민감하지 않습니다.
    • 첫 번째와 두 번째 모멘텀 추정치를 사용하여 이전 그래디언트 정보를 고려하면서 학습 속도를 조절합니다.
    • 대규모 데이터셋이나 복잡한 모델에서 좋은 성능을 발휘합니다.
  • Adam의 적용 분야
    • 컴퓨터 비전, 자연어 처리, 시계열 예측 등 다양한 딥러닝 작업에서 널리 사용됩니다.
    • 복잡한 신경망의 학습을 빠르고 안정적으로 수행할 수 있도록 돕습니다.

예시 설명

  • lr (학습률): 옵티마이저가 가중치를 업데이트할 때 이동하는 스텝 크기를 제어합니다. 기본값은 0.001입니다.
  • betas: 두 모멘텀의 계수를 나타내며, 각각 1차 및 2차 모멘텀 추정치에 대한 계수입니다. 기본값은 (0.9, 0.999)입니다.
  • eps: 수치적 안정성을 위한 작은 상수로, 분모에 추가되어 0으로 나누는 것을 방지합니다. 기본값은 1e-08입니다.
  • weight_decay: L2 정규화(가중치 감쇠) 계수로, 과적합을 방지하기 위해 가중치의 크기를 제한합니다. 기본값은 0입니다.
  • optimizer = optim.Adam(model.parameters(), lr=0.001)는 학습률 0.001로 Adam 옵티마이저를 설정하여 모델의 파라미터를 최적화합니다.
  • optimizer.zero_grad()는 이전 배치의 그래디언트를 초기화하고, optimizer.step()은 현재 배치에 대한 가중치를 업데이트합니다.
import torch
import torch.nn as nn
import torch.optim as optim

# 간단한 모델 정의
model = nn.Linear(10, 1)

# 옵티마이저 설정
optimizer = optim.Adam(model.parameters(), lr=0.001)
# optimizer = optim.Adam(model.parameters(), lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0)

# 손실 함수 설정
criterion = nn.MSELoss()

# 입력 데이터와 타깃 생성
inputs = torch.randn(10)
target = torch.randn(1)

# 학습 루프
for epoch in range(100):
    optimizer.zero_grad()   # 그래디언트 초기화
    outputs = model(inputs) # 모델의 출력 계산
    loss = criterion(outputs, target) # 손실 계산
    loss.backward()         # 역전파로 그래디언트 계산
    optimizer.step()        # 옵티마이저로 가중치 업데이트

 

라이센스

  PyTorch의 표준 라이브러리와 내장 함수들은 BSD-style license 하에 배포됩니다. 이 라이센스는 자유 소프트웨어 라이센스로, 상업적 사용을 포함한 거의 모든 용도로 사용이 가능합니다. 라이센스와 저작권 정보는 PyTorch의 공식 GitHub 리포지토리에서 확인할 수 있습니다.

 

관련 내용

  [PyTorch] 딥러닝 최적화 알고리즘: torch.optim.Adam() 사용 가이드

  [PyTorch] 딥러닝 최적화 알고리즘: torch.optim.SGD() 사용 가이드

  [PyTorch] 모델 학습을 최적화하는 스케줄러: torch.optim.lr_scheduler.StepLR() 활용법

반응형