
복잡한 분포를 샘플링할 때 어려운 점은 단순히 표본을 많이 뽑는 것이 아니다. 중요한 영역을 놓치지 않으면서도, 불필요한 계산을 줄이고, 한쪽 영역에 오래 갇히지 않도록 탐색 경로를 조정해야 한다.
Adaptive Sampler의 핵심은 여기에 있다. 샘플링 과정에서 관측한 정보를 바탕으로 다음 샘플이나 계산 경로를 조정하는 방식이다. 고정된 규칙을 끝까지 적용하는 대신, 지금까지 본 분포의 형태를 이용해 “더 이동할지”, “멈출지”, “어디에 계산을 더 쓸지”를 결정한다.
적응형 샘플링이 해결하려는 문제
일반적인 샘플러는 설정값에 민감하다. 이동 폭이 너무 작으면 표본이 천천히 움직이고, 너무 크면 중요한 영역을 지나치거나 제안이 자주 거절된다. 분포가 좁고 휘어 있거나, 여러 영역으로 나뉘어 있거나, 지역마다 스케일이 다르면 이 문제는 더 커진다.
적응형 접근은 샘플링 중 얻은 정보를 이용해 이런 부담을 줄인다. 계산 예산을 모든 구간에 똑같이 쓰기보다, 탐색이 더 필요한 구간에 더 많은 계산을 배분한다. 따라서 Adaptive Sampler를 이해할 때 중요한 질문은 “자동인가?”가 아니라 “무엇을 관측해 어떤 결정을 바꾸는가?”이다.
NUTS가 보여주는 적응의 방식
대표적인 예가 NUTS(No-U-Turn Sampler)다. NUTS는 Hamiltonian Monte Carlo(HMC)의 적응형 변형으로, Hoffman과 Gelman이 2014년에 도입했다.1 기존 HMC에서는 사용자가 궤적 길이 L을 직접 정해야 했지만, NUTS는 이를 자동으로 조정한다.1
NUTS의 아이디어는 명확하다. leapfrog 단계를 따라 경로를 확장하다가, 경로가 다시 자기 자신 쪽으로 접히는 U-turn을 감지하면 궤적 확장을 멈춘다.1 각 반복에서 궤적 길이를 두 배씩 늘리며 이진 트리 형태로 상태를 확장하고, 궤적 양끝의 변위와 모멘텀 사이의 내적이 음수가 되는지를 확인한다.1
이 방식이 중요한 이유는 “많이 움직이는 것”과 “잘 탐색하는 것”이 다르기 때문이다. NUTS는 더 멀리 가는 것이 도움이 되는 동안에는 경로를 확장하고, 다시 돌아오기 시작하면 멈춘다. 즉, 샘플러가 이동 거리 자체가 아니라 탐색의 효율을 기준으로 계산을 조절한다.
자동화가 만능은 아니다
Adaptive Sampler는 튜닝을 줄여주지만, 문제를 모두 대신 해결하지는 않는다. NUTS도 미분 가능한 로그 타깃 분포가 필요하며, 그래디언트 정보를 사용한다.1 따라서 그래디언트를 안정적으로 계산하기 어렵거나, 분포 구조가 매우 까다로운 경우에는 여전히 진단이 필요하다.
또한 NUTS의 step size는 dual averaging으로 목표 수용률에 맞춰 적응될 수 있지만, 일반적으로 이 적응은 warm-up 단계에서만 수행된다.1 본 샘플링 구간에서는 발산, 낮은 유효표본수, 과도한 tree depth 같은 신호를 확인해야 한다. “자동 샘플러를 썼다”는 사실만으로 결과가 신뢰할 만하다고 볼 수는 없다.
실무적으로 봐야 할 기준
Adaptive Sampler를 사용할 때는 다음 기준을 확인하는 것이 좋다.
샘플러가 어떤 정보를 보고 적응하는가
적응이 전체 샘플링 동안 일어나는가, warm-up에서만 일어나는가
타깃 분포가 샘플러의 전제 조건을 만족하는가
진단 지표가 안정적인 탐색을 보여주는가
계산 비용 증가가 실제 표본 품질 개선으로 이어지는가
결국 Adaptive Sampler의 가치는 “튜닝을 없애는 것”이 아니라 “튜닝 부담을 구조적으로 줄이는 것”에 있다. 좋은 적응형 샘플러는 계산을 더 많이 쓰는 샘플러가 아니라, 언제 더 탐색하고 언제 멈출지 판단하는 샘플러다. NUTS가 Stan, PyMC 등 현대 확률적 프로그래밍 언어에서 기본 샘플러로 쓰이는 이유도 여기에 있다.1
1No-U-Turn Sampler (NUTS) Explained: Adaptive HMC Calculator
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.
