추론 지름길: 맞는 답, 틀린 이유
📍 현재 위치: II부 · 식별 가능성과 추론 지름길 — 4장. 규칙 추출은 훈련된 가중치에서 기호를 읽어냈습니다; 이 장은 신경-기호 모델이 스스로 학습한 기호가 설계자가 생각하는 그 의미를 정말로 지니고 있는지를 묻습니다.
4권은 진짜배기 절정으로 끝을 맺었습니다. 하나의 논리 프로그램이 값싼 과제 수준 레이블을 정밀한 기호 수준 훈련 신호로 바꾸어 냈습니다: 열다섯 개의 관련/무관 쌍 레이블만으로, 주제 레이블은 단 하나도 쓰지 않고, 은닉 주제 분류기를 100% 정확도까지 훈련시켰습니다. 이 권의 1부는 그다음으로, 우리가 추론 과정을 들여다볼 수 있는 모델을 위한 도구들을 지었습니다. 이 장은 그 도구들을 원격 지도(distant supervision) 자체에 겨누어, 작은 글씨로 적힌 단서를 찾아냅니다. 그 성공은 진짜였지만 보장된 것은 아니었으며, 한 단계만 더 어려운 과제에서는 소수의 결과로 전락합니다. 신경-기호 모델은 레이블 가능도(likelihood)를 정확히 극대화하고, 레이블이 낼 수 있는 모든 시험을 통과하면서도, 여전히 잘못된 것을 의미하는 개념을 학습했을 수 있습니다. 이 실패 양상에는 이름이 있고, 정밀한 정의가 있으며, 놀랍게도 정확한 개수까지 있습니다. 바로 추론 지름길(reasoning shortcut)입니다 [1].
복도의 전등이 두 스위치에 배선되어 있어서, 두 스위치가 서로 다를 때만 불이 켜진다고 상상해 보십시오: 하나는 위로, 하나는 아래로. 전기 기사가 배전반을 다시 배선하다가 실수로 두 스위치의 전선을 맞바꿉니다. 그 전등에 대해 누가 어떤 시험을 해도 영원히 통과하는데, "두 스위치가 서로 다르다"는 것이 대칭적인 조건이기 때문입니다: 스위치를 맞바꾸어도 전등이 보여줄 수 있는 그 무엇도 달라지지 않습니다. 이 뒤섞임은 누군가가 개별 스위치가 무엇을 뜻하는지에 의존하기 전까지는 보이지 않습니다: "왼쪽 스위치만 내려라"라는 지시는 이제 배전반에 붙은 레이블이 말하는 것과 정반대의 일을 합니다. 추론 지름길이 정확히 이것입니다. 모델의 최종 답(전등)은 완벽합니다; 그 내부 기호(스위치 배선)는 뒤섞여 있습니다; 그리고 답을 아무리 많이 시험해도 이를 드러낼 수 없는데, 잘못된 배선이 시험이 내놓을 수 있는 모든 입력에서 옳은 전등 동작을 만들어 내기 때문입니다.
이 장에서 다루는 내용
- 4권 성공 사례에 대한 감사: 원격 지도 예측기를 다시 진술하고 기호 하나하나를 풀어 해석하며, 그것이 불러일으키는 불안정한 질문을 던집니다: 은닉 개념이 옳게 나왔을 때, 그것은 필연이었을까요, 아니면 운이었을까요?
- 추론 지름길의 정의: 의도되지 않은 최적점이라는 정의와, 그 결정론적 골격, 즉 관측된 데이터 위에서 지식과 교환되는 개념 재배정들, 다시 말해 레이블이 결코 보지 못하는 뒤섞임들의 집합을 다룹니다.
- 개수를 정확하게 만들기: 계수 정리(counting theorem)를 진술하고 출처를 밝히며, 홀짝 파이버(parity fiber)로부터 XOR(exclusive or, 배타적 논리합) 과제의 닫힌 형식을 유도하고, companion 코드가 256개의 후보 사상을 모두 열거하며, 자명하지 않은 생존자 하나를 손으로 직접 따라가 봅니다.
- 지름길 공장으로서의 지지집합 편향: 훈련에서 개념 조합 하나를 빼는 것이 왜 최적점의 개수를 두 배로 늘리는지를, 커밋된 엄격한-더-큼 assert와 함께, 그리고 개념 F1이 거의 0으로 무너지는 동안 레이블 F1은 높게 유지되는 실전 규모의 메아리와 함께 다룹니다.
- 현행범으로 잡힌 지름길: 시드를 고정한 스무 번의 훈련 실행이 모두 레이블 관점에서 완벽하지만 그중 열다섯이 지름길 위에 내려앉으며, 표시된 시드의 개념 혼동 행렬을 한 줄씩 읽고, 그 뒤섞임이 개념을 이후에 사용하는 어떤 용도에도 무엇을 하는지 살핍니다.
- 네 가지 위험 요인과 첫 번째 보수책: 얼마나 많은 지름길이 존재하는지를 지배하는 것이 무엇인지, 그리고 훈련 지점의 10%에 대한 개념 지도(concept supervision)의 측정된 효과를, 재배정의 그림 안에서 설명합니다.
감사대에 오른 성공
4권의 DeepProbLog 장이 정확히 무엇을 보여주었는지 되짚어 봅시다. 여섯 개의 문서, 세 개의 은닉 주제, 그리고 오직 쌍 레이블("이 두 문서는 서로 관련이 있다", "이 두 문서는 그렇지 않다")만으로 이루어진 지도(supervision). 논리 규칙 relevant(D1,D2) :- topic(D1,T), topic(D2,T)는 각 쌍 레이블을 정확한 추론을 거쳐 잠재적 주제 결정으로 역방향으로 실어 날랐고, examples/integration/deepproblog_mini.py의 커밋된 실행은 다음으로 마무리되었습니다:
hidden-topic accuracy: 100% — no topic label was ever shown to training
그 장 자신의 마무리 절은 느슨한 실마리 하나를 짚었습니다: 훈련 손실은 전적으로 질의에 관한 것이었으므로, 은닉 기호의 완벽한 복원은 "운 좋은 결과이지, 인증된 결과가 아니다"라는 것입니다. 이 장은 그 말을 정밀하고, 정량적이며, 재현 가능하게 만듭니다.
먼저 대상들을 하나씩 풀어 봅시다. 입력 (이미지, 문서, 센서 프레임)는 참값 개념 상태(ground-truth concept state) 에 의해 만들어집니다. 는 세계가 를 생성하는 데 실제로 사용한 이산적인 잠재 속성들의 벡터이며, 4권의 과제에서 는 문서의 참된 주제였습니다. 모델은 개념 추출기(concept extractor) 를 담고 있습니다: 매개변수 (그 모든 가중치의 모음)를 가진 신경망으로, 를 읽어 학습된 개념 상태(learned concept state) 에 대한 확률분포를 출력하며, 는 설계자가 네트워크가 보고하기를 의도한 것과 같은 이산 공간을 범위로 합니다. 그 위에는 고정되고 올바른 사전 지식(prior knowledge) 가 놓여 있는데, 이는 개념 상태를 관측 가능한 레이블(label) 와 관계 짓는 논리 이론입니다. 이 계열 전체가 공유하는 예측기는, 이 장이 따르는 분석에서 하나의 방정식으로 적히며 [1], 다음과 같습니다:
기호 하나하나 읽어 봅시다. 합 는 추출기가 보고할 수 있는 모든 개념 상태 (모든 "세계") 위를 훑습니다. 표기 는 레이블 변수 를 구체적인 값 로 치환한 지식을 뜻하며, ("가 치환된 지식을 충족한다", 1권의 튜른스타일(turnstile) )는 개념 상태 가 레이블 와 논리적으로 일관될 때 성립합니다. 지시 함수(indicator function) 는 그 논리적 검사를 산술로 바꿉니다: 안의 조건이 성립하면 이고, 그렇지 않으면 입니다. 그러므로 이 방정식은 이렇게 말합니다: 레이블 의 확률은 지식이 로 사상하는 개념 상태들에 대한 추출기 확률의 총합이라고요. 충실성에 관한 참고 하나: 이 분석의 일반형은 지시자를 와 일관되는 레이블의 개수, 즉 라고 적는 정규화 항으로 나눕니다; XOR은 각 개념 상태에 정확히 하나의 레이블만 배정하므로 이며(companion의 predict_eq1 독스트링이 이를 기록합니다), 지시자 형태가 여기서는 정확히 성립합니다. 논리는 어떤 매개변수도 기여하지 않습니다; 학습 가능한 자유도는 모두 안에 있습니다.
companion 코드 examples/frontier/shortcuts.py는 이 실패가 눈에 보이는 가장 작은 과제 위에서 이 예측기를 구체화합니다. 이진 개념이 두 개이므로 개념 공간은 네 상태 이며; 지식은 , 즉 배타적 논리합(exclusive or, 줄여서 XOR, 기호는 )으로, 두 비트가 다를 때 정확히 참입니다; 입력은 정사각형의 네 꼭짓점 둘레에 흩뿌려진 2차원 점들로, 상태마다 꼭짓점이 하나씩이므로 의도된 개념은 기하학적으로 복원 가능합니다; 그리고 추출기는 고정된 무작위 특징 위의 두 개의 작은 소프트맥스 헤드로, 개념마다 헤드가 하나씩입니다(과제 상수, 데이터 분할, 고정된 특징 층은 shortcuts.py 69–112행에; 헤드 자체는 forward, 150–155행에 있습니다). 세계에 대한 합은 문자 그대로 취해집니다(158–163행):
def predict_eq1(pi1: np.ndarray, pi2: np.ndarray, y: int) -> np.ndarray:
"""Eq. 1, summed literally over the four concept worlds:
p_θ(y|x; K) = Σ_c 1{c ⊨ K[Y/y]} · p_θ(c|x), with p_θ(c|x) = π₁[c₁]·π₂[c₂]
and c ⊨ K[Y/y] iff c₁ ⊕ c₂ = y (Z(c;K) = 1: XOR labels each c uniquely)."""
return sum(pi1[:, c1] * pi2[:, c2]
for c1, c2 in COMBOS if (c1 ^ c2) == y)
이는 새로운 기계 장치가 아닙니다; 이것은 4권의 기계 장치이며, 이 모듈은 그 연속성을 주장이 아니라 증명으로 보입니다. 이 네-세계 합 하나하나가, 400개의 테스트 지점 전부에서, 두 레이블 모두에 대해, 훈련 전과 후 모두, 4권의 컴파일된 회로 가중 모델 계수(weighted model counting) 엔진에 대비해 인증되며, 손으로 유도한 훈련 그래디언트는 중심 유한차분(central finite difference)에 대비해 인증됩니다. 커밋된 실행은 회로에 대한 최대 불일치가 이고, 정규화 에 대한 불일치가 이라고 보고하는데, 둘 다 허용오차에 대비한 것이며, 그래디언트에 대해서는 허용오차에 대비해 입니다(shortcuts.py, 372–384행). 감사받는 이 예측기는 정확히 4권이 예찬했던 그 예측기입니다. 이제 질문이 남습니다: 훈련은 레이블의 가능도를 극대화합니다. 그 목적 함수는 개념에 대해 실제로 무엇을 못박을까요?
의도되지 않은 최적점
자연 데이터로 훈련된 심층 신경망은 지름길 학습(shortcut learning)으로 악명이 높습니다: 설계자가 의도한 특징 대신, 훈련 레이블을 가장 값싸게 예측하는 아무 특징(배경 텍스처, 워터마크 위치, 병원 스캐너의 흠집)에나 달라붙는 것입니다 [2]. 지식 가 개념이 레이블을 어떻게 결정하는지를 하드코딩하므로, 신경-기호 아키텍처는 면역이 있으리라고 기대할 법도 합니다. 이 장이 의지하는 정의는 그렇지 않다고 말하며, 그것도 가능도 그 자체 안에서 그렇게 말합니다 [1].
정의(추론 지름길). 를 참값 개념이 를 통해 유도하는 레이블 분포라 합시다. 매개변수화 는 훈련 분포 위에서 가 와 일치하여 레이블 가능도가 최대가 될 때 최적점(optimum)입니다. 최적점은 그 개념 분포 가 참값과 다를 때 추론 지름길(reasoning shortcut)이 됩니다: 모델은 모든 레이블에 대해서는 정확히 옳지만, 그 이유는 개념에 대해 틀려 있습니다.
이 정의의 그 무엇도 잡음, 과소적합(underfitting), 혹은 최적화 실패와는 무관합니다. 추론 지름길은 훈련 목적 함수의 전역 최댓값(global maximum)입니다. 경사 하강법이 속고 있는 것이 아닙니다; 그것은 완벽한 답을 여럿 제안받고 있으며, 우리가 원하는 답을 선호할 이유가 전혀 없을 뿐입니다.
이 의도되지 않은 최적점들의 구조를 보려면, 문제를 그 결정론적 골격까지 벗겨 내야 합니다. 우리 과제에서 지식은 결정론적입니다: 각 개념 상태는 정확히 하나의 레이블을 받습니다. 그 레이블을 라고 쓰고, 이를 지식의 레이블 사상(label map)이라 부릅시다; 여기서는 로, 네 개의 입력에 대해 한 비트가 나옵니다(shortcuts.py, 77–80행). 이제 재배정(relabeling)을 생각해 봅시다: 참값 상태에서 개념 상태로 가는 함수 로, 라고 씁니다. 여기서 는 세계가 생성하는 상태들의 집합이고 는 추출기가 보고하는 상태들의 집합입니다(우리 과제에서는 둘 다 같은 네 상태입니다). 재배정은 가능한 체계적 오류를 기술합니다: 세계가 상태 에 있을 때마다, 추출기는 그 대신 를 보고합니다.
그 체계적 오류는 언제 훈련에서 살아남을까요? 추출기가 그 오류에 완전히 몸을 던진다고 가정해 봅시다: 상태 에서 생성된 입력 에 대해, 추출기는 자신의 확률 전부를 에 걸며, 따라서 입니다. 이를 예측기에 대입해 봅시다. 세계에 대한 합은 단 하나의 항 로 무너지고, 지시자 가 남습니다. 지식이 결정론적이므로, 개념 상태 가 를 충족하는 것은 지식이 그 상태에 그 레이블을 배정할 때, 즉 일 때와 정확히 같으며, 따라서 살아남는 지시자는 입니다. 의 참된 레이블은 입니다. 그러므로 모델은 정확히 다음 조건이 성립할 때, 그 참된 레이블에 가능한 최댓값인 확률 을 배정합니다:
여기서 는 "가 지지집합의 원소이다"라고 읽으며(기호 은 집합의 원소임을 뜻합니다), 는 훈련 분포에서 무작위로 뽑힌 것으로 본 참값 상태( 위를 범위로 하는 확률 변수)이고, , 즉 그 지지집합(support)은 훈련에서 실제로 일어나는 상태들의 집합입니다. 말로 하면: 는 관측된 데이터 위에서 지식과 교환되어야(commute) 합니다. "개념을 뒤섞기"를 "지식을 적용하기"와 합성하면, 지식을 곧바로 적용한 것과 같은 레이블이 나와야 합니다. 이 조건은 정확히 "레이블은 구별할 수 없다"는 진술입니다: 모든 입력은 여전히 확률 로 올바른 레이블을 받고, 가능도는 그 전역 최댓값에 자리하며, 모든 레이블 기반 지표는 의도된 해법의 그것과 동일합니다: 정확도, 에 대한 보정(calibration), held-out 가능도, 그리고 F1(클래스별 정밀도와 재현율의 요약 지표로, 스윕 절에서 완전하게 정의합니다)이 그렇습니다. 항등 사상 는 언제나 이 조건을 만족합니다; 문제는 그 밖에 또 누가 만족하느냐는 것입니다.
같은 레이블 가능도의 두 완벽한 최적점: 의도된 항등 사상과 개념 맞바꿈은 모든 입력에서 동일한 레이블을 만들어 내므로, 어떤 레이블 지표도 이 둘을 갈라놓을 수 없습니다.
저자가 AI의 도움을 받아 직접 제작한 원본 도해.
틀리는 방법을 헤아리기
교환 조건은 형체 없는 걱정거리를 유한한 조합론적 대상으로 바꾸어 놓으며, 이 이론의 중심 결과는 그 위험을 정확하게 셀 수 있는 것으로 만듭니다. 우리의 표기법으로 정밀하게 진술하면:
정리(지름길 개수, 증명 없이 진술). 유한한 개념 공간 위의 결정론적 지식 에 대해, 그리고 입력이 자신의 참값 상태를 결정할 때(서로 다른 상태는 결코 같은 입력을 만들어 내지 않는다는, 이 분석의 가역성 가정 A1으로, 이 장난감은 네 꼭짓점 군집이 겹치지 않으므로 이를 만족합니다), 레이블 가능도의 결정론적 최적점들은 관측된 지지집합 위에서 와 교환되는 재배정 들에 정확히 대응하며, 그 개수는
여기서 는 에서 로 가는 모든 함수의 집합이고, 큰 쐐기 기호 는 관측된 모든 상태에 대한 논리적 "그리고"이며, 는 함수 합성("를 적용한 다음 를 적용한다")입니다. 항등 사상을 제외한 모든 허용 가능한 는 추론 지름길이므로, 지름길의 개수는 입니다.
이 정리는 수입된 것이지 여기서 증명되는 것이 아닙니다: 이는 추론-지름길 분석의 정리 2이며, 그 증명(결정론적 최적점이 정확히 이 재배정들이며, 그보다 많지도 적지도 않다는 것)은 이 권의 범위를 넘어섭니다 [1]. 충분성 방향은 앞 절에서 유도한 점질량(point-mass) 대입이며, companion 코드 역시 이 정리를 증명하는 대신 평가합니다: 개념 공간에는 네 개의 상태가 있으므로 는 개의 함수를 담고 있고(정의역 상태마다 하나씩, 상(image)에 대한 네 번의 독립적인 선택), 이는 곧바로 낱낱이 열거하기에 충분히 적은 수입니다(shortcuts.py, 116–132행):
def admissible_alphas(support: list[tuple[int, int]]) -> list[tuple[int, ...]]:
"""Enumerate ALL deterministic relabelings α: 𝒢 → 𝒞 (tuples of image
indices into COMBOS, one per ground-truth state, |𝒜| = 4⁴ = 256) and
keep those label-indistinguishable from the truth on the observed
support — the indicator inside Theorem 2's sum,
N_opt = Σ_{α ∈ 𝒜} 1{ ⋀_{g ∈ supp(G)} (β_K ∘ α)(g) = β_K(g) }.
Every admissible α except the identity is a reasoning shortcut; the
support only constrains OBSERVED g's, so a smaller support means fewer
conjuncts and strictly more surviving α."""
supp = set(support)
keep: list[tuple[int, ...]] = []
for images in itertools.product(range(len(COMBOS)), repeat=len(COMBOS)):
# (β_K ∘ α)(g) = β_K(g) for every OBSERVED g; unobserved g's are free.
if all(beta_k(COMBOS[images[i]]) == beta_k(g)
for i, g in enumerate(COMBOS) if g in supp):
keep.append(images)
return keep
XOR에 대해서는 개수가 완전히 유도할 수 있는 닫힌 형식도 가집니다. 레이블 사상 는 네 상태를 두 개의 파이버(fiber, 원상 집합, 하나의 레이블을 공유하는 상태들)로 분할합니다: 레이블-0 파이버 과 레이블-1 파이버 이며, 각각 크기가 입니다. 교환 조건은 관측된 각 상태를 독립적으로 제약합니다: 는 자신의 파이버 안에 있는 어떤 상태든 될 수 있으므로 정확히 가지 선택이 있습니다. 관측되지 않은 상태는 큰 쐐기 기호의 어떤 연언지에도 나타나지 않으므로, 그 상은 제약이 없습니다: 가지 선택입니다. 함수란 정의역의 각 점에 대해 정확히 하나의 독립적인 상을 갖는 것이므로 이 선택들은 곱해집니다. 관측된 상태들의 집합을 라고 쓰고, 그 크기, 즉 네 상태 중 관측된 상태의 개수를 라고 쓰면,
전체 지지집합, 즉 일 때: 입니다. 커밋된 실행은 열거 결과를 닫힌 형식에 대비해 확인해 줍니다:
[1] Theorem 2: count the alpha with (beta_K o alpha)(g) = beta_K(g) on all observed g
support |supp| closed form admissible shortcuts
full 00 01 10 11 4 2^4*4^0 = 16 16 15
biased 00 01 -- 11 3 2^3*4^1 = 32 32 31
dropping ONE observed combination doubles the optimum set (the EvenOdd move)
example shortcuts admitted at full support:
00->00 01->10 10->01 11->11 (the concept swap)
00->11 01->10 10->01 11->00 (the double flip)
00->00 01->01 10->10 11->00 (not even bitwise: 11 collapses onto 00)
admitted ONLY under bias: 00->00 01->01 10->00 11->00
완벽한 최적점 열여섯 개; 그중 하나가 진실이고; 열다섯 개가 지름길입니다. 자명하지 않은 생존자 하나를 손으로 직접 따라가 봅시다. 개념 맞바꿈(concept swap) 은 두 혼합 상태를 서로 맞바꾸고 순수 상태는 그대로 고정합니다. 네 상태 각각에서 교환 조건을 확인해 봅시다:
| 교환되는가? | ||||
|---|---|---|---|---|
| 예 | ||||
| 예 | ||||
| 예 | ||||
| 예 |
맞바꿈이 살아남는 이유는 XOR이 두 인자에 대해 대칭이기 때문입니다: 과 를 맞바꾸어도 는 결코 달라질 수 없습니다. "개념 1"을 참된 개념 2를 의미하는 것으로 학습하고 그 반대도 마찬가지인 모델은 존재할 수 있는 모든 입력에서 올바른 레이블을 내놓으므로, 훈련 손실은 정확히 그 전역 최솟값에서 그 모델을 위한 문을 열어 둡니다. 개념 맞바꿈이 무엇이 아닌지를 짚어 둡시다: 이것은 4권이 측정하고 눈감아 준 무해한 레이블-전환 순열(label-switching permutation)이 아닙니다. 그곳에서는 세 개의 익명 주제 군집에 지정된 이름이 없었으므로, 일관된 어떤 이름 붙이기도 구성상 옳았습니다. 여기서는 두 개념이 입력 좌표에 묶인 고정되고 서로 다른 의도된 의미를 가지며(는 좌표 를 읽습니다), 이 분석은 이 점을 명시적으로 밝힙니다: 고정된 의도된 의미론을 가진, 순열되었지만 일관된 개념 사상은 여전히 지름길입니다 [1]. 그에 따라 companion 코드는 재정렬 단계 없이, 있는 그대로의 참값에 대비해 개념을 채점합니다(shortcuts.py, 280–307행).
지지집합 편향은 지름길 공장이다
닫힌 형식 에는 지렛대가 하나 들어 있는데, 그것은 나쁜 방향을 가리킵니다. 관측된 상태 하나마다 인자 를 기여하고(그 파이버로 제약됨), 관측되지 않은 상태 하나마다 인자 를 기여합니다(제약 없음). 훈련 지지집합에서 상태 하나를 제거하면 그 인자가 에서 로 바뀝니다: 완벽한 최적점의 개수는 에서 로 두 배가 됩니다. 관측이 적을수록 큰 쐐기 기호 안의 연언지가 적어지고, 사라지는 연언지 하나하나가 선택 하나를 풀어 줍니다. 데이터 누락은 통계를 약화시키는 데 그치지 않습니다; 그것은 자신이 보여진 모든 것에 대해 정확히 옳은 모델의 개체군을 곱으로 늘립니다.
companion 코드는 지지집합에서 상태 하나만을 제거하여 이 조작을 수행하며(shortcuts.py, 352행), 그 효과의 방향을 단순히 더 큰 숫자가 아니라 엄격한 집합 포함 관계로 단언합니다(shortcuts.py, 362–368행):
full = admissible_alphas(COMBOS)
biased = admissible_alphas(BIASED_SUPPORT)
assert len(full) == 2 ** len(COMBOS) == 16
assert len(biased) == 2 ** len(BIASED_SUPPORT) * 4 == 32
assert IDENTITY in full, "the intended map must always be admissible"
# The EvenOdd move: a smaller support strictly ENLARGES the optimum set.
assert set(full) < set(biased) and len(biased) > len(full)
전체-지지집합 과제의 모든 최적점은 편향된 과제의 최적점으로 남으며(제약을 없애는 것은 생존자의 자격을 결코 박탈할 수 없습니다), 새로운 최적점 열여섯 개가 합류합니다. 커밋된 출력은 그 새 얼굴들 중 하나를 출력합니다: , , , 으로 보내는 사상입니다. 이를 파이버에 비추어 읽어 봅시다: 과 은 그대로 두고, 을 위로 무너뜨리며(둘 다 레이블 을 지니므로 전체 지지집합에서도 합법적입니다), 참된 레이블이 인 을 레이블이 인 으로 보냅니다. 전체 지지집합에서는 그 마지막 움직임이 치명적이어서 쐐기 기호의 연언지 하나가 실패합니다. 편향된 지지집합에서는 상태 이 결코 관측되지 않으므로 어떤 연언지도 그것을 언급하지 않으며, 이 나타나기라도 하면 레이블을 잘못 매길 모델도 자신이 받은 데이터에 대해서는 흠잡을 데 없는 최적점입니다.
이것은 장난감에서만 나타나는 인공물이 아닙니다; 이것은 실전 규모 시연 배후의 그 움직임입니다. 추론-지름길 연구는 MNIST-EvenOdd를 지었는데, 이는 백 가지 숫자 조합 중 일부만 훈련에 나타나는, 편향된 형태의 MNIST 덧셈 과제입니다(MNIST는 손으로 쓴 숫자 이미지의 표준 벤치마크이며, 이 과제는 숫자 이미지 한 쌍에 그 합을 레이블로 답니다). 그 위에서 최신 신경-기호 시스템들은 레이블 F1은 높게 유지하면서도 개념 F1은 거의 0으로 무너뜨립니다: 레이블 정확도가 높은 그 덧셈기 내부의 숫자 분류기는, 그 숫자가 전혀 아닌 것들을 숫자로 학습한 것입니다 [1]. 위의 표는 그 실험의 조합론적 메커니즘이며, 낱낱이 열거할 수 있을 만큼 작습니다.
| 지지집합 | 관측된 상태 | 닫힌 형식 | 허용 가능한 | 지름길 |
|---|---|---|---|---|
| 전체 | ||||
| 편향 |
시드 스무 개, 지름길 열다섯 개
최적점을 세는 것은 훈련이 잘못될 수 있는 방법이 몇 가지인지를 말해 줄 뿐, 경사 하강법이 실제로 얼마나 자주 그렇게 되는지는 말해 주지 않습니다. 추론 지름길은 전역 최적점이므로, 한 번의 성공한 실행은 그 위험에 대해 아무것도 보여 주지 못하고, 한 번의 실패한 실행도 그 빈도에 대해 아무것도 보여 주지 못합니다. 정직한 프로토콜은 스윕(sweep)입니다: 나머지 모든 것은 고정한 채, 독립적인 무작위 초기화로부터 여러 번 훈련을 실행하는 것입니다 [1]. companion 코드는 전체-지지집합 XOR 과제에서 레이블 지도만으로 스무 개의 시드를 훈련시키고, 각각을 held-out 데이터로 채점합니다: 에 대한 레이블 정확도와 매크로-F1(macro-F1)(F1은 한 클래스의 정밀도와 재현율의 조화평균이며, 매크로 평균은 클래스별 F1 점수의 비가중 평균으로, macro_f1에서 계산됩니다, shortcuts.py, 265–277행), 결코 보여지지 않은 참값에 대비한 의 개념 정확도와 매크로-F1, 그리고 경험적 재배정 이며, 이는 각 참 상태의 테스트 군집에서 최빈(가장 자주 나온) 예측 상태로 읽어냅니다(루프는 shortcuts.py, 331–347행, 채점은 280–307행). 커밋된 스윕은:
[3] the sweep: 20 seeds from label supervision only (concepts never shown)
seed F1(Y) acc(Y) F1(C) acc(C) learned alpha verdict
1 1.000 1.000 0.500 0.500 00->00 01->10 10->01 11->11 SHORTCUT
2 1.000 1.000 1.000 1.000 00->00 01->01 10->10 11->11 intended
3 1.000 1.000 0.000 0.000 00->11 01->10 10->01 11->00 SHORTCUT
4 1.000 1.000 0.000 0.000 00->11 01->10 10->01 11->00 SHORTCUT
5 1.000 1.000 1.000 1.000 00->00 01->01 10->10 11->11 intended
6 1.000 1.000 1.000 1.000 00->00 01->01 10->10 11->11 intended
7 1.000 1.000 0.500 0.500 00->00 01->10 10->01 11->11 SHORTCUT
8 1.000 1.000 1.000 1.000 00->00 01->01 10->10 11->11 intended
9 1.000 1.000 1.000 1.000 00->00 01->01 10->10 11->11 intended
10 1.000 1.000 0.500 0.500 00->11 01->01 10->10 11->00 SHORTCUT
11 1.000 1.000 0.500 0.500 00->00 01->10 10->01 11->11 SHORTCUT
12 1.000 1.000 0.000 0.000 00->11 01->10 10->01 11->00 SHORTCUT
13 1.000 1.000 0.500 0.500 00->11 01->01 10->10 11->00 SHORTCUT
14 1.000 1.000 0.500 0.500 00->11 01->01 10->10 11->00 SHORTCUT
15 1.000 1.000 0.733 0.750 00->00 01->01 10->01 11->11 SHORTCUT
16 1.000 1.000 0.500 0.500 00->00 01->10 10->01 11->11 SHORTCUT
17 1.000 1.000 0.200 0.250 00->11 01->10 10->10 11->00 SHORTCUT
18 1.000 1.000 0.000 0.000 00->11 01->10 10->01 11->00 SHORTCUT
19 1.000 1.000 0.733 0.750 00->00 01->01 10->01 11->11 SHORTCUT
20 1.000 1.000 0.000 0.000 00->11 01->10 10->01 11->00 SHORTCUT
RS frequency among near-optimal models (F1(C) under 0.95): 15/20 = 75%
every learned alpha above is one of the 16 admissible maps Theorem 2 counted
두 지표 열을 서로 맞대어 읽어 봅시다. 레이블 열은 의 벽입니다: 스무 개의 모델 모두가 모든 held-out 레이블에서 완벽하며, 위에 세워진 어떤 평가로도 구별할 수 없습니다. 개념 열은 참혹합니다: 스무 번 중 열다섯 번, 즉 75%가 지름길 위에 내려앉으며(출력의 마지막 줄이 RS 빈도라고 보고하는 바로 그 수치로, RS는 추론 지름길(reasoning shortcut)의 약자입니다), F1(C)는 , , 이고, 다섯 개 시드는 정확히 입니다. 학습된 사상들이 그 숫자들을 풀어 해석해 줍니다. 시드 3, 4, 12, 18, 20은 더블 플립(double flip), 즉 두 개념 모두를 비트단위로 부정하는 것을 찾아냈습니다: 예측된 비트는 언제나 틀리므로 개념 정확도는 정확히 이지만, (막대는 비트 부정을 나타내며, XOR의 두 입력을 모두 부정하면 상쇄됩니다)는 모든 레이블을 옳게 유지합니다. 시드 1, 7, 11, 16은 위에서 걸어 본 개념 맞바꿈을 찾아냈습니다: 각 개념 헤드는 정확히 일 때만 옳으며, 이는 테스트 집합의 절반이므로 정확도는 입니다. 시드 15와 19는 비트단위조차 아닌, 을 위로 무너뜨리는 사상을 찾아냈습니다: 네 상태 중 세 상태가 온전히 살아남아 정확도는 입니다. 그리고 스무 개의 학습된 사상 전부는, 적어도 의 군집 순도(cluster purity)로 확인했을 때(순도는 네 참 상태에 대해, 그 상태의 테스트 군집 중 최빈 예측 상태가 차지하는 몫의 최솟값입니다; shortcuts.py, 299–305행), 훈련이 시작되기 전에 열거가 만들어 낸 열여섯 원소 집합의 구성원입니다(394–397행). 정리의 전수 조사가 스윕의 동물원 전체를 예측한 것입니다.
harness는 그다음으로 표시된 시드 하나를 뽑아내어 그 훈련된 예측기를 회로에 대비해 다시 인증하고(shortcuts.py, 399–404행), 그런 다음 그 지름길을 온전한 해상도로 출력합니다(461–468행):
[4] caught in the act: seed 1 — F1(Y) = 1.000 with F1(C) = 0.500
confusion, true concept state (rows) vs predicted (columns), test set:
pred 00 pred 01 pred 10 pred 11
g = 00 100 0 0 0
g = 01 0 0 100 0
g = 10 0 100 0 0
g = 11 0 0 0 100
the learned map is 00->00 01->10 10->01 11->11:
the heads SWAPPED the two concepts — XOR is symmetric, so every label stays right
이 행렬은 틀렸으면서도 혼동 행렬이 가질 수 있는 만큼 깨끗합니다: 흩어짐도 없고, 잡음도 없이, 백 개짜리 블록 네 개뿐입니다. 행 과 은 대각선 위에 앉아 있고, 행 과 은 통째로 자리를 맞바꾸었습니다. 이 모델은 개념을 "대략 헷갈린" 것이 아닙니다; 완벽하게 최소화한 손실의 전역 최적점으로서, 그 맞바꿈을 완전한 확신을 가지고 정확하게 학습한 것입니다.
배치(deployment) 관점에서의 해석이야말로 이 장이 존재하는 이유입니다. 모델이 오직 레이블 기계로만 쓰인다면, 그 지름길은 정의상 무해합니다: 레이블이 옳으니까요. 하지만 신경-기호 시스템을 레이블 기계로 쓰려고 짓는 사람은 아무도 없습니다. 개념이야말로 그 산출물입니다: 그것은 같은 어휘 위에 지어진 새로운 과제로 옮겨지는 것이고(그곳에서는 가 갑자기 잘못된 입력에서 발화합니다), 개입(intervention)이 편집하는 대상이며("을 1로 두고 다시 실행하라"), 설명이 사람에게 드러내 보이는 대상입니다("모델은 이고 이기 때문에 이라고 결론지었다", 이는 여기서는 정확히 거꾸로입니다). 이 다운스트림 용도 하나하나가, 티 하나 없는 레이블 지표로 인증받은 채, 그 뒤섞임을 그대로 물려받습니다. 1부의 충실성 교훈이 한 단계 아래에서 되풀이됩니다: 그곳에서는 설명이 모델의 메커니즘을 잘못 보고할 수 있었고; 여기서는 모델 자신의 기호가 세계를 잘못 보고하며, 우리가 함께 내놓는 지표들은 그것을 볼 수 없습니다.
위험을 지배하는 네 가지 요인
이 분석은 어떤 과제가 얼마나 많은 지름길을 허용하는지, 그리고 훈련이 그중 하나에 내려앉을 가능성이 얼마나 되는지를 결정하는 네 가지 요인을 밝힙니다 [1]. 각각은 companion 코드 안에 이름 붙은 손잡이를 갖습니다.
지식 . 지름길은 레이블 사상의 파이버 안에 살고 있으므로, 그 개수는 가 얼마나 단사(injective)가 아닌지에 의해 통제됩니다. 한쪽 극단에서, 만약 가 단사라면(모든 개념 상태가 자신만의 레이블을 가진다면), 각 파이버는 원소 하나짜리가 되고, 관측된 모든 상태의 인자는 이 되며, 전체 지지집합에서 그 개수는 이 됩니다: 항등 사상 하나뿐, 지름길은 불가능합니다. XOR은 두 비트에 대해 완전히 균형 잡힌 경우입니다: 두 파이버 모두 크기가 이며, 맞바꿈과 이중 부정 아래에서의 XOR의 대칭성이 바로 스윕이 가장 즐겨 찾은 지름길들이 이용한 것입니다. 균형은 그 개수에 대해서는 극단조차 아닙니다: 파이버가 (크기 )과 (크기 )인 AND는, 같은 상태별 파이버 크기의 곱에 의해 전체 지지집합에서 개의 결정론적 최적점을 허용합니다; 어디에서든 단사가 아니라는 사실은 지름길을 낳습니다. 더 많은 개념 상태를 구별하는 더 풍부한 지식(대칭을 깨뜨리는 두 번째 레이블 추가, 예컨대 )은 파이버를 줄이고 지름길을 없앱니다. 이 장난감에서 그 손잡이는 beta_k 그 자체입니다(shortcuts.py, 77–80행): 이 장의 조합론 전체가 그 작은 함수 하나를 통해 흐릅니다.
데이터 지지집합. 위에서 유도하고 측정한 대로입니다: 관측되지 않은 상태 하나하나의 제약 인자가 파이버 크기에서 전체 개념-공간 크기로 느슨해지며, 최적점 집합은 오직 커질 수만 있습니다. 여기서는 16에서 32로 커졌습니다(shortcuts.py, 352행과 362–368행). 지지집합 편향은 실무자가 가장 적게 통제하고 가장 적게 감사하는 요인입니다; 편향된 MNIST 분할은 그것이 실전 규모에서 작동하는 모습을 보여 줍니다 [1].
목적 함수. 앞의 모든 논의는 손실이 오직 레이블 가능도뿐이라고, 즉 companion 코드 손실 함수의 sup_idx=None 경로라고 가정했습니다(shortcuts.py, 193–221행). 개념을 직접 건드리는 목적 함수 항은 무엇이든 최적점 집합 자체를 바꿉니다: 아래의 완화책이 정확히 그런 항이며, 다음 장들은 두 번째 항을 측정합니다(최적점들 가운데 결정론적이고 분리된 개념을 선호하는 엔트로피 항).
아키텍처. 정리가 세는 재배정들은 추출기가 실제로 구현할 수 있는 것들이며, 아키텍처는 바로 이 지점, 즉 합이 훑는 후보 집합 를 통해 개수 안으로 들어옵니다. 위의 정리가 를 256개 함수 전부로 잡은 것은 companion 코드의 추출기가 그 전부를 구현할 수 있기 때문입니다. 그 추출기는 인수분해된 출력 헤드(factorized output heads)를 갖습니다: 개념마다 하나씩인 두 개의 독립적인 소프트맥스 헤드이지만, 둘 다 입력 전체의 같은 공유 특징을 읽습니다(shortcuts.py, 150–155행). 이는 이 분석이 말하는 분리된(disentangled) 추출기가 아닙니다. 분석의 정의는 개념 분포가 로 인수분해될 것을 요구합니다. 여기서 는 학습된 개념 벡터이고 는 참값 상태(둘 다 확률 변수로 본 것)이며, 아래 첨자 는 번째 개념과 그에 대응하는 참값 인자를 고르고, 는 개념들에 걸쳐 곱합니다: 학습된 각 개념은 입력의 자신만의 부분으로부터 계산되어야 한다는 것입니다 [1]. companion의 헤드들은 이를 위반하며(학습된 맞바꿈에서 헤드 1은 참된 개념 2를 계산하고, 두 헤드 모두 두 좌표를 읽습니다), 그렇기 때문에 20개의 시드 중 15개가 지름길을 찾을 수 있었습니다. 각 헤드를 자신의 입력 좌표에만 국한하는 추출기야말로 이 의미에서 분리된 경우이며, 분석의 첫 번째 실험적 발견이 그것이 얼마나 큰 이득인지를 보여 줍니다: 전수 지지집합을 가진 XOR류 과제에서, 분리만으로도 지름길 빈도가 시험된 모든 백엔드에서 100%에서 0%로 떨어지는데, 가 모든 함수에서 개념별 사상들의 곱으로 무너져 맞바꿈이 더 이상 표현 가능하지 않기 때문입니다. 를 고정하는 것을 넘어, 아키텍처는 남은 사상들 위로 최적화기의 유역(basin) 크기가 어떻게 분포하는지도 결정합니다; 식별 가능성 장들이 이 요인을 측정 가능하게 만듭니다.
첫 번째 보수책: 몇 개의 개념 레이블
레이블 가능도가 열여섯 개의 최적점을 구별할 수 없다면, 구별할 수 있는 항을 추가하십시오. 가장 직접적인 지렛대이자, 이 분석이 자신의 DeepProbLog류 백엔드에 대해 필수적이라고 밝힌 것은(완화 연구의 전체 결론은 어떤 전략도 단독으로는 시험된 모든 방법에 충분하지 않다는 것입니다) [1] 개념 지도(concept supervision)입니다: 훈련 지점의 작은 일부에 참값 개념 레이블을 다는 것입니다. companion 코드는 120개의 훈련 지점 중 12개에 레이블을 답니다(10%, 계층화(stratified): 개념 상태마다 세 개씩; shortcuts.py, 315–321행), 그리고 헤드 마다, 지도받는 부분집합 (지도받는 훈련 인덱스들의 집합) 위에 교차 엔트로피를 하나 더합니다. 아래 발췌에서 는 헤드 가 자신의 개념의 두 값에 대해 내놓는 소프트맥스 출력 벡터이고, 는 훈련 지점 의 개념 에 대한 참 비트입니다:
if sup_idx is not None:
m = len(sup_idx)
for j, (pi, u) in enumerate(((pi1, u1), (pi2, u2))):
hit = np.maximum(pi[sup_idx, g[sup_idx, j]], EPS)
# L_c per head = −(1/m) Σ_{i∈𝒮} log π_j[g_{ij}], weighted by w_c.
total += W_C * float(-np.log(hit).mean())
# ∂(w_c·L_c)/∂π_j[g_{ij}] = −w_c/(m·π_j[g_{ij}]) on supervised rows.
u[sup_idx, g[sup_idx, j]] += -W_C / (m * hit)
(shortcuts.py, 223–230행; 추가된 그래디언트 경로는 기본 손실과 같은 유한차분 검사로 인증됩니다.) 이것이 왜 통하는지는 재배정의 그림 안에서 투명하게 드러납니다. 지름길 하나와, 참 상태가 이며 인 지도받는 예제 하나를 생각해 봅시다. 를 구현하는 추출기는 적어도 한 헤드에서 참 상태의 항목 에 거의 에 가까운 확률을 두므로, 항 는 무한대로 치닫습니다: 는 더 이상 결합 목적 함수의 최적점이 아닙니다. 그러므로 지도받는 상태 하나하나는 를 못박아, 그 상태의 선택 인자를 파이버 크기에서 로 줄입니다. 닫힌 형식에서, 네 상태 모두를 지도하는 것(계층화된 10% 표본이 달성하는 것)은 생존하는 개수를 에서 로 가져갑니다: 오직 항등 사상만 남습니다. 열두 개의 값싼 레이블이 지름길 개체군 전체를 무너뜨리는데, 이는 최적화기를 더 똑똑하게 만들어서가 아니라 어떤 매개변수화가 완벽한 것으로 셈해지는지를 바꾸어서입니다.
위에서 붙잡힌 바로 그 시드에 대한 커밋된 측정치입니다, 같은 초기화, 같은 에폭 수, 오직 12개의 개념 레이블만 추가한 것입니다:
[5] mitigation (Prop. 5): concept labels on 12/120 training points, same init
seed 1 F1(Y) F1(C) acc(C) learned alpha
before 1.000 0.500 0.500 00->00 01->10 10->01 11->11
after 1.000 1.000 1.000 00->00 01->01 10->10 11->11
10% concept supervision restores the intended semantics; labels stay perfect
개념 F1은 에서 으로 올라가고; 학습된 사상은 항등 사상으로 되돌아가며; 레이블 F1은 에서 조금도 움직이지 않습니다(shortcuts.py, 407–409행은 항등 사상과 거의 완벽한 레이블 및 개념 정확도를 단언합니다). 이것은 완화 지렛대를 가장 값싼 설정에서, 하나의 과제, 하나의 시드, 하나의 비율로 본 것입니다. 필요한 비율이 어떻게 커지는지, 다른 지렛대들(엔트로피 정규화, 다중 과제 지식, 앙상블)이 무엇을 사 오는지, 그리고 관측되는 것이 아니라 보장될 수 있는 것은 무엇인지: 그것이 식별 가능성 장의 정량적 프로그램이며, 그곳에서 이 전/후 쌍은 하나의 표가 됩니다.
아직 풀리지 않은 부분
계수 정리는 정확하며, 그 정확함은 이 장난감은 만족하지만 프론티어는 만족하지 않는 두 가지 가정 위에 서 있습니다. 첫째, 개념 공간은 열거 가능해야 합니다: 에 대한 합은 개의 후보 재배정에 걸쳐 있었지만, 스무 개의 이진 개념에 대해서는 이고 이어서, 열거를 훨씬 넘어섭니다(뒤이은 장들은 루프 대신 #SAT(#SAT) 풀이기, 즉 어떤 논제식을 만족하는 배정 하나를 찾는 대신 그 배정의 개수를 세는 명제 모델 계수기를 이용해 허용 가능한 재배정을 세며, 이는 그 도달 범위를 넓혀 주지만 무한정은 아닙니다). 둘째, 더 근본적으로, 지식 와 의도된 개념 어휘는 알려져 있어야 합니다: 틀린 의미들의 전수 조사는 옳은 것들의 고정된 목록에 대비해서 계산됩니다. 개념 어휘 자체가 학습되는 현대적 시스템, 이를테면 파운데이션 모델(foundation model)의 창발적 특징 같은 경우에는, 함께 교환할 가 아예 없으므로, 이 이론은 그 병의 이름은 댈 수 있어도 그 변종의 개수는 셀 수 없습니다. 그러므로 살아 있는 문제는 개념 레이블 없는 탐지입니다: 훈련된 모델의 행동만으로, 그것이 지름길 위에 앉아 있는지를 판정하는 것입니다. 스윕은 자신의 F1(C) 열을 채우기 위해 참값 개념이 필요했습니다; 배치 상황에서는 그 열이 정의상 비어 있습니다. 현재의 연구 방향은 불확실성을 통해 이 문제에 맞섭니다: 모델은 자신이 학습했어야 할 여러 허용 가능한 재배정 중 어느 것인지 알 수 없으므로, 최적점들에 대한 앙상블은 정확히 지름길이 사는 곳에서 개념에 대해 최대한 불확실해야 하며, 이 발상 위에 지어진 보정된 개념 앙상블(BEARS, "BE Aware of Reasoning Shortcuts"의 약자)은 지름길 위험을 측정 가능한 확신 신호로 바꿉니다 [3]. 그것은 이 장의 문제를 보정(calibration) 장의 문제로 바꾸어 놓으며, 이것이 이 권이 그 둘을 하나의 흐름으로 다루는 이유 중 하나입니다. 그리고 정직한 마무리입니다: 이 장의 메커니즘 그 무엇도 XOR에만, 두 개념에만, 혹은 스무 개의 시드에만 국한된 것이 아니었습니다. 논리를 통해 잠재 개념을 훈련시킨 4권의 모든 성공, 그중 으뜸인 DeepProbLog 계열은 [4], 이런 종류의 감사가 실행되기 전까지는 그 개념 의미론을 운, 아키텍처, 데이터 지지집합 덕분으로 빚지고 있습니다. 우리 자신의 100% 주제 복원은 오직 그 주제들이 익명이었기 때문에 살아남습니다: 그곳에서는 일관된 순열이 구성상 옳으며, 4권의 모듈은 정확히 그 잔여 자유도를 측정했습니다. 개념이 고정된 의도된 의미를 지니는 어떤 성공이든 이 장의 있는 그대로의 감사를 필요로 하며, 그것이 정확히 XOR 미니어처가 실행한 감사이고, 레이블 관점에서 완벽한 스무 개의 시드 중 열다섯 개가 실패한 그 감사입니다.
왜 중요한가
이 장은 이 권의 신뢰 이야기의 경첩입니다. 1부는 우리가 모델 추론의 설명을 신뢰할 수 있는지를 물었습니다; 추론 지름길은 그 질문이 더 깊이 들어간다는 것을 보여 줍니다. 모델의 내부 기호 그 자체가, 모든 출력이 옳은 동안에도, 체계적으로 틀릴 수 있기 때문입니다. 이 시리즈의 흐름에서, 이는 4권의 핵심 약속의 가격을 다시 매깁니다: 원격 지도는 실제로 과제 레이블을 기호 수준 훈련 신호로 바꾸지만, 그 변환은 미결정적(underdetermined)이며, 레이블을 값싸게 만든 바로 그 지식이 그 대칭성으로 인해 기호를 모호하게 만드는 바로 그 지식입니다. 독자 자신의 연구를 위해서는, 실무적인 교훈이 무뚝뚝합니다. 잠재 개념이 관여할 때는 실행이 아니라 스윕을 보고하십시오; 시드 하나의 개념 정확도는 하나의 유역에 대한 일화일 뿐입니다. 지지집합을 감사하십시오: 조합 하나가 빠지는 순간 개수가 두 배가 되었고, 실제 데이터셋은 어디에서나 조합이 빠져 있습니다. 레이블 지표를 있는 그대로, 즉 모든 허용 가능한 최적점에 걸쳐 상수인 의 함수로 취급하고, 그렇지 않은 것 중 가장 값싼 것을 위한 예산을 마련하십시오: 여기서는 한 줌의 개념 레이블이 데이터의 10%만으로 의미론 전체를 되사 왔습니다. 그리고 개념이 전이되거나, 개입되거나, 사람에게 보여질 때는, 어딘가에서, 어떤 부분집합에서든, 그것을 어디서든 믿기 전에 참값에 대비한 혼동 행렬을 요구하십시오.
핵심 용어
- 추론 지름길(reasoning shortcut, RS): 레이블 가능도는 극대화하면서 그 개념 분포는 참값과 다른 매개변수화입니다; 의도되지 않은 최적점으로, 모든 레이블에서는 옳지만 잘못된 이유 때문입니다.
- 레이블 사상 : 결정론적 지식에 대해, 각 개념 상태를 지식이 그에 배정하는 레이블로 보내는 함수입니다; 여기서는 입니다.
- 재배정 : 참값 개념 상태에서 모델의 개념 상태로 가는 함수로, 체계적인 의미 오류를 기술합니다; 관측된 지지집합 위에서 와 교환될 때 허용 가능합니다(최적점입니다).
- 파이버(fiber): 하나의 레이블을 공유하는 개념 상태들의 집합, 입니다; 관측된 상태는 오직 자신의 파이버 안에서만 재배정될 수 있으므로, 파이버의 크기가 지름길 개수를 좌우합니다.
- 지지집합(개념 분포의, support): 훈련에서 실제로 일어나는 개념 상태들의 집합입니다; 관측되지 않은 상태는 에 아무 제약도 부과하지 않으므로, 더 작은 지지집합은 최적점 집합을 엄격하게 넓힙니다.
- 계수 정리(counting theorem): 결정론적 최적점이 허용 가능한 재배정에 정확히 대응한다는, 수입된 결과로, 지름길 개수 을 (여기서는) 열거로, (대규모에서는) #SAT로 계산 가능하게 만듭니다.
- 개념 지도(concept supervision): 훈련 지점의 부분집합에 다는 직접적인 개념 레이블입니다; 지도받는 각 상태는 그 지점에서 를 못박아 그 선택 인자를 1로 줄이며, 모든 상태가 덮이면 오직 항등 사상만 남습니다.
- 분리된 추출기(disentangled extractor): 개념 분포가 로 인수분해되어 각 개념이 입력의 자신만의 부분으로부터 계산되는 추출기입니다; companion의 공유-특징 헤드들은 분리되어 있지 않으며, 아키텍처는 구현 가능한 재배정들의 후보 집합 를 고정함으로써 개수 안으로 들어옵니다.
이 다음으로 이어지는 것
이 장은 레이블 가능도의 최적점들이 하나의 집합을 이룬다는 것을 확립하고, 그 개수를 세었으며, 훈련이 그로부터 표본을 뽑는 것을 지켜보았습니다. 자연스러운 다음 질문은 그 역입니다: 어떤 조건에서 그 집합이 하나로 줄어들어, 가능도를 극대화하는 것이 증명 가능하게 의도된 개념을 복원할까요? 이는 식별 가능성(identifiability)의 질문이며, 통계 모델의 매개변수가 그 분포에 의해 결정되는 때를 묻는 것과 같은 형태입니다. 그리고 이 질문에는 정량적인 답이 있습니다: 얼마나 많은 개념 지도가 필요한지, 어휘를 공유하는 과제가 몇 개나 필요한지, 의 어떤 성질이 유일성을 사 오는지, 그리고 모든 지렛대가 공통의 근거 위에서 측정될 때 완화 표가 어떤 모습인지입니다. 식별 가능성은 정확히 그것을 다루며, 이 장이 계속 약속해 온 그 정리로 시작합니다: 레이블만의 함수는, 아무리 영리하더라도, 이 장이 그 지면을 들여 눈에 보이게 만든 그 차이를 결코 탐지할 수 없다는 정리입니다.
컴패니언 코드: examples/frontier/shortcuts.py는 네-세계 예측기를 4권의 회로 인증과 함께 구현하며, 계수 정리 배후의 재배정 열거, 전체-대-편향 지지집합 비교, 스무-시드 스윕, 그리고 개념-지도 완화책을 구현합니다. 이 장의 모든 숫자를 재현하려면 python3 examples/frontier/shortcuts.py를 실행하십시오; 이 실행은 결정적이며 모든 주장은 assert로 지켜집니다.