본문으로 건너뛰기

솔직한 평결: 통합이 값어치를 할 때

📍 현재 위치: VII부 · 평결 — 22장. 자연어 추론 벤치마크는 옳은 답과 옳은 증명을 구별할 수 있는 단계 검사기로 VI부를 마쳤습니다; 이 장은 모든 부의 영수증을 하나의 원장에 담아 읽어내며 이 권을 닫습니다.

4권은 하나의 물음을 일곱 가지 방식으로 물었습니다: 논리를 미분 가능하게 만드는 데는 무엇이 들고, 그것을 치를 값어치는 언제 있는가입니다. 1부는 경사를 사려고 의미로 값을 치렀습니다. 2부는 의미로 값을 치르기를 거부하고 대신 계수로 값을 치렀으며, 그런 다음 그 계수를 회로로 컴파일하여 청구서가 단 한 번만 도래하게 했습니다. 3부는 두 거래 모두를 산업화했습니다. 4부는 경사가 규칙을 발견할 수 있는지를 물었고, 답을 정직하게 지키기 위해 경사 없는 채굴기를 대기시켜 두었습니다. 5부는 1홉 지식을 열네 가지 질의 형태로 합성했고, 불편하게도 추론이 때로 훈련을 이긴다는 것을 발견했습니다. 6부는 그 전체 사업을 영어 안으로 옮겨 놓고 올바름이 인수분해되거나 흩어지는 모습을 지켜보았습니다. 이 장은 그 결산입니다. 승자를 가리지 않는데, 이 권의 증거 안에 승자가 없기 때문입니다. 이 장은 각 조합이 무엇을 사고, 무엇을 치르며, 어떤 커밋된 검사가 그 주장을 지키는지를 진술하고, 그런 다음 이 권이 갚지 못하고 남긴 빚들을 움츠러들지 않고 나열합니다.

쉽게 말하면

긴 리모델링 공사 끝에 벌어지는 마지막 워크스루를 상상해 보십시오. 시공업자는 "배관이 이겼습니다"라고 선언하지 않습니다. 대신 두 사람은 영수증 폴더를 들고 집안을 함께 돌아봅니다: 이 벽은 이만큼 들었고 하중을 지탱하며, 이 지름길은 일주일을 아꼈지만 5년 뒤에는 손을 봐야 하고, 이 점검은 슬래브를 부은 시공팀이 아니라 독립적인 엔지니어가 서명했다는 식입니다. 폴더 안에는 세 가지 종류의 항목이 나타납니다: 산 것, 치른 값, 그리고 각 주장을 증명하는 인증서입니다. 그리고 마지막 페이지에는 네 번째 항목인 펀치 리스트가 있습니다: 모두가 미완성이라는 데 동의하는 항목들로, 이는 내년의 계획이 됩니다. 이 장이 바로 그 워크스루입니다. 영수증은 실행 가능한 프로그램이고, 인증서는 assert 문이며, 펀치 리스트는 5권입니다.

이 장에서 다루는 내용

  • 평결의 형태: 순위 매기기가 아니라 사는 것, 치르는 것, 지키는 것의 원장이며, 모든 칸이 validate.py 안의 이름 붙은 검사이고, 커밋된 21/21 요약 줄이 증거로 인용됩니다.
  • 정확성의 축, 결판나다: 진리함수적 퍼지 의미론을 분포 의미론에 맞세우고, 각각을 이 권 자신의 커밋된 숫자로 다시 진술하며, 지수적 비용을 컴파일 시점으로 옮겨 놓고 경사가 공짜로 함께 실려 가는 회로의 해법입니다.
  • 지도의 역전: 레이블링 함수로서의 논리, 이 권의 가장 깊은 성과로, DeepProbLog와 의미 손실의 영수증으로 추상적으로 진술됩니다.
  • 기준선 규율: 모든 비교의 양쪽 모두에 기호적 통제군을 두는 세 개의 영수증과, 그 규율이 치르는 비용입니다.
  • 무학습의 놀라움: 추론 시점의 합성이 종단간으로 훈련된 추론과 맞먹는다는 것을, 그 한계까지 함께 신중하게 읽습니다.
  • 실패 양식 분류법: 소리 없이 틀림, 소리 내어 틀림, 구성상 불가능이며, 각각 커밋된 전시물과 배포 시의 해석을 갖습니다.
  • 오라클 규율: 스위트의 손 경사가 왜 torch.autograd에 답하는지, 그리고 기계 장치가 영리해질수록 독립 오라클이 왜 더 중요해지는지입니다.
  • 미지불 열: 보정되지 않은 확신도, 틀린 이유로 맞은 정답, 그리고 한계가 없는 근사 다이얼이며, 5권의 시작 의제로 넘겨집니다.

평결의 형태: 사는 것, 치르는 것, 지키는 것

이 분야를 지도로 그리는 개관 논문들은 그것을 시상대가 아니라 차원을 따라 조직합니다: 어떤 의미론이 불확실성을 나르는가, 추론이 어디서 일어나는가, 무엇이 학습되는가입니다 [1]. 4권의 평결은 같은 형태를 취하는데, 순위 매기기는 아무도 물어서는 안 될 질문에 답할 것이기 때문입니다. "퍼지 논리가 확률 논리보다 나은가?"에는 답이 없습니다; "각각이 무엇을 사고, 무엇을 치르며, 어떤 증거가 그 주장을 지키는가?"에는 스물한 개의 답이 있습니다. 이 분야를 성숙하게 읽는 방식은, 의미론과 추론 전략과 학습 목표가 문제마다 선택되고 그것들 사이에 환율이 있는 하나의 설계 공간입니다 [2]. 아래 표는 이 권의 구현으로, 갈래 하나당 한 행이며, 모든 칸은 각자의 장에서 나온 커밋된 숫자입니다.

