- Scallop은 AI 애플리케이션에 논리 규칙 기반 기호 추론을 넣기 위한 선언형 언어로, 관계형 데이터베이스 질의 언어인 Datalog에 기반함
- 솔버는 이산적·확률적·미분 가능 추론을 지원해, 애플리케이션 요구에 맞춰 추론 방식을 선택할 수 있음
- Python 바인딩을 통해 프로그램 안에 논리 추론 모듈을 넣을 수 있으며, 기존 PyTorch 머신러닝 파이프라인과 통합 가능함
- 비전·NLP 작업에서 CNN이나 Transformer가 만든 신경 컴포넌트와 논리 규칙 컴포넌트를 함께 구성하는 방식임
- CLEVR 시각 추론, Pathfinder 연결성 판별, 손글씨 수식 평가처럼 신경 컴포넌트와 규칙을 함께 학습하는 종단간(end-to-end) 예제를 제공함
Scallop의 핵심 구성
-
Language
- Scallop은 AI 애플리케이션에서 기호 추론을 다루기 위한 선언형 언어임
- 기반은 관계형 데이터베이스용 논리 규칙 기반 질의 언어인 Datalog임
-
Solver
- Scallop은 확장 가능한 Datalog 솔버임
- 이산적 추론, 확률적 추론, 미분 가능 추론 모드를 지원함
- 각 추론 모드는 서로 다른 AI 애플리케이션 요구에 맞게 설정 가능함
-
Framework
- Python 프로그램 안에서 논리 추론 모듈을 사용할 수 있는 바인딩을 제공함
- 기존 PyTorch 머신러닝 파이프라인과 깊게 통합될 수 있음
예제 애플리케이션
- CLEVR는 이미지 속 단순한 3D 객체에 대해 “파란색 객체가 몇 개인가?” 같은 질문에 답하는 시각 추론 작업임
- 신경 컴포넌트가 이미지의 장면 그래프(scene graph) 와 질문을 나타내는 프로그램형 질의(programmatic query) 를 생성함
- 추론 컴포넌트는 지정된 속성에 따라 객체를 선택, 비교, 카운트하는 연산을 논리 규칙으로 지정함
- Scallop은 이 컴포넌트들을 공통 프레임워크에 통합하고 종단간 학습을 수행할 수 있게 함
- Pathfinder는 두 점과 점선이 있는 흑백 이미지에서 두 점이 점선으로 연결됐는지 판단하는 장거리 연결성 추론 작업임
- 점과 대시를 감지하는 단순한 신경 아키텍처와 Scallop 논리 규칙 몇 줄로 구성할 수 있음
- 제시된 규칙은
dash(x, y)를 경로로 두고, 재귀적으로path(x, z), dash(z, y)를 연결해is_connected()를 판별함 - 이 구성은 최신 Transformer보다 더 높은 성능을 냄
- 손글씨 수식 평가는 0부터 9까지의 숫자와 단순 산술 연산으로 된 손글씨 기호 시퀀스를 인식하고 식을 계산하는 작업임
- 예시는
1 + 3 / 5를 입력으로 보고 결과값1.6을 계산함 - Scallop으로 확률적 입력을 파싱할 수 있는 전체 문맥 자유 문법 파서를 만들 수 있음
- 파서와 평가기는 Scallop 코드 5줄로 작성 가능함
- 이 프로그램은 개별 기호 인식 신경 모델과 함께 종단간 방식으로 학습될 수 있으며, 학습 후 가장 가능성 높은 수식을 찾아 평가 결과를 반환함
- 예시는