소프트 추론기: RuleTaker와 ProofWriter
📍 현재 위치: 6부 · 자연어 추론 — 19장. CLQA를 위한 파운데이션 모델(복합 논리 질의 응답, complex logical query answering)은 그래프를 가로질러 전이되는 질의 응답기로 5부를 마무리했습니다; 이 장은 모든 작업을 영어 속으로 옮기고, 답하기와 추론하기를 구별할 수 있는 측정 도구를 지음으로써 6부를 엽니다.
이 권의 모든 시스템은 지금까지 논리를 논리적인 옷을 입은 채로, 즉 원자, 규칙, 한정사가 있는 질의로 소비해 왔습니다. 6부는 논리가 평범한 영어 문장으로 도착하고, 그것을 소비하는 기계가 통계적 텍스트 모델일 때 무슨 일이 일어나는지를 묻습니다. 이 노선의 창시 실험은 RuleTaker로, 겉보기에 단순한 물음을 던졌습니다: 작은 논리 이론을 영어로 적고 트랜스포머를 훈련시켜 그에 대한 참/거짓 질문에 답하게 한다면, 그 결과 나오는 행동은 연역인가 [1]? 헤드라인 답은 놀랍고도 긍정적이었습니다. 그러나 지속되는 기여, 그리고 이 장의 주제는 그 계측 도구입니다: 질문 자체가 측정 가능한 의미를 갖도록 데이터를 생성하고, 레이블을 붙이고, 균형을 맞추고, 층화하는 방법입니다. 동반 모듈은 그 계측 도구를 데스크 규모에서 정직하게 다시 지으며, 일부러 약하게 만든 통계 모델을 그것에 통과시키고, 계측 도구가 설계된 바로 그 일을 하게 둡니다: 국소 패턴을 암기하는 것과 규칙을 합성하는 것의 차이를 드러내는 일입니다.
학생이 운전을 배운 게 아니라 시험 경로를 외웠다고 의심하는 운전면허 시험관을 상상해 보십시오. 순진한 시험관은 늘 하던 질문을 던지고 늘 하던 대로 합격을 줍니다. 신중한 시험관은 암기로는 점수를 딸 수 없도록 시험을 설계합니다: 정답의 절반을 "아니오"로 만들어 항상 "예"라고 답하면 정확히 50퍼센트만 얻도록 하고, 실제 운전이 몇 번의 회전을 필요로 하는지에 따라 모든 문제를 정렬하며, 조용한 거리에서 학생을 훈련시키되 학생이 한 번도 본 적 없는 교차로에서 시험을 봅니다. 학생이 조용한 거리에서는 만점을 받고 교차로마다 실패한다면, 그 시험은 전체 점수만으로는 결코 드러낼 수 없었던 것을 밝혀낸 것입니다: 학생은 운전이 아니라 거리를 배웠다는 것입니다. RuleTaker는 독해-추론을 위한 바로 그 신중한 시험관이며, 이 장은 여러분이 이미 가진 부품들로 그녀의 시험을 짓습니다.
이 장에서 다루는 내용
- 신중하게 진술된 질문: "모델이 답할 수 있는가"가 아니라 "그 답하기가 연역인가"이며, 각각 하나의 특정 교란 요인을 제거하는 세 가지 계측 도구 선택을 통해 측정 가능해집니다.
- 생성기: 학계 세계 위에서 씨앗이 뿌려지고 층화된 통제된 영어 이론들이며, 닫힌 세계 아래에서의 실패로서의 부정을 정밀하게 해독하고, 커밋된 데이터셋 통계를 담습니다.
- 계측 도구의 영혼인 레이블러: 사실마다 최소 유도 깊이를 추적하도록 확장된 1권의 전방 연쇄기이며, 첫 등장 라운드가 곧 최소 증명 높이임을 증명하고, 모든 양성 레이블에 대한 독립적인 후방 연쇄 감사를 곁들입니다.
- 정직하게 선언된 대역 추론기: 깊이 0과 1에서만 훈련된 국소 특징 뭉치 로지스틱 모델과, 커밋된 깊이별 표입니다: 훈련된 깊이에서는 1.000과 0.966, 깊이 2와 3에서는 증명기의 일정한 100퍼센트 옆에서 정확히 0.500입니다.
- 섭동 탐침: 규칙 안의 부정 하나를 뒤집고, 증명기로 다시 레이블을 붙인 다음, 논리가 바뀔 때 정확히 모델의 답도 바뀌는지를 측정합니다; 커밋된 숫자는 그렇지 않다는 것을 보여 줍니다.
- 이 틀에 비추어 읽는 발표된 결과: 트랜스포머의 진짜 깊이 일반화, 그것이 갈라진 지점, 그리고 우리 대역의 붕괴도 트랜스포머의 성공도 메커니즘 문제를 해결하지 못하는 이유입니다.
- ProofWriter의 두 전략 발견: 한 번에 생성된 증명은 본 적 없는 깊이에서 충실하지 않게 되는 반면, 반복된 한 걸음 추론으로 지어진 증명은 구성상 검증 가능한 채로 남으며, 이는 이 권의 정확성 교훈을 자연어로 다시 진술한 것입니다.
신중하게 진술된 질문
"트랜스포머가 영어로 적힌 규칙에 관한 질문에 답할 수 있는가?"는 그 자체로는 과학적 질문이 아닙니다. 모델이 규칙과는 아무 상관 없는 이유로 정답을 맞힐 수 있기 때문입니다. 모델은 클래스 사전 확률(class prior)을 이용할 수도 있고(질문의 70퍼센트가 참이라면 "항상 참"이라고 답해도 70퍼센트를 얻습니다), 표면적 상관관계를 이용할 수도 있으며("not"을 포함한 질문이 거짓 쪽으로 치우친다든지), 암기된 템플릿을 이용할 수도 있습니다(이 문장 형태는 지난번에 참이었다는 식으로). RuleTaker 실험은 이 막연한 질문을 "그 답하기가 연역인가"라는 측정 가능한 질문으로 바꾸어 놓는데, 이는 세 가지 의도적인 계측 도구 선택을 통해서입니다 [1]. 각 선택은 하나의 특정 교란 요인을 없애기 위해 존재합니다.
| 계측 도구 선택 | 무엇인가 | 그것이 없애는 교란 요인 |
|---|---|---|
| 깊이 층화(depth stratification) | 모든 질문에 그 답의 최소 유도 깊이, 즉 가장 짧은 증명이 필요로 하는 연쇄된 규칙 적용의 횟수로 레이블을 붙입니다 | 얕은 패턴만 암기한 모델은 평평해 보이는 전체 점수를 보이지만, 깊이별 정확도는 "사실을 안다"와 "규칙을 사슬로 잇는다"를 갈라내어, 암기된 길이 휴리스틱과 템플릿 휴리스틱을 잡아냅니다 |
| 레이블 균형화(label balancing) | 질문 은행을 참/거짓 50/50으로 균형화하되, 증명된 참 질문을 같은 깊이의 부정된 결론과 짝짓고(동반 모듈은 이를 모든 깊이 층 안에서 정확한 50/50으로 벼립니다), "not"과 같은 표면 표지는 레이블과 상관관계가 없도록 만듭니다 | 어떤 상수 전략이든, 클래스 사전 확률이나 표면 토큰에 기대는 어떤 전략이든 정확히 우연 수준의 점수를 받습니다 |
| 얕게 훈련하고 깊게 시험하기(train shallow, test deep) | 모델은 어떤 깊이 예산 안에서 증명 가능한 질문만으로 훈련되고, 그 예산을 넘어서서 시험됩니다 | 분포 내 정확도는 적합도를 측정할 뿐이며, 오직 깊이 범위 밖 정확도만이 합성 연산 자체가 학습되었는지를 측정하여 일반화를 암기로부터 분리해 냅니다 |
세 가지 선택의 공통점을 눈여겨봅시다: 그 어느 것도 모델 내부를 들여다보지 않습니다. 이 계측 도구는 전적으로 행동적입니다. 설계된 입력 분포에 설계된 보고 형식을 더한 것입니다. 그것이 바로 이 도구의 힘(트랜스포머든 로지스틱 회귀든 사람이든, 어떤 블랙박스에도 적용됩니다)이자 한계이며, 이 장의 끝부분과 5권 전체가 이 한계를 파고들 것입니다: 행동은 그럴듯한 메커니즘의 공간을 좁힐 수는 있지만, 그중 하나를 인증할 수는 없습니다.
생성기: 실험실 영어
동반 모듈 ruletaker_lite.py는 이 계측 도구를 학계 세계 위에서 다시 짓습니다. 그 어휘는 1권 지식 베이스의 다섯 사람에 걸친 네 개의 술어 층(predicate layer)입니다: 층 0은 사실이 진술할 수 있는 네 개의 술어(published, funded, cited, diligent)를 담고, 층 1부터 층 3까지는 다섯 개의 유도된 술어(productive, visible, senior, established, influential)를 담으며, 그 규칙들의 몸체는 바로 아래 층에서 끌어옵니다(ruletaker_lite.py 92–98행). 층- 규칙은 층- 전제를 필요로 하므로, 술어의 층 색인이 그 원자들의 유도 깊이를 고정하며, 이것이 바로 층화 표집을 가능하게 하는 것입니다. 이론들은 통제된 영어(controlled English)로 렌더링됩니다: 문장 유형마다 고정된 템플릿이 있어서, 텍스트가 그것을 읽는 어떤 모델에게든 진정한 자연어 입력이 되는 동시에, 레이블러가 기계적으로 역변환할 수 있는 상태로 남습니다(세 템플릿 모두 101–112행에 있으며, 그중 규칙 템플릿은 109–112행입니다):
def rule_sentence(head: str, body: list[tuple[bool, str]]) -> str:
"""One rule template: 'If someone is A and not B then they are H.'"""
conds = " and ".join(f"{'not ' if neg else ''}{p}" for neg, p in body)
return f"If someone is {conds} then they are {head}."
한 이론은 대략 아홉 개의 진술된 사실(스무 개의 가능한 사람–술어 쌍 각각이 확률 0.45로 진술됩니다)과, 유도된 술어마다 하나씩인 규칙, 즉 총 다섯 개의 규칙으로 이루어지며, 각 규칙은 선택적으로 층-0 조건 하나를 추가로 지니는데 이는 절반의 확률로 부정됩니다(125–147행). 다음은 커밋된 실행의 첫 번째 평가 이론을 그대로 옮긴 것입니다:
eval theory 40, verbatim:
alice is funded.
alice is cited.
alice is diligent.
... (9 more facts)
If someone is published then they are productive.
If someone is diligent then they are visible.
If someone is visible then they are senior.
If someone is visible and diligent then they are established.
If someone is senior and not diligent then they are influential.
마지막 규칙은 정밀하게 해독해야 할 재료를 담고 있습니다: 닫힌 세계 가정(closed-world assumption, CWA) 아래에서의 실패로서의 부정(negation-as-failure)입니다. 데이터로그와 2권의 열린 세계 장에서 물려받은 관례는, 증명할 수 없는 원자는 거짓이라는 것이며, "not diligent"라고 적힌 규칙 조건은 정확히 그 실패를 검사합니다: 이 조건은 어떤 사람에 대해 정확히 "diligent"가 진술된 사실 가운데 없을 때 성립합니다. 유도된 술어에 대한 부정은 이러한 의미론을 위태롭게 만들 수 있습니다("not "로부터 원자 를 결론짓는 규칙은 안정적인 해석을 가지지 않습니다). 그리고 표준적인 처방은 층화된 부정(stratified negation)입니다: 부정은 오직 더 이른 층에서 완전히 결정된 술어에만 적용될 수 있습니다. 생성기는 층화를 거저 얻습니다. 부정된 조건은 오직 층-0 술어에만 허용되고, 층-0 술어는 어떤 규칙의 머리에도 나타나지 않으므로, 그 진리값은 어떤 규칙이 발화하기도 전에 오직 진술된 사실만으로 고정되기 때문입니다(87–91행). RuleTaker의 원래 배포판은 정확히 이 닫힌 세계 관례를 사용했습니다; 그 후속 데이터셋 계열은 이론들을 닫힌 세계 버전과 열린 세계 버전 둘 다로 다시 배포함으로써 그 선택을 명시적으로 드러냈습니다 [2]. 또한 템플릿이 일부러 배제하는 것에도 주목합시다: 어휘적 다양성도, 동의어도, 통사적 바꿔 쓰기도 없습니다. 이것은 실험실 영어이며, 이 장은 그 대가가 무엇인지로 되돌아올 것입니다.
레이블러: 귀결 연산자의 라운드를 깊이로 읽어 내기
계측 도구는 그 금 레이블(gold label)만큼만 신뢰할 수 있으며, 여기서 설계는 타협이 없습니다: 모든 레이블은 사람이나 휴리스틱이 아니라 증명기(prover)에 의해 계산됩니다. 그 증명기는 1권의 전방 연쇄기이며, 다시 타이핑되는 대신 임포트됩니다(ruletaker_lite.py 75행은 forward_chain.py에서 t_p를 임포트합니다). 그 한 라운드짜리 연산자를 떠올려 봅시다(forward_chain.py 42–49행):
def t_p(facts: set, rules: list) -> set:
"""One application of the immediate-consequence operator: the input facts
plus every head derivable in a single step."""
out = set(facts)
for head, body in rules:
for sub in _match_body(body, facts, {}):
out.add(apply_sub(head, sub))
return out
두 가지 준비 단계가 영어 이론을 이 엔진에 연결합니다. 첫째, 각 규칙은 "누군가"(someone)에 대해 한정되므로, 사람마다 한 번씩 접지(ground)됩니다. 둘째, 실패로서의 부정은 진술된 사실들의 닫힌 세계에 맞서 컴파일되어 사라집니다: 성립하는(원자가 진술되지 않은) 접지 조건 "not "(은 층-0 술어를, 는 다섯 사람 가운데 한 명을 가리킵니다)는 그저 몸체에서 삭제되고, 실패하는(원자가 진술된) 조건은 그 접지 규칙 전체를 삭제합니다(153–179행). 이 컴파일이 건전한 것은 정확히 층화 덕분입니다. 층-0 술어는 어떤 규칙의 머리도 아니므로, 층-0 원자는 그것이 진술되었을 때 그리고 오직 그때에만 최소 모델에 속합니다; 따라서 모든 부정된 조건의 진리값은 연쇄가 시작되기도 전에 이미 확정되어 있으며, 각각을 그 확정된 값으로 치환해도 남은 부정 없는 프로그램의 최소 모델은 바뀌지 않습니다. 남는 것은 평범한 접지된 한정 프로그램이며, 정확히 1권의 기계 장치가 받아들이는 바로 그 대상입니다.
이제 이 계측 도구를 가능하게 만드는 확장입니다: 깊이 추적(depth tracking)입니다. 를 진술된(접지된) 원자들의 집합, 을 접지 규칙들의 집합, 를 라운드 뒤에 알려진 원자들의 집합이라 쓰고, 와 로 정의합시다. 여기서 는 위의 즉각귀결 연산자(immediate-consequence operator)입니다(단 한 번의 규칙 적용으로 유도 가능한 모든 원자를 더하는 사상이며, 아래 첨자 는 프로그램, 즉 그 연산자가 귀결을 계산하는 접지 규칙들의 집합을 가리킵니다). 레이블러는 를 라운드마다 반복하고, 각 원자에 대해 그것이 처음 나타나는 라운드를 기록합니다(190–200행):
facts, rules = ground_program(theory)
depth = {atom: 0 for atom in facts}
frontier, round_no = set(facts), 0
while True:
round_no += 1
new = t_p(frontier, rules) # one round of consequences
if new == frontier:
return depth
for atom in new - frontier:
depth[atom] = round_no # first appearance = min depth
frontier = new
그 주석에 담긴 주장은 증명이 필요합니다. 원자 에 대한 증명 트리(proof tree)를 정의합시다: 진술된 원자는 그 자신이 높이 0의 증명 트리이며, 어떤 규칙의 머리가 이고 몸체 원자들이 이며(여기서 은 몸체 원자의 개수입니다) 각각 높이 의 증명 트리를 가진다면, 그것들을 아래 붙여서 높이 의 증명 트리를 얻습니다. 의 최소 유도 깊이(minimum derivation depth)는 그 모든 증명 트리에 걸친 가장 작은 높이입니다. 우리는 에 대한 귀납법으로 가 정확히 높이 이하의 증명 트리를 가지는 원자들의 집합임을 보입니다. 일 때: 는 정의상 높이-0 증명을 가지는 원자들의 집합입니다. 귀납 단계에서는 에 대해 명제가 성립한다고 가정합니다. 가 높이 이하의 증명 트리를 가진다면, 그 트리는 높이 0이거나(그러면 이며, 여기서 기호 은 "의 원소이다"로 읽습니다: 는 진술된 원자들 가운데 하나입니다; 그리고 인데, 여기서 는 "에 포함된다"로 읽습니다: 는 결코 원자를 제거하지 않으므로 모든 진술된 원자는 라운드 뒤에도 여전히 존재합니다), 아니면 그 뿌리 규칙의 몸체 원자들이 각각 높이 이하의 증명 트리를 가지며, 따라서 귀납 가정에 의해 모두 안에 놓입니다; 그러면 그 규칙은 라운드 에서 발화하여 를 안에 넣습니다. 역으로, 이라면, 이거나(그러면 귀납에 의해 높이 이하의 증명을 가지며, 이는 이하이기도 합니다), 몸체가 에 포함되는 어떤 규칙이 그것을 유도했을 것입니다; 귀납에 의해 각 몸체 원자는 높이 이하의 증명 트리를 가지며, 그것들을 그 규칙 아래 조립하면 는 높이 이하의 증명 트리를 가집니다. 이것으로 귀납이 닫힙니다. 그 결과, 어떤 원자가 라운드 에서 처음 나타나는 것은 정확히 그 최소 유도 깊이가 일 때입니다: 그것은 안에 있지만(높이 이하인 어떤 증명이 있습니다) 안에는 없습니다(높이 이하인 증명이 없습니다). 따라서 위의 루프는 최소 유도 깊이의 근사가 아니라 그것을 정확히 계산합니다.
이렇게 만들어지는 레이블은 2권 이래로 계속된 주제인 구성상 금(gold by construction)입니다: 참으로 레이블된 모든 원자에는 구체적인 증명 트리가 존재하며(연쇄기가 그것을 지어냈습니다), 거짓으로 레이블된 모든 원자에 대해서는 그것을 유도하지 못한 채 고정점이 소진되었는데, 이는 닫힌 세계 아래에서 거짓의 의미론 그 자체입니다. 그런 다음 이 모듈은 벨트에 멜빵을 더합니다: 모든 양성 평가 질문은 같은 컴파일된 접지 프로그램 위에서 1권의 후방 연쇄기 sld.provable에 의해 독립적으로 다시 판정되며, 하나의 단언이 전방 연쇄와 후방 연쇄가 질문마다 일치할 것을 요구합니다(391–398행). 서로 다른 탐색 전략을 가진 두 증명기가 모든 레이블을 보증하는 것은, 검증된 추론기를 오라클로 사용하는 것의 데스크 규모 버전입니다.
질문 은행: 소수점까지 구성상 균형 잡힌
깊이 인 모든 유도 가능한 원자 가운데 같은 층에 유도 불가능한 짝이 있는 것에 대해, 질문 은행은 네 개의 질문을 내놓습니다: 그 원자를 긍정한 것("carol is senior.", 금 레이블 참), 그 원자를 부정한 것("carol is not senior.", 금 레이블 거짓), 짝지어진 유도 불가능한 원자를 긍정한 것(금 레이블 거짓), 그리고 그것을 부정한 것(금 레이블 참)입니다. (짝이 없는 원자는 그 사중조 전체와 함께 통째로 건너뛰어져, 아래의 균형이 그대로 유지됩니다; 이 보호 장치는 커밋된 60개의 이론 전체에 걸쳐 다섯 개의 원자에 대해 발동합니다, 237–238행.) 그 짝은 씨앗이 뿌려진 생성기에 의해 같은 술어 층에서 뽑히므로 그 표면 형태만으로는 정체를 드러낼 수 없으며, 짝짓기 깊이 를 자신의 레이블 깊이로 물려받습니다(209–247행); 이는 RuleTaker 자체의 장부 관리를 단순화한 것으로, 원래 RuleTaker는 부정된 증명된 결론에는 그것이 부정하는 진술의 깊이를 부여하고, 완전히 증명 불가능한 사실에는 그 증명 시도가 실패하는 깊이(대안이 되는 후보 증명들에 걸쳐 최대화된, 가장 얕은 실패 가지)로 주석을 답니다 [1]. 이 네 갈래 구성은 균형 보장을 경험적 우연이 아니라 정리로서 얻어 냅니다. 각 사중조 안에서 금 레이블은 참, 거짓, 거짓, 참이므로 모든 깊이 층은 정확히 50/50이며; 두 개의 부정 질문 가운데서는 금 레이블이 하나는 참이고 하나는 거짓이므로, "not"이라는 토큰은 레이블에 관해 아무런 정보도 나르지 않습니다.
확률의 언어로 말하면, 를 금 레이블, 을 질문이 "not"을 포함하는 사건, 을 어떤 사건의 확률, 그리고 를 가 성립한다고 주어졌을 때 가 성립할 확률(세로 막대는 "…가 주어졌을 때"로 읽으며, 가 일어나는 질문들 위에서만 계산한 확률입니다)이라 쓸 때: 이고 입니다. 한 줄이면 논증이 끝납니다. 전체 확률의 법칙(law of total probability)은 무조건부 확률을 두 경우에 걸쳐 나눕니다, , 여기서 은 질문이 "not"을 갖지 않는 여사건입니다; 이미 알려진 두 확률에 를 대입하면 을 얻고, 따라서 이며, 양변을 (은행의 절반이 부정되어 있으므로 이는 0이 아닙니다)로 나누면 역시 얻어집니다. 레이블의 분포는 "not"이 있든 없든 같습니다; 가 값 를 취하고 이 값 을 취할 확률을 이라 쓰면(그리고 , 은 각각의 한 변수짜리 확률입니다), 이는 네 개의 칸 모두에서 이라는 뜻입니다: 와 은 독립입니다. 이 둘의 상호 정보(mutual information, 한 변수를 아는 것이 다른 변수에 대한 불확실성을 얼마나 줄이는지를 재는 표준적인 척도)는 이며, 여기서 합산 기호 은 네 개의 값 쌍 전체에 걸쳐 항을 더하고 은 자연로그입니다; 독립성은 로그 안의 모든 비를 1로 만들므로, 입니다. 극성(polarity)에만 기대는 분류기는 오직 우연 수준의 점수만을 얻을 수 있습니다. 두 사실 모두 그저 의도된 것이 아니라 실행 시점에 단언됩니다(379–386행). 커밋된 코퍼스: 60개의 이론이 이론 단위로 훈련용 40개와 평가용 20개로 나뉘어, 어떤 평가 이론도 훈련 중에 보이지 않으며; 훈련 질문은 1,892개로 모두 깊이 1 이하이고; 평가 질문은 모든 깊이에 걸쳐 1,500개입니다.
| 깊이 | 참 | 거짓 | 합계 |
|---|---|---|---|
| 0 | 402 | 402 | 804 |
| 1 | 176 | 176 | 352 |
| 2 | 140 | 140 | 280 |
| 3 | 32 | 32 | 64 |
이 표의 모든 개수는 커밋된 출력의 3절에서 나온 것이며, 모든 깊이에서 정확히 50/50으로 나뉘는 것이 바로 단언이 요구하는 바입니다. 모든 무작위성은 단 하나의 시드에서 흘러나오며(np.random.default_rng(SEED), SEED = 0, 79행과 254행), 이 모듈을 두 번 실행하면 바이트 단위까지 동일한 출력을 찍습니다.
정직하게 선언된 대역 추론기
원래의 실험은 대형 사전 훈련된 트랜스포머를 이 계측 도구에 통과시켰습니다. 동반 모듈은 일부러 더 약한 것을 실행하며, 그 사실을 자신의 독스트링 안에서 스스로 밝힙니다(ruletaker_lite.py 19–25행의 첫 문장; 25행은 발췌 너머로 이어집니다):
What replaces what, stated plainly: the paper's pretrained transformer is
replaced by a bag-of-local-features logistic model — declared plainly as a
statistical stand-in, because what it EXHIBITS is the point (competence at
trained depths, collapse beyond them), not its architecture; the paper's
100k-question datasets (several thousand theories, fixed name and attribute
pools) become 60 seeded five-person theories over a four-layer predicate
vocabulary in the controlled templates below.
이 대역은 각 (이론, 질문) 쌍을 손으로 지은 열 개의 특징을 통해 읽어 내며, 그 하나하나가 국소적인 패턴입니다: 긍정 질문에는 극성 을, 부정된 질문에는 을 주면, 그 벡터는 이며, 여기서 stated는 질문의 원자가 사실로서 그대로 나타날 때 발화하고, one_step은 이 머리를 가진 어떤 규칙이 오직 그 긍정 조건들만을 검사하면서 진술된 사실만으로 발화할 때 발화하며(탐침이 폭로할 내장된 지름길입니다), head_pred는 그 술어가 애초에 유도 가능한지를 표시하고, fact_frac은 이 사람에 대해 진술된 층-0 술어의 비율입니다(268–301행). 부호가 붙은 사본들은 하나의 선형 모델이 "진술되었고 부정되지 않았다면 참을 함의한다"를 표현할 수 있게 해 주며; 부호 없는 사본들은 토큰과 바이그램의 평범한 뭉치도 볼 수 있는 것들입니다. 이 벡터 안의 그 무엇도 두 규칙의 합성을 표현할 수 없으며, 그것이 바로 이 설계입니다.
그 위에 놓인 분류기는 손으로 적은 그래디언트를 가진 로지스틱 회귀입니다(304–316행). 이 모델은 점수 를 매기고(가중치 벡터 와 특징 벡터 의 내적입니다), 를 예측합니다. 여기서 는 시그모이드로, 임의의 실수 점수를 0과 1 사이의 확률로 짓누르는 S자 모양의 함수입니다(은 자연 지수의 밑입니다). 그리고 레이블 에 대한 이진 교차 엔트로피 손실 로 훈련됩니다. 연쇄 법칙은 세 개의 고리를 거치며, 각 고리는 하나의 편미분입니다(기호 로 적으며, 나머지 모든 것을 고정한 채 하나의 입력이 변할 때 한 양이 변화하는 비율을 뜻합니다): 는 두 로그를 미분하고 공통분모 로 결합하여 얻어지고, 는 시그모이드에 몫의 법칙을 적용하여 얻어지며, 입니다; 앞의 두 고리를 곱하면 인자가 정확히 소거되어 가 남고, 따라서 가 되는데, 여기서 그래디언트 은 열 개의 가중치 각각에 대한 손실의 편미분들을 하나의 벡터로 모은 것입니다. 1권의 경사 하강법 장은 이 소거의 모든 단계를 유도한 바 있습니다; 동반 모듈의 훈련 루프는 그 상자 친 공식을 NumPy 두 줄로 옮긴 것이며, 학습률 로 에포크 동안 완전 배치(full-batch)로 돌아갑니다:
for _ in range(EPOCHS):
p = 1.0 / (1.0 + np.exp(-(X @ w)))
w -= LR * (X.T @ (p - y)) / len(y)
결정적인 규약 한 줄은 다른 곳에 있습니다: 훈련 질문은 TRAIN_DEPTH = 1을 써서 depth <= TRAIN_DEPTH로 걸러집니다(82행과 260행). 이 대역은 최단 증명이 두 개의 규칙을 잇는 질문을 결코 보지 않습니다. 깊이 2와 3에서 그것이 무엇을 하든, 그것은 일반화이거나 아무것도 아닙니다.
깊이별 표 읽기
다음은 커밋된 표로, 이 계측 도구의 핵심이며, 실행이 찍어 내는 그대로입니다:
[4] the per-depth table: local features vs the prover
depth stand-in accuracy prover
0 1.0000 1.00 <- trained depths
1 0.9659 1.00 <- trained depths
2 0.5000 1.00 <- collapse (never composed a rule)
3 0.5000 1.00 <- collapse (never composed a rule)
learned weights: pol*stated +5.81, pol*one_step +4.45, pol -2.40 (the local
shortcut in numbers: answer 'stated or one rule from stated', else lean on polarity)
한 줄씩 읽어 봅시다. 깊이 0에서 대역은 완벽합니다, 1.0000: 깊이-0 질문은 어떤 원자가 진술되었는지를 물으며, stated 특징이 그것에 직접 답하고, 에 대해 학습된 가중치 이 바로 그 답을 숫자로 나타낸 것입니다. 깊이 1에서는 0.9659를 기록합니다: 규칙 적용이 한 번이며, 특징(가중치 )이 대부분의 경우를 처리하고, 오직 그 긍정-조건-전용 지름길이 잘못 레이블링하는 경우만 놓칩니다. 그런 다음 바닥이 무너집니다. 깊이 2와 3에서 정확도는 0.5000이며, 이는 논리에 눈먼 어떤 전략에도 50/50 균형화가 보장하는 바로 그 동전 던지기 비율이고, 반면 증명기 열은 모든 깊이에서 1.00을 나타내는데, 이는 동어반복적입니다. 그 답이 곧 레이블 자체이며, 후방 연쇄기에 의해 독립적으로 감사되기 때문입니다. 이 실행은 그 모두를 단언합니다: 훈련된 깊이의 정확도는 최소 0.80, 깊이-3 정확도는 최대 0.65, 간극은 최소 25포인트(412–416행)입니다.
이 붕괴는 불운이 아니라 산술입니다. 층-2나 층-3 술어에 관한 어떤 질문에 대해서도 stated는 0이고(사실은 오직 층-0 술어만을 진술합니다), one_step 역시 0입니다. 층-2 머리에 대한 규칙은 결코 진술된 사실이 될 수 없는 층-1 긍정 전제를 갖기 때문입니다. 정보를 담은 특징은 모두 죽어 있고, 남은 것(, 극성, )은 짝짓기 구성에 의해 참인 항목과 같은 층에서 온 그 거짓 짝 사이에 거의 동일하게 분포되어 있습니다. 특징들이 균형 잡힌 짝의 구성원을 구별할 수 없을 때, 그 짝에 대한 기대 정확도는 분류기가 무엇을 하든 정확히 절반이며, 표가 보여 주는 것이 바로 0.5000입니다. 이것이 바로 이 붕괴가 식별해 내는 것입니다: 특징들은 규칙과 사실의 국소 패턴을 암기할 수는 있지만 그것들을 합성할 수는 없으며, 깊이란 정확히 어떤 질문이 요구하는 합성의 횟수입니다. 이 구분은 우리의 장난감 실험을 넘어서도 중요합니다: 모델에게 답과 함께 증명을 내놓으라고 요구하는 연구는, 완전한 증명보다 체계적으로 더 정확한 답을 발견했습니다. 즉 옳은 답이 복원 가능한 유도 없이 도착한다는 것이며 [3], 이는 반대편에서 본 것과 같은 간극입니다.
처음부터 끝까지의 계측 도구: 씨앗이 뿌려진 생성기, 연쇄 라운드에서 깊이를 읽어 내는 증명에서 도출된 레이블러, 균형 잡힌 층들, 그리고 이 도구가 내놓는 두 가지 판정: 훈련된 깊이를 넘어서면 무너지는 대역의 붕괴와, 증명기는 구성상 추적해 내는 한 단어짜리 논리 수정을 대역이 추적하지 못하는 실패입니다.
저자가 AI의 도움을 받아 직접 제작한 원본 도해.
섭동 탐침: 논리가 바뀔 때 정확히 바뀌기
깊이별 정확도는 여전히 생성기가 정의하는 분포 위에서만 모델을 측정합니다. 더 예리한 계측 도구는 반사실적 질문을 던집니다: 이론의 논리가 최소한으로 바뀐다면, 모델의 답도 그에 따라 바뀌는가? 이것이 불변성/민감성 검사(invariance/sensitivity testing)이며, RuleTaker 방식의 이론들 위에 지어진 RobustLR이라는 진단용 벤치마크는 이것이 얼마나 많은 것을 드러내는지 보여 주었습니다: 표준 시험 집합에서는 유능해 보이는 모델들이, 금 레이블을 뒤집거나 보존하는 논리적 연산으로 이론이 수정되면 체계적으로 실패합니다 [4]. 이 설계의 논리는 대칭적이고 가차 없습니다. 추론기는 함의를 바꾸는 수정에는 민감해야(sensitive) 하고 바꾸지 않는 수정에는 불변해야(invariant) 합니다; 전자에 실패하면 논리를 무시하는 것이고, 후자에 실패하면 논리가 아닌 다른 무언가를 읽고 있다는 뜻입니다.
동반 모듈은 민감성 절반을 축소판으로 만듭니다. 수정 내용은 부정 하나를 뒤집는 것입니다: 몸체에 긍정 층-0 추가 조건을 가진 첫 번째 규칙에서 그 조건이 부정되며(평가 이론 40에서는 "and diligent"가 "and not diligent"가 됩니다), 나머지는 모두 동일합니다(327–340행). 섭동된 이론은 증명기에 의해 처음부터 다시 레이블이 붙여지고, 탐침은 그 수정 아래에서 금 레이블이 뒤집히는 질문들만을 정확히 남겨 두며; 그 항목들에 대해 각 추론기의 답이 그 반전을 따라가는지를 묻습니다(343–366행). 증명기의 경우 답은 구성상 모든 항목에서 예입니다. 그 답이 수정된 이론으로부터 다시 계산되기 때문입니다. 대역의 경우, 커밋된 실행은 다음을 보고합니다:
[5] the RobustLR-style probe: flip one rule negation, relabel, remeasure
gold-flipped questions: 66 stand-in accuracy on them BEFORE the edit: 0.485
tracked after the edit: 54/66 = 0.818 (prover: 1.000 by construction)
the pre-edit accuracy is an aggregate (perfect at depth 1, zero at depths 2-3);
every miss is one_step ignoring the newly negated condition (asserted < 1.0)
두 숫자가 판정을 담고 있으며, 둘 다 그것이 실제로 그러한 집계값으로 읽혀야 합니다. 첫째, 0.485: 어떤 수정도 있기 전에, 대역은 이 66개의 질문에 대해 우연 수준 근처에 자리하지만, 그것은 각 항목이 동전 던지기이기 때문이 아닙니다. 깊이별로 나누면, 이 66개 항목은 이봉(bimodal) 분포를 보입니다: 32개는 깊이 1에 살고 34개는 깊이 2와 3에 삽니다. 32개의 깊이-1 항목에서 수정 전 정확도는 1.000인데, 수정 전에는 그 경첩 조건(hinge condition)이 긍정이기 때문이며(perturb_theory는 자신이 찾아낸 첫 번째 긍정 층-0 추가 조건을 부정합니다, 327–340행, 그래서 수정 전에는 그 조건이 긍정입니다), 긍정 조건을 검사하는 것이 정확히 one_step이 하는 일입니다. 34개의 깊이-2/3 항목에서는 수정 전 정확도가 0.000입니다: 이것들은 표의 붕괴 행들이 기록하는 것과 같은 합성 실패이며, 부정과는 아무 상관이 없습니다. 집계값 가 우연 수준 근처에 떨어지는 것은 우연보다 덜 그럴듯한 이유 때문입니다: 서로 반대 방향을 가리키는 두 개의 확실성입니다.
둘째, : 수정 후, 대역은 금 레이블 반전 가운데 12개를 놓치는데, 여기서도 분해가 정직한 읽기입니다. 12개의 놓침 전부는 깊이-1 항목이며, 그것들은 정확히 새로 부정된 조건이 진술된 사실인 사람들입니다: 그런 사람에 대해서는 수정된 규칙이 죽고 금 레이블이 뒤집히지만, one_step은 부정된 조건을 무시하므로 특징 벡터, 그리고 그와 함께 예측도 움직이지 않습니다. 이곳이 바로 내장된 지름길이 실제로 폭로되는 지점입니다: 32개의 깊이-1 항목 가운데 12개에서입니다. 나머지 34개의 깊은 항목은 추적된 것으로 집계되지만, 열 개의 특징(따라서 예측)은 수정 전후로 동일합니다: 대역은 이 항목들 모두에서 애초부터 틀렸으며, 금 레이블이 그 바뀌지 않은 답 아래에서 뒤집혀 그것과 맞아떨어진 것입니다. 오직 탐침의 깊이-1 절반만이 진정한 민감성을 측정하며, 거기서 대역은 32개 중 20개를 추적합니다. 건전한 추론기는 어떤 깊이에서도 반전을 놓치지 않으며, 이 모듈은 커밋된 두 사실 모두를 단언합니다. 수정 전 집계 정확도는 0.65 미만이고 추적률은 엄격히 1.0 미만입니다(420–425행). 이 일반 원리는 한 문장으로 요약할 가치가 있습니다: 추론기는 논리가 바뀔 때 정확히 그때 바뀌어야 하며, 어느 방향으로든 불일치가 있다면 그것은 논리가 아닌 다른 무언가가 답을 만들어 내고 있다는 증거입니다.
실제 계측 도구가 발견한 것
이제 발표된 실험을 이 틀에 비추어 읽어 봅시다. 이 틀이야말로 그 결과를 의미 있게 만드는 것이기 때문입니다. 원래 연구는 우리 것과 매우 비슷하게 생성된 이론들 위에서(깊이 등급이 매겨진 데이터셋마다 10만 개의 질문을, 이름과 속성이 고정된 풀에서 표집된 수천 개의 이론에 대해 던지며, 깊이는 층화되고 레이블은 균형화되어 있습니다) 대형 사전 훈련된 트랜스포머를 미세 조정했고, 두 가지 발견을 보고했습니다 [1]. 분포 내에서, 최대 깊이 3의 질문으로 훈련된 모델은 자신의 시험 집합에 99.3퍼센트의 정확도로 답했는데, 이는 균형화와 층화를 거친 뒤라면 사전 확률이나 표면적 인공물일 수 없습니다. 깊이 범위 밖에서, 우리 대역이 존재하는 이유인 바로 그 눈금을 맞추어야 할 발견이 나옵니다: 바로 그 동일한 모델이 깊이 4의 보류된 질문에서 98.8퍼센트, 깊이 5에서 97.6퍼센트를 기록했는데, 이는 훈련에서 본 그 무엇보다도 엄격하게 더 깊은 사슬입니다. 국소 패턴 뭉치가 할 수 있는 일이 무엇이든, 우리는 방금 그것을 측정했습니다: 훈련 예산을 한 깊이만 넘어서도 정확히 0.5000입니다. 따라서 자신의 예산을 두 깊이 넘어서도 97.6퍼센트를 유지하는 트랜스포머는 얕은 특징으로는 예측할 수 없는 무언가를 하고 있는 것이며, 바로 이 계측 도구가 그런 문장을 허가하는 근거입니다. 같은 연구는 또한 그 행동이 어디서 갈라지는지도 보고했습니다: 손으로 지은 이론 계열로의 제로샷 전이는 고르지 않았고(여섯 개의 규칙 베이스 가운데 다섯 개는 90퍼센트를 넘었지만 여섯 번째는 그렇지 못했습니다), 크라우드워커가 열린 영어로 바꿔 쓴 규칙 집합에서는 그 동일한 깊이-3 훈련 모델이 제로샷으로 겨우 66.1퍼센트만을 해내다가, 바꿔 쓴 데이터가 훈련 혼합에 합류하자 98.8퍼센트로 회복되었습니다 [1]. 깊이에는 강건하고 표현에는 취약함: 이는 정확히 증명기와는 반대되는 특성으로, 증명기는 표현에는 무관심하고(템플릿은 파싱되어 사라집니다) 깊이에도 무관심합니다(고정점은 필요한 만큼 얼마든지 돌아갑니다).
트랜스포머를 우리의 대역과 갈라놓는 것이 무엇인지는 정확히 이름 붙일 가치가 있습니다. 그것은 마법이 아니기 때문입니다: 규모(우리의 열 개에 맞선 수억 개의 매개변수), 사전 훈련(언어 모델은 영어의 분산 표현이 이미 지어진 채로 도착합니다), 그리고 무엇보다도 그 핵심 연산인 어텐션이 쌓인 층들 안에서 위치들에 걸쳐 표현을 합성하는 아키텍처로, 고정된 국소 특징 뭉치는 갖지 못하는, 여러 단계에 걸친 전파를 구현할 역량(capacity)을 적어도 갖추고 있습니다. 하지만 역량이 곧 정체성은 아닙니다. 이 계측 도구는 트랜스포머의 행동이 이 분포 위에서 깊이 5까지 연역과 일관됨을 보여 줍니다; 가중치가 구현하는 것이 건전성을 보존하는 절차라는 것을 보여 주지는 않으며, 바꿔 쓰기에 대한 취약성은 그 일관성이 조건부라는 경고입니다. 우리의 대역은 이 경계심을 축소판으로 생생하게 만듭니다: 깊이 0과 1에서는 그것 또한 1.0000과 0.9659로 추론기처럼 보였지만, 결코 그런 것이 아니었습니다. 좋은 행동 뒤의 메커니즘이 행동으로부터 인증될 수 있는지의 여부는 식별 가능성(identifiability) 문제이며, 이는 5권에 속합니다.
ProofWriter: 한 번에, 혹은 한 걸음씩
후속 실험은 답에서 증명으로 옮겨 감으로써 이 장의 교훈을 완성합니다. 다시 배포된 이론들 위에서 훈련된 생성적 후속 모델인 ProofWriter는 진리값뿐 아니라 유도 과정까지 내놓으며, 의도적으로 대조되는 두 가지 버전으로 지어졌습니다 [2]. 일괄(all-at-once) 버전은 이론을 읽고 답을 전체 증명과 함께 단 한 번의 생성 패스로 내놓습니다. 반복(iterative) 버전은 구조적으로 다른 일을 합니다: 오직 한 걸음짜리 함의만을 생성하는데, 각각의 새 사실은 입력에 있는 문장들로부터 직접 유도되며, 그런 다음 생성된 사실을 이론에 더하고 반복하여, 깊은 증명들을 얕은 증명들의 사슬로 조립합니다. 분포 내에서는 두 버전 모두 높은 정확도로 답하고 증명했습니다. 보고된 발산은 정확히 이 장이 여러분에게 보라고 가르친 바로 그곳에서 나왔습니다: 훈련에서 본 것을 넘어서는 증명 깊이에서입니다. 최대 깊이 3의 닫힌 세계 이론으로 훈련된 모델의 경우, 답의 정확도는 한 깊이를 벗어나도 높게 유지되었습니다(보지 못한 깊이 4에서 일괄 모델은 95.4퍼센트, 반복 모델은 99.7퍼센트였습니다). 그리고 보지 못한 깊이 5에서는 반복 모델이 여전히 98.9퍼센트로 답한 반면 일괄 모델의 답은 72.9퍼센트로 미끄러졌습니다. 증명은 더 냉혹한 이야기를 들려주었습니다. 금 증명에 맞추어 보면, 일괄 모델의 증명 정확도는 보지 못한 깊이 4에서 69.9퍼센트로, 깊이 5에서 27.4퍼센트로 떨어진 반면, 생성된 한 걸음짜리 함의들로부터 한 걸음씩 조립된 반복 모델의 증명은 같은 깊이들에서 88.9퍼센트와 87.8퍼센트를 유지했습니다 [2]. 별도의 측정이 이 실패를 구체적으로 만듭니다. 모델 자신이 내놓은 증명의 각 줄이 실제로 따라 나오는지를 한 걸음씩 다시 물었더니(이는 닫힌 세계 이론에서는 부분적일 뿐인 검사인데, 실패로서의 부정에 기대는 단계는 한 걸음짜리 확인을 거부하기 때문입니다) 깊이 4에서는 일괄 증명의 겨우 66.7퍼센트만이, 깊이 5에서는 13.8퍼센트만이 검증되었습니다; 반복 모델은 그런 감사가 전혀 필요하지 않은데, 그 증명이 구성상 검증 가능하기 때문입니다 [2]. 옳은 답, 충실하지 않은 유도: 이론이 허가하지 않는데도 그럴듯해 보이는 증명, 이 분야가 환각(hallucination)이라 부르는 실패 양상은, 요구되는 유도가 훈련 분포를 벗어나고 나서야 비로소 표면으로 떠올랐습니다.
그 이유는 관찰이 아니라 하나의 논증이며, 이 권에서 되풀이되는 설계 원리가 자연어의 옷을 입은 것입니다. 반복 전략의 각 단계는 유계이고 검사 가능한 대상입니다: 하나의 새 문장이, 한 번의 규칙 적용으로 진술된 문장들로부터 따라 나온다고 주장되는 것이며, 이는 정확히 모델이 훈련받은 바로 그 알갱이 크기이고 검증기(또는 1권의 t_p)가 그것을 확인할 수 있는 바로 그 알갱이 크기입니다. 검증된 한 걸음짜리 추론들로부터 조립된 증명은 구성상 충실합니다. 전방 연쇄가 신뢰할 만한 것과 같은 이유에서입니다: 합성은 모델 안에서 한 번의 패스로 상상되는 것이 아니라, 모델 바깥, 세계 안에서 반복에 의해 수행됩니다. 일괄 전략은 네트워크에게 전체 고정점 계산을 내부적으로 환각하듯 만들어 내라고 요구하며, 중간 단계를 이론에 고정하는 것이 아무것도 없으므로, 보지 못한 깊이에서는 그 환각이 무너져 내립니다. 동반 모듈 자체의 구조는 이기는 쪽을 그대로 반영합니다: 그 레이블러는 어떤 구성 요소에게도 고정점으로 뛰어오르라고 요구하지 않으며; 한 라운드짜리 연산자를 세 번 호출함으로써 깊이 3에 도달하고, 각 라운드는 감사 가능합니다. 작고 인증된 단계에 의한 정확한 추론은, 이 권이 그 경합을 벌인 모든 곳에서 한 번의 근사를 이겨 왔습니다: 회로 대 직접 열거에서, 증명 집계에서, 그리고 이제 영어에서 말입니다.
아직 풀리지 않은 부분
계측 도구는 행동을 측정합니다; 우리가 정말 신경 쓰는 주장은 메커니즘이며, 그 둘 사이의 간극이 이 장의 정직한 잔여물입니다. 완벽한 깊이별 곡선조차도 그것을 만들어 내는 것이 연역이라는 것을 인증할 수 없습니다. 우리 자신의 표가 그 점을 축소판으로 증명합니다: 깊이 0과 1에만 주목을 국한하면 대역의 곡선은 1.0000과 0.9659를 나타내어 추론기와 구별할 수 없지만, 깊이-2 붕괴와 탐침은 그 유능함이 줄곧 국소적인 지름길들의 뭉치였음을 드러냅니다. 잘못된 특징으로부터 나온 옳은 답은 가설적인 실패 양상이 아닙니다; 그것은 깊이 1을 넘는 그 표의 모든 행이 기록하는 바이며, 오직 더 넓은 계측 도구(더 많은 깊이, 더 많은 섭동)만이 그것을 폭로했습니다. 트랜스포머의 경우, 더 넓은 계측 도구는 도움이 되지만 그 질문을 결코 닫지는 못합니다: 아직 탐침되지 않은 어떤 지름길 계열이 관찰된 일반화 뒤에 언제나 숨어 있을 수 있습니다. 5권은 이를 정확히 추론 지름길(reasoning-shortcut) 문제로 정식화하며, 훈련 신호와 부합하는 서로 다른 메커니즘들을 세는 장치를 갖추고 있습니다. 그리고 두 번째 정직함도 갚아야 합니다: 여기서 측정된 모든 것은 인공적이고 템플릿화된 영어의 닫힌 세계 안에서 살아가며, 그 안에서는 모든 문장이 파싱되고, 모든 술어가 알려져 있으며, 증명 불가능성은 곧 거짓을 뜻합니다. 그 실험실이 바로 금 레이블을 가능하게 만든 것이며, 그것은 언어가 아닙니다. 이 발견들이 열린 어휘, 모호성, 그리고 열린 세계 속에서도 살아남는지는 지금부터 두 장 뒤에 다룰 벤치마크 설계 질문입니다.
왜 중요한가
이 장은 6부의 방법론적 토대이며, 그 교훈은 이 책을 따라 양방향으로 여행합니다. 뒤로는: 이 계측 도구는 오직 상징적 기둥이 부패하지 않는 레이블을 공급하기 때문에 존재하며, 이 장의 조용한 영웅은 예시에서 측정 장치로 승격된 1권의 전방 연쇄기입니다. 그 라운드들은 난이도 다이얼로 다시 해석됩니다. 이는 소유할 가치가 있는 일반 패턴입니다: 정확한 추론이 가능한 곳이라면 어디서든, 그것은 근사적 추론을 채점할 수 있으며, 그 채점은 그 주변의 균형화와 층화만큼만 좋습니다. 앞으로는: 5권의 모든 신뢰 질문(설명의 충실성, 보정, 추론 지름길, 검증기가 관문을 지키는 생성)은 규모가 커진 이 장의 질문이며, 그곳으로 가져가야 할 두 가지 발견은 정확합니다. 첫째, 깊이 층화되고, 균형 잡히고, 섭동으로 검증된 평가는 전체 정확도가 갈라놓을 수 없는 가설들을 갈라놓을 수 있습니다. 둘째, 생성이 신뢰되어야 할 때는, 작고 검사 가능한 단계들을 생성하고 그것들을 모델 바깥에서 합성해야 합니다; 구성상의 충실함이 희망에 의한 충실함을 이깁니다. 모델 출력에 따라 행동하는 시스템들, 그리고 이 시리즈가 지향하는 SATORI 방식의 아키텍처들은 이 둘 모두를 물려받습니다.
핵심 용어
- RuleTaker: 닫힌 세계 아래에서 생성된, 깊이 층화되고 레이블 균형화된 데이터로, 작은 영어 이론들에 관한 참/거짓 질문에 답하도록 트랜스포머를 훈련시키는 실험입니다; 이 장의 주제는 그 헤드라인이 아니라 그 계측 도구입니다 [1].
- 최소 유도 깊이(minimum derivation depth): 원자에 대한 어떤 증명 트리든 그중 가장 작은 높이이며, 여기서 증명했듯이 그 원자가 나타나는 즉각귀결 연산자 의 첫 라운드와 같습니다.
- 실패로서의 부정 / 닫힌 세계 가정(negation-as-failure / closed-world assumption): 증명 불가능한 원자는 거짓이라는 관례이며, "not "라는 규칙 조건은 정확히 를 증명할 수 없을 때 성립합니다; 부정이 층화(stratified)되어 있어서, 즉 어떤 규칙도 유도할 수 없는 술어에만 적용되므로 여기서는 안전합니다.
- 레이블 균형화(label balancing): 모든 깊이 층이 정확히 50/50 참/거짓이 되도록, 그리고 표면 표지가 레이블과 독립이 되도록() 질문 은행을 구성하는 것으로, 그래서 논리에 눈먼 어떤 전략도 우연 수준의 점수를 받습니다.
- 얕게 훈련하고 깊게 시험하기(train shallow, test deep): 최대 깊이 1(동반 모듈) 또는 3(발표된 논문)의 질문만으로 훈련하고 그 너머의 깊이별 정확도를 측정하여, 합성적 일반화를 암기로부터 분리해 내는 규약입니다.
- 대역 추론기(stand-in reasoner): 동반 모듈의 국소 특징 뭉치 로지스틱 모델입니다: 깊이 0에서 완벽하고, 깊이 1에서 0.9659, 깊이 2와 3에서는 정확히 0.5000이며, "연역 없는 높은 정확도"의 구체적인 얼굴입니다.
- 불변성/민감성 탐침(invariance/sensitivity probe): 최소한의 논리적 연산으로 이론을 수정하고, 함의가 바뀔 때 정확히 그때 추론기의 답도 바뀔 것을 요구하는 것입니다 [4]; 동반 모듈의 부정-반전 탐침은 대역이 66개의 금 레이블 반전 가운데 12개를 놓치는 것을 잡아냈는데, 그 놓침 전부가 새로 부정된 조건을
one_step지름길이 무시하는 깊이-1 항목이었으며, 증명기의 1.000과 대비됩니다. - 일괄 대 반복 증명 생성(all-at-once vs iterative proof generation): ProofWriter의 두 전략입니다: 한 번의 패스로 증명 전체를 내놓는 것(보지 못한 깊이 5에서 증명 정확도가 27.4퍼센트로 떨어집니다) 대, 한 번에 하나씩 검사 가능한 함의를 생성하고 반복으로 합성하는 것(구성상 검증 가능하며, 보지 못한 깊이 5에서 증명 정확도 87.8퍼센트입니다) [2].
이 장이 이어지는 곳
소프트 추론기는 영어를 읽고 곧바로 답했으며, 이 계측 도구는 그것을 어디까지 신뢰할 수 있는지를 정확히 보여 주었습니다. 뻔한 대안은 그 직접적인 경로를 아예 거부합니다: 영어를 형식 논리로 파싱하고, 그 논리를 훈련이 아니라 정리에 의해 건전한 증명기에 건네준 다음, 증명기의 답을 돌려주는 것입니다. 다음 장인 번역 후 증명은 이 장이 커밋한 것과 동일한 20개의 평가 이론과 동일한 1,500개의 질문 위에 그 파이프라인을 짓습니다(동반 모듈은 바로 이 목적을 위해 그것들을 내보냅니다). 그래서 두 아키텍처는 동일한 지반 위에서 만나고, 실패 양상은 자리를 바꿉니다: 소프트 추론기의 합성 오류는 사라지고, 번역 오류가 그 자리를 차지합니다.
짝이 되는 코드: examples/integration/ruletaker_lite.py는 계측 도구 전체를 구현합니다: 통제된 영어 생성기(87–147행), 실패로서의 부정에 대한 접지 컴파일과 1권의 t_p 위에 지어진 깊이 추적 레이블러(153–201행), 균형 잡힌 질문 은행(209–263행), 대역과 그 손으로 적은 그래디언트(268–320행), 부정-반전 탐침(327–366행), 그리고 여기 인용된 모든 숫자를 지키는 단언들(372–425행)입니다. python3 examples/integration/ruletaker_lite.py를 실행하면 이 장의 출력을 바이트 단위까지 재현할 수 있습니다; 그 실행은 SUMMARY ruletaker_lite: eval_n=1500 acc_by_depth=1.000/0.966/0.500/0.500 probe_flipped=66 probe_track=0.818으로 끝납니다.