갈래사는 것치르는 것커밋된 지킴
퍼지 의미론 (1부)어디에나 있는 경사; 합성적 진리의미: 하나의 사슬, 세 개의 방어 가능한 확신도 (0.80 / 0.72 / 0.70)격자 위에서 정확한 t-노름 공리; t-노름 경사 대 유한차분 ≤ 1.4e-10 (네 연산자에 걸친 최댓값)
분포 의미론 (2부)정확성; 확률로 남아 있는 확률계수는 #P (샤프-P, NP의 계수 유사물)이다; 벽은 사실 20개에서 2^20 = 1,048,576개의 할당이다순진한 증명-합 1.5750 대 정확한 0.8865; 가중 모델 계수(WMC) = 오차 0으로 열거와 일치
회로 + 경사 세미링 (2부)한 번만 치르고 영원히 평가하며, 경사까지 포함컴파일 비용; 최악의 경우 회로 크기에 한계 없음진행 중인 예시의 회로 = 무차별 대입과 1.1e-16까지 일치; 20-사실 벽에서 238번의 연산 대 1,048,576개의 할당, 정확함; 세미링 대 유한차분 2.7e-13
미분 가능 프레임워크 (3부)산업화된 거래: 손실 수준, 프로그램 수준, 공리 수준, 하드웨어 수준근사 다이얼; 보장 없는 충족위반 20 → 6; 상위 k 사다리(가장 확률 높은 k개의 증명만 유지) 0.7650 → 0.9344 = 정확함; SatAgg (충족 집계) 0.5295 → 0.9933; 벡터화됨 = 루프와 0.0으로 일치
미분 가능 규칙 학습 (4부)가중치로부터 다시 읽어 낼 수 있는 규칙경사 없는 채굴기가 맞먹는 경사 기계 장치주의가 advises∘advises(∘는 관계 합성: advises 엣지를 하나 따라간 뒤 또 하나를 따라가는 것)를 신뢰도 0.9990으로 해독함; 채굴된 신뢰도가 손 헤아림 2/3과 정확히 같음
복합 질의 응답 (5부)하나의 1홉 예측기에서 나온 열네 가지 질의 형태이차 메모리; 보정의 취약함; 정확성을 위해서는 트리만 가능공유된 다섯 질의 유형에서, QTO(Query Computation Tree Optimization, 질의 계산 트리 최적화)와 CQD-beam(Continuous Query Decomposition with beam search, 빔 탐색을 갖춘 연속 질의 분해)은 평균 역순위(mean reciprocal rank, MRR) 0.5500/0.5500/1.0000/1.0000/1.0000을 기록하는데, 이는 훈련된 GQE(Graph Query Embedding, 그래프 질의 임베딩)의 0.6667/0.2381/1.0000/0.4167/1.0000에 맞선 것이다; 제로샷 전이 MRR 0.8333
자연어 추론 (6부)영어에서 읽어 내고 영어로 되돌리는 논리소리 없는 실패이거나 줄어든 커버리지깊이 2–3에서 소프트 추론기의 0.500 옆에 놓인 증명기의 100%; 파싱된 입력에 대한 정확도는 정확히 1.0000

이 권 전체의 메타 주장은 마지막 열입니다. 이 표에서 하중을 받는 모든 숫자, 그리고 아래 절들에서 다시 인용되는 모든 숫자는 동반 코드의 수락 하네스 안에 있는 이름 붙은 역량 검사의 결정론적 실행이 만들어 낸 것이며, 그 검사의 assert 문들이 각 칸의 정성적 주장을 지킵니다. 하네스는 스무 줄짜리 루프이고, 원장은 그것이 반복하는 주장들의 목록이며(validate.py 40–103행, 장마다 yield 하나씩), 종료 코드가 곧 평결입니다(validate.py 110–125행):

for claim, check in _checks():
try:
if verbose:
check()
else:
with contextlib.redirect_stdout(io.StringIO()):
check()
print(f"PASS {claim}")
passed += 1
except AssertionError as exc:
print(f"FAIL {claim} ({exc})")
failed += 1
total = passed + failed
print(f"\nintegration companion: {passed}/{total} competency checks "
f"passed ({time.time() - t0:.0f}s)")
return 0 if failed == 0 else 1

각 검사는 한 모듈의 run()을 호출하며, 이 함수는 그 장의 전체 실험을 결정론적으로, 그 자신의 assert 문까지 포함하여 다시 실행합니다; 검사는 그 모듈의 증거 사슬 전체가 성립할 때만 통과합니다. 커밋된 실행은 다음으로 끝납니다:

integration companion: 21/21 competency checks passed (19s)

그 줄이 바로 이 평결이 정직하다고 말할 수 있는 근거입니다: 이는 이 문장들이 기술하는 모든 실험을 다시 실행하고 어느 모듈의 증거 사슬이라도 끊어지면 1로 종료하는 프로그램의 출력이며, 원장에 인용된 정확한 소수 값들은 그 실행들의 커밋된, 시드 고정된 출력이기 때문입니다.

4권의 평결을 정리하는 원장 스타일 다이어그램. 메인 패널은 이 권의 갈래마다 하나씩인 일곱 행짜리 표로, 퍼지 의미론, 분포 의미론, 경사 세미링을 갖춘 회로, 미분 가능 프레임워크, 미분 가능 규칙 학습, 복합 질의 응답, 자연어 추론이다. 각 행에는 사는 것, 치르는 것, 지킴이라는 이름이 붙은 세 개의 열이 있다: 사는 것 열은 어디에나 있는 경사나 하나의 1홉 예측기에서 나온 열네 가지 질의 형태처럼 얻어지는 능력의 이름을 붙이고; 치르는 것 열은 의미의 모호함, 샤프-P 계수, 이차 메모리, 줄어든 커버리지처럼 비용의 이름을 붙이며; 지킴 열은 0.80 / 0.72 / 0.70 사슬, 1.5750 대 0.8865 과다 계수 전시물, 238번 연산짜리 회로, 21 중 21 하네스 줄처럼 커밋된 검사 번호를 보여 준다. 표 아래에는 초록 배너가 21/21 역량 검사 통과라고 적혀 있으며, 표가 딛고 서 있는 토대로 그려져 있다. 오른쪽에는 미지불 빚이라는 이름이 붙은 별도의 호박색 열이 보정, 충실성, 추론 지름길, 규모에서의 신뢰라는 네 개의 항목을 나열하며, 화살표 하나가 그로부터 흘러나와 5권, 추론의 프론티어라고 이름 붙은 상자를 향한다. 원장으로서의 평결: 일곱 개의 갈래, 각각 무엇을 사고 무엇을 치르며 그 주장을 지키는 커밋된 검사를 지니고, 21/21 하네스 줄 위에 서 있으며, 미지불 열이 5권으로 흘러 나아간다. 저자가 AI의 도움을 받아 직접 제작한 원본 도해.

