CRYSTAL · 2026-07-17 → 2026-07-26

결정 구조 생성으로 옮겨 보았다 — 사전등록 판정을 통과한 학습 성분은 하나도 없었다.

스도쿠에서 만든 방법이 사람이 손으로 정답을 확인할 수 없는 문제에서도 통하는지 보려고, 우리는 같은 모델을 결정 구조 설계로 옮겼다. 목표는 단순하다 — 원하는 밴드갭(전자가 뛰어넘어야 하는 에너지 문턱) 하나를 주면, 그 값을 갖는 결정의 원자 배치를 내놓는 것. 표기법부터 확인했다 — 실제로 존재하는 결정 64개를 우리 표기법으로 적었다가 다시 결정으로 되돌렸을 때, 되돌린 결정이 물리적으로 말이 되는 비율이 1.000이었다(64개 전부). 표기 단계에서 잃은 정보가 없다는 뜻이고, 그래서 뒤에 나올 실패를 "적는 방식이 나빴다"로 돌릴 수 없다. 그러나 그 위에서 시험한 학습 성분 셋 — 학생의 확신도로 좋은 후보 고르기, 전역 특징과의 결합, 잠재 최소기술길이(latent MDL) 손실 — 은 사전등록된 기준에서 차례로 전부 죽었다. 이 페이지는 그 네 번의 판정과, 그 사이에 우리가 한 번 틀렸다가 스스로 철회한 한 건을 순서대로 적는다.

FIG 0 · 입력(원하는 밴드갭) → 출력(원자 배치)

과제 개요: 밴드갭 목표 하나를 받아 생성기가 86토큰 캔버스를 채우고, 단위격자와 원자 좌표를 출력한다 왼쪽에 입력 2.0 전자볼트, 가운데에 재귀 생성기, 오른쪽에 단위격자 출력과 두 개의 판정 칩(구조 유효, 밴드갭 오차 0.3 전자볼트 이내)이 있다. 입력 2.0 eV 원하는 밴드갭 하나 생성기 GramDriftGenerator · 780만 파라미터 같은 계산을 6번 되풀이하며 답을 다듬는다 (K=6) … 86토큰 캔버스 칸마다 "어떤 정수를 쓸까"의 분류 문제 → 확신도가 토큰 확률로 정의됨 출력 — 단위격자 + 원자 좌표 struct_ok |밴드갭−목표| ≤ 0.3 eV

성공은 오른쪽 아래 두 칩이 동시에 켜지는 것이다. 확증 시드에서 그 비율은 1,280 중 56개, 0.04375였다(crystal_judge_b256.json). 생성기 규모·재귀 깊이의 출처: crystal_s0_full.log:50 "params gen=7.8M", experiments/crystal/crystal_s0_train.py:120 (K 기본값 6).

경고 (1) — SUN 0.442는 선행연구의 SUN과 같은 이름의 다른 숫자다

우리가 부르려던 안정성 판정기는 기계학습 원자간 퍼텐셜(CHGNet)이었다. 코드는 먼저 그것을 불러 원자당 에너지를 계산하려 하고, 그 시도가 실패하면 예외 처리(except Exception:) 안에서 조용히 대체품으로 내려앉는다 (latent_reasoning/faithful/crystal_sample.py:468-484). 이번 실행에서 실제로 그 일이 일어났고, 로그에는 stability_backend = surrogate_e_above_hull 한 줄만 남았다. 대체품은 에너지를 전혀 계산하지 않는다 — 원자당 부피가 5~40 ų 밴드 밖으로 벗어난 정도를 반환하고, 그 값을 0.1과 비교해 "안정"이라 부른다. 코드 주석 자신이 "NOT an MLIP, NOT DFT ... clearly a STAND-IN"이라 적었다.

게다가 crystal_sun.log에서 유일(Unique) 534/534, 신규(Novel) 534/534 — 두 다리가 후보를 한 개도 걸러내지 않았다. SUN 0.442는 501/1134이다. 이 501은 기하·구조 검사를 통과한 534개 중 부피 밴드까지 통과한 개수이므로, 두 관문으로 쪼개면 534/1134 = 0.471 과 501/534 = 0.938 이다(로그는 두 번째 비율을 따로 적지 않고 1134 기준 stable_rate 0.4417989로만 보고한다). 밀도범함수이론 이완 후 껍질 위 0.1 eV/원자 기준으로 38.57%를 보고하는 선행연구(MatterGen, Nature 2025)와 나란히 두면 안 된다. → 실험 5

경고 (2) — 우리는 한 번 틀린 주장을 발표했고, 하루 뒤 철회했다

2026-07-19에 "스도쿠에서 본 확신도 역상관 병리가 결정 구조에서도 재현된다(AUC 0.315)"고 적었다. 원자료를 다시 계산하니 0.5973이었다(오늘 crystal_gate_feat.json 534행에서 재현). 0.315는 타깃별로 따로 학습한 모형의 점수를 한 줄에 이어 붙여 계산한 데서 나온 교차검증 fold 아티팩트이고, 바로 전날 다른 과제(ARC)에서 발견해 문서에 적어 둔 함정과 같은 계열이다. 주장은 2026-07-20에 철회됐다.

나아가 이 페이지를 만들며 오늘 다시 계산해 보니, 철회문이 남겨 두었던 대체 표현("가장 확신하는 상위 구간에서 채택 0")도 원자료가 지지하지 않는다 — 확신도 상위 10%(53개) 안에 수용이 11개로, 기저 수용률 0.105의 약 두 배다. 자세한 해부는 실험 2.

왕복 복원 · 표기법 게이트
1.000
구조 유효성 보존 · 실측 결정 64개(mp_20) · 사전등록 게이트 ≥0.95 통과 → 실험 0
밴드갭 ±0.3 eV 명중률
0.04375
n=1,280 · 확증 시드 2 · crystal_judge_b256.json · 비교 기준선 없음(§실험 1 결과 끝 참조)
잠재 최소기술길이 주효과 d_KL
−0.0270
사전등록 X · 단측 95% 하한 −0.0430 · 타깃 부호 0/5 · (c) 사멸실험 4
조성 유효성 (전하 중성)
0.006
1,134개 중 7개 · crystal_sun.log valid_comp 0.006173 · 수용 판정식에서 제외된 이유는 §2
§1

이게 무슨 문제인가 — 밴드갭을 정해 주면 원자 배치를 내놓는 일

