본문으로 건너뛰기

카우츠 분류체계: 결합하는 여섯 가지 방법

📍 우리의 위치: 4부 · 신경상징적 발상 — 13장. 앞 장 두 문화: 기호 대 벡터는 논리의 정확한 추론을 임베딩의 유창한 기하학과 나란히 놓고, 이 시리즈 전체가 풀고자 하는 긴장에 이름을 붙였습니다. 이번 장은 사람들이 그 둘을 결합하려 시도해온 여섯 가지 구체적 방법에 대한, 이 분야가 공유하는 지도를 건네줍니다.

『두 문화』는 명료하게 서술되었지만 풀리지는 않은 문제를 남겼습니다. 논리는 증명할 뿐 결코 추측하지 않고, 기하는 추측할 뿐 결코 증명하지 않는데, 우리는 그 둘을 동시에 원합니다. 그것을 실제로 만들려는 순간, 새로운 혼란이 찾아옵니다. "신경상징적"(neuro-symbolic)이라는 말은 서로 완전히 다른 기계들을 가리킵니다. 데이터베이스 질의를 내뱉는 챗봇, 학습된 포지션 평가 함수를 갖춘 체스 엔진, 정리 증명기가 내부 깊숙이 파묻힌 네트워크. 이 셋을 하나의 이름으로 부르다 보면 결국 두 사람이 서로 다른 이야기를 하며 언쟁을 벌이게 됩니다. 이 매듭을 끊은 것은 신경 부분과 상징 부분이 서로 다르게 배선될 수 있는 여섯 가지 이름 붙은 범주로 이루어진 하나의 분류체계(taxonomy)였습니다 [1].

이번 장은 여섯 가지를 단순히 나열하는 데 그치지 않습니다. 각각을 정밀한 배선도(wiring diagram)로 읽어내고, 표기법을 기호 하나하나 해독하여 이름 자체가 스스로를 설명하게 만들며, 그것들을 정렬하는 단 하나의 축을 확정한 다음, 매 범주를 우리가 계속 사용해온 학술 세계와 실제로 커밋된 동반 코드에 적용하여, 그 파일들이 실제로 출력하는 숫자로 검증합니다. 이 장을 다 읽고 나면 여러분은 어떤 하이브리드 시스템이든 지도 위에 배치할 수 있고, 그 위치만으로 강점과 실패 양상을 예측할 수 있으며, 시리즈 전체의 전개를 지도 위의 한 번의 이동으로 조망할 수 있게 될 것입니다.

쉽게 말하면

계산기 한 대와 시인 한 명을 두고 있고, 이 둘이 한 팀으로 일하게 만들고 싶다고 상상해 보십시오. 두 일꾼을 배치하는 방법은 몇 가지로 제한되어 있습니다. 시인이 모든 말을 다 하는 동안 계산기는 조용히 뒤에서 일하게 하거나, 계산기가 작업을 주도하다가 막힐 때 시인에게 직감을 구하거나, 시인이 초안을 쓰고 나중에 계산기가 그 계산을 검산하게 하거나, 혹은 가장 깊은 버전으로 계산기에게 리듬을 느끼는 법을 가르쳐 둘이 하나의 일꾼이 되게 할 수도 있습니다. 카우츠 분류체계는 신경망과 논리 엔진을 위해 쓰인 바로 그 배치 목록입니다. "간신히 맞닿아 있는" 것에서부터 "하나로 융합된" 것까지, 여섯 개의 자리가 있습니다.

이 장에서 다루는 내용

  • 애초에 지도가 왜 필요한가 — "신경상징적"이라는 말은 서로 닮지 않은 수십 가지 아키텍처를 아우르기 때문에, 공유된 어휘가 없으면 두 논문이 같은 표현으로 정반대의 것을 의미할 수 있습니다.
  • 정렬을 만드는 단 하나의 축, 정밀하게 정의하기 — 느슨함에서 촘촘함으로 이어지는 결합도(coupling)를, 구체적인 검증법 하나로 정의합니다. 두 절반 사이의 이음매를 그레이디언트가 얼마나 멀리 건너가는가?
  • 표기법 완전 해독 — 나란히 배치, 대괄호, 파이프, 콜론-화살표, 첨자가 각각 어떻게 데이터 흐름 서명(data-flow signature)을 나타내는지, 느슨함에서 촘촘함 순으로 읽어냅니다.
  • 우리 세계에 적용해 본 여섯 범주 — 평이한 말, 실제 예시 하나, 그리고 동반 코드에 근거한 수치 추적: 전방향 연쇄의 파동 [23, 41, 47, 47], TransE 점수 격차 0.399 대 0.929, 실제 증명 트리, 24개의 도출된 원자가 24개의 레이블 붙은 쌍으로 바뀌는 과정.
  • 한눈에 보는 지도 — 여섯 가지를 표 하나에: 누가 주도하는지, 이음매가 무엇으로 이루어졌는지, 그레이디언트가 그것을 건너가는지, 논리적 보장이 살아남는지.
  • 이후 권들이 자리 잡는 곳 — 이 시리즈가 차지하는 정확한 칸들: 온톨로지 임베딩(3권), 확률적 논리 프로그래밍과 복합 질의 응답(4권), 그리고 SATORI 완결편(5권).
  • 법칙이 아니라 렌즈 — 실제 시스템이 왜 여러 칸에 걸쳐 있는지, 그리고 같은 시스템이 왜 확대 수준에 따라 다른 좌표를 갖는지.
  • 아직 풀리지 않은 질문 — 이 지도는 어떤 결합들이 존재하는지는 알려주지만, 여러분의 과제가 그중 무엇을 써야 하는지는 결코 알려주지 않습니다.

이 분야에 왜 지도가 필요한가