정확성의 축, 이 권 자신의 숫자로 결판나다

이 권에서 가장 깊은 단층선은 1부와 2부 사이를 지나가며, 이제 그 양쪽 모두가 측정되었습니다. 진리함수적 퍼지 의미론은 합성성과 경사를 사 옵니다: 논리식의 진리값은 그 부분들의 진리값에 대한 고정된 함수이므로, 어떤 논리식이든 미분 가능한 식으로 컴파일됩니다. 그 값은 의미로 치릅니다. 학계 세계의 두 단계짜리 인용 사슬은 엣지 신뢰도 0.9와 0.8을 가지고, 논리가 판정할 수 없는 연산자 선택에 따라 세 가지 다른 숫자로 나옵니다: 괴델의 최솟값은 0.80을, 곱 t-노름은 0.72를, 우카시에비치는 0.70을 말합니다(tnorms.py, 커밋된 사슬 표). 셋 모두 t-노름 공리를 정확히 만족합니다; 어느 것도 결론의 "그" 신뢰도는 아닙니다. 그리고 같은 선택이 경사 안에서도 병리 메뉴로 다시 나타납니다: 논리곱항 50개에서 괴델의 경사는 0.980만큼 희소하고(쉰 개 입력 중 하나만이 매 스텝마다 학습합니다) 모든 논리곱항이 진리값 0.9인 곱 경사는 0.9490.005730.9^{49} \approx 0.00573까지 쪼그라드는 반면, 논리곱항이 겨우 8개일 때 우카시에비치는 자신의 입력 부피의 0.99997을 뒤덮는 죽은 지대에 놓이는데, 그곳에서는 모든 경사가 정확히 0입니다 [3]. 이 원장의 퍼지 쪽을 한 문장으로 말하면: 모든 논리식은 미분 가능하고, 그 숫자가 뜻하는 바는 세 개의 방어 가능한 답과 세 개의 실패 양식을 지닌 모델링 결정입니다.

분포 의미론은 진리함수성을 거부함으로써 연산자 선택 자체를 거부합니다. 확률은 세계 전체에 붙으며, 어떤 질의의 확률은 그것이 성립하는 세계들의 총 무게입니다. 해독하면: F\mathcal{F}는 확률적 사실들의 집합이고, 하나의 세계는 참으로 선택된 사실들의 부분집합 FFF \subseteq \mathcal{F}이며, 각 세계의 확률은 독립적인 선택들에 대한 곱이고,

P(q)  =  FF,  Fq  fFpffF(1pf),P(q) \;=\; \sum_{F \subseteq \mathcal{F},\; F \,\models\, q} \;\prod_{f \in F} p_f \prod_{f \notin F} (1 - p_f),

여기서 FqF \models q는 "세계 FF가 질의 qq를 참으로 만든다"라고 읽고, pfp_f는 개별 사실 ff에 붙은 확률입니다. 여기에는 어떤 설계 다이얼도 없습니다; 그 숫자는 정확하며 구성상 확률입니다. 이것이 왜 중요한지를 보여 주는 이 권의 전시물은 서로소-합 실패입니다: 존재 한정된 grandAdvisor 질의는 동전 advises(alice, bob)를 공유하는 두 개의 접지 증명을 가지며, 이들이 배타적인 것처럼 그 확률을 그냥 더하면 0.81 + 0.765 = 1.5750이 나오는데 이는 전혀 확률이 아닙니다. 반면 두 증명이 공유하는 동전에 대해 포함-배제를 적용하면 정확한 0.8865가 나오며, 이는 2,048개의 세계 전부를 열거하여 확인됩니다(distsem.py, 커밋된 실행). 그 값은 바로 옆에 인쇄되어 있습니다: 정확한 추론은 #P-난해(sharp-P, NP의 계수 유사물)이며, 동반 코드의 무차별 대입 벽은 구체적입니다, 사실 겨우 스무 개에서 열거해야 할 할당이 220=1,048,5762^{20} = 1{,}048{,}576개입니다(wmc.py).

회로를 다루는 장들이 그 해법이며, 그 두 개의 커밋된 합치가 영수증입니다. 지식 컴파일은 지수적 비용을 컴파일 시점에 단 한 번 치러서, 이후의 모든 질의에 합과 곱의 한 번의 상향 패스로 답하는 d-DNNF(deterministic decomposable negation normal form, 결정론적 분해 가능 부정 정규형) 회로를 만들어 냅니다. 커밋된 영수증은 두 가지 규모로 나옵니다: 진행 중인 예시의 네 질의에서는 많아야 10개의 연산으로 이루어진 회로가 무차별 대입 열거와 1.1e-16까지 일치하며, wmc.py의 사슬 계열에서 나온 스무 사실짜리 벽 사례에서는 238개의 회로 연산이 1,048,576개 할당의 열거를 대신하고 닫힌 형태 10.44k1 - 0.44^{k}와 정확히, 0.0e+00까지 일치하는데, 여기서 0.44는 한 사슬의 실패 확률인 10.80.71 - 0.8 \cdot 0.7이고, k=10k = 10은 스무 개의 사실을 이루는 독립적인 두-동전 사슬의 개수를 셉니다(circuit.py). 그리고 회로가 일단 존재하면, 경사는 공짜입니다. 회로를 흐르는 숫자들을 값과 그 도함수를 함께 나르는 쌍으로 바꾸고, 곱셈(아래의 ⊗)은 곱의 법칙으로, 덧셈(아래의 ⊕)은 성분별로 작동하도록 정의하면,

