aleximmer/Laplace

Laplace approximations for Deep Learning.

Laplace란 무엇인가요?

Laplace는 모든 PyTorch 신경망에 베이지안 불확실성 인식 추론을 제공하는 Python 라이브러리입니다. 이 라이브러리는 Laplace 근사를 구현하여, 네트워크 파라미터 주위에 가우시안 분포를 피팅함으로써 학습된 결정론적 모델을 확률적 모델로 변환합니다. 이 라이브러리를 사용하면 다음을 수행할 수 있습니다:

  • 모든 가중치, 선택된 서브 네트워크 또는 마지막 레이어에 대한 사후 분포 근사.
  • 주변 우도 추정 (모델 비교에 유용).
  • 분류 또는 회귀를 위한 예측 분포 생성 (보정된 불확실성 추정치 제공).

이 패키지는 연구 논문 Laplace Redux – Effortless Bayesian Deep Learning (NeurIPS 2021)과 관련이 있으며, 저자들은 해당 논문의 실험을 재현하기 위한 별도의 저장소를 제공합니다.


사용 방법

  1. 설치 – 핵심 패키지는 PyPI에서 laplace-torch라는 이름으로 제공됩니다:
    pip install laplace-torch
    
    (두 번째 pip install 명령어로 선택적 백엔드를 추가할 수 있습니다.)
  2. 학습된 모델 래핑 – PyTorch 모델이 준비되면 Laplace 객체를 생성합니다:
    from laplace import Laplace
    la = Laplace(model, "classification",
                 subset_of_weights="all",
                 hessian_structure="diag")
    
    해결하려는 작업, 확률적으로 처리할 파라미터, Hessian 근사 방법(예: 대각 행렬)을 클래스에 지정합니다.
  3. 근사 피팅 – 학습 데이터 로더를 사용하여 fit을 호출합니다. 라이브러리는 MAP 지점에서의 손실 함수에 대한 (근사) Hessian을 계산합니다.
  4. 사전 분포 조정 – 가우시안 사전 분포의 정밀도는 하이퍼파라미터입니다. Laplace는 그리드 탐색 교차 검증과 같은 몇 가지 자동화된 방식을 제공합니다:
    la.optimize_prior_precision(method="gridsearch",
                                pred_type="glm",
                                link_approx="probit",
                                val_loader=val_loader)
    
  5. 불확실성을 포함한 예측 – 피팅이 완료되면 선택한 예측 근사 방법을 사용하여 예측 확률(또는 회귀의 경우 평균/분산)을 얻을 수 있습니다:
    pred = la(x, pred_type="glm", link_approx="probit")
    
    결과는 단일 지점 추정치가 아닌 분포이며, 이를 통해 보정된 신뢰도, 분포 외 탐지, 모델 선택 등에 활용할 수 있습니다.

README에는 더 깊은 사용자 정의를 위한 광범위한 문서와 개발자 가이드가 링크되어 있습니다.


누가 사용하면 좋을까요?

  • 연구자: 베이지안 딥러닝, 모델 선택 또는 지속적 학습 시나리오를 탐구하며, 즉시 사용 가능하고 잘 테스트된 Laplace 구현이 필요한 분.
  • 실무자: 이미 PyTorch 모델을 보유하고 있으며, 전체 베이지안 신경망을 재학습하지 않고도 불확실성 정량화를 추가하고 싶은 분.
  • 학생: 사후 분포 근사를 학습 중인 분. 라이브러리의 API는 수학적 단계(피팅 → 사전 분포 최적화 → 예측)를 반영하여 실험을 직관적으로 만듭니다.

제한 사항 및 실무 참고 사항

  • 근사는 완전히 자동이 아닙니다. Hessian 구조(diag, kron, full 등), 사전 분포 정밀도 최적화 방법, 예측 근사(GLM, MC 등)를 선택해야 합니다. README에서는 이러한 선택에 따라 성능이 크게 달라질 수 있다고 경고합니다.
  • 전체 Hessian을 계산하는 것은 비용이 많이 들기 때문에, 대부분의 사용자는 대각 행렬 또는 Kronecker 분해 근사에 의존합니다.
  • 이 라이브러리는 현재 PyTorch만 대상으로 하며, 다른 프레임워크는 기본적으로 지원되지 않습니다.

빠른 시작 체크리스트

  1. pip install laplace-torch
  2. PyTorch 모델을 학습하거나 로드합니다.
  3. Laplace(...)로 래핑하고 작업 및 Hessian 스타일을 지정합니다.
  4. fit(train_loader)를 호출합니다.
  5. optimize_prior_precision으로 사전 분포를 조정합니다(gridsearch가 안전한 기본값입니다).
  6. la(x, ...)를 사용하여 예측 분포를 얻습니다.

더 많은 정보

관련

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