marcellodebernardi/loss-landscapes

Approximating neural network loss landscapes in low-dimensional parameter subspaces for PyTorch

loss‑landscapes란 무엇인가요?

loss‑landscapesPyTorch 기반의 작고 유용한 Python 라이브러리로, 신경망의 거대한 파라미터 공간의 저차원 슬라이스에서 스칼라 양(손실, 기울기 노름, 곡률, 기대 수익 등)을 샘플링하고 평가하는 데 도움을 줍니다. 직선, 평면, 기타 부분공간에서 얻은 원시적인 수치를 제공함으로써, 모델의 가중치를 움직일 때 손실이 어떻게 변하는지를 보여주는 전통적인 손실면 시각화를 쉽게 만들 수 있습니다.


핵심 개념

개념 기능
Metric 래핑된 모델/에이전트를 입력으로 받아 단일 부동소수점 수(예: 손실, 기울기 노름, 곡률, 기대 수익)를 반환하는 호출 가능한 객체입니다. 라이브러리는 Loss, LossGradient, PrincipalCurvatureEvaluator와 같은 일반적인 메트릭을 제공하며, Metric를 상속하여 사용자 정의 메트릭을 만들 수 있습니다.
파라미터 부분공간 전체 가중치 공간의 저차원 영역(점, 직선, 무작위 평면 등). random_plane 또는 linear_interpolation와 같은 함수는 이러한 부분공간을 생성하고, 그 안의 격자점에서 메트릭을 평가합니다.
ModelWrapper 내부 어댑터로, 모델이나 강화학습 에이전트를 호출하는 방법을 숨깁니다. 동일한 메트릭 코드가 일반적인 torch.nn.Module와 더 복잡한 에이전트 모두에서 작동할 수 있도록 일관된 forward 유사 인터페이스를 제공합니다.

일반적인 워크플로우 (Python 스타일)

import torch, loss_landscapes as ll

# 1️⃣ 모델 학습 (어떤 torch.nn.Module든 상관없음) …
model = MyNet()
# … 학습 코드 …

# 2️⃣ 메트릭 선택 – 여기서는 표준 지도 학습 손실
metric = ll.metrics.Loss(loss_fn=torch.nn.CrossEntropyLoss(),
                         inputs=X_train, target=y_train)

# 3️⃣ 부분공간 선택 – 현재 가중치 주변의 무작위 2차원 평면
plane = ll.random_plane(model, metric, normalize="filter")

# 4️⃣ `plane`은 손실 값의 2차원 NumPy / torch 배열입니다.
#    matplotlib, plotly 등 원하는 방식으로 플롯하세요.

이 라이브러리는 플롯 유틸리티를 제공하지 않습니다. 반환된 배열을 선호하는 시각화 도구에 전달하면 됩니다.


왜 사용해야 할까요?

  • 재사용 가능한 메트릭 추상화 – 손실, 기울기, 곡률, 사용자 정의 양을 반복적인 보일러플레이트 코드 없이 평가 가능.
  • 복잡한 에이전트 지원ModelWrapper를 통해 강화학습 에이전트의 기대 수익 손실면을 탐색할 수 있으며, 단순 지도 학습 손실에 국한되지 않습니다.
  • 정규화 옵션 – 예: normalize="filter"는 방향을 재스케일링하여 오해를 유발할 수 있는 스케일 차이를 방지합니다.
  • 오픈소스 및 확장 가능Metric를 상속하여 사용자 정의 메트릭을 추가할 수 있습니다.

현재 상태

  • 원래 2019년 릴리스(3.0.6)는 손상됨 (명시적인 torch 종속성 누락 및 수학적으로 잘못된 정규화 포함).
  • 오랜 휴식 후 리포지토리가 재개됨; 현재 Python과 PyTorch 최신 버전을 대상으로 한 현대적 재작성이 진행 중입니다. API는 변경될 수 있으며, 저자들은 새로운 버전이 출시될 때까지 공개된 3.0.6 패키지 사용을 피할 것을 권장합니다.

시작하기

pip install loss-landscapes   # 마지막으로 공개된 웨일을 가져옴 (아직 오래됨)
# 최신 코드로 개발하려면:
uv sync --all-groups          # uv로 종속성 설치
uv run pytest                 # 테스트 스위트 실행

examples/ 폴더에는 손실 등고선, 3D 표면, 곡률, RL 수익 손실면을 보여주는 Jupyter 노트북이 포함되어 있습니다.


누가 도움을 받을 수 있을까요?

  • ML 연구자 – 최적화 기하학, 평탄한 최소값 vs. 날카로운 최소값, 정규화가 손실 표면에 미치는 영향을 조사하는 데.
  • 실무자 – 수렴한 가중치 주변에서 모델의 손실이 어떻게 행동하는지 시각화하여 학습 동역학을 검증하고 싶은 사람.
  • RL 개발자 – 정책 파라미터가 기대 수익에 미치는 영향에 관심 있는 사람.
  • 교육자 – 강의에서 구체적인 손실면 플롯을 쉽게 생성하고 싶은 사람.

요약하면: loss‑landscapes는 신경망 손실 표면이라는 추상적인 개념을 구체적인 수치 그리드로 전환하는 집중적이고 PyTorch 기반의 툴킷입니다. 실제 플롯은 사용자에게 맡기며, 현재 활발히 현대화되고 있으므로 안정된 릴리스를 기대하며 리포지토리를 주목하세요.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트