필드가 자기 자신의 구성 요소에 이름을 붙이지 못하면 그것들을 비교할 수도 없습니다. 2020년 무렵 "신경상징 AI"(neuro-symbolic AI)라는 말은 맞춤법 검사기와 미분 가능한 정리 증명기를 동시에 품을 만큼 넓은 우산이었고, 이를 정리하려던 여러 서베이 논문들은 계속해서 같은 해법에 손을 뻗었습니다. 가리킬 수 있는 작고 공유된 범주 집합이 그것입니다 [2][3]. 카우츠의 분류체계가 살아남은 이유는, 그것이 무엇을 만들어야 하는지에 대한 희망 목록이 아니라 실제로 만들어져 온 것들에 대한 인구조사이며, 단 하나의 정직한 질문으로 정렬되어 있기 때문입니다. 두 절반이 얼마나 촘촘하게 결합되어 있는가?

"촘촘하게 결합되어 있다"는 말을 단순한 느낌 이상으로 만들기 위해, 두 대상과 검증법 하나를 고정해 봅시다. 신경 성분은 NN으로 씁니다. 이는 조율 가능한 실수들의 목록으로 그 동작이 정해지는 함수이며, 9장에서 다룬 경사 하강법(gradient descent)으로 조정됩니다. 상징 성분은 SS로 씁니다. 이는 기호 구조 위에서 작동하는 정확한 절차로, 2부에서 다룬 전방향 연쇄기(forward chainer)나 SLD 증명기가 그 예이며, 규칙을 발화하거나 하지 않을 뿐 돌릴 수 있는 다이얼이 전혀 없습니다. 이 둘은 서로 다른 언어를 씁니다. NN은 벡터, 즉 Rd\mathbb{R}^d(실수 dd개로 이루어진 목록들의 공간이며, 위 첨자 dd차원(dimension), 즉 각 점이 몇 개의 숫자로 이루어져 있는지를 나타냅니다) 안의 점들을 소비하고 산출합니다. SS는 기호 구조, 즉 advises(bob, carol) 같은 접지된 원자(ground atom), 문자열, 증명 트리를 소비하고 산출합니다. NNSS 사이에는 언제나 이음매(seam)가 있습니다. 한쪽이 다른 쪽에게 일을 넘겨주는 지점입니다.

결합도 축은 바로 그 이음매에 관한 진술이며, 가장 날카로운 검증법은 경사 하강법이 우리에게 강제하는 바로 그것입니다. 그레이디언트는 \nabla("델", 9장에서 다룬 편도함수들의 벡터)로 쓰며, 미분 가능한(differentiable) 계산을 통해서만 흐를 수 있습니다. 즉 모든 내부 값이 매끄러운 실수여야 하며, 어떤 입력에든 아주 작은 흔들림을 주면 출력에서 측정 가능한 변화가 일어나야 합니다. "규칙 rr이 발화했는가, 예 아니오로"와 같은 이산적 선택에는 그런 기울기가 없습니다. 그레이디언트가 거기에 부딪히면 멈춰 버립니다. 그래서 그레이디언트가 이음매를 얼마나 멀리 건너가는가라는 단 하나의 질문이 지도 전체를 정렬합니다. 느슨한 쪽 끝에서는 그레이디언트가 결코 건너가지 않습니다. 두 부분은 완성된 메시지를 주고받을 뿐, 어느 쪽도 다른 쪽을 조율할 수 없습니다. 촘촘한 쪽 끝에서는 그레이디언트가 상징적 측면을 끝까지 관통해 흐르므로, 논리와 네트워크가 함께 개선됩니다. 떼어낼 수 없는 하나의 미분 가능한 객체로서 말입니다. 이음매에서 멈추는 그레이디언트로부터 추론을 깨끗이 관통하는 그레이디언트에 이르는 그 축이 이하 모든 내용의 척추입니다. 이 분류체계 자체의 번호 매김, 즉 1부터 6까지도 이 축을 충실히 따라갑니다.

표기법 읽어내기

여섯 가지 이름을 다루기 전에, 그것들을 읽는 법부터 익혀야 합니다. 표기법 자체가 의미이기 때문입니다. 각 이름은 NNSS로 이루어진 작은 배선도이며, 다섯 개의 기호가 모든 일을 합니다. 각 기호마다 평이한 읽기와 그 서명(signature)을 함께 제시합니다. 서명이란 들어오고 나가는 데이터의 형태를 뜻하며, \to는 "산출한다"는 의미로 씁니다(이 화살표는 "~로 대응된다"로 읽으므로, ABA \to B는 "AABB로 바뀐다"는 뜻입니다).

  • 나란히 배치(Symbolic Neuro Symbolic)는 곧은 순서열을 뜻합니다. 한 부분, 그다음 부분, 또 그다음 부분. 서명: 기호가 들어와 벡터로 디코딩되고, 신경망을 거친 뒤, 다시 기호로 인코딩됩니다. 즉 SRdS\mathbb{S} \to \mathbb{R}^d \to \cdots \to \mathbb{S}이며, 여기서 S\mathbb{S}는 기호 구조들의 집합입니다. 오직 양 끝만이 기호로 말합니다.
  • 대괄호(X[Y])는 Y가 X 안에 내포되어 있음을 뜻합니다. X가 주도권을 쥐고 Y를 서브루틴으로 호출합니다. 대괄호 바깥에 놓인 이름이 보스의 이름입니다. 서명: X가 실행되다가, 어느 한 단계에서 하위 입력에 대해 Y를 호출하고 Y의 답을 사용합니다.
  • 파이프(Neuro | Symbolic)는 파이프라인(pipeline)을 뜻합니다. 완전하고 독립적인 두 성분이 끝과 끝으로 이어져, 첫 번째의 출력이 두 번째의 입력이 됩니다. 서명: N:rawSN: \text{raw} \to \mathbb{S}, 그다음 S:SSS: \mathbb{S} \to \mathbb{S}, 단방향이며 이음매에는 기호 인터페이스가 있습니다.
  • 콜론과 화살표(Neuro : Symbolic → Neuro)는 "왼쪽의 것을 써서 오른쪽의 것을 만들어라"를 뜻합니다. 런타임 호출이 아니라 컴파일 단계입니다. 서명: 오프라인에서 SS가 레이블 붙은 데이터셋을 생성하고, 이어서 NN이 그 위에서 훈련되며, 런타임에는 NN만 남고 SS는 사라집니다.
  • 첨자(Neuro_Symbolic, "뉴로 서브 심볼릭"으로 읽습니다)는 상징적 부분이 신경 표현 그 자체 안에 산다는 것을 뜻합니다. 별도의 단계가 아니라 네트워크가 최적화하는 대상 속으로 접혀 들어간 항입니다. 서명: 단일 손실 L=Ldata+λLlogicL = L_{\text{data}} + \lambda\, L_{\text{logic}}이며, 하나의 미분 가능한 목적함수 안에서 논리 항 LlogicL_{\text{logic}}은 그저 또 하나의 합산 항일 뿐입니다.