결정은 작은 상자(단위격자) 하나에 원자 몇 개를 배치한 뒤 그 상자를 삼차원으로 무한히 반복해 만든 물질이다. 그래서 결정 하나를 적으려면 상자의 세 변 길이와 세 각도, 그리고 상자 안 원자마다 원소 종류와 상대 좌표 세 개를 적으면 된다. 우리가 푸는 문제는 그 반대다 — 원하는 밴드갭 값 하나를 주면 그 값을 갖는 배치를 지어내라. 어려운 이유는 정답이 여럿이고, 어떤 배치가 정말 그 밴드갭을 갖는지 우리가 손으로 확인할 수 없어서 근사 예측기(프록시)에게 물어봐야 한다는 데 있다.

우리가 원래 풀던 것은 스도쿠와 격자 퍼즐(ARC)이었다. 거기서는 답이 맞았는지 사람이 규칙으로 즉시 확인할 수 있다. 결정 구조를 고른 이유가 바로 그것이 없기 때문이다 — 어떤 원자 배치가 정말 그 밴드갭을 갖는지는 아무도 손으로 확인할 수 없고, 우리가 가진 것은 오차가 있는 근사 예측기뿐이다. 퍼즐에서 만든 방법이 "정답을 확인해 주는 심판"에 기대고 있었다면, 심판이 흐릿해지는 순간 무너질 것이다. 이 페이지는 그 시험의 기록이다.

§2

우리가 "성공"이라고 부르는 것의 정확한 정의

수용(accept)의 정의 — 딱 두 조건

① 구조가 물리적으로 말이 된다(struct_ok: 최소 원자 간 거리 ≥ 0.5 Å 등) ∧ ② 독립 예측기(결정 그래프 신경망 밴드갭 예측기, CGCNN)가 잰 밴드갭이 목표에서 ±0.3 eV 안.

조성 조건은 일부러 뺐다 — 실측 mp_20 결정 64개를 자기 자신의 밴드갭에 대해 라벨링해 보니 구조 유효성은 1.00인데 전하 중성 검사(SMACT)는 45%만 통과했기 때문이다(INSIGHTS.md:657). 조성을 넣으면 라벨의 천장이 45%가 되어 생성 품질이 아니라 라벨러의 보수성을 재게 된다. 수정된 규칙은 코드 주석에도 있다 (experiments/crystal/accept_label.py:62-64 "corrected rule: primary = struct AND bg").

스스로 반박 이 결정에는 대가가 있다. 우리 조성 유효성은 1,134개 중 7개(0.6%)로 매우 나쁜데(crystal_sun.log valid_comp=0.006173), 판정식에서 뺐기 때문에 헤드라인 숫자에 이 실패가 나타나지 않는다. 선행연구가 같은 이름으로 99% 안팎을 보고하는 항목이다. 그리고 accept_label.py:6의 독스트링은 아직 옛 규칙 (AND comp_ok)을 적고 있어 문서와 코드가 어긋나 있다 — 판정은 코드 기준이라 결과 오염은 없지만 읽는 사람이 헷갈릴 자리다. 마지막으로 우리 문턱 ±0.3 eV는 검증기 자신의 test 평균절대오차 0.362 eV보다 작다. 즉 "명중"의 상당 부분이 검증기 오차 안쪽에서 벌어지는 일이다.

판정은 셋 중 하나로만 적는다

(a) 확증 — 사전에 정해 둔 기준을 넘었다. (b) 미확증 — 방향은 맞는데 기준을 못 넘었고, 더 재 봐야 한다. (c) 사멸 — 효과가 0이거나 반대 방향이어서, 이 가설을 이 형태로는 더 밀지 않는다.

이 페이지의 실험 다섯 중 (a)는 표기법 게이트 하나뿐이다. 지표의 일반 정의(유효성·명중률·SUN)와 선행연구 좌표의 상세는 부록 페이지(2026-07-27 · 지표와 선행연구)에 있다.

§3

결정을 86개의 정수로 적는다 — 그리고 그 표기가 정보를 잃지 않는지 먼저 확인했다

실험 0

표기법(토큰화) 게이트 — 왕복 복원이 정보를 보존하는가

사전등록 게이트 · 통과 2026-07-18

의도

결정을 스도쿠·격자 퍼즐과 같은 방식(이산 캔버스 + 같은 재귀 모델 + 교차엔트로피)으로 다루려면 먼저 결정을 정수 배열로 바꿔야 한다. 바꾸는 과정에서 정보를 잃으면 그 뒤 모든 실패를 "모델이 못한다"고 귀속할 수 없다.

가설

표기가 정보를 보존한다면, 실측 결정을 토큰으로 바꿨다가 되돌린 뒤에도 구조 유효성이 그대로여야 한다. 보존이 0.95 밑이면 표기 탓이 성립하고, 칸 수를 2배로 올린다(사전 명시).

방법

86토큰 캔버스 — 격자 길이 3(1~40 Å를 128칸), 각도 3(10~170°를 128칸), 원자 20슬롯 × 4토큰(원소 0~100, 분수좌표 x·y·z 각 64칸). 사전등록 게이트: mp_20 실측 결정 64개 왕복 후 구조 유효성 보존 ≥0.95.

experiments/crystal/crystal_tokens_v2.py:29-35 · INSIGHTS.md:683-689

결과

64개 결정 100% 복원, 보존 1.000 → 통과. 칸 수 상향 조항은 발동되지 않았다.

INSIGHTS.md:687

해석

인코딩은 병목이 아니다. 이후의 실패는 표기 탓으로 돌릴 수 없고 생성 쪽에 귀속된다. 이 게이트가 이 페이지에서 해석 폭을 좁혀 준 유일한 사전 조치다.

스스로 반박 왕복 게이트는 "실측 결정이 살아남는가"만 본다. 생성된 구조가 이 격자에 잘 놓이는지, 64칸 좌표 해상도(분수좌표 약 0.016)가 밴드갭 정확도에 충분한지는 시험하지 않았다. 또한 토큰 코덱이 저장소에 두 벌 있다 — 정본 crystal_tokens_v2.py(길이 86)와 에너지 시대의 latent_reasoning/faithful/crystal_tokens.py(:92, 길이 정의가 다름). 두 코덱은 길이와 어휘가 호환되지 않으므로 체크포인트를 교차 로드하면 안 된다(docs/S0_CANONICALIZATION.md:44).

→ 표기가 멀쩡하다면, 이제 그 위에서 모델이 자기 답의 좋고 나쁨을 아는지 물을 차례다.

FIG A · 86토큰 캔버스 — 결정 하나를 정수 86개로 적는 규칙

