1. 개요[편집]
주사위를 던지면 뭉치고 빈다. 소볼은 뭉치지도 비지도 않게, 공간을 계획적으로 메운다.
소볼 수열(Sobol sequence)은 다차원 단위입방체 를 난수보다 훨씬 고르게 채우도록 결정론적으로 생성되는 저불일치 수열(low-discrepancy sequence)이다. 러시아 수학자 일리야 소볼(Ilya M. Sobol’)이 1967년에 제안했으며, 준몬테카를로(quasi-Monte Carlo, QMC) 적분·표본추출의 사실상 표준이다. 이름 그대로 “임의성”을 흉내 내는 것이 목표가 아니라, 그 반대로 표본이 서로를 피해 가며 공간을 균등하게 덮는 것이 목표다.
여기서 반드시 구별해야 할 것이 소볼 지수다. 둘 다 같은 소볼의 작품이라 이름이 겹치지만 정체가 다르다. 소볼 지수는 출력 분산을 입력별로 쪼개는 민감도 지표(무엇을 계산하느냐)이고, 소볼 수열은 점을 어디에 찍느냐를 정하는 표본추출 방법이다. 관계는 이렇다 — 소볼 지수를 몬테카를로로 추정할 때 표본을 순수 난수 대신 소볼 수열로 뽑으면 수렴이 훨씬 빨라진다. 즉 소볼 수열은 소볼 지수를 값싸게 계산하는 도구로 쓰인다.1 지표와 표본법, 한 사람 이름이 두 번 나오는 건 우연이 아니라 실적이다.
2. 불일치도: 고르게 채운다는 것의 정의[편집]
“고르게 채운다”를 수학적으로 재는 잣대가 불일치도(discrepancy)다. 임의의 부분 상자 안에 들어간 점의 비율이 그 상자의 부피와 얼마나 어긋나는지를 최대로 잰 값이다. 별 불일치도(star discrepancy) 가 작을수록 표본이 균등하다는 뜻이다.
적분 오차의 상한을 주는 것이 코크스마–흘라브카 부등식(Koksma–Hlawka inequality)이다.
여기서 는 피적분함수의 변동(하디–크라우제 변동)이다. 소볼 수열 같은 저불일치 수열은 를 달성한다. 반면 순수 난수는 표본오차가 에 머문다. 차원 가 그리 크지 않고 함수가 얌전하면, QMC의 에 가까운 수렴은 순수 몬테카를로 방법을 압도한다.2
3. 2진 디지털 넷 구성 (개요)[편집]
소볼 수열은 밑 2(base-2)의 디지털 넷(digital net)으로 구성된다. 유도까지 파고들 필요는 없고, 뼈대만 보면 이렇다.
각 차원마다 방향수(direction numbers) 를 미리 정해 둔다. 이 방향수들은 그 차원에 배정된 원시 다항식(primitive polynomial)과 초기값으로부터 점화식으로 생성되며, 비트 단위로 정의된다. 표본의 인덱스 를 2진수로 쓰고, 그 비트가 1인 자리에 해당하는 방향수들을 모두 배타적 논리합(XOR) 하면 번째 점의 그 차원 좌표가 나온다.
실제 구현에서는 인덱스를 그레이 코드(Gray code)로 훑어, 한 번에 한 비트만 바뀌게 한다. 그러면 에서 로 갈 때 XOR 한 번으로 다음 점이 나와, 점 하나 생성이 이다. 차원마다 다른 원시 다항식을 배정하는 것이 핵심 설계 포인트인데, 이 배정이 나쁘면 특정 두 차원의 사영(projection)이 대각선으로 줄지어 뭉치는 병리가 생긴다. 그래서 좋은 방향수 테이블(Joe–Kuo 등이 수만 차원까지 최적화해 배포한 것)을 쓰는 것이 국룰이다.3
4. 준몬테카를로에서의 위치[편집]
소볼 수열은 불확실성 정량화와 민감도 분석에서 표본을 뿌리는 일꾼이다.
- UQ·적분: 입력 확률분포를 표본으로 밀어 넣어 출력 통계를 추정할 때, 같은 표본 수로 순수 난수보다 훨씬 낮은 분산을 준다. 고차원 적분·기대값 계산의 표준.
- 민감도 분석: 소볼 지수의 Saltelli 추정에서 표본 행렬 , 를 소볼 수열로 뽑는 것이 정석이다. 분산 기반 지수의 수렴 속도가 이 표본법 덕에 극적으로 좋아진다.
- 전역 최적화·실험계획법: 설계 공간을 균등하게 초기 탐색해야 하는 공간충전(space-filling) 설계에서, 라틴 하이퍼큐브와 나란히 후보로 오른다. 특히 표본을 나중에 더 추가해도 균등성이 유지되는 점진적(sequential) 성질은 소볼 수열의 큰 장점이다.4
5. 유효차원과 스크램블링[편집]
소볼 수열도 만능은 아니다. 두 가지 실무 주의점이 있다.
첫째, 유효차원(effective dimension). QMC의 우위는 차원이 커질수록 서서히 무너진다. 다행히 실제 함수는 대개 소수의 차원(또는 저차 교호작용)에만 크게 의존하는데, 소볼 수열은 앞쪽 차원과 저차 사영을 특히 균등하게 채우도록 설계돼 있어 유효차원이 낮은 문제에서 강력하다. 반대로 모든 차원이 대등하게 중요한 진짜 고차원 문제에서는 순수 난수 대비 이점이 줄어든다.
둘째, 오차 추정. 소볼 수열은 결정론적이라, 순수 난수처럼 표본 분산으로 신뢰구간을 뽑을 수가 없다. 이 문제의 해법이 스크램블링(scrambling), 특히 오웬(Owen) 스크램블이다. 균등성은 보존하면서 무작위 치환을 겹겹이 얹어, 독립적으로 스크램블한 여러 벌을 돌리면 그 편차로 오차를 추정할 수 있다. 스크램블은 덤으로 특정 함수류에서 수렴 차수를 더 끌어올리기도 한다. 그래서 현대 라이브러리(SciPy의 qmc.Sobol 등)는 스크램블을 기본값으로 켜 둔다.
6. 관련 문서[편집]
7. Footnotes[편집]
-
이름 충돌 때문에 초심자가 “소볼 지수를 소볼 수열로 계산한다”는 문장을 처음 보면 동어반복인 줄 안다. 아니다. 앞의 소볼은 결과물(지표), 뒤의 소볼은 재료(점)다. 굳이 비유하면 “뉴턴법으로 뉴턴의 만유인력 문제를 푼다”쯤 되는, 성만 같고 물건은 다른 관계다. ↩
-
의 승이 눈에 밟히겠지만, 이 충분히 커지면 분모의 이 로그를 압도한다. 다만 “충분히 큰 “이 차원이 오를수록 야박하게 커져서, 쯤 되면 실용 표본 수 범위에서는 로그항이 아직 위력을 부린다. QMC가 저차원·저유효차원에서 특히 빛나는 이유다. ↩
-
방향수를 대충 고르면 2차원 사영에 줄무늬가 생겨 표본이 격자처럼 정렬돼 버린다. 균등하게 채우랬더니 지나치게 규칙적으로 정렬돼 오히려 특정 주기의 함수에서 편향이 나는 것. “규칙적이되 티 나지 않게 규칙적”이라는 미묘한 요구를 방향수 테이블이 감당한다. ↩
-
라틴 하이퍼큐브(LHS)는 표본 수 을 미리 정해야 균등성이 보장되지만, 소볼 수열은 512개 뽑고 부족하면 512개를 더 이어 붙여도 전체가 여전히 균등하다. “일단 512개 돌려 보고 모자라면 추가”가 되는 이 성질이 실무에서 은근히 효자다. ↩