(a,a)(b,b)  =  (ab,  ab+ba),(a,a)(b,b)  =  (a+b,  a+b),(a, \nabla a) \otimes (b, \nabla b) \;=\; \big(ab,\; a\,\nabla b + b\,\nabla a\big), \qquad (a, \nabla a) \oplus (b, \nabla b) \;=\; (a + b,\; \nabla a + \nabla b),

그러면 같은 한 번의 패스가 P(q)P(q)와 함께 P/pf\partial P / \partial p_f, 즉 질의 확률이 각 개별 사실의 확률에 얼마나 민감한지를 모든 사실에 대해 한꺼번에 돌려줍니다: 이것이 경사 세미링입니다. 커밋된 교차 검사는 중심 유한차분과 2.7e-13까지 일치합니다(deepproblog_mini.py). 그리하여 정확성의 축은 원장의 나머지가 계속 다시 쓰는 슬로건으로 정리됩니다: 퍼지는 경사를 사고 의미로 값을 치른다; 확률은 의미를 사고 계수로 값을 치른다; 회로는 계수 비용을 없애지 않고, 그것을 단 한 번만 치르는 자리로 옮겨 놓으며, 경사는 공짜로 함께 실려 간다.

지도의 역전: 레이블링 함수로서의 논리

이 권에 정확성의 결산보다 더 깊은 성과가 하나 있다면, 그것은 2부와 3부의 이음매에서 연속된 두 장에 걸쳐 서로 다른 옷을 입고 두 번 나타난 패턴입니다. 먼저 추상적으로 진술해 봅시다. 신경망이 잠재 변수 zz(관측되지 않은 양으로, 여기서는 각 문서의 주제나 각 점의 클래스 비트)를 예측하고; 논리 이론 TT가 그 잠재 변수를 관측 가능한 무언가 yy와 연결하며; 훈련 신호는 오직 yy에 대한 지도뿐인데, 이것이 TT의 정확한 추론을 거슬러 역방향으로 밀려 zz에 다다릅니다. 논리는 레이블링 함수(labeling function) 역할을 하고 있습니다: 관측 가능한 것에 대한 값싼 지도를 잠재 변수에 대한 효과적인 지도로 바꾸며, 경사 세미링이 바로 그 변환을 미분 가능하게 만드는 것입니다.

첫 번째 영수증은 DeepProbLog입니다. 커밋된 실험은 단 하나의 문서 주제도 결코 레이블링하지 않습니다. 오직 문서 을 관련 있음 또는 관련 없음으로 레이블링할 뿐이며, "두 문서는 주제를 공유하면 관련이 있다"는 프로그램 절이 그 쌍 레이블을 잠재 주제와 연결합니다. P(relevant)P(\text{relevant})에 대한 교차 엔트로피가 세미링에 의해 컴파일된 회로를 거슬러 미분되어, 은닉 주제 분류기를 은닉-주제 정확도 1.00까지 훈련시키는데, 이는 쌍 지도가 증명 가능하게 확정할 수 없는 레이블 순열까지 감안하여 측정된 것이며, 최종 손실은 0.000287입니다(deepproblog_mini.py, 커밋된 추적). 두 번째 영수증은 의미 손실이며, 여기서는 논리가 네트워크 자신의 출력 비트들을 잠재 변수가 아니라 서로에게 연결합니다: 정확히-하나 제약이 손실 logWMC(α;p)-\log \mathrm{WMC}(\alpha; p)(가중 모델 계수의 음의 로그이며, α\alpha는 제약 논리식이고 pp는 네트워크의 출력 확률입니다)로 컴파일되는데, 이는 네 개의 평범한 공리가 상수 하나까지 유일하게 만들어 주며, 180개의 레이블 없는 점들을 신호로 바꿉니다. 커밋된 준지도 실행은 제약 위반을 20에서 6으로 줄이는 동시에 테스트 정확도를 0.8778에서 0.9000으로 올리고 충족 확률을 0.877에서 0.954로 끌어올립니다(semantic_loss.py).

이 역전에 이름을 붙일 가치가 있는데, 지도 학습의 통상적인 경제학을 뒤집기 때문입니다: 보통은 구조가 값비싼 것이고 레이블이 연료인데, 여기서는 구조가 레이블을 대체합니다. 적용 가능 조건은 두 영수증 모두에서 눈에 보입니다. 관측할 수 있는 것을 학습하고 싶은 것과 연결하는 프로그램이나 제약이 존재해야 하고, 그것을 거치는 추론이 미분할 수 있을 만큼 다루기 쉬워야 합니다(정확히 2부의 회로가 사 온 것입니다). 그런 프로그램이 존재하지 않는 곳, 관측 가능한 것과 잠재 변수 사이의 관계 자체가 미지수인 곳에서는 이 패턴이 컴파일할 것이 아무것도 없으며, 다시 레이블 값을 치러야 하는 처지로 돌아갑니다. 그 경계야말로, 어떤 벤치마크 숫자가 아니라, 이런 부류의 통합이 언제 값어치를 하는지에 대한 정직한 진술입니다.

기준선 규율: 모든 비교의 양쪽 모두

2권의 평결은 그라운드 트루스, 즉 답이 증명 가능하게 옳은 추론기를 보탰습니다. 3권의 평결은 프로토콜, 즉 필터링된 순위, 고정된 분할, 시드가 고정된 실행을 보탰습니다. 4권의 기여는 모든 비교의 양쪽 모두를 고집하는 것입니다: 이 권의 모든 미분 가능 시스템은 같은 기준으로 지어진 기호적 통제군과 나란히 채점되었으며, 세 개의 영수증이 그 규율이 무엇을 잡아내는지 보여 줍니다.