86토큰 캔버스의 구성과 왕복 복원 게이트 왼쪽에 단위격자 그림, 오른쪽에 86개 토큰 스트립(격자 3, 각도 3, 원자 20슬롯 곱하기 4), 아래에 실측 64개 결정의 왕복 복원 게이트(보존 1.000)가 있다. 단위격자 — 변 a·b·c, 각 α·β·γ, 원자들 a b c α β γ (원소, x, y, z) 86토큰 = 3 + 3 + 20×4 토큰 1–3 · 격자 길이 a·b·c — 1~40 Å를 128칸으로 토큰 4–6 · 각도 α·β·γ — 10~170°를 128칸으로 토큰 7–86 · 원자 20슬롯 × 4토큰 = 원소(0~100, 0=빈 슬롯) + 분수좌표 x·y·z(각 64칸) 원소 x y z ← 원자 슬롯 하나 = 4토큰 실측 결정 64개 (mp_20) 86개 정수 복원된 결정 구조 유효성 보존 1.000 사전등록 게이트 ≥ 0.95 미달 시 칸 수 2배 — 발동 안 됨

experiments/crystal/crystal_tokens_v2.py:29-35 · INSIGHTS.md:683-689. 이 게이트가 통과했기 때문에 이후의 실패를 표기 탓으로 돌릴 수 없다.

§4

실험 1 — 학생이 스스로 좋은 후보를 고를 수 있는가 (탐색 → 확증)

실험 1

학생 확신도로 좋은 후보 고르기 — 탐색의 2.8배는 확증에서 사라졌다

사전등록 · 미확증 2026-07-18

의도

스도쿠에서는 학습된 확신도가 고정 후보 풀에서 생성기 자체 점수를 이겼다. 검증자가 정답 증명이 아니라 근사 예측기뿐인 결정 구조에서도 같은 일이 일어나는가 — 이것이 전이의 첫 관문이었다.

가설

학생 자신의 토큰 확률이 높은 후보일수록 수용률이 높다. 사전 고정 1차 추정량 = 상위 10% 선택의 수용률 상승분(lift), 판정 = 타깃-클러스터 부트스트랩 신뢰구간 하한 > 0.

방법

탐색(시드 0·1)과 확증(시드 2)을 미리 분리했다. 탐색 = 배치16 80후보 + 배치64 320후보 = 400. 확증 = 배치256 × 5타깃 = 1,280 (crystal_b256.jsonrole="confirmatory"). 문턱·지표 재조정 금지.

결과

탐색: n=400, 양성 18(0.045), AUC 0.5822, 상위 10% lift +0.0800(4.5%→12.5%, 약 2.8배), CI [−0.015, +0.100]. 확증: n=1,280, 양성 56, 수용률 0.04375, AUC 0.5266, lift +0.01875, CI [−0.051, +0.038] → 기준 미달. 오늘 세 원장 파일에서 전부 재계산해 일치를 확인했다.

crystal_judge.json · crystal_judge_b64.json · crystal_judge_b256.json · CI는 INSIGHTS.md:762·766

해석

탐색의 2.8배는 소표본 잡음이었고, 미리 갈라 둔 확증 시드가 그것을 정확히 걸러냈다. 남는 문장은 둘 — 무증강 한 번 생성이 ±0.3 eV를 맞히는 비율 0.04375는 사실 기술로 성립하고, 학생 확신도의 선택 가치는 이 규모에서 미확증이다.

스스로 반박 다섯 타깃은 밴드갭 0·1·2·3·4 eV다. 수용률은 0.066 / 0.078 / 0.047 / 0.012 / 0.016으로 목표 밴드갭이 커질수록 떨어진다 — 전기가 잘 통하는 쪽(0~1 eV)은 그럭저럭 만들고 절연체 쪽(3~4 eV)은 거의 못 만든다. 이 5배 넘는 불균형은 이후 "여러 타깃을 한 줄에 모아 계산한" 모든 통계의 교란원이 되고, 실험 2실험 3에서 실제로 두 번 터진다. 또 팔 비교의 후보 예산 k가 실행마다 달라(배치16→4, 배치64→8, 배치256→25) 팔 사이 비교는 검정력이 없다. 그리고 "이 4.4%가 잘한 것인가"에 이 페이지는 답하지 못한다 — 조건을 무시하고 아무렇게나 만들었을 때의 명중률(기준선)을 재지 않았다. 성립하는 것은 "±0.3 eV 안에 드는 비율이 1,280개 중 56개"라는 사실 기술뿐이며, "조건부 생성이 작동한다"는 주장은 이 페이지에서 성립하지 않는다. 참고로 같은 원장에는 확신도로 고른 팔의 명중률이 그냥 고른 팔보다 낮은 직접 비교도 있다(macro G 0.048 / P 0.032, 타깃당 k=25라 검정력 없음, crystal_judge_b256.json).

→ 확신도가 고르지 못한다면, 스도쿠에서처럼 확신도가 거꾸로 가는 것은 아닐까? 우리는 그렇다고 발표했고, 그것이 틀렸다.

구간표본양성수용률AUC상위 10% lift클러스터 부트스트랩 CI판정
탐색 (시드 0·1)400180.04500.5822+0.0800[−0.015, +0.100]시사적 · 미확증
확증 (시드 2, 사전 분리)1,280560.043750.5266+0.01875[−0.051, +0.038]기준 미달 · 미확증
확증 시드 · 목표 밴드갭0 eV1 eV2 eV3 eV4 eV
수용률 (각 n=256)0.06640.07810.04690.01170.0156

출처: crystal_judge_b256.json per_target (키가 곧 목표 밴드갭 0.0~4.0). 목표 밴드갭이 커질수록(절연체 쪽) 명중이 급감한다.

§5

실험 2 — 철회된 주장: "확신도가 수용과 역상관한다 (AUC 0.315)"

실험 2

스도쿠 병리의 "이식" — fold 아티팩트가 만든 가짜 역상관

철회 2026-07-19 발표 · 07-20 철회

의도

스도쿠에서 확증한 원리("국소 신호만으로는 안전 계층이 안 서고 전역 일관성을 더해야 선다")가 도메인을 넘는지 보려 했다.

가설

결정 구조에서도 확신도만으로는 못 고르고, 구조 전체를 보는 전역 특징을 더하면 골라진다.

방법

확증 시드 1,280후보 중 구조 유효 534개로 한정(라벨의 구조 성분을 상수로 만들어 순환을 끊음). 국소 = 학생 확신도, 전역 = 부피·밀도·최소 원자 간 거리·원자 수·원소 종 수·조성 엔트로피. 타깃 하나를 빼고 학습해 그 타깃에서 평가(5폴드).

INSIGHTS.md:1397-1428

결과

당시 보고: 국소 AUC 0.315, 결합 0.600, 커버리지 10% 차이 +0.1615, 단측 95% 하한 +0.0566 → "이식 성공".

재계산: 원자료의 국소 pooled AUC는 0.5973(n=534, 양성 56). 타깃별 0.4636 / 0.5959 / 0.5911 / 0.5055 / 0.3325 (목표 0·1·2·3·4 eV 순). 0.315는 데이터에 존재하지 않는 숫자였다. 오늘 소수 넷째 자리까지 재현.

