marcellodebernardi/loss-landscapes
Approximating neural network loss landscapes in low-dimensional parameter subspaces for PyTorch
loss‑landscapes란 무엇인가요?
loss‑landscapes는 PyTorch 기반의 작고 유용한 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 기반의 툴킷입니다. 실제 플롯은 사용자에게 맡기며, 현재 활발히 현대화되고 있으므로 안정된 릴리스를 기대하며 리포지토리를 주목하세요.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트