첫째, 규칙 학습입니다. Neural-LP와 DRUM은 신뢰도 0.9990으로 합성 advises∘advises에 주의를 집중시키고, 신경 정리 증명기(Neural Theorem Prover, NTP)는 소프트 증명 점수로부터 홀드아웃 마진 0.7678로 같은 규칙을 해독합니다. 그 옆에는 AnyBURL-lite가 서 있는데, 이는 경사 없는 경로 표본추출기로, 손 헤아림 2/(2+1)=2/32/(2+1) = 2/3과 정확히 같은 채굴된 신뢰도로 같은 골드 규칙을 찾아내며, 홀드아웃 엣지에 대한 그 순위 매김은 무작위 기준선의 0.21에 맞서 MRR 0.6944에 이릅니다(rule_mining.py); 벤치마크 규모에서는 그 장이 인용하는 발표된 기록이 같은 표본추출기 계열이 신경망 최신 기술과 경쟁력 있다고 보고합니다. 미분 가능한 기계 장치는 진짜 규칙을 찾아냅니다; 정직한 기준선은 계수기도 그것을 찾아낸다고 말하므로, 경사에 대한 어떤 주장이든 장난감 점수판이 아니라 계수기가 할 수 없는 일(지각을 함께 훈련하기, 관계들에 걸쳐 매개변수를 공유하기)에 기대야 합니다. 둘째, 질의 응답입니다: 5부의 모든 모델은 14가지 유형의 기호적 실행기에 맞서 채점되었으며, 이 실행기는 36개 질의 전부에서 드모르간과 일관되고 전체 그래프에서 오라클 MRR 1.0000을 갖습니다; 이것이 없었다면 "하드 정답"과 "이지 정답"은 잘 정의된 범주조차 되지 못했을 것입니다. 셋째, 자연어 추론입니다: 소프트 추론기의 깊이별 정확도 1.000/0.966/0.500/0.500은 증명기의 100% 열 옆에 나란히 인쇄되며, 이것이 바로 "모델이 잘한다"를 "모델은 정확히 훈련받은 곳에서 잘하고 한 홉만 넘어가면 동전 던지기로 무너진다"로 바꾸어 주는 것입니다.

이 원칙은 대가를 치릅니다: 누군가는 기호적 통제군을 지어야 합니다. 실행기, 증명기, 채굴기, 열거기는 동반 스위트의 상당 부분을 차지하며, 그 어느 것도 미분 가능하지 않지만, 모두 필요합니다. 이 비용을 건너뛰는 분야는 그것을 아끼는 것이 아니라, 측정 가능한 주장을 측정 불가능한 주장으로 바꾸어 놓는 것입니다.

무학습의 놀라움, 신중하게 읽기

5부는 이 권에서 가장 불편한 숫자를 만들어 냈으며, 이는 이 권 스스로가 설치한 프로토콜 아래에서 읽혀야 합니다. 훈련된 질의 임베딩 계열인 GQE, Query2Box, BetaE는 질의 구조마다 기하를 학습하여 풀링된 MRR 0.6085, 0.5794, 0.4197을 기록하지만, 각 풀은 오직 그 기하가 표현할 수 있는 유형들만을 아우르며(GQE는 7개, Query2Box는 9개, BetaE는 14개), 커밋된 표는 그 숫자들 옆에 스스로 이런 주의 사항을 인쇄해 둡니다: 풀은 행마다 비교 가능할 뿐, 풀링된 열을 가로질러서는 결코 비교할 수 없다는 것입니다(clqa_models.py). 무학습 계열인 CQD-beam과 QTO는 질의 수준의 훈련을 전부 없애고, 오직 3권의 보정된 1홉 예측기만을 유지한 채 추론 시점에 퍼지 연결사로 그것을 합성하여, 5가지 유형짜리 은행에서 그래프 순회의 바닥인 0.1465에 맞서 둘 다 풀링된 MRR 0.8000을 기록합니다(cqd.py). 프로토콜상 깨끗한 비교는 두 은행이 공유하는 다섯 유형에 대해 행 단위로 이루어집니다: QTO와 CQD-beam은 1p/2p/2i/pi/ip(사영 한 홉, 두-홉 사슬, 양방향 교집합, 사영 다음 교집합, 교집합 다음 사영)에서 0.5500/0.5500/1.0000/1.0000/1.0000을 기록하는데, 이는 GQE의 0.6667/0.2381/1.0000/0.4167/1.0000에 맞선 것이므로, 무학습 계열이 단일-홉 1p를 제외한 모든 공유 행에서 이기거나 동점을 이루며, 1p야말로 정확히 합성이 도움이 될 수 없는 행입니다. QTO의 동적 계획법은 트리 모양 질의에서 정확하며, 이지 정답을 결코 놓치지 않고(15개의 훈련 엣지 전부가 1로 고정됩니다), 세 개의 원자를 곱하면 마지막 자릿수까지 정답의 점수가 되는 검사 가능한 증명을 돌려줍니다. 한 걸음 더 나아가, ULTRA-lite는 1홉 예측기 자체가 어휘 없이도 가능함을 보여 줍니다: 매개변수 12개짜리 구조적 점수 매김기가 병원 세계로 제로샷 전이하여 무작위 0.2198에 맞서 MRR 0.8333을 기록하며, 그 점수는 관계 재명명 아래에서 증명 가능하게 변하지 않습니다(불변성 0.0, ultra_lite.py). 무학습파운데이션 모델 장의 참고문헌 목록은 표준 벤치마크에서 같은 순서를 보고하는 현장 규모의 평가들을 인용합니다; 우리의 장난감 숫자들은 이 분야가 이미 그 규모에서 기록해 둔 발견의 감사 가능한 축소판입니다.