crystal_gate_feat.json · INSIGHTS.md:1431-1445

해석

폴드마다 따로 학습한 한-특징 모형의 점수를 한 줄에 이어 붙여 AUC를 계산하면, 폴드 간 점수 눈금 차이가 인위적인 음의 상관을 만든다. 바로 전날 다른 과제에서 이 함정을 발견해 기록해 두고도 이틀 만에 다시 빠졌다. 주장은 철회한다.

스스로 반박 — 그렇다면 0.597은 믿을 수 있나 타깃 안에서만 짝을 비교하면 0.5387로 내려간다(오늘 계산, 타깃 내 양성×음성 쌍 수 가중). 0.597의 상당 부분은 "모델이 확신하는 타깃이 마침 수용률도 높은 타깃"이라는 타깃 간 난이도 효과다. 방향은 0.315와 반대지만 기제는 같은 계열(층 구조를 무시한 집계)이다. 하나 더 — 철회문(STRATEGY.md §14)이 대체 이름으로 채택했던 "상위 비단조(전체는 양성인데 최상위 커버리지에서 채택 0)"조차, 오늘 원자료 재계산은 지지하지 않는다: 확신도 상위 10%(53개)에 수용 11개 (기저 0.105의 약 2배), 최상위 1개 후보도 수용이다. 그 "상위 채택 0" 관찰 자체가 fold 점수 위에서 계산된 것이었다.

→ 철회하고 나면 원래 물음이 그대로 남는다. 결합이 정말 무언가를 더하는가 — 그런데 그 실험에는 대조군이 하나 빠져 있었다.

FIG C · 철회의 해부 — 틀린 계산과 원자료

AUC 0.315가 만들어진 경로(폴드 점수 이어 붙이기)와 원자료 재계산(0.5973)의 대비 왼쪽은 타깃 하나씩 빼고 다섯 번 따로 학습한 뒤 점수를 한 줄에 이어 붙여 AUC 0.315가 나온 틀린 계산, 오른쪽은 원자료 534개 후보를 확신도 순으로 늘어놓은 띠와 AUC 0.5973, 타깃별 AUC 미니 막대. 아래는 발표에서 철회까지의 타임라인. 타깃 하나씩 빼고 다섯 번 따로 학습한 뒤, 점수를 한 줄에 이어 붙였다 (틀림) 타깃 0 eV 제외 학습 → 0 eV 채점 타깃 1 eV 제외 학습 → 1 eV 채점 타깃 2 eV 제외 학습 → 2 eV 채점 타깃 3 eV 제외 학습 → 3 eV 채점 타깃 4 eV 제외 학습 → 4 eV 채점 ← 폴드마다 눈금이 다르다 한 줄로 이어 붙여 AUC 계산 AUC 0.315 철회 폴드마다 따로 학습한 모형의 점수는 서로 다른 눈금을 갖는다. 그것을 한 줄에 이어 붙이면 없는 음의 상관이 생긴다. 원자료로 다시 (맞음) — 구조 유효 534개, 수용 56개 ← 가장 확신 가장 비확신 → 초록 눈금 = 수용된 후보 56개의 실제 위치 · 상위 10%(53개) 안에 11개 — "상위에서 채택 0"이 아니다 AUC 0.5973 타깃 안에서만 비교하면 0.5387 0.5 0 eV0.4636 1 eV0.5959 2 eV0.5911 3 eV0.5055 4 eV0.3325 07-19 발표 07-20 적대 검토 철회

오늘 crystal_gate_feat.json(534행, 양성 56)에서 pooled 0.5973과 타깃별 값을 소수 넷째 자리까지 재현했다. 0.315는 원자료에 존재하지 않는 값이다. 오른쪽 초록 눈금 56개는 확신도 내림차순 정렬에서 수용 후보가 실제로 놓인 위치다.

§6

실험 3 — 전역 특징이라는 대조군을 넣자 결합의 추가 기여가 사라졌다

실험 3

사전등록 VIII (H5) — 귀속 절단: 결합의 공은 전역 특징 단독의 공이었다

사전등록 VIII · (c) 사멸 2026-07-20

의도

철회 전 헤드라인 +0.1615는 "국소" 대 "국소+전역" 비교였고 전역 단독 팔이 없었다. 이것은 며칠 전 스도쿠에서 우리가 (c)로 사살한 것과 정확히 같은 구조의 교란이다. 대칭으로 적용하지 않으면 이중잣대이고, 이 자리가 헌법 안에서 학습-양성이 나올 수 있는 마지막 자리였다.

가설

학습된 확신도가 진짜 기여한다면, 결합 팔(A3)이 전역 단독 팔(A2)을 유의하게 넘어야 한다. 못 넘으면 "결합하면 작동한다"는 절은 삭제된다.

방법

신규 시드 3 생성(crystal_b256_s3.json role="H5_attribution"), 1,280 → 구조 유효 517. 네 팔: A0 무선택 / A1 국소만 / A2 전역만(신규 결정 팔) / A3 결합. 1차 추정량 = A3 − A2 @커버리지 10%, 타깃 held-out 5폴드, 문턱 재조정 금지. 판정: 하한>0 ∧ d≥+0.05 ∧ 양수 폴드 ≥4/5 = 확증 · 하한 ≤0 또는 A2≥A3 = (c) 사멸.

결과

base 0.1219 / A1 0.1176 / A2 0.0784 / A3 0.0980, d = +0.019608, 하한 = 0.0000, 폴드별 [+0.125, 0, 0, −0.0909, 0], 양수 1/5 → (c) 사멸. 오늘 재계산 일치.

h5_judge.json · h5_feat.json

해석

결정 구조에서도 학습 국소 신호의 추가 기여는 0이다. 철회 이전 헤드라인 +0.1615는 전역 구조 특징 단독의 공이었고 확신도는 그 위에 아무것도 얹지 못했다. 오히려 A1(0.118)이 A3(0.098)보다 높다. 사전등록대로 "결합하면 학습 선택기가 작동한다"는 절을 전면 삭제했다.

스스로 반박 이 판정의 부칙은 "국소 신호 자체는 실재한다(pooled AUC 0.702)"를 남겼는데, 그 0.702도 타깃을 섞은 값이다. 타깃 안에서 다시 계산하면 0.5733이다(오늘 h5_feat.json 517행). 타깃별로는 0.5710 / 0.5714 / 0.9409 / 0.5365 / 0.4587 (목표 0·1·2·3·4 eV 순)이고, 0.9409는 양성이 2개뿐인 타깃에서 나온 값이다. 판정은 바뀌지 않지만(이미 사멸), 남은 유일한 긍정 문장은 "타깃 안에서 보면 0.54~0.57, 우연에 가깝다"로 약화되어야 한다.