이 다섯 기호 중 둘은 더 자세히 들여다볼 가치가 있습니다. 같은 규칙 위에서 결합도 축의 양쪽 끝을 동시에 실어 나르기 때문입니다. Symbolic[Neuro]Neuro[Symbolic]은 둘 다 대괄호를 사용하며 "바깥쪽이 보스"라는 규칙을 따르지만, 지도 위에서는 정반대의 끝에 자리합니다. 전자에서는 논리 엔진이 신경망을 부리고, 후자에서는 신경망이 논리 엔진을 부리며, 후자가 훨씬 더 촘촘한 이유는 이 배치가 훈련되려면 내포된 추론기 자체가 미분 가능해야 하기 때문입니다. 이 해독기를 마음에 새기고 나면 여섯 범주는 거의 저절로 읽힙니다. 그 과정에서 논리 기호를 하나 더 만나게 될 텐데, \sqsubseteq("~에 포섭된다"로 읽으며, 평이하게는 "~의 일종이다"라는 뜻이므로 researcher ⊑ person은 모든 연구자가 사람이라는 것을 말합니다)와 노름 막대 \lVert \cdot \rVert(벡터의 길이, 즉 그 성분들의 제곱합의 제곱근)이며, 둘 다 앞으로 이어질 예시에서 필요하게 됩니다.

결합하는 여섯 가지 방법이라는 제목의 가로형 스펙트럼 다이어그램으로, 왼쪽의 느슨한 결합에서 오른쪽의 촘촘한 결합으로 이어지는 여섯 개의 레이블 붙은 정거장으로 배치되어 있으며, 각 정거장은 신경 구름 아이콘과 상징 톱니바퀴 아이콘을 서로 다른 방식으로 짝지은 상자로 그려져 있다. 첫 번째 정거장 Symbolic Neuro Symbolic은 기호 토큰이 신경 구름에 들어갔다가 기호 토큰이 되어 나오는 모습을 보여주며, "기호는 오직 가장자리에만"이라는 캡션이 달려 있다. 두 번째 정거장 Symbolic bracket Neuro는 큰 톱니바퀴가 자신이 질의하는 작은 신경 구름을 품고 있는 모습을 보여주며, "탐색이 정확성을 소유한다"라는 캡션이 달려 있다. 세 번째 정거장 Neuro pipe Symbolic은 신경 구름이 화살표로 별도의 톱니바퀴에 입력을 공급하는 모습을 보여주며, "신경망은 보고, 논리는 결론짓는다"라는 캡션이 달려 있다. 네 번째 정거장 Neuro colon Symbolic arrow Neuro는 톱니바퀴가 레이블 붙은 예시들을 신경 구름 속으로 내뿜는 모습을 보여주며, "규칙이 가중치가 된다"라는 캡션이 달려 있다. 다섯 번째 정거장 Neuro subscript Symbolic은 신경 구름 안에 작은 톱니바퀴가 빛나는 호박색 제약 고리로 융합되어 있는 모습을 보여주며, "손실 항으로서의 제약"이라는 캡션이 달려 있다. 여섯 번째 정거장 Neuro bracket Symbolic은 큰 신경 구름이 톱니바퀴 엔진을 품고 있는 모습을 보여주며, "그레이디언트가 증명을 관통해 흐른다, 가장 촘촘한 결합"이라는 캡션이 달려 있다. 하단에는 느슨함에서 촘촘함까지 이어지는 축이 여섯 정거장 전체를 가로지르며, 다섯 번째와 여섯 번째 정거장을 이 시리즈의 3권, 4권, 5권이 자리 잡는 곳으로 표시하는 괄호가 붙어 있다. 여섯 범주를 그것들을 정렬하는 단 하나의 축 위에 배치한 것 — 신경과 상징 두 절반이 얼마나 촘촘하게 묶여 있는지를, 가장자리에서만 기호로 말하는 파이프라인에서부터 네트워크 안에 융합된 추론 엔진까지로 나타낸다. 저자가 AI의 도움을 받아 직접 제작한 원본 도해.

결합하는 여섯 가지 방법

1. Symbolic Neuro Symbolic — 표준 딥러닝 파이프라인

현대 딥러닝의 주력 방식이자 모든 결합 중 가장 느슨한 결합입니다. 기호가 들어가고, 기호가 나오며, 그 사이의 모든 일은 신경망이 처리합니다. 그 서명은 SRdRdS\mathbb{S} \to \mathbb{R}^d \to \cdots \to \mathbb{R}^d \to \mathbb{S}로, 인코딩 단계와 디코딩 단계로 둘러싸인 단일 신경 함수입니다. 번역 모델은 단어를 입력받아, 중간에는 오직 텐서(tensor, 신경망이 연산에 사용하는 다차원 실수 배열)만 거친 뒤 단어를 반환합니다. 분류기는 문장을 입력받아 레이블을 반환합니다. 이것이 신경상징적이라 불리는 것은 오직 그 인터페이스가 기호로 말한다는 약한 의미에서뿐입니다. 어떤 규칙도 결코 적용되지 않으며 SS는 아예 존재하지 않습니다.