이 발견을 정확한 세기로 읽으십시오. 훈련이 쓸모없다는 말이 아닙니다; QTO 밑바탕의 1홉 예측기는 훈련되어 있고, 그 보정도 맞추어져 있습니다. 이는 질의 수준의 네트워크, 즉 GQE와 그 후계자들이 매개변수를 쏟아붓는 부분이, 이 과제들에서는 그 값어치보다 덜 사고 있었다는 것을 말합니다. 합성이 추론이 정확하게 할 수 있는 일이기 때문입니다. 그 뒤에 따르는 투자 조언은 이렇습니다: 예산을 1홉 예측기와 그 보정에 투입하고, 합성은 논리가 하게 두라는 것입니다. 그런 다음 한계도 읽어야 하는데, 이 또한 커밋되어 있습니다. 합성은 오직 그 밑바탕의 보정만큼만 건전합니다(잘못 보정된 행 하나만으로도 정답의 순서가 바뀌기에 충분합니다); QTO의 정확성은 관계마다 조밀한 개체-대-개체 행렬을 요구하는데, 이는 오직 희소화를 통해서만 규모에서 살아남는 이차 메모리입니다; 그리고 정확한 동적 계획법은 트리 모양 질의를 요구하므로, 진정으로 DAG(directed acyclic graph, 방향 비순환 그래프) 모양의 구조는 근사로 후퇴합니다. 무학습은 오직 그 수식어를 붙여야만 정직합니다: 질의 수준에서, 트리 위에서, 누군가가 보정해 둔 기층 위에서의 무학습입니다.

실패 양식 분류법: 각 조합이 무너지는 방식

이 시스템들 중에서 고르는 실무자는 대체로 실패 양식을 고르고 있는 셈이며, 그래서 원장을 가장 쓸모 있게 자르는 방법은 정확도가 아니라 틀림이 어떻게 드러나는가입니다. 이 권을 세 가지 양식이 아우르며, 각각은 커밋된 전시물을 갖습니다.

실패 양식커밋된 전시물배포 시의 해석
소리 없이 틀림: 항상 답하지만 보이지 않게 틀린다소프트 추론기는 훈련된 깊이에서 1.000/0.966을 유지하지만 깊이 2–3에서는 0.500으로 답하는데, 출력의 어디에도 그 붕괴를 알리는 표시가 없다(ruletaker_lite.py); 탐욕적 단계 추론기는 레이블 정확도 0.817을 기록하지만 그 증명 중 겨우 0.167만이 검사를 통과한다(bench_lite.py)외부 모니터가 필요하다; 정확도 주장은 그것이 측정된 분포만큼만 좋다
소리 내어 틀림: 거부함으로써 실패한다번역 후 증명은 파싱 실패 시 기권한다; 수리는 커버리지를 0.8080 → 0.9293으로 끌어올리고, 파싱된 입력에 대한 정확도는 정확히 1.0000이며, 커밋된 실행은 기권이 결코 오류로 바뀌지 않음을 검증한다(translate_prove.py)오류가 눈에 보이고 헤아릴 수 있다; 비용 다이얼은 커버리지이고, 오류 다이얼은 0에 머무른다
구성상 불가능: 나쁜 출력에는 부호화 자체가 없다QTO는 15개의 훈련 엣지 전부를 1로 고정하므로 이지 정답을 놓치는 일은 구조적으로 배제되며, 커밋된 검사는 그런 일이 결코 일어나지 않음을 확인한다(cqd.py); 질량을 충족 상태로 재정규화하여 위반하는 예측을 낼 수 없게 만드는 제약 층은 의미 손실 장이 인용하는 구성일 뿐, 커밋된 코드는 아니다(커밋된 실행은 그 손실로 훈련하고도 여전히 6건의 위반을 낸다)그 보장은 아키텍처적이며 모든 입력에 대해 성립하지만, 오직 그 구성이 부호화하는 성질에 대해서만 성립한다

이 분류법은 이 권이 한 줄 한 줄 벌어들인 하나의 설계 규칙을 뽑아냅니다: 실패가 부드러운 카펫이 아니라 하중을 지탱하는 벽인 아키텍처를 선호하라는 것입니다. 벽(기권, 제약 층, 고정된 엣지)은 당신을 멈추게 함으로써 실패하며, 이는 정보입니다; 카펫(유창한 오답, 잘못 보정된 점수)은 당신이 계속 걸어가게 둠으로써 실패합니다. 이 분야가 수렴해 가고 있는 분업, 즉 지각은 신경망에게, 감당할 수 있는 곳이라면 어디든 합성은 기호에게 맡기는 분업이 매력적인 것은 정확히 그것이 실패를 카펫에서 벽으로 옮기기 때문입니다: 기호 층의 실패는 파싱 오류와 충족 불가능한 제약이며, 이것들은 스스로를 알립니다 [4].

오라클 규율: 손 경사가 autograd에 답하다

영수증이 하나 더 있으며, 이는 나머지 모두가 딛고 서 있는 것을 지킵니다. 동반 스위트의 모든 경사는 손으로 작성되었고, 경사를 취하는 거의 모든 모듈은 그것을 중심 유한차분에 대조하여 검사합니다. 두 가지 예외, ntp_mini.py의 투영 서브그래디언트 하강과 ruletaker_lite.py의 전체 배치 로지스틱 회귀는 유한차분 인증서 대신 각자의 역량 검사 결과로 지켜집니다. 그러나 그 검사는 하나의 경쟁 가설을 살려 둡니다. 스위트의 교차 검사기 자신도 그 독스트링에서 그것을 이름 붙여 둡니다: 공식과 그 검사기가 같은 손으로, 함수에 대한 같은 해석에 따라 작성되었다는 가설입니다(torch_check.py 9–12행). 그 해법은 독립적인 구현입니다. torch_check.py는 각 함수를 PyTorch의 float64 잎 텐서로부터 다시 조립하고, .backward()를 호출하며, 세 개의 도함수 파이프라인, 즉 경사 세미링, 의미 손실, softmin에 걸쳐 최대 절대 차이가 1e-6 이하로 일치할 것을 요구합니다(torch_check.py 247–252행):