→ 선택 쪽이 다 막혔으니 남은 자리는 학습 목적함수 자체다. 그런데 우리 중심 가설은 한 번도 손실에 들어간 적이 없었다.

팔 (커버리지 10% 수용률)비고
A0 무선택 (base)0.1219선택 없이 전체 수용률
A1 국소만 (학생 확신도)0.1176base보다 낮다
A2 전역만 (신규 대조 팔)0.0784이 팔이 없던 것이 실험 2의 결함
A3 결합 (국소+전역)0.09801차 추정량 = A3 − A2
판정: d = A3 − A2+0.0196단측 95% 하한 0.0000 · 폴드 [+0.125, 0, 0, −0.0909, 0] · 양수 1/5 → (c) 사멸

출처: h5_judge.json (n=517, 양성 63, 시드 3). 확인 못 한 것: 실험 노트에 남아 있던 "전역 6특징의 타깃별 AUC 0.72~0.73 vs 0.56/0.50" 류의 수치는 저장소 어느 파일에서도 재현할 수 없었고(분석 스크립트 미보존), 이 페이지에 싣지 않는다.

§7

실험 4 — 이 프로젝트의 중심 가설을 처음으로 실제 손실에 넣어 보았다

실험 4

사전등록 X — 잠재 최소기술길이 × 손상복구 2×2 요인설계

사전등록 X · 두 주효과 모두 (c) 사멸 2026-07-24

의도 — 배관 발견

재귀 모델 안에는 학습 중에만 켜지는 두 번째 경로(사후분포)가 있고, 잠재 최소기술길이 손실은 그 경로가 켜져야만 값이 생긴다. 그 경로는 y_feat 인자를 받아야 켜지는데(latent_reasoning/faithful/gram.py:364), 결정 구조 트레이너도 격자 퍼즐(ARC) 트레이너도 그 인자를 넘기지 않았다. 즉 설정 파일에는 계수 0.01이 기록되고 결과 파일에도 그렇게 남았지만, 실제 손실에 더해진 값은 항상 0이었다(docs/PRIOR_DIFF.md:95). 사전등록 X는 그 인자를 실제로 넘긴 프로젝트 최초의 실험이고, 어느 팔에서 켜졌는지를 코드가 강제한다(crystal_s0_train.py:212·:214의 assert).

가설

잠재 최소기술길이 항이 데이터 증강을 대신한다면, 그 항을 켠 팔이 순수 교차엔트로피 팔보다 수용률이 높아야 한다. 낮으면 대신하기는커녕 방해한다는 뜻이고, 그 경우를 미리 (c) 사멸이라 부르기로 적어 두었다(STRATEGY.md §15).

방법

2×2 요인설계, 네 셀 전부 새로 학습, 시드 0, 하이퍼파라미터 동일, 플래그만 다름. A = 순수 교차엔트로피 / B = +잠재 최소기술길이(사후 쿨백-라이블러 발산, CE + 0.01·KL/K) / C = +자기생성 손상복구(배치 50%, 손상률 0.3~0.9, 타깃은 항상 깨끗한 정답) / D = 둘 다. 40에폭, 셀당 5타깃 × 256 = 1,280후보. 독립 1차 추정량 둘: d_KL = accept(B∪D) − accept(A∪C), d_corr = accept(C∪D) − accept(A∪B). 타깃-클러스터 부트스트랩 10,000회, 단측 95% 하한, 타깃 부호 5개 병기. §15 동결 조항: 두 주효과 모두 (c)면 재프레이밍 금지. 사전 명시: C는 손상 증강 계열이라 "무증강" 주장 자격이 없고, 무증강 대조는 B−A뿐(STRATEGY.md:334-341).

결과

수용률 A 0.047656 / B 0.028906 / C 0.046875 / D 0.011719 (각 n=1,280). d_KL = −0.026953(하한 −0.0430, 타깃 부호 0/5) → (c) 사멸. d_corr = −0.008984(하한 −0.0285, 부호 2/5) → (c) 사멸. 상호작용 −0.016406(역시너지), d_repl(B−C) = −0.017969.

rates·델타: prX_verdict.json / 하한·부호: prX_judge.py 재실행(seed 0, 오늘 동일 재현) + INSIGHTS.md 판정표

해석

중심 가설이 첫 직접 시험에서 기각됐다. 잠재 최소기술길이는 무기여가 아니라 유해했다(이 설정, 계수 0.01, 이 도메인에서). 유력한 기제는 사후-의존 — 사후분포가 학습 중 정답 특징을 보므로, 배포 때 실제로 쓰이는 사전분포 경로가 스스로 규칙을 배울 압력을 잃는다. 변분 오토인코더 문헌에 알려진 실패 양식이 우리 재귀 모델에서 재현된 것이다. 손상복구는 기하는 돕지만 수용률은 못 올린다 — 구조가 말이 되는 것과 조건을 맞히는 것은 다른 능력이고, 손상복구는 앞의 것만 가르친다.

스스로 반박 아래 진단 박스의 관찰은 전부 사후 탐색이고 사전등록 밖이다. 상관이지 인과가 아니다. 판정을 바꾸지 않고, 판정을 강화하지도 않는다. 올릴 수 있는 것은 기제 서술을 "유력한 기제"에서 "관측된 붕괴 양상"으로 한 단계뿐이다. 그리고 쿨백-라이블러 계수를 쓸어 보는 실험은 아직 하지 않았으므로 "계수 0.01이 너무 컸을 뿐"이라는 대안 설명은 배제되지 않았다.

→ 그런데 이 네 판정이 실제로 무엇에 대한 판정인지, 어제 감사가 범위를 좁혔다. (§9)

FIG B · 사전등록 X — 2×2 요인설계의 수용률과 두 주효과

네 팔의 수용률 막대와 2 곱하기 2 격자, 두 주효과가 모두 음수임을 보이는 그림 왼쪽 막대: A 0.0477, B 0.0289, C 0.0469, D 0.0117. 오른쪽 2 곱하기 2 격자에 두 주효과 d KL 마이너스 0.0270과 d corr 마이너스 0.0090이 화살표로 표시된다. 아래 띠는 사전등록에 없던 사후 관찰인 구조 유효 개수를 보인다. 0.06 0.04 0.02 0 수용률 (n=1,280/팔) · ↑ 높을수록 좋음 대조 기준 A 0.0477 0.0289 0.0469 0.0117 A순수 교차엔트로피 B+잠재 최소기술길이 C+손상복구 D둘 다 잠재 최소기술길이 (표현을 짧게 누르는 벌점) d_KL −0.0270 ▼ 손상복구 끔 손상복구 켬 A 순수 교차엔트로피 0.0477 B +잠재 최소기술길이 0.0289 C +손상복구 0.0469 D 둘 다 0.0117 가로 ▶ d_KL = −0.0270 · 단측 95% 하한 −0.0430 · 타깃 부호 0/5 · (c) 사멸 세로 ▼ d_corr = −0.0090 · 하한 −0.0285 · 부호 2/5 · (c) 사멸 대각 · 상호작용 −0.0164 (역시너지) · d_repl(B−C) = −0.0180 사전등록에 없던 사후 관찰 — 판정 근거 아님 · 팔별 구조 유효 개수 (/1,280) A505 B378 C718 D29