우리의 학술 세계에 근거해 보면, 언어 모델이 "누가 carol을 지도하는가?"라는 질문을 읽고 advises(bob, carol)이라는 문자열을 내뱉는다고 합시다. 그 출력은 우리 지식 베이스에서 마침 참이지만, 그것이 어디서 나왔는지를 읽어 봅시다. 네트워크 안의 그 무엇도 kb.py에 단언되어 있는 사실 ("advises", "bob", "carol")을 참조하지 않았습니다. 그 문자열은 advises(dave, carol)이라는, 거짓인 문자열도 똑같이 유창하게 내뱉었을 바로 그 다음 토큰 예측 기제에 의해 생성된 것입니다. 기호는 표피일 뿐입니다. 이음매는 양 끝의 이산적인 인코딩/디코딩이며, 그레이디언트는 오직 네트워크 내부에서만 도달할 뿐, 어떤 규칙도 건너가지 않습니다. 건너갈 규칙 자체가 없기 때문입니다. 결합도: 있을 수 있는 한 가장 느슨하며, 논리적 보장은 아예 존재하지 않습니다.

2. Symbolic[Neuro] — 신경망 조수를 호출하는 솔버

대괄호 규칙을 떠올려 봅시다. X[Y]는 Y가 X 안에 내포되어 있다는 뜻입니다. 여기서는 상징적 알고리즘이 전체를 지휘하며, 어렵고 세부적인 판단 하나를 위해 신경망을 조수로 호출합니다. 유명한 예는 트리 탐색이 학습된 평가 함수(learned evaluation function)에 자문을 구해 포지션을 점수 매기고 탐색할 가치가 없는 수를 가지치기하는 게임 프로그램입니다. 탐색이 정확성을 소유하고, 신경망은 그것이 질의하는 빠른 오라클입니다.

우리 세계에서는 sld.py의 후방향 연쇄 SLD 증명기가 보스 역할을 맡는다고 합시다. 그 _solve 루틴(37행부터 60행까지)은 증명들을 뒤지며, 매 단계마다 어떤 하위목표를 먼저 전개할지 골라야 합니다. 이 증명기가 embeddings.py의 TransE 점수기를 조수로 호출하여, 학습된 기하학적 거리를 "어느 간선을 쫓을 가치가 가장 큰가"에 대한 휴리스틱으로 쓴다고 상상해 봅시다. score(79행부터 82행까지)에 정의된 이 점수기는 h+rt\lVert \mathbf{h} + \mathbf{r} - \mathbf{t} \rVert, 즉 머리(head)에 관계(relation)를 더한 변환이 도달하는 지점과 꼬리(tail)가 실제로 위치한 지점 사이 간극의 길이를 반환합니다. 값이 낮을수록 더 그럴듯합니다. 실제로 출력되는 숫자는 다음과 같습니다.

후보 간선TransE 거리해석
advises(alice, bob) (KB에서 참)0.3990.399짧은 간극, 그럴듯함: 먼저 전개
advises(alice, erin) (KB에서 거짓)0.9290.929긴 간극, 그럴듯하지 않음: 나중에 전개

따라서 증명기는 0.9290.929점을 받은 하위목표보다 0.3990.399점을 받은 하위목표를 먼저 시도하여 더 빨리 증명에 도달할 것입니다. 결정적으로, 신경망은 무엇이 인지는 결코 결정하지 않습니다. 오직 탐색의 순서만 다시 매길 뿐입니다. 이음매는 NN에서 SS로 건네지는 스칼라 하나이자 이산적인 오라클 호출이며, 어떤 그레이디언트도 증명을 거슬러 되돌아 흐르지 않습니다. 논리는 여전히 마지막에 완전하고 검증 가능한 증명 트리를 내놓습니다. 조수는 그저 탐색을 더 빠르게 만들었을 뿐입니다. 결합도: 느슨함, 보장은 완전히 유지됩니다.

3. Neuro | Symbolic — 지각이 추론에 입력을 공급한다

파이프는 완전한 두 성분이 끝과 끝으로 이어진 종속 연쇄(cascade)를 뜻하며, 고전적으로는 신경 지각이 상징적 추론기에 입력을 공급하는 형태입니다. 비전 시스템이 사진을 구조화된 장면 서술로 바꾸고 그 위에서 상징적 프로그램이 질문에 답하는 경우가 그 예입니다. 우리 세계에서 이것은 가장 깔끔하게 들어맞는 사례이며, 상징적 절반이 실제로 움직이는 모습을 지켜볼 수 있는 지점이기도 합니다. 네트워크가 스캔된 논문을 읽고 접지된 사실, 즉 kb.py의 23개 기저 원자를 내놓습니다. authored("alice", "p1")이나 cites("p2", "p1") 같은 것들입니다. 이 사실들은 forward_chain.py의 전방향 연쇄기에 입력되며, 이 연쇄기는 일곱 개의 혼(Horn) 규칙을 통해 이들을 완전한 모델(model)로 갈아냅니다(여기서 모델은 1번 범주의 언어 모델 같은 신경망 모델이 아니라, 규칙들이 참이라고 강제하는 원자들의 완전한 집합을 뜻합니다).

이 엔진은 직접귀결 연산자(immediate-consequence operator) TPT_P이며, t_p(42행부터 49행까지)에 정의되어 있습니다. 원자들의 집합 SS가 주어지면 이는 다음을 반환합니다.

TP(S)  =  S{headθ  :  (headbody)rules, θ makes every body atom true in S},T_P(S) \;=\; S \,\cup\, \big\{\, \text{head}\cdot\theta \;:\; (\text{head} \leftarrow \text{body}) \in \text{rules},\ \theta \text{ makes every body atom true in } S \,\big\},

여기서 \cup은 집합 합집합("어느 한쪽에라도 있는 모든 것")이고, \in은 "~의 원소이다"로 읽으며, θ\theta(세타)는 규칙의 변수들에 상수를 배정하는 치환(substitution)이어서, headθ\text{head}\cdot\theta는 그 상수들이 대입된 머리(head)를 뜻합니다. 구동 루틴 least_fixpoint(52행부터 64행까지)는 어느 라운드에서도 새로운 것이 추가되지 않을 때까지 TPT_P를 반복 적용하여 최소 고정점(least fixpoint) lfp(TP)\text{lfp}(T_P)를 구하고, 각 라운드가 끝날 때마다 크기를 기록합니다. 이 파일을 실행하면 sizes per round: [23, 41, 47, 47]이 출력됩니다. 다음은 각 파동이 정확히 무엇을 하는지, 원자 단위로 보여주며 이 네 숫자를 재현합니다(아래 표의 ∘ 기호는 합성을 뜻하며, advises 간선 하나를 다음 것과 연결하는 것을 나타냅니다).