assert sr["max_diff"] < TOL, \
f"gradient semiring disagrees with autograd: {sr['max_diff']:.3e}"
assert slc["max_diff"] < TOL, \
f"semantic-loss gradient disagrees with autograd: {slc['max_diff']:.3e}"
assert sm["max_diff"] < TOL, \
f"softmin gradient disagrees with autograd: {sm['max_diff']:.3e}"

torch가 설치된 인터프리터 아래에서, 커밋된 실행의 세 개의 평결 줄과 그 마무리 요약은 다음과 같습니다(각 평결 줄은 자신의 검사 구간을 닫으며, 마지막 두 줄은 그 실행의 말 그대로의 꼬리입니다):

PASS semiring (max |Δ| = 0.0e+00)
PASS semantic_loss (max |Δ| = 4.4e-16, loss |Δ| = 0.0e+00)
PASS softmin (max |Δ| = 1.3e-15)

AGREEMENT CONFIRMED: manual gradients match torch.autograd
SUMMARY torch_check: semiring=0.0e+00 semantic_loss=4.4e-16 softmin=1.3e-15 checks=3/3 tol=1e-06

관측된 불일치는 순수한 부동소수점 반올림이며, 허용 오차보다 대략 아홉 자릿수 낮습니다. 평결 장에서 이것을 왜 이렇게까지 붙들고 있을까요? 독립 오라클의 필요성이 기계 장치가 영리해질수록 커지기 때문입니다. 평범한 교차 엔트로피 경사에서의 부호 오류는 손실을 치솟게 하여 몇 분 안에 잡힙니다; 세미링 누산기나 동적 계획법 패스 안의 부호 오류는 그저 편향된 경사를 낳을 뿐이며, 확률적 최적화기는 편향을 흡수합니다: 손실은 여전히 떨어지고, 정확도는 여전히 오르며, 오류는 그대로 출시됩니다. 훈련 곡선은 경사를 인증할 수 없습니다; 오직 독립된 경로에 의한 재계산만이 그럴 수 있습니다. 이는 2권의 HermiT 오라클과 3권의 autograd 검사와 같은 인식론적 움직임을, 한 단계 위에서 적용한 것입니다: 추론이 더 구조화될수록, 검증은 더 독립적이어야 합니다.

아직 풀리지 않은 부분

이 원장에서 정직한 열은 초록 체크 표시가 하나도 없는 열이며, 네 개의 항목을 갖습니다. 첫째, 보정(calibration)입니다. 이 권은 네 가지 서로 다른 종류의 확신도를 만들어 냈는데, 그중 어느 것도 옳을 확률이 아닙니다: 퍼지 정도(하나의 사슬에 대한 세 개의 방어 가능한 값), 소프트 증명 점수(NTP의 0.9032는 우도가 아니라 증명의 단일화 커널들, 곧 그 단일화기가 각 매칭 단계에 부여하는 소프트 기호 유사도 점수들의 최솟값입니다), 규칙 신뢰도(닫힌 세계 코퍼스 통계), 그리고 질의 점수(진리가 아니라 훈련 그래프에 대해 보정된 것)입니다. 하류 시스템들은 이 숫자들을 신뢰로 취급할 것이지만, 이 권의 어디에도 그것을 허가하는 것은 없습니다. 둘째, 틀린 이유로 맞은 정답(right-for-wrong-reason)이며, 이는 세 번 나타났고 이제 이름과 이론이 필요합니다: 질의 수준 지도가 잠재 술어를 프로그램이 볼 수 없는 대칭까지만 제약한다는 DeepProbLog 장의 주의 사항; 탐욕적 추론기의 측정된 비율, 즉 옳은 답에 틀린 증명이 붙는 경우가 0.650(bench_lite.py); 그리고 규칙 학습에서의 추출-충실도 간극으로, 랭크-1 분해는 어느 골드 규칙도 복구하지 못하면서(네 개의 두-홉 합성 전부에 주의 0.250을 흩뿌립니다) 4개의 평가 질의 중 정확히 옳은 정답 집합으로 답하는 것이 0개인 반면, 그 랭크-2 자매는 두 규칙 모두를 0.999로 해독하고 4개 중 4개를 정확히 답합니다(neural_lp.py), 이는 여러분이 다시 읽어 낸 규칙이 가중치에 관한 하나의 가설이지 그것들의 성질이 아니라는 것을 일깨워 줍니다. 이론은 존재합니다: 이것들은 추론 지름길(reasoning shortcuts)이며, 훈련 신호를 충족시키면서도 잘못된 것을 의미하는 잠재 개념으로, 형식적인 식별 가능성 조건과 완화책을 갖추고 있습니다 [5]; 5권은 바로 거기서 시작합니다. 셋째, 규모(scale)입니다. 이 권이 빠르게 나아간 곳에서는, 일반적으로 오차에 한계가 없는 근사 다이얼을 통해서(우리의 여섯-증명 세계에서는 상위 k개 증명이 k가 여섯 개 증명 전부를 포괄하는 순간 수렴했으며, 커밋된 k = 8 다이얼은 그 6개를 모두 유지한 채 정확한 값과 0.0까지 일치하지만, 여러분의 세계에서 k가 얼마나 커야 하는지를 말해 주는 정리는 없습니다) 또는 상수는 바꾸지만 복잡도 부류는 결코 바꾸지 않는 하드웨어 레이아웃을 통해서 빠르게 나아갔습니다. 정확성 등급의 신뢰가 진짜 규모에서도 살아남는지는 미해결입니다. 넷째, 앞의 셋을 담고 있는 신뢰(trust)입니다: 여기서의 모든 보장은 메커니즘에 관한 것이며(이 경사는 정확하다, 이 동적 계획법은 최적이다, 이 기권은 건전하다), 그중 어느 것도 아직 배포에 관한 것은 아닙니다. 배포에서는 입력이 표류하고, 보정이 쇠퇴하며, 점수를 읽는 사람은 주의 사항을 읽지 않았습니다.