수용률과 주효과는 prX_verdict.json, 하한·타깃 부호는 prX_judge.py(seed 0)를 오늘 그대로 재실행해 재현, 구조 유효 개수는 prX_{A,B,C,D}_lab.json에서 오늘 재계산. 아래 띠는 사전등록에 없던 사후 탐색이며 판정을 바꾸지도 강화하지도 않는다.

기하 통과 /1,280구조 유효 (/기하, /1,280)수용수용률 /1,280수용이 나온 타깃 (0·1·2·3·4 eV)
A 순수 교차엔트로피1102505 (45.8%, 39.5%)610.04765624 / 15 / 10 / 10 / 2
B +잠재 최소기술길이1055378 (35.8%, 29.5%)370.0289069 / 13 / 11 / 4 / 0
C +손상복구1233718 (58.2%, 56.1%)600.04687531 / 5 / 10 / 6 / 8
D 둘 다122929 (2.4%, 2.3%)150.01171915 / 0 / 0 / 0 / 0

분모 주의: prX_*_lab.json은 기하 통과분만 담고(A는 1,102행), 공식 수용률의 분모는 생성 1,280이다(61/1280 = 0.047656). "구조 유효 505"는 1,102 중 45.8%이자 1,280 중 39.5%다 — 하나만 쓰면 오해가 생기므로 둘 다 적었다.

사전등록 밖 진단 — 상관이지 인과 아님 · 판정 근거 아님 (2026-07-27 본 페이지 작성 시 원자료 재계산)

D는 "조금 나쁜 팔"이 아니라 붕괴한 팔이다. 구조 유효가 29개뿐이고, 수용 15개는 전부 목표 밴드갭 0 eV에서 나왔다. 나머지 네 목표에서는 0개다 — 즉 D는 목표가 무엇이든 사실상 금속 쪽 구조만 내놓는다.

토큰에서 붕괴 양상이 보인다. 한 구조 안에서 서로 다른 두 원자 슬롯이 동일한 이산 좌표 (x,y,z)를 갖는(= 원자가 겹치는) 후보의 비율이 C 4.1% / A 33.0% / B 51.6% / D 97.3%다(prX_{A..D}.json 각 1,280 토큰열, 오늘 재계산). 이 순서는 구조 유효 개수 C 718 > A 505 > B 378 > D 29의 정확한 역순이다.

B에서는 조건 무시가 직접 보인다. 1,280개 중 서로 다른 토큰열이 921개(0.720)뿐이다. 같은 타깃 안에서는 256/256이 전부 다르므로, 겹침은 타깃을 넘나들며 생긴다 — 서로 다른 밴드갭 목표에 같은 구조를 내놓는 비율이 0.280이다. 사후-의존 가설과 정합하지만, 인과는 시험하지 않았다.

§8

실험 5 — SUN 0.442를 선행연구 옆에 놓을 수 없는 이유

실험 5

SUN 해부 — 같은 이름의 지표가 레시피에 따라 8배 갈린다

비교 불가 · 재현 불가 2026-07-19

의도

여기까지 우리는 우리가 정한 자(±0.3 eV 명중률)로만 쟀다. 그 자는 다른 팀 논문에 없다. 그래서 남들과 같은 자 — SUN(안정 ∧ 유일 ∧ 신규 비율) — 에 한 번 올려 보려 했고, 결과는 숫자가 아니라 그 자체가 교훈이었다.

가설

같은 이름의 지표라면, 세 관문(안정·유일·신규)이 각각 후보를 걸러 내야 한다. 어느 다리도 아무것도 못 거른다면 그 다리는 사실상 계산되지 않은 것이고, 그 숫자는 다른 팀 숫자와 같은 자에 놓을 수 없다.

방법

확증 시드의 배치256 × 5타깃 생성물에 sun_evaluate 적용.

latent_reasoning/faithful/crystal_sample.py:495-585

결과

n 1,134 · 기하·구조 통과(sane) 534 · 안정 501 · 신규 534 · 유일 534 · sun_rate 0.4418 · 구조 유효 0.4709 · 조성 유효 0.006173 · 밴드갭 평균절대오차 6.234 eV · stability_backend = surrogate_e_above_hull.

crystal_sun.log

해석

이 숫자는 선행연구 옆에 놓을 수 없다. 안정성 다리는 에너지가 아니라 원자당 부피 밴드 검사이고(경고 1), 유일·신규 두 다리는 아무것도 걸러내지 않았다(534 = 534 = 534). 분모도 생성 1,280이 아니라 라벨링 경로의 기하 통과분 1,134다(SUN 경로의 더 엄격한 기하 문턱은 그중 534만 통과시킨다 — 같은 단어 두 문턱, 아래 표 참조)(1,280 기준이면 0.391). 참고 좌표: MatterGen 38.57%(샘플 1,024, 밀도범함수이론 이완, Nature 2025 및 공개 모델 카드), FlowLLM 논문(arXiv:2410.23405) 표 1의 mp_20 SUN 4.92% — 같은 이름의 지표가 레시피에 따라 8배 갈린다.

스스로 반박 이 SUN을 만든 드라이버 스크립트가 저장소에 없다(grep -rn crystal_sun이 로그 외 0건). 따라서 신규성 판정의 참조 조성 집합이 실제로 비어 있었는지 확정할 수 없다 — 함수 독스트링(crystal_sample.py:506-508)이 "빈 집합이면 전부 신규로 센다"고 적고 있어 그것이 유력한 설명일 뿐이다. 재현 불가. 그리고 "기하 정상"이라는 말이 저장소에 두 정의로 공존한다 — 라벨링 경로(accept_label.py:49: 부피>10·밀도 0.1~30)와 SUN 경로 (crystal_sample.py:398-419: 격자 1~50 Å·원자당 부피 1~500·최소 원자 간 거리 ≥0.5 Å). 로그의 "geom-sane 1,134"와 "sane 534"는 같은 단어의 다른 문턱이다. 선행연구 좌표의 출처와 해부는 부록 페이지에 더 있다.
관문통과 / 분모판정 방식걸러냈나
기하·구조 (sane)534 / 1,134격자·부피·최소 원자 간 거리 + 구조 유효성걸러냄 (0.471)
안정 (Stable)501 / 534원자당 부피 5~40 ų 밴드 검사 (에너지 계산 없음, 대체품)거의 안 걸러냄 (0.938)
유일 (Unique)534 / 534StructureMatcher 중복 제거아무것도 안 걸러냄
신규 (Novel)534 / 534참조 조성 집합 대조 (빈 집합이면 전부 신규)아무것도 안 걸러냄
SUN501 / 1,134 = 0.4418생성 1,280 기준으로는 0.391 · 선행연구와 비교 불가
§9