파동 ttTPT_P가 무엇에 발화하는가이 파동에서 새로 생긴 원자개수누적
0(단언된 기저 사실들)23개의 기저 원자2323
123개의 기저 사실researcher (각 professor/student로부터)5
grandAdvisor (advisesadvises 연쇄: alice→bob→carol, alice→bob→dave, bob→carol→erin)3
colleague (같은 기관 소속, neq 가드: mit에서 2개, cmu에서 6개)8
citesTransitively (cites에 대한 기저 규칙, p2→p1, p3→p2)241
241개의 원자person (이제 존재하게 된 각 researcher로부터)5
citesTransitively(p3, p1) (전이 규칙: cites(p3,p2)citesTransitively(p2,p1))147
347개의 원자새로운 것 없음; TP(S)=ST_P(S) = S, 고정점 도달047

이 상승의 구조를 읽어 봅시다. 1번 파동은 몸통(body)이 기저 술어만을 언급하는 규칙만 발화할 수 있으므로, person(그 몸통이 아직 존재하지 않는 researcher를 필요로 함)은 대기하고, 재귀적인 citesTransitively는 오직 그 기저 간선들만 얻습니다. 2번 파동에서는 도출된 원자들이 다른 규칙들에 입력으로 들어갑니다. 1번 파동에서 태어난 다섯 개의 researcher 원자가 이제 person을 발화시키고, 갓 도출된 citesTransitively(p2, p1)cites(p3, p2)와 합성되어 두 홉을 건너 citesTransitively(p3, p1)에 도달합니다. 이는 어떤 단일 사실도 보여주지 못했던 연결입니다. 3번 파동은 아무것도 더하지 못하므로 루프가 멈춥니다. 총합은 4723=2447 - 23 = 24개의 도출된 원자이며, 이는 정확히 forward_chain.py가 보고하는 숫자입니다. 네트워크는 페이지에서 23개의 사실을 보았고, 논리는 그 이상의 24개를, 어떤 픽셀에도 담긴 적 없는 전이적 인용 하나와 여덟 개의 동료 쌍을 포함하여 결론지었습니다. 이음매는 건너편으로 넘겨지는 이산적인 사실들의 집합이므로 어떤 그레이디언트도 그것을 건너가지 않고 두 단계는 별도로 구축되지만, 도출된 모든 원자는 하나의 보장을 지닙니다. 그것이 규칙들의 모든 모델에서 참이라는 것입니다. 결합도: 이음매에서는 느슨하지만, 보장은 완전히 유지됩니다.

4. Neuro : Symbolic → Neuro — 규칙을 네트워크로 컴파일하기

콜론-화살표는 "상징적인 것을 써서 신경적인 것을 만들어라"로 읽습니다. 상징적 지식이 교사가 되고, 훈련된 네트워크는 학생이 됩니다. 이미 알려진 규칙집합을 가져다, 그것으로 레이블 붙은 예시를 산더미처럼 생성하고, 그 규칙들의 답을 재현할 때까지 네트워크를 훈련시키면, 논리는 가중치 속으로 컴파일되어 사라집니다. 화살표는 런타임 호출이 아니라 컴파일 타임 단계입니다. 훈련이 끝나면 SS는 폐기되고 오직 NN만이 답합니다.

우리 세계에서는 교사가 이미 forward_chain.pysld.py 안에 앉아 있습니다. 전방향 연쇄기가 도출한 24개의 원자는 "이 인자들은 이 도출된 관계에 속한다, 저것들은 아니다"라는 24개의 레이블 붙은 훈련 쌍이 됩니다. kb.py(79행)의 grandAdvisor 규칙, grandAdvisor(X, Z) ← advises(X, Y) ∧ advises(Y, Z)를 봅시다. 여기서 \wedge는 논리적 "그리고"입니다. sld.py의 SLD 증명기는 어떤 인스턴스를 확인해 줄 뿐만 아니라 그 도출 과정도 반환합니다. 이를 실행하면 실제 증명 트리가 출력됩니다.

proof of grandAdvisor(alice, carol):
grandAdvisor(alice, carol)
advises(alice, bob)
advises(bob, carol)

이 트리는 다음을 말합니다. grandAdvisor(alice, carol)이 성립하는 이유는 중간 인물이 bob이고, advises(alice, bob)advises(bob, carol)이 둘 다 단언되어 있기 때문입니다. 증명기의 answers 루틴(82행부터 93행까지)은 그러한 모든 바인딩을 열거하여, 코드가 확인하는 세 개의 양성 grandAdvisor 레이블 (alice, carol), (alice, dave), (bob, erin)을 산출하며, 그 외의 모든 순서쌍은 음성 레이블이 됩니다. 이 레이블 붙은 쌍들을 네트워크에 먹이고 그것들을 재현할 때까지 피팅합니다. 런타임에는 규칙이 사라지고 오직 가중치 속의 그림자만 남습니다. 여기서는 그레이디언트가 실제로 흐르지만, 오직 훈련 중 NN 내부에서만 흐를 뿐, SS로 건너가는 이음매는 결코 건너지 않습니다. SS는 컴파일 시점에 이미 사라졌기 때문입니다. 여러분은 속도와, 정확히 훈련에 쓰인 사실을 넘어 일반화할 기회를 얻습니다. 그 대가로는 규칙이 공짜로 주었던 보장을 포기해야 합니다. 피팅된 네트워크는 보지 못한 어떤 쌍에 대해 틀리게 답할 수 있고, 실제로 그럴 것이기 때문입니다. 결합도: 이음매에서는 여전히 느슨하지만, 이제 보장은 사라집니다.

5. Neuro_Symbolic — 벡터에 구워 넣은 논리

