베이지안 프로그램 병합으로 확률 프로그램 자동 유도
초록
이 논문은 데이터에서 생성 모델을 학습하기 위해 확률 프로그래밍 언어를 사용한다. 초기에는 데이터와 동일한 프로그램을 만든 뒤, 공통 부분을 함수로 추출하고 인자 수를 줄이는 변환을 반복해 베이지안 사후 확률을 최대화하는 과정을 제시한다. 리스트 형태의 트리 데이터를 대상으로 실험하여 재귀 함수와 파라미터화된 서브함수를 자동으로 발견한다.
상세 분석
본 연구는 베이지안 모델 병합(Bayesian model merging) 개념을 확률 프로그래밍에 확장한 ‘베이지안 프로그램 병합(Bayesian program merging)’을 제안한다. 핵심 아이디어는 데이터 집합을 그대로 재현하는 거대한 프로그램을 초기 모델로 만든 뒤, 프로그램 내부의 중복 구조를 찾아 함수 추출(Abstraction)과 인자 축소(Deargumentation)라는 두 가지 변환을 적용한다는 것이다. 추출된 함수는 공통 서브트리를 일반화한 형태이며, 이는 anti‑unification(반통합) 기법을 이용해 가장 일반적인 패턴을 찾는다. 반면 deargumentation은 함수의 매개변수를 제거하거나 결합해 파라미터 수를 최소화함으로써 모델 복잡도를 낮춘다. 두 변환 모두 프로그램 길이에 대한 사전 확률을 높이고, 선택된 변환이 데이터에 대한 우도(likelihood)를 크게 감소시키지 않을 경우 사후 확률이 향상된다.
검색 전략으로는 빔 서치(beam search)를 채택해, 각 단계에서 사후 확률이 높은 상위 K개의 프로그램만을 유지한다. 이는 변환 공간이 급격히 폭발하는 문제를 완화하면서도 충분히 탐색적인 해를 제공한다. 프로그램 언어는 Church의 서브셋을 사용해 데이터 타입 생성자, λ‑추상화, 조건부 실행, 무작위 선택 등을 지원한다. 특히 리스트와 트리 구조를 표현하는 algebraic data type을 그대로 프로그램 언어에 매핑함으로써, 데이터와 모델 사이의 변환이 자연스럽게 이루어진다.
실험에서는 색깔과 크기를 갖는 노드가 중첩된 트리 형태의 데이터를 사용했다. 초기 프로그램은 모든 트리를 일일이 열거하는 uniform‑choice 구조였으며, 변환 과정을 거치면서 (1) 노드 색상의 가우시안 분포 파라미터화, (2) 가지의 개수를 결정하는 재귀 함수, (3) 꽃잎이 세 개인 서브트리를 생성하는 함수 등이 자동으로 유도되었다. 이러한 결과는 인간이 직접 설계한 문법 기반 모델과 비교해 동일하거나 더 높은 사후 확률을 기록했으며, 데이터가 소수일 때도 의미 있는 일반화를 보여준다.
한계점으로는 현재 구현이 리스트 형태의 구조화된 데이터에 국한되고, 비정형 피처 벡터에 대한 데이터 통합 방법이 제시되지 않은 점이다. 또한 변환 후보 생성이 휴리스틱에 크게 의존해 복잡한 도메인에서는 탐색 효율이 떨어질 가능성이 있다. 향후 연구에서는 더 풍부한 타입 시스템과 자동화된 변수 정규화, 그리고 변환 비용을 정량화하는 메타‑학습 기법을 도입해 확장성을 높일 수 있을 것이다.
댓글 및 학술 토론
Loading comments...
의견 남기기