정직성 — 철회 한 건, 비교 불가 한 건, 그리고 우리가 아직 잰 적 없는 것

(1) 철회 1건

"확신도가 수용과 역상관한다 — AUC 0.315, 스도쿠 병리의 이식."

AUC 0.315는 존재하지 않는 숫자다. 원자료는 0.5973이고(n=534, 양성 56), 타깃 안에서는 0.5387이다. 철회문이 남긴 대체 표현("가장 확신하는 상위 구간에서 채택 0")도 오늘 재계산은 지지하지 않는다 — 상위 10%에 수용 11/53. 상세는 실험 2.

(2) 안정성 판정은 "선택한 백엔드"가 아니라 "조용한 추락"이었다

우리가 부르려던 것은 기계학습 원자간 퍼텐셜(CHGNet)이었다. 코드는 먼저 그것을 불러 원자당 에너지를 계산하려 하고 (crystal_sample.py:455-467), 그 시도가 실패하면 예외 처리 안에서 조용히 대체품으로 내려앉는다. 이번 실행에서 실제로 그 일이 일어났고, 로그에는 stability_backend = surrogate_e_above_hull 한 줄만 남았다. 대체품이 하는 일은 이것이 전부다:

except Exception:            # ← CHGNet 로딩 실패 시 여기로 떨어진다
    def _surrogate_e_above_hull(structure):
        vpa = structure.volume / max(len(structure), 1)
        lo, hi = 5.0, 40.0   # 그럴듯한 원자당 부피 범위
        if vpa < lo: return (lo - vpa) / lo
        if vpa > hi: return (vpa - hi) / hi
        return 0.0

latent_reasoning/faithful/crystal_sample.py:468-484. 이 값을 0.1과 비교해 "안정"이라 부른다 (:563). 코드 주석 자신이 "NOT an MLIP, NOT DFT ... clearly a STAND-IN"이라 적어 두었다. 즉 이 실행의 "안정" 판정은 에너지를 한 번도 계산하지 않았고, 아무도 그 추락을 실행 당시에 알아채지 못했다.

(3) 판정의 사정거리 — 합법이면서 매 스텝인 트레이너가 없다 (2026-07-26 감사)

어제 감사가 확정한 것: 결정 구조 쪽에는 헌법에 합법이면서 매 스텝을 감독하는 트레이너가 존재하지 않는다 (docs/S0_CANONICALIZATION.md:31-44). 두 후보가 각각 절반씩 어긋난다. experiments/crystal/crystal_s0_train.py는 합법이지만(마스킹 교차엔트로피 + 잠재 최소기술길이 항, 계수 0.01 — 이 항은 사전등록 X의 B·D 팔에서만 켜진다, 실험 4 참조) 롤아웃(:210) 뒤 한 번만 디코드하고(:215) 그 자리에서만 손실을 건다(:216-217). 팔은 코드가 강제한다 — :212 assert kl is not None(켠 팔), :214 assert kl is None(끈 팔). 파일 스스로 :23에서 SUPERVISION = "endpoint"라 선언하고 게이트가 이를 강제한다. 다만 같은 파일 :24의 선언 튜플과 감사 문서가 인용한 줄 번호 :203-212는 그 뒤 추가된 선언 블록 때문에 약 7줄 밀려 있다 — 대조는 줄번호가 아니라 조항 이름으로 해야 한다.

다른 후보 latent_reasoning/faithful/crystal_gram_train.py는 매 스텝이지만 (:1718 step → :1725 decode) 목적함수가 헌법 §3·§4를 위반한다 — 헤더(:14-18)가 평균제곱오차 목표 회귀를 선언하고, :555-556이 스칼라 궤적 균형 손실을, :875-880이 에너지 입력 그래디언트 보조항을 담는다. 따라서 이 페이지의 사전등록 X 판정은 "교차엔트로피·잠재 최소기술길이·손상 조합의 최종 사이클 효과"로만 해석 가능하다. 헌법이 선언한 깊은(매 스텝) 감독은 결정 구조에서 한 번도 시험되지 않았다.

(4) 실측 — 끝점 단일 감독에서 중간 스텝의 그래디언트는 정확히 0이다

같은 감사에서 잰 값(docs/PRIOR_DIFF.md:87-91): 롤아웃 후 끝점에만 손실을 걸면 K−1개 중간 스텝의 과제 그래디언트 기여가 정확히 0이다(K=4 실측, 파라미터 텐서 14개 전부 최대 절대차 0.000e+00, 적대 검증에서 10/10 독립 재현). 결정 구조 트레이너가 이 형태다.

다만 과대해석 금지(감사 자신이 붙인 단서, docs/PRIOR_DIFF.md:91): "끝점 단일이 결정 구조 실패의 원인"이라는 주장은 저장소 증거가 지지하지 않는다. 스도쿠 계열 계측에서 유의했던 것은 "매 스텝에 손실을 거는가"가 아니라 "스텝마다 다른 타깃을 주는가"였다. 매 스텝 정답 감독 성분만 떼어 재면 held-out −0.00595, weakOOD −0.00696(둘 다 무의미)이고, 유의했던 유일한 성분은 스텝-상이 타깃 팔(weakOOD +0.04888, 보정 p 0.0044)이다 — 그리고 그 팔조차 스텝-상이 팔끼리의 비교(a1−a2)에서 p 0.679로 "순서" 귀속이 깨져 있다. 이 감사가 여는 것은 "아직 시험하지 않은 영역이 하나 남아 있다"이지 "이걸 고치면 된다"가 아니다.

§10

지금 살아 있는 문장과 죽은 문장 (원장)