첨자는 논리가 신경 표현 안에 산다는 것을, 즉 별도의 단계가 아니라 훈련이 최적화하는 대상 속의 한 항이라는 것을 뜻합니다. 이 방식의 핵심은 논리적 제약을 미분 가능한 페널티로 바꾸어 네트워크가 그것을 따를 때 보상을 받도록 만드는 것이며, 이것이 논리 텐서 네트워크(Logic Tensor Networks)와 "의미 손실"(semantic loss) 뒤에 있는 발상입니다. 이는 그레이디언트가 논리 속으로 건너가는 첫 번째 범주인데, 논리 항 자체가 미분 가능하도록 작성되기 때문입니다.

우리 세계에서 이것은 임베딩 장에서 드러난 바로 그 균열을 고칩니다. embeddings.py의 TransE 모델은 단일 손실, 즉 훈련 루프의 마진-순위 항(65행의 margin + d_pos - d_neg <= 0 조건으로, 참인 삼중항을 손상된 것보다 서로 더 가깝게 밀어붙입니다)만을 최적화합니다. 이 루프를 읽어 보면 포섭 관계 researcher ⊑ person을 언급하는 항은 전혀 없습니다. 기하학의 그 무엇도 모든 연구자가 사람이라는 것을 알지 못하므로, 평평한 TransE 배치는 연구자의 점을 사람 점들이 군집한 곳 바깥에 놓을 수 있고, 대체로 실제로 그렇게 합니다. 5번 범주는 목적함수에 두 번째 합산 항을 더하여, 네트워크가 다음을 최소화하도록 만듭니다.

L  =  LTransE  +  λamax ⁣(0, viol(a)),L \;=\; L_{\text{TransE}} \;+\; \lambda \sum_{a} \max\!\big(0,\ \operatorname{viol}(a)\big),

여기서 Σ\Sigma는 개체 aa에 대한 합이고, 계수 λ\lambda(람다)는 제약이 얼마나 강하게 작용하는지를 정하며, max(0,)\max(0, \cdot)힌지(hinge, 내부 항이 음수일 때 0이 되므로 충족된 제약은 아무런 비용도 들지 않습니다)이고, viol(a)\operatorname{viol}(a)는 연구자로 분류된 개체 aa가 사람에게 할당된 영역 바깥으로 얼마나 튀어나와 있는지를 측정합니다. 이 페널티는 좌표에 대해 매끄러우므로, 그 그레이디언트는 TransE가 이미 학습하고 있는 바로 그 벡터들 속으로 곧장 흘러 들어갑니다. 논리와 기하는 더 이상 두 개의 시스템이 아니라 하나의 손실 함수가 됩니다. 위계 구조는 그저 바라는 것이 아니라 좌표 안으로 훈련되어 들어갑니다. 결합도: 촘촘함, 그리고 보장은 부드러운(soft) 것이 됩니다. 페널티에 의해 장려될 뿐 증명되지는 않습니다.

6. Neuro[Symbolic] — 네트워크 안의 추론기

2번 범주와 같은 대괄호 규칙이지만 뒤집힌 형태입니다. 이제 신경 시스템이 보스이고, 진짜 상징적 추론기가 그 계산 안에 내포되어 있습니다. 이것이 지도 위에서 가장 촘촘한 결합입니다. 추론은 순전파(forward pass) 안에서 일어나고, 그레이디언트는 그것을 관통해 되돌아 흐르므로, 시스템은 학습과 증명을 하나의 미분 가능한 객체로서 동시에 수행합니다.

우리 세계에서는, 3번 범주에서 citesTransitively를 만들어낸 전이적 폐쇄 고정점을 가져다 미분 가능하게 만들어 봅시다. forward_chain.py에서 연산자 TPT_P는 딱딱한, 전부 아니면 전무인 결정을 내립니다. 어떤 사실은 집합 out에 있거나 없으며, 48행의 이산적인 out.add(...)에 의해 추가됩니다. 이 추론기를 네트워크 안에 내포시키려면, 각 원자의 명확한 소속 여부를 구간 [0,1][0, 1](0부터 1까지의 실수로, "얼마나 참인가"로 읽습니다) 안의 부드러운 진리값(soft truth value)으로 바꾸고, "어떤 규칙 인스턴스에 의해서든 도출되었는가"라는 이산적 판단을 최댓값에 대한 매끄러운 근사로 바꾸어야 합니다. 그러면 바로 그 파동 수열 [23, 41, 47, 47]이 부드러운 고정점을 향해 오르는 실숫값 진리 벡터들의 수열이 되고, 그 상승 전체가 미분 가능해집니다. 최종 citesTransitively 점수에 대한 훈련 신호는 이제 추론의 모든 파동을 거슬러, 기저 cites 사실을 만들어낸 어떤 네트워크에까지도 역전파될 수 있습니다. 그 무엇도 컴파일되어 사라지지 않고 그 무엇도 별도의 단계에서 대기하지 않습니다. 증명 엔진 자체가 하나의 레이어입니다. 이는 구축하기 가장 어렵고, 가장 강력하며, 이 시리즈가 궁극적으로 향하는 곳입니다. 결합도: 가장 촘촘함, 그레이디언트가 추론 자체를 관통해 흐르며, 보장은 부드럽습니다.

한눈에 보는 지도

이음매를 고정하고 그레이디언트 질문을 던지고 나면, 여섯 가지는 단 하나의 축 위에서 깔끔하게 읽힙니다. 아래의 각 항목은 위에서 다룬 실행 예시에 구체화된 버전입니다.