왜 중요한가

이 평결의 내용은 환율이 딸린 분업입니다. 그 분업이란: 지각과 순위 매김은 신경망 기둥에 남고, 합성과 보장은 기호 기둥에 남으며, 이 권의 기계 장치, 즉 세미링, 회로, 완화, 실행기는 그 둘 사이에 놓인 세관으로, 모든 통과가 명시된 값을 치릅니다. 그 환율은: 의미를 내주고 경사를, 계수를 내주고 정확성을, 오류를 내주고 커버리지를, 최적성을 내주고 메모리를 얻는 것이며, 각각 같은 작은 세계 위에서 측정되어 그 값들이 비교 가능합니다. 이것이 바로 1권이 열었던 질문, 즉 두 기둥이 하나의 시스템이 될 수 있는가에 대한 실무적 답입니다: 그렇습니다, 이 값들로, 이 지킴들과 함께라면요. 그리고 미지불 열은 각주가 아닙니다; 그것은 정의상 연구의 프론티어인데, 체크 표시가 붙은 모든 것은 이 권의 정확한 의미에서 이미 해결되었기 때문입니다. 보정, 충실성, 추론 지름길, 그리고 규모에서의 신뢰는 바로 검사가 바닥나는 지점입니다: 누군가가 어떤 시스템을 신뢰할 자격을 얻기 전에 그 시스템이 반드시 답해야 하는 바로 그 질문들입니다.

핵심 용어

  • 원장(the ledger) — 이 권의 평결 형태: 각 신경-기호 조합마다 그것이 무엇을 사고, 무엇을 치르며, 어떤 커밋된 검사가 그 주장을 지키는가를 담습니다; 수락 하네스의 21/21 줄이 그 인증서입니다.
  • 정확성의 축(exactness axis) — 진리함수적 퍼지 의미론(합성적이고 미분 가능하지만 의미가 모호함)과 분포 의미론(정확하고 구성상 보정되어 있지만 계산에 #P가 듦) 사이의 단층선입니다.
  • 지식 컴파일(knowledge compilation) — 추론의 지수적 비용을 컴파일 시점에 단 한 번 치러서, 이후의 모든 질의에 하나의 선형 패스로 답하는 회로를 얻는 것입니다; 스무 사실짜리 벽 사례에서는 238번의 연산이 1,048,576개의 할당을 대신합니다.
  • 경사 세미링(gradient semiring) — 값과 도함수의 쌍 (a,a)(a, \nabla a)이며, 그 곱의 법칙이 회로 평가 한 번을 질의 확률과 그 전체 경사로 동시에 바꾸어 줍니다.
  • 지도의 역전(supervision inversion, 레이블링 함수로서의 논리) — 잠재 변수를 관측 가능한 것들과 연결하는 이론을 거쳐 관측 가능한 것들로부터 잠재 변수를 훈련하는 것입니다; DeepProbLog의 쌍 레이블과 의미 손실의 레이블 없는 점들이 이 권의 두 영수증입니다.
  • 기준선 규율(baseline discipline) — 모든 비교의 양쪽 모두에 두는 기호적 통제군입니다: 질의를 위한 실행기, 함의를 위한 증명기, 규칙을 위한 채굴기, 확률을 위한 열거기입니다.
  • 소리 없이 틀림 / 소리 내어 틀림 / 구성상 불가능(silent-wrong / loud-wrong / impossible-by-construction) — 실패 양식 분류법입니다: 유창한 오류, 눈에 보이는 기권, 그리고 아키텍처가 낼 수 없는 출력입니다.
  • 오라클 규율(oracle discipline) — 손으로 유도한 기계 장치를 독립적인 구현(유한차분, 그다음 torch.autograd)으로 검증하는 것입니다. 훈련 곡선은 정작 중요한 오류들을 흡수해 버리기 때문입니다.
  • 추론 지름길(reasoning shortcut) — 훈련 신호를 충족시키면서도 잘못된 것을 의미하는 잠재 개념입니다; 이 권에서 세 번 목격된 틀린-이유로-맞은-정답 현상 뒤에 놓인, 이름 붙은 이론이며 5권의 시작 주제입니다.

이 장이 이끄는 곳

미지불 열은 하나의 목차입니다. 5권 — 추론의 프론티어는 그 빚들을 순서대로 다룹니다: 보정(확신도가 언제 옳을 확률이 되는가), 충실성(내놓아진 증명이 언제 그 답의 이유가 되는가), 추론 지름길(원격 지도가 언제 그것이 의도했던 개념을 진짜로 식별해 내는가), 그리고 규모에서의 신뢰(근사 다이얼이 정리가 아니라 예산에 의해 정해질 때 무엇이 살아남는가)입니다. 이 권이 지은 도구들, 즉 실행기, 증명기, 검사기, 하네스는 함께 앞으로 나아갑니다: 프론티어는 새로운 방법이 아니라 새로운 증거의 기준이며, 여러분이 방금 읽은 이 원장이 바로 그 첫 번째 전시물입니다.


동반 코드: examples/integration/validate.py는 이 장이 인용하는 수락 하네스입니다: 장마다 이름 붙은 역량 검사 하나(40–103행), 통과/실패 루프와 요약 줄(106–125행), 모든 검사가 통과할 때만 종료 코드 0입니다. examples/integration/torch_check.py는 선택적인 autograd 오라클입니다(세 개의 파이프라인, 허용 오차 1e-6, 230–258행). 이 권의 모든 실험을 다시 실행하려면 python3 examples/integration/validate.py를 실행하십시오; 커밋된 실행은 integration companion: 21/21 competency checks passed (19s)로 끝납니다.