언제주장했던 것무엇이 뒤집었나현재 상태
07-18왕복 표기가 정보를 보존한다성립 (64개 결정, 보존 1.000, 사전등록 게이트)
07-18무증강 한 번 생성의 밴드갭 ±0.3 eV 명중률 약 4.4%성립 (n=1,280, 0.04375, 확증 시드 · 단 비교 기준선 없음)
07-18확신도로 좋은 후보를 고른다 (lift +0.080, 2.8배)분리 시드 확증에서 AUC 0.5266, lift +0.0188, CI [−0.051, +0.038]미확증
07-19확신도가 수용과 역상관한다 (AUC 0.315)원자료 재계산 0.5973 · fold 아티팩트철회
07-19국소 실패 + 전역 결합 = 이식 성공 (Δ+0.1615, 하한 +0.0566)전역 단독 대조군 투입 후 d = +0.0196, 하한 0.0000, 양수 폴드 1/5(c) 사멸
07-20철회문이 남긴 대체 표현 "상위 구간 채택 0 (상위 비단조)"오늘 원자료 재계산: 상위 10%에 수용 11/53 (기저 0.105의 약 2배)미지지 (2026-07-27 재계산)
07-20국소 신호는 실재한다 (pooled AUC 0.702)타깃 층화 시 0.5733 (07-18 시드는 0.5973 → 0.5387)약화 (판정 불변)
07-24잠재 최소기술길이가 증강을 대신한다 (중심 가설)최초 직접 시험에서 d_KL −0.0270 (부호 0/5), d_corr −0.0090(c) 사멸 · 재프레이밍 금지
07-19SUN 0.442안정성 = 부피 밴드 검사 (예외 추락) · 유일·신규 다리 무작동 · 드라이버 부재비교 불가
07-26위 판정들의 사정거리합법·매 스텝 트레이너 부재"최종 사이클 효과"로만 해석

참고: INSIGHTS.md:768의 "struct 60%" 문구는 저장소의 어떤 측정도 뒷받침하지 않아 이 페이지는 쓰지 않는다 — 실측 구조 유효 비율은 실행·팔에 따라 39.5~56.1%(/1,280), SUN 경로에서 47.1%(/1,134)다.

§11

이 페이지가 지목하는 다음 작업

§12

용어 — 처음 보는 사람을 위한 아홉 장

밴드갭

전자가 물질 안에서 한 상태에서 다음 상태로 뛰려면 넘어야 하는 에너지 문턱. 0에 가까우면 금속처럼 전기가 잘 통하고, 크면 절연체다. 우리가 생성기에게 주는 조건이 이 값 하나다. 단위는 eV(전자볼트). 이 페이지의 다섯 타깃은 0·1·2·3·4 eV다.

AUC (순위 맞히기 점수)

무작위로 고른 "좋은 후보 하나"와 "나쁜 후보 하나"를 놓았을 때, 점수가 좋은 쪽에 더 높은 점수를 줄 확률. 0.5가 동전 던지기, 1.0이 완벽, 0.5보다 낮으면 거꾸로 고르고 있다는 뜻. 이 페이지의 0.53이나 0.60은 "동전보다 아주 조금 나은 정도"로 읽어야 한다.

잠재 최소기술길이 (latent MDL)

"설명이 짧을수록 좋은 규칙"이라는 오래된 생각을 손실 함수로 옮긴 것. 모델이 내부에서 답을 만들 때 쓰는 중간 표현을 되도록 짧게(단순하게) 유지하도록 벌점을 준다. 기대는 이랬다 — 보통은 데이터를 변형해 늘려서(데이터 증강) 규칙을 배우게 하는데, 이 벌점이 그 역할을 대신할 수 있지 않을까. 사전등록 X가 처음으로 실제 손실에 넣어 시험했고, 결과는 (c) 사멸이다.

SUN

안정(Stable) ∧ 유일(Unique) ∧ 신규(Novel)를 모두 만족하는 생성 구조의 비율. 셋 각각을 무엇으로 판정하느냐가 지표 값을 좌우한다. 우리 안정 판정은 에너지가 아니라 원자당 부피 밴드 검사였고, 유일·신규 다리는 이번 실행에서 아무것도 걸러내지 않았다. 그래서 우리 0.442는 선행연구의 SUN과 같은 자에 놓을 수 없다.

캔버스 인코딩

결정 하나를 정해진 길이의 정수 배열로 적는 규칙. 우리는 86칸을 쓴다(길이 3 + 각도 3 + 원자 20슬롯 × 4). 이렇게 해야 생성이 "칸마다 어떤 정수를 쓸까"라는 분류 문제가 되고, 모델의 확신도를 토큰 확률의 평균 로그로 애매함 없이 정의할 수 있다.

사전등록

데이터를 보기 전에 무엇을 1차 지표로 삼고 어떤 값이 나오면 성공·실패라 부를지 문서에 못 박아 두는 것. 결과를 본 뒤 지표를 고르면 잡음을 발견으로 착각하게 된다. 이 페이지의 실험 1은 사전등록 덕분에 우리 자신의 2.8배 lift를 스스로 기각했다. 판정 3분류 (a)(b)(c)는 §2의 박스 참조.

통제군 (대조 팔)

재려는 성분만 빼고 나머지를 똑같이 맞춘 비교 대상. 실험 3이 이 페이지의 교훈이다 — "국소" 대 "국소+전역"만 비교하면 전역 특징의 공을 결합의 공으로 착각한다. 전역 단독 팔을 넣자 결합의 추가 기여가 0으로 내려앉았다.

커버리지 10% · lift

커버리지 10% = 점수 상위 10%만 골라서 그 안의 수용률을 본다는 뜻 — "전부 다 만들 순 없고 10개 중 1개만 실제로 합성해 볼 수 있다면?"에 해당한다. lift = 그렇게 고른 묶음의 수용률에서 전체 수용률을 뺀 값. 0이면 고르는 의미가 없다.

타깃-층화 · 사후-의존

타깃-층화 = 다섯 타깃을 한 통에 섞지 않고 같은 타깃 안에서만 후보끼리 비교해 점수를 매기는 것. 섞으면 "이 타깃이 원래 쉬웠다"가 "이 모델이 잘 골랐다"로 둔갑한다. 사후-의존 = 학습 중에만 정답을 볼 수 있는 경로(사후분포)가 손실을 대신 낮춰 주는 바람에, 배포 때 실제로 쓰이는 경로(사전분포)가 규칙을 배울 압력을 잃는 현상 — 변분 오토인코더 문헌에 알려진 실패 양식. B 팔의 "서로 다른 목표에 같은 구조 0.280"이 이 설명과 정합하지만 인과는 아직 시험하지 않았다.

MatterGPT_RL · 크리스탈 실험 기록 (2026-07-17 → 2026-07-26, 페이지 작성 2026-07-27). 모든 수치는 작성 시점에 autoresearch/order_mdl-260711/의 원자료(json·log)에서 재계산해 일치를 확인한 값이다. 지표 정의·선행연구 좌표 상세는 부록 페이지. ↑ 맨 위로