#표기법누가 주도하는가이음매는 무엇으로 이루어져 있는가그레이디언트가 이음매를 건너가는가?논리적 보장우리 세계에서의 사례
1Symbolic Neuro Symbolic네트워크이산적인 인코딩/디코딩아니오 (건너갈 규칙 자체가 없음)없음LM이 문자열 advises(bob, carol)을 내뱉음
2Symbolic[Neuro]논리 엔진스칼라 오라클 호출 하나아니오완전함SLD가 TransE 점수 0.3990.3990.9290.929로 하위목표 순서를 정함
3Neuro | Symbolic분리됨 (지각한 뒤 추론)이산적 사실들의 집합아니오완전함네트워크가 23개의 사실을 내놓고, 연쇄기가 24개를 더 도출함, 파동 [23,41,47,47]
4Neuro : Symbolic → Neuro네트워크 (런타임에)오프라인 레이블 데이터셋NN 내부에서만사라짐24개의 도출된 원자가 24개의 레이블 붙은 쌍이 됨
5Neuro_Symbolic하나의 결합 손실미분 가능한 페널티 항예, 가중치 속으로부드러움researcher ⊑ person을 TransE 좌표 속으로 강제하는 페널티
6Neuro[Symbolic]네트워크미분 가능한 추론기 레이어예, 추론을 관통해부드러움레이어로서의 미분 가능한 citesTransitively 고정점

"그레이디언트가 이음매를 건너가는가?" 열을 위에서 아래로 읽어 보면 결합도 축이 성긴 단계들로 정렬됩니다. 느슨한 세 범주에는 아니오, 아니오, 아니오, 부분적인 4번 범주에는 네트워크 내부에서만, 그리고 촘촘한 두 범주에는 예, 가중치 속으로예, 추론을 관통해가 붙습니다. 그레이디언트 검증만으로도 이 세 단계, 즉 느슨함 3, 부분적 4, 촘촘함 6은 가려지지만, 세 느슨한 범주 각각의 서열을 매기지는 못합니다. 셋 모두에 대해 "아니오"라고 답하기 때문입니다. 더 세밀한 1 < 2 < 3 순서를 위해서는 "이음매는 무엇으로 이루어져 있는가" 열을 가로질러 읽어야 합니다. 이산적인 인코딩/디코딩에서, 스칼라 오라클 호출 하나로, 그다음 사실들의 집합 전체로, 점점 더 풍부해지는 것을 볼 수 있습니다. 먼저 그레이디언트로 단계를 나누고, 그다음 이음매의 재질로 단계 내부의 동률을 깨는 것, 그것이야말로, 그 어떤 느슨한 직관이 아니라, "느슨함에서 촘촘함으로"가 뜻하는 바입니다.

이후 권들이 자리 잡는 곳

이 분류체계는 이 시리즈의 나머지 부분을 위한 범례이며, 이후의 각 권은 특정한 칸에 자신의 깃발을 꽂습니다. 온톨로지 임베딩을 다루는 3권은 정확히 5번 범주, Neuro_Symbolic에 해당합니다. 그 상자와 공의 기하학은 벡터 속에 구워 넣은 논리적 포함 관계이며, 위에서 본 researcher ⊑ person 페널티의 성숙한 버전으로, 여기서는 클래스가 영역이 되고 포섭 관계가 미분 가능한 항에 의해 강제되는 말 그대로의 기하학적 포함 관계가 됩니다. 4권은 5번 범주와 6번 범주에 걸쳐 있습니다. 복합 질의 응답은 학습된 임베딩 위에서 논리적 질의 구조를 실행하므로 Neuro_Symbolic이고, 확률적 논리 프로그래밍은 실제 논리 프로그램을 신경망 루프 안에서 미분 가능하게 만들므로 Neuro[Symbolic], 즉 위에서 6번 범주를 위해 스케치했던 부드러운 고정점 방식입니다. SATORI 완결편인 5권은 촘촘한 끝, 즉 6번 범주를 겨냥합니다. 1권과 2권은 순수 상징 극에 자리하여 지도 밖에 있고, 이 권의 3부는 순수 신경 극에 자리합니다. 왼쪽에서 오른쪽으로 읽으면, 이 시리즈는 느슨한 결합에서 촘촘한 결합을 향한 하나의 긴 행군입니다. 『두 문화』에서 이름 붙었던 상, 즉 기하처럼 배우고 논리처럼 증명하는 하나의 객체가 되는 일이 바로 그 촘촘한 끝에 살고 있기 때문입니다.

분류체계는 법칙이 아니라 렌즈다

여섯 개의 칸을, 자연이 강제하는 상자가 아니라 대화를 위한 좌표로 취급하십시오. 실제 시스템은 하나의 칸에 가만히 머무르기를 거부하기 때문입니다. 어떤 게임 엔진은 탐색이 전체를 지휘하는 모습을 보면 Symbolic[Neuro]이지만, 그것이 호출하는 학습된 점수기로 확대해 들어가면 구성 요소 자체는 판을 입력받아 숫자를 출력하는 Symbolic Neuro Symbolic입니다. 우리의 스캔 논문 파이프라인은 오늘날 이음매에서 Neuro | Symbolic이지만, 규칙 엔진을 네트워크의 손실 속으로 접어 넣으면(6번 범주의 부드러운 고정점 방식) 계산하는 내용은 바꾸지 않은 채 Neuro[Symbolic] 쪽으로 미끄러져 갑니다. 같은 시스템이 확대 수준과 생애 단계에 따라 다른 좌표를 갖게 되는 것이며, 이는 두 서베이 논문이 경계가 성기다고 경고할 때 함께 강조하는 사실입니다 [2][3]. 이 지도의 가치는 현실을 완벽한 이음매로 잘라낸다는 데 있는 것이 아니라, 두 엔지니어가 지금 논쟁하는 배치에 대해 공유된 단어를 갖게 해 주고, 어떤 시스템이 어떤 배치를 가져야 하는지에 대해 의견이 갈릴 때 손가락으로 가리킬 장소를 마련해 준다는 데 있습니다.

아직 풀리지 않은 부분

이 지도에는 의도적으로 그릴 수 없는 축이 하나 있습니다. 바로 어느 칸이 최선인가입니다. 여섯 가지 결합에 이름을 붙이는 것만으로는 여러분의 과제가 3번 범주를 원하는지 6번 범주를 원하는지 아무것도 말해 주지 않으며, 그 트레이드오프는 실재하고 이제 위의 표에서 정밀하게 드러나 있습니다. 더 촘촘한 결합은 종단간(end-to-end) 미분 가능 학습을 사 줍니다. 이음매를 건너가는 그레이디언트는 모든 부분을 한꺼번에 개선시키기 때문입니다. 하지만 바로 그 건너감은 투명성을 값으로 치르고, 흔히 훈련 안정성도 값으로 치르며, 2번과 3번 행이 지녔던 단단한 보장을 5번과 6번 행의 부드럽고 페널티로 유도되는 장려로 바꾸어 놓습니다. 더 느슨한 결합은 깔끔하고 검증 가능한 보장(도출된 24개 원자 모두가 증명 가능하게 함의됨)을 유지하지만, 이음매를 관통해 배울 수는 없으므로 두 부분이 서로를 결코 교정하지 못합니다. 어느 쪽 트레이드오프가 이기는지는 과제에 따라 다릅니다. "불완전한 그래프에 대한 질의 응답에는 Neuro_Symbolic을 쓰라"고 말해 주는 정리는 존재하지 않습니다. 이 분야는 여전히 느린 방식으로, 벤치마크 하나하나를 통해 답을 찾아가고 있으며, 정직한 서베이 논문들은 어떤 과제에 최선인 결합이 무엇인지가 여전히 열려 있는 경험적 질문이고 그 증거는 뒤섞여 있으며 어렵게 얻어진다고 보고합니다 [2][3]. 이 분류체계는 이 분야에 지형의 지도를 건네주었습니다. 하지만 그 위를 건너는 최선의 경로까지 건네주지는 않으며, 건네줄 수도 없습니다.

왜 중요한가

지금부터는 이후 권들이 다루는 거의 모든 방법이 사실상 자신의 칸을 스스로 알려 줄 것입니다. 파이프라인인지 내포인지, 컴파일된 것인지 미분 가능한 것인지, 느슨한지 촘촘한지. 이 여섯 가지를 알면 어떤 새로운 시스템이든 한 번 읽는 것만으로 자리매김할 수 있고, 오직 그 좌표만으로 강점과 실패 양상을 예측할 수 있으며(그레이디언트가 이음매를 건너가는가? 보장은 단단한가 부드러운가?), 시리즈 전체의 전개를 한눈에 볼 수 있습니다. 기호와 벡터가 그저 완성된 메시지만을 주고받는 느슨한 왼쪽에서, 그 둘이 배우기도 하고 추론하기도 하는 하나의 것이 되는 촘촘한 오른쪽으로 꾸준히 흘러가는 것입니다. 그 흐름은 유행이 아닙니다. 그것은 이 분야가 앞 장에서 이름 붙인 바로 그 상을 좇는 것이며, 분류체계는 각 시도가 얼마나 가까이 다가갔는지를 우리가 추적하는 방법입니다.

핵심 용어

  • 신경상징 분류체계(neuro-symbolic taxonomy) — 하이브리드 시스템을 신경 부분과 상징 부분이 얼마나 촘촘하게 결합되어 있는지에 따라 여섯 범주로 정렬한 카우츠의 분류.
  • 결합도(coupling, 느슨함에서 촘촘함으로) — 분류체계를 정렬하는 단 하나의 축으로, 하나의 검증법으로 정밀해집니다. 두 절반 사이의 이음매를 그레이디언트가 얼마나 멀리 건너가는가, 전혀 건너가지 않는 것에서부터 추론을 완전히 관통하는 것까지.
  • 이음매(the seam) — 신경 성분 NN(그레이디언트로 조율 가능한 벡터)과 상징 성분 SS(정확하고 미분 불가능한 기호 구조) 사이의 인계 지점. 그 재질(이산적 사실, 스칼라, 미분 가능한 항)이 범주를 결정합니다.
  • Symbolic Neuro Symbolic — 입력과 출력은 기호이지만 처리는 전적으로 신경적인 표준 딥러닝 파이프라인. 어떤 규칙도 발화하지 않습니다.
  • Symbolic[Neuro] — 학습된 평가 함수를 갖춘 탐색처럼, 상징적 알고리즘이 주도권을 쥐고 하나의 세부 판단을 위해 신경망을 조수로 호출하는 구조.
  • Neuro | Symbolic — 신경 지각이 사실들을 산출하면 별도의 상징적 추론기가 그것들을 연쇄시키는 2단계 파이프라인(우리의 23개 사실이 47개 원자로 이루어진 모델이 되는 과정).
  • Neuro : Symbolic → Neuro — 규칙집합을 이용해 훈련 데이터를 생성함으로써 그 규칙집합을 네트워크로 컴파일하는 것. 논리가 가중치 속으로 구워지고 런타임에는 폐기됩니다.
  • Neuro_Symbolic — 손실에 더해진 미분 가능한 페널티로서 신경 표현 내부에 심어진 논리. 예를 들어 researcher ⊑ person을 임베딩 기하학 속으로 강제하는 항.
  • Neuro[Symbolic] — 신경 시스템 안에 내포되어 미분 가능하게 만들어진 상징적 추론 엔진으로, 그레이디언트가 추론 자체를 관통해 흐르게 합니다. 가장 촘촘한 결합.
  • (grain) / 확대 수준(zoom level) — 시스템의 범주가 얼마나 가까이 들여다보느냐에 달려 있어서, 하나의 시스템이 하나 이상의 칸을 차지할 수 있다는 관찰.

이 장이 이끄는 곳

이제 우리는 지도를 손에 쥐었습니다. 아직 필요한 것은 영토입니다. 다음 장 실행 예시: 하나의 지식 베이스, 다섯 권의 책이 바로 그 깃발을 꽂습니다. 이 권이 계속 되돌아왔던 사람, 논문, 지도 관계로 이루어진 작은 학술 세계를 가져다, 같은 사실들이 차례로 논리 프로그램(2권), 임베딩된 기하학(3권), 미분 가능한 질의 응답의 대상(4권), 그리고 SATORI 완결편(5권)의 기반이 되는 과정을 보여 줍니다. 하나의 지식 베이스, 결합하는 여섯 가지 방법, 그것들을 만들어 갈 다섯 권의 책.