본문으로 건너뛰기

지름길 측정: rsbench와 개념 품질

📍 현재 위치: II부 · 식별 가능성과 추론 지름길 — 6장. 식별 가능성은 레이블 지표가 지식의 모든 대칭에 대해 눈이 멀어 있음을 증명했습니다; 이 장은 레이블이 볼 수 없는 것을 측정하는 도구를 짓습니다.

2부는 두 번의 설치로 하나의 부정적 결과를 전달해 왔습니다. 추론 지름길은 모델 개념의 레이블-완벽 재레이블링들을 세었습니다: XOR(exclusive-or, 배타적 논리합) 과제에서 열여섯 개의 허용 가능한 사상이 있었고(그중 열다섯 개가 틀린 것), 훈련 조합 하나가 빠지면 서른두 개(그중 서른한 개가 틀린 것)가 되었습니다. 식별 가능성은 그중 어느 하나도 훈련이 바라보는 곳에서는 왜 보이지 않는지를 설명했습니다: 모든 상태에서 지식과 교환되는 전단사 재레이블링들은 하나의 군을 이루며, 어떤 레이블 지표도, 어떤 테스트 집합에서도, 어떤 크기에서도, 그런 재레이블링만큼 차이 나는 두 모델을 구별할 수 없습니다; 나머지 허용 가능한 사상들도 관측된 지지집합 위에서는 똑같이 보이지 않습니다. "여러분이 즐겨 쓰는 지표는 그 실패를 볼 수 없다"고 말하는 정리는 하나의 구성적 질문을 강제합니다: 그렇다면 무엇이 그것을 볼 수 있을까요? 답은 같은 레이블로부터 계산된 더 영리한 통계량이 아닙니다; 그 정리가 그것을 금지합니다. 답은 벤치마크 자체가 무엇을 갖추는지의 변화입니다. 개념을 채점하려면 벤치마크는 개념 수준의 참값을 실어 날라야 합니다; 위험을 미리 알아야 한다면 벤치마크는 자신의 최적점을 세어야 합니다; 위험을 오르내리게 다이얼로 조절하려면 관측된 지지집합이 손잡이여야 합니다. 이 장은 이론으로부터 그 요구 사항 목록을 유도하고, 그것을 제도화하는 참조 스위트를 소개한 뒤, companion의 책상 규모 재구축을 살펴보며, 이 장의 척추가 되는 커밋된 정면 대결로 끝을 맺습니다: 같은 초기화에서 나온 두 모델이, 레이블 정확도 1.000에서는 구별 불가능하지만, 패널의 모든 개념 지표에서 갈라집니다.

쉽게 말하면

수학 시험을 두 가지 방식으로 채점한다고 상상해 보십시오. 값싼 방식은 최종 답만 채점합니다: 두 학생 모두 "42"라고 쓰면 둘 다 만점을 받습니다. 비싼 방식은 풀이 과정을 모아 매 단계를 채점 기준표에 대비해 채점합니다. 이제 두 학생이 갈라집니다: 한 명은 올바른 대수를 거쳐 42를 유도했고, 다른 한 명은 답안을 암기했으며, 풀이를 읽어 보면 매 줄에 같은 무의미한 단계를 적어 놓았습니다. 이 비싼 채점이 무엇을 요구했는지 주목하십시오: 채점자는 정답만이 아니라 올바른 풀이가 무엇인지 미리 알아야 했습니다. 지름길을 의식하는 벤치마크는 그 비싼 시험입니다. 최종 답은 레이블이고, 풀이 과정은 모델의 개념이며, 채점 기준표는 오직 벤치마크 설계자만이 제공할 수 있는 개념 수준의 참값이고, 어디서나 같은 한 단계를 재사용하는 학생은 이 장이 붕괴(collapse)라고 부르는 것이며, 헛소리를 쓰면서도 극도로 자신만만한 학생은 보정 지표가 잡아내는 대상입니다. 이 장은 채점이 자동으로 이루어지도록 그 시험을 짓는 것에 관한 것입니다.

이 장에서 다루는 내용

  • 제품보다 먼저 유도된 요구 사항 목록: 2부의 이론이 지름길을 의식하는 벤치마크에게 항목별로 무엇을 갖추라고 강제하는지, 그리고 그 목록을 정확히 갖추는 참조 스위트(생성기, 최적점 계수기, 개념-지표 패널)를 다룹니다.
  • 인용된 생성기: 지지-편향 다이얼, 방해 차원, 그리고 모든 분할에 딸린 참값 개념을 갖춘, 잠재 비트 위의 시드가 붙은 패리티 및 CNF(conjunctive normal form, 논리곱 표준형) 과제를 다루며, 모든 계약은 가정되지 않고 assert됩니다.
  • 계수기와 그 #SAT 환원: 단계별로 유도된 인수분해된 곱으로서의 지름길 개수, 패리티에 대한 닫힌 형식, 규모에서 근사 계수기를 쓰는 실제 스위트의 명제 모델 계수로의 환원, 그리고 작은 크기에서 그 기계 장치의 오라클 역할을 하는 장난감의 전수 나열을 다룹니다.
  • 지표 패널, 각각 유도된 뒤 구현됨: 개념 정확도에 대비한 레이블 정확도, 매크로 평균된 개념 F1, 개념 붕괴(결코 예측되지 않는 상태의 개수라는 논문의 정의를 companion이 정규화된 엔트로피를 1에서 뺀 형태로 다듬은 것), 그리고 개념 헤드들에 대한 10구간 기대 보정 오차를 다룹니다.
  • 커밋된 정면 대결: 같은 초기화에서 나온 무너지는 지름길과 그 개념-지도 쌍둥이를, 열마다 읽어 나가며, 모든 방향성 있는 주장이 assert로 지켜집니다.
  • 값싼 경보로서의 분포 밖 평가: 지지집합에 맞춰진 지름길이 그 밖에서는 왜 실패해야 하는지, 커밋된 개수가 그것이 얼마나 자주 일어나는지를 정확히 얼마나 정량화하는지, 그리고 레이블만의 평가를 구해 내는 일이 왜 부분적일 뿐인지를 다룹니다.
  • 도구 설계자의 점검표: 이 스위트가 만족시키는 네 가지 원칙과, 이 권의 이후 벤치마크 장들이 추론 벤치마크 전반에 그것을 어떻게 적용하는지를 다룹니다.

벤치마크 설계자의 자리: 이론이 도구에게 무엇을 강제로 갖추게 하는가

설계자의 자리에 앉아 2부의 결과들을 제약 조건으로 받아들여 봅시다. 대상들을 다시 떠올려 보십시오: 하나의 과제는 참값 개념 상태들의 집합 G\mathcal{G}(kk개의 이진 개념에 대해 2k2^k개의 결합 비트 벡터이며, 여기서 kk는 잠재 개념의 개수를 셉니다)를 가지며, 각 개념 상태를 그 레이블로 보내는 레이블 사상 βK:G{0,1}\beta_{\mathsf{K}} : \mathcal{G} \to \{0, 1\}으로 작동하는 고정된 지식 K\mathsf{K} 한 조각을 가지고, 훈련 데이터가 실제로 방문하는 G\mathcal{G}의 부분집합인 관측된 지지집합(support)을 가집니다. 추론 지름길(reasoning shortcut, RS)은 의도되지 않은 최적점입니다: 항등원과는 다른 재레이블링 α:GG\alpha : \mathcal{G} \to \mathcal{G}로, 지지집합 안의 모든 gg에 대해 βK(α(g))=βK(g)\beta_{\mathsf{K}}(\alpha(g)) = \beta_{\mathsf{K}}(g)가 성립하여, 세계가 상태 gg에 있을 때 개념이 α(g)\alpha(g)를 뜻하는 모델이 모든 레이블을 옳게 만드는 것입니다. 다섯 가지 설계 요구 사항이 따라 나오며, 각각은 특정한 결과로부터 나옵니다:

2부의 결과벤치마크에게 강제로 갖추게 하는 것companion의 구현
개념 정확도는 참조 없이는 정의되지 않습니다; 레이블은 그것을 대신할 수 없습니다모든 분할, 모든 예제에 딸린 참값 개념 ggmake_task는 훈련, 테스트, 분포 밖 분할에 대해 (X,G,Y)(X, G, Y) 삼중항(입력, 참값 개념, 레이블)을 반환합니다(rsbench_lite.py 123–159행)
허용 가능성은 βK\beta_{\mathsf{K}}의 성질입니다; 지식 없이는 "틀린 개념"이라는 말에 의미가 없습니다과제와 함께 발표되는, 알려지고 고정된 지식 K\mathsf{K}레이블 함수는 kk비트 XOR이거나 시드가 붙은, 출력된 CNF입니다(83–110행)
지지집합을 줄이면 최적점 집합이 엄격히 커집니다수집의 우연이 아니라 조절 가능한 손잡이로서의 지지집합support_fracG\mathcal{G}의 시드가 붙은 순열(137–141행)
최적점의 개수는 어떤 훈련보다도 먼저 계산 가능한 과제의 성질입니다레이블-보존 재레이블링을 위한 계수기count_rs와 그 전수 조사 오라클(164–206행); 331–341행과 357–361행에서 인증됩니다
어떤 레이블 지표도 대칭만큼 차이 나는 모델들을 갈라놓을 수 없습니다참값 개념에 대비해 채점되는 개념 수준 지표AccC, 매크로 F1(C), 붕괴 Cls(C), 그리고 개념 ECE(expected calibration error, 기대 보정 오차)(213–268행)

요구 사항이 표 위에 올라온 뒤에야 제품에 이름을 붙이는 것이 말이 됩니다. 참조 스위트인 rsbench는 정확히 이 목록을 연구 규모로 갖춥니다 [1]: 참값 개념과 지식이 구성상 알려진 과제 생성기들의 집합(스위트는 생성기 계층을 rssgen이라 부릅니다), 어떤 과제가 허용하는 레이블-보존 재레이블링의 수를 세는 훈련 필요 없는 검증기(count-rss), 그리고 개념을 레이블과 별도로 채점하는 평가 계층(rsseval)입니다. 이것은 같은 연구 계보가 앞선 두 장에서 전개한 이론을 그대로 실행에 옮긴 것입니다 [2]: 검증기가 계산하는 개수는 정확히 지름길-계수 정리의 NoptN_{\mathrm{opt}}이며, 지표 패널이 존재하는 이유는 그 정리의 결론, 즉 레이블 가능도가 개념 의미론을 식별하지 못한다는 결론이 더 값싼 모든 경로를 닫아 버리기 때문입니다. companion 모듈 rsbench_lite.py는 앞 장들이 훈련시킨 것과 같은 2비트 XOR 과제 위에서 이 세 계층 모두를 책상 규모로 다시 지어, 이 장의 모든 숫자가 인용이 아니라 커밋되고 assert된 산출물이 되도록 합니다.

추론 지름길을 측정하기 위한 세 단계짜리 도구 다이어그램으로, 왼쪽에서 오른쪽으로 읽습니다. 1단계, 생성기: 지지 분율, 방해 차원, 시드라는 이름표가 붙은 세 개의 손잡이가 있는 상자로, 세 개의 겹쳐진 데이터 분할, 즉 훈련, 테스트, 분포 밖을 내보내며, 각각은 입력 특징 X, 참값 개념 G, 레이블 Y를 지니고, 모든 산출 지점에서 레이블이 참값 개념에 지식을 적용한 것과 같다는 배지가 붙어 있습니다. 2단계, 계수기: 과제의 지식과 관측된 지지집합을 받아 레이블-보존 재레이블링의 개수를 계산하는 상자로, 패리티 과제에 대해 지지 분율 1.00, 0.75, 0.50에서의 지름길 개수를 나타내는 작은 상승 막대그래프가 있으며, 규모에서 쓰이는 명제 모델 계수로의 환원과 장난감 규모에서 그 오라클로 쓰이는 전수 나열이 함께 주석으로 달려 있습니다. 3단계, 지표 패널: 같은 초기화에서 훈련된 두 모델, 즉 레이블만 쓰는 지름길과 개념-지도 쌍둥이를 비교하는 다섯 행짜리 스코어보드로, 레이블-정확도 행은 양쪽 모두 동일한 1.000 값을 보여 주는 반면, 개념 정확도, 매크로 개념 F1, 붕괴, 개념 보정 행은 모두 지도받은 쌍둥이 쪽으로 크게 벌어져 있으며, 지름길의 출현 벡터 100, 200, 0, 100은 결코 예측되지 않는 한 개념 상태를 보여 줍니다. 세 단계로 이루어진 도구: 참값 개념을 갖춘 생성기, 훈련 전에 과제의 위험을 값매기는 계수기, 레이블 정확도가 볼 수 없는 것을 갈라놓는 지표 패널. 저자가 AI의 도움을 받아 직접 제작한 원본 도해.

생성기: 구성상 갖추어지는 참값 개념

생성기는 수집된 데이터셋이 그저 바랄 수밖에 없는 것을 보장할 수 있습니다: 모든 예제의 개념이 알려져 있다는 것인데, 왜냐하면 개념이 먼저 표본으로 뽑히고 관측치가 그로부터 렌더링되었기 때문입니다. companion의 make_task는 스위트의 논리-과제 계열의 형태를 따릅니다(rsbench에서는 MNLogic 생성기입니다 [1]): 개념 상태 gg(kk개 비트의 벡터)를 표본으로 뽑고, 지식으로부터 레이블 y=βK(g)y = \beta_{\mathsf{K}}(g)를 계산하되 결코 입력으로부터 계산하지 않으며, 그런 다음 입력 xxgg로부터 렌더링합니다. 렌더링은 입력의 좌표 jj2gj12g_j - 1에 두는데, 이는 비트 값 0과 1을 각각 모서리 1-1+1+1로 사상하며, 척도 σ=0.25\sigma = 0.25의 가우스 산포를 더합니다(앞 장들이 썼던 것과 같은 모서리-군집 기하로, 다시 타이핑하지 않고 그대로 가져온 것입니다). kk개의 개념을 지닌 좌표 다음에는 개념을 전혀 지니지 않은 순수 잡음 좌표 n_distractors개가 옵니다(rsbench_lite.py 147–151행):

# x_concept = (2g − 1) + σ·ε ; x_distractor ~ N(0, 1), concept-free.
x = np.hstack([
(2.0 * g - 1.0) + NOISE * rng.standard_normal((len(g), k)),
rng.standard_normal((len(g), n_distractors))])
y = np.array([label_fn(tuple(row)) for row in g], dtype=int)

지지집합 손잡이는 순열로 작동합니다: 2k2^k개의 개념 상태에 대한 시드가 붙은 뒤섞기가 처음 max(1,round(support_frac2k))\max(1, \mathrm{round}(\text{support\_frac} \cdot 2^k))개를 관측된 지지집합으로 남기며, 훈련과 테스트는 오직 그 지지집합으로부터만 균형 잡힌 표본을 뽑고, 세 번째 분할인 ood(out-of-distribution, 분포 밖)는 정확히 관측되지 않은 상태들을 다룹니다(137–159행). 모든 약속은 문서화되는 것이 아니라 assert됩니다: 하네스는 생성적 일관성(y=βK(g)y = \beta_{\mathsf{K}}(g)가 산출된 모든 지점에서 성립하는지)을 검사하고, 실현된 훈련 지지집합이 요청된 것과 같은지, ood 분할이 정확히 그 여집합을 덮는지, 각 개념 좌표가 실제로 자신의 비트를 나르는지, 어떤 방해 요소도 레이블 신호를 새어 나가게 하지 않는지를 검사합니다(303–325행). 커밋된 실행:

[1] rssgen-lite: seeded generator — k-bit XOR / random CNF over latent bits,
support bias, distractor dims; every split ships its gold concepts g
demo task: k=2 XOR, full support, 2 distractor dims (20 train / 50 test per world)
split points input dims worlds seen y = XOR(g) on every point
train 80 4 4 holds (asserted)
test 200 4 4 holds (asserted)
ood 0 - 0 empty at full support
concept dims carry their bit: corr(x_j, g_j) = 0.972, 0.970
distractors carry no label: |corr(x_d, y)| = 0.025, 0.098
support bias 0.5: train sees only {00, 10}; the ood split covers exactly {01, 11}

두 개의 상관관계 줄을 생성기의 정직함 증명서로 읽으십시오. 개념을 지닌 좌표들은 자신의 비트와 0.972와 0.970으로 상관되며(의도된 의미론에 도달 가능하다는 것, 즉 모델이 이 입력들로부터 올바른 개념을 배울 수 있다는 뜻입니다), 방해 요소들은 레이블과 0.025와 0.098로 상관되어, 0 주변의 표본 잡음일 뿐입니다(잘못된 의미론이 곁길로 밀수되어 들어오지 않는다는 뜻입니다). assert는 전자에 대해 최소 0.9를, 후자에 대해 절댓값으로 최대 0.3을 요구합니다(317–318행). 마지막 줄이 이 장에서 중요한 손잡이입니다: support_frac=0.5에서 과제는 개념 상태 00과 10만으로 훈련하며, 정확히 01과 11을 덮는 ood 분할을 내보냅니다. 이것이 스위트의 편향된 데이터셋 변형들 뒤에 있는 움직임으로, 그곳에서는 숫자-쌍 덧셈 과제가 훈련에서 모두-짝수이거나 모두-홀수인 숫자 쌍만을 관측하며(MNAdd-EvenOdd 변형), 섞인 쌍은 결코 보지 못합니다 [1]; 다음 절은 그 편향이 정확히 얼마만큼의 대가를 치르는지를 값매깁니다.

무엇 하나 훈련시키기 전에 틀리는 방법의 수 세기

계수기는 대부분의 벤치마크가 건너뛰는 요구 사항이며, 이 스위트가 그 이름을 딴 대상입니다. 그 양은 앞 장들의 지름길-계수 정리로부터 나오며, 여기서 정밀하게 다시 진술합니다 [2]. G\mathcal{G}를 개념 상태들의 집합, sGs \subseteq \mathcal{G}를 관측된 지지집합(\subseteq는 "~의 부분집합이다"라고 읽습니다)이라 하고, βK\beta_{\mathsf{K}}를 레이블 사상이라 합시다. 결정론적 최적점의 개수는 관측된 모든 레이블을 보존하는 재레이블링의 개수입니다:

Nopt  =  {α:GG   such that   βK(α(g))=βK(g) for all gs},N_{\mathrm{opt}} \;=\; \big\lvert \{\, \alpha : \mathcal{G} \to \mathcal{G} \;\text{ such that }\; \beta_{\mathsf{K}}(\alpha(g)) = \beta_{\mathsf{K}}(g) \text{ for all } g \in s \,\} \big\rvert,

여기서 \lvert \cdot \rvert는 집합의 원소 개수를 세고, \in은 "~의 원소이다"라고 읽습니다. 항등 사상은 언제나 그 집합 안에 있습니다(아무것도 바꾸지 않으니 모든 레이블을 보존합니다), 그러므로 추론 지름길의 개수는 Nopt1N_{\mathrm{opt}} - 1입니다. 이 사상들이 레이블 가능도의 결정론적 최적점을 남김없이 소진한다는 증명은 출처에 속하며 [2] 이 권의 범위를 넘어섭니다; companion이 소유하는 것은 NoptN_{\mathrm{opt}}계산이며, 그 계산은 온전히 유도할 만한 구조를 지니고 있습니다.

정의하는 조건은 각 상 α(g)\alpha(g)를 개별적으로 제약합니다: gg에 대한 절은 α(g)\alpha(g)만을 언급하며 α\alpha의 다른 값은 언급하지 않습니다. 함수 α\alpha란 상태마다 하나씩의 독립적인 상 선택이므로, 상태별 제약을 만족하는 함수의 개수는 상태마다 허용된 상의 개수를 곱한 곱입니다. 상태를 관측된 것과 관측되지 않은 것으로 나누어 봅시다. gsg \in s라면, 상은 gg레이블 클래스(label class), 즉 같은 레이블을 지닌 상태들의 집합 {cG:βK(c)=βK(g)}\{ c \in \mathcal{G} : \beta_{\mathsf{K}}(c) = \beta_{\mathsf{K}}(g) \} 안에 있어야 합니다. gsg \notin s(\notin은 "~의 원소가 아니다"라고 읽습니다)라면, 그 조건은 아무것도 말하지 않으며, 상은 G\lvert \mathcal{G} \rvert개의 상태 중 어느 것이어도 됩니다. 따라서

Nopt  =  gs{cG:βK(c)=βK(g)}    gsG,N_{\mathrm{opt}} \;=\; \prod_{g \in s} \big\lvert \{ c \in \mathcal{G} : \beta_{\mathsf{K}}(c) = \beta_{\mathsf{K}}(g) \} \big\rvert \;\cdot\; \prod_{g \notin s} \lvert \mathcal{G} \rvert,

여기서 \prod는 상태마다 하나씩의 인자를 곱합니다. 이 인수분해는 스위트의 이론이 그렇지 않으면 천문학적일 개수를 무너뜨리는 데 쓰는 것과 같은 구조적 움직임이며, companion의 계수기 전체를 이룹니다(rsbench_lite.py 182–192행):

worlds = all_worlds(k)
supp = set(support)
n = 1
for g in worlds:
if g in supp:
# observed: α(g) must land in g's label class, enumerated.
n *= sum(1 for c in worlds if label_fn(c) == label_fn(g))
else:
# unobserved: α(g) is unconstrained — any of the 2^k worlds.
n *= len(worlds)
return n

kk비트 패리티에 대해서는 그 인자들이 닫힌 형식을 가집니다. 상태의 처음 k1k-1개 비트를 자유롭게 고정하면 2k12^{k-1}가지 방법이 있고, 마지막 비트는 원하는 패리티에 의해 강제되므로, 두 레이블 클래스 각각은 2k2^k개의 상태 중 정확히 2k12^{k-1}개를 담습니다. 관측된 상태가 s\lvert s \rvert개일 때 이를 인수분해에 대입하면,

Nopt  =  (2k1)s(2k)2ks  =  2(k1)s2k(2ks).N_{\mathrm{opt}} \;=\; \big(2^{k-1}\big)^{\lvert s \rvert} \cdot \big(2^{k}\big)^{2^{k} - \lvert s \rvert} \;=\; 2^{(k-1)\lvert s \rvert} \cdot 2^{k\,(2^{k} - \lvert s \rvert)}.

세 가지 방식의 인증. 자기 자신과만 비교되는 계수기는 아무것도 증명하지 못하므로, 이 모듈은 단 하나의 행을 출력하기 전에 count_rs를 세 가지 독립적인 오라클에 대비해 인증합니다(331–341행): k=2k = 2에서 모든 GG=44=256\lvert \mathcal{G} \rvert^{\lvert \mathcal{G} \rvert} = 4^4 = 256개 사상에 대한 문자 그대로의 전수 조사(인수분해도 닫힌 형식도 없이, 195–206행), 두 종류의 레이블과 네 가지 다른 지지집합에 대해 실행됨; 앞 장들 자신의 나열로, 전체 지지집합에서 16개, 편향된 지지집합에서 32개의 최적점을 찾아냈던 것; 그리고 방금 유도한 패리티 닫힌 형식으로, 아래 표의 모든 행에 대해 assert됩니다(357–361행).

규모에 대한 정직한 참고. 전수 나열은 빠르게 죽습니다: k=10k = 10에서는 102410241024^{1024}개의 후보 사상이 있어 적어 낼 수조차 없고, 인수분해된 곱조차 레이블 클래스 크기를 필요로 하는데, 임의의 지식에 대해서는 이것이 곧 만족하는 배정의 개수를 세는 일을 뜻합니다. 그래서 실제 스위트는 "α\alpha가 관측된 모든 레이블을 보존한다"는 조건을 DIMACS CNF 형식(논리곱 표준형을 위한 표준 파일 형식)의 명제 논리식으로 부호화하여 #SAT 풀이기, 즉 모델 계수기에 넘깁니다: 작은 과제에서는 정확한 계수이고, 규모에서는 ApproxMC 계열의 근사 계수기입니다 [3]. 이는 (ε,δ)(\varepsilon, \delta) 보장, 즉 추정값 N^\hat{N}이 적어도 1δ1 - \delta의 확률로 참값 NN1+ε1 + \varepsilon 배수 안에 있다는, 다시 말해 N/(1+ε)N^(1+ε)NN / (1+\varepsilon) \le \hat{N} \le (1+\varepsilon) N이라는 보장과 함께 추정값 N^\hat{N}을 반환합니다. 그 보장 뒤에 있는 해싱 논증은 이 권의 범위를 넘어섭니다. companion이 대신 보여 주는 것은 그 계약입니다: 작은 kk에서는 전수 나열이 다루기 쉬우며, 정확하든 근사적이든 그런 어떤 계수기가 근접하기로 약속한 바로 그 정확한 답을 계산합니다; 장난감은 그 기계 장치를 위한 오라클이지, 그것을 대신하는 증명이 아닙니다. 커밋된 표:

RS count vs support fraction (support read off the generated train split):
task k support frac N_opt reasoning shortcuts (N_opt - 1)
XOR 2 4/4 1.00 16 15
XOR 2 3/4 0.75 32 31
XOR 2 2/4 0.50 64 63
XOR 3 8/8 1.00 65,536 65,535
XOR 3 6/8 0.75 262,144 262,143
XOR 3 4/8 0.50 1,048,576 1,048,575
CNF 3 8/8 1.00 84,375 84,374
CNF 3 6/8 0.75 600,000 599,999
CNF 3 4/8 0.50 2,560,000 2,559,999
the seeded CNF (k=3): (x1 | x2 | x3) & (x2 | x3 | ~x1) & (~x3 | ~x2 | x1) (5/8 worlds satisfy)

패리티 행들을 닫힌 형식으로 손수 풀어 봅시다. k=3k = 3에서 전체 지지집합은 s=8\lvert s \rvert = 8이므로, Nopt=228230=216=65,536N_{\mathrm{opt}} = 2^{2 \cdot 8} \cdot 2^{3 \cdot 0} = 2^{16} = 65{,}536입니다. 관측된 상태를 여섯 개로 줄이면 226232=212+6=218=262,1442^{2 \cdot 6} \cdot 2^{3 \cdot 2} = 2^{12+6} = 2^{18} = 262{,}144가 되고, 네 개로 줄이면 28212=220=1,048,5762^{8} \cdot 2^{12} = 2^{20} = 1{,}048{,}576이 됩니다: 지지집합에서 두 상태가 제거될 때마다 최적점이 네 배가 됩니다. CNF 행들은 대칭적인 닫힌 형식을 갖지 않지만, 인수분해는 여전히 그것들을 읽어 냅니다. 출력된 논리식은 8개 상태 중 5개에서 만족되므로, 그 레이블 클래스의 크기는 5와 3입니다; 전체 지지집합에서 Nopt=5533=312527=84,375N_{\mathrm{opt}} = 5^5 \cdot 3^3 = 3125 \cdot 27 = 84{,}375입니다. 관측된 상태가 여섯 개일 때는 실현된 지지집합이 만족하는 상태 다섯 개와 만족하지 않는 상태 하나를 남겨, 553182=3125364=600,0005^5 \cdot 3^1 \cdot 8^2 = 3125 \cdot 3 \cdot 64 = 600{,}000이 되고, 네 개일 때는 만족하는 상태만을 남겨 5484=6254096=2,560,0005^4 \cdot 8^4 = 625 \cdot 4096 = 2{,}560{,}000이 됩니다. 이 모듈은 모든 과제의 행을 따라 엄격한 단조 증가를 assert합니다(366–368행): 지지집합을 줄이는 것은 결코 최적점을 제거하지 않는데, 상태 하나를 빼는 것은 제약 하나를 빼는 것이기 때문이며, 그 증가는 엄격한데, 왜냐하면 빠진 상태의 인자가 자신의 레이블 클래스 크기(두 레이블이 모두 실현될 때는 언제나 G\lvert \mathcal{G} \rvert보다 엄격히 작습니다; CNF 생성기는 그것이 성립할 때까지 다시 뽑습니다, 89–103행)에서 정확히 G\lvert \mathcal{G} \rvert로 바뀌기 때문입니다. 관측이 적을수록 틀리는 방법이 많아지며, 이제는 누구든 훈련시키기도 전에 과제의 데이터시트에 인쇄할 수 있는 인증된 숫자로서 그렇습니다.

지표 패널: 개념을 채점하는 다섯 가지 방법

계수기는 과제를 값매기고, 지표는 모델을 채점합니다. companion의 패널은 스위트의 평가 계층을 공식으로부터 구현하며, 모델마다 다섯 개의 숫자를 내는데, 각각은 서로 다른 실패를 겨냥합니다.

AccY와 AccC, 진단적 격차. 테스트 지점 ii에서 모델의 예측 레이블을 y^i\hat{y}_i라 쓰고, 그곳에서 개념 jj에 대한 예측값을 c^ij\hat{c}_{ij}라 쓰되, 이는 개념 헤드 jj의 소프트맥스에서 아그맥스(가장 높은 확률의 값)로 읽어 낸 것입니다. 레이블 정확도(label accuracy) AccY는 y^i=yi\hat{y}_i = y_i인 테스트 지점의 비율이고, 개념 정확도(concept accuracy) AccC는 c^ij=gij\hat{c}_{ij} = g_{ij}(참값 비트)인 (지점, 개념) 쌍의 비율입니다(shortcuts.py 287–296행, 변경 없이 재사용됩니다; 엔진을 결코 중복 구현하지 않습니다). 어느 숫자도 새롭지 않습니다; 도구인 것은 그 입니다. 2부의 이론은 개념이 체계적으로 틀려 있으면서도 AccY가 1.000에 앉아 있을 수 있다고 말하므로, 벤치마크는 둘 다 보고하고 그 격차 AccY − AccC를 지름길 신호로 읽습니다.

매크로 F1(C), 붕괴가 클래스 균형을 깨뜨리기 때문에. 정확도는 모든 예측에 동일한 가중치를 두므로, 다수 클래스가 사라진 소수 클래스를 떠받칠 수 있게 둡니다. 매크로 평균 F1은 각 개념 값 u{0,1}u \in \{0, 1\}마다 정밀도 P=TP/(TP+FP)P = \mathrm{TP}/(\mathrm{TP} + \mathrm{FP})(uu라고 말한 예측 중 옳았던 비율; TP와 FP는 각각 참양성과 거짓양성을 셉니다)와 재현율 R=TP/(TP+FN)R = \mathrm{TP}/(\mathrm{TP} + \mathrm{FN})(uu와 같은 참값 중 모델이 찾아낸 비율; FN은 거짓음성을 셉니다)을 계산하고, 이를 F1=2PR/(P+R)F1 = 2PR/(P + R)로 결합한 뒤, 클래스별 F1 값을 비가중 평균합니다(shortcuts.py 265–277행). 비가중 평균이 핵심입니다: 모델이 더는 예측하지 않게 된 클래스는 데이터에서 아무리 희귀해도 재현율 0을 받아 평균을 정확히 절반만큼 끌어내립니다. 바로 이 실패, 즉 모델이 자신의 개념 어휘의 일부를 더는 쓰지 않게 되는 것에 다음 지표가 전용으로 배정됩니다.

개념 붕괴, 신중하게 해독하기. 스위트의 정의는 개수입니다 [1]: 개념 상태의 개수를 mm이라 쓰고(여기서는 m=G=4m = \lvert \mathcal{G} \rvert = 4), 모델이 한 번이라도 예측하는 상태의 개수를 pp라 쓰면(개념 혼동 행렬에서 0이 아닌 열들), 논문은 Cls(C)=1p/m\mathrm{Cls}(C) = 1 - p/m, 즉 결코 쓰이지 않는 어휘의 비율로 정의합니다. companion은 그 점수의 더 매끄러운, 엔트로피 기반 정제판을 구현하는데, 이는 사용이 0은 아니지만 고르지 않을 때에도 오릅니다. 출현 벡터(occurrence vector) vv를 지어 봅시다: 항목 vcv_c는 참값이 무엇이었는지와 무관하게, 개념 상태 cc가 테스트 집합에서 예측된 횟수를 셉니다. companion에서 이는 4×4 개념 혼동 행렬의 열 합입니다(rsbench_lite.py 261행). 이를 v~=v/cvc\tilde{v} = v / \sum_c v_c로 정규화하면 예측된 상태들에 대한 확률분포가 되며, 모델이 자신의 어휘를 얼마나 고르게 쓰는지를 섀넌 엔트로피(Shannon entropy) H[v~]=cv~clnv~cH[\tilde{v}] = -\sum_c \tilde{v}_c \ln \tilde{v}_c로 측정합니다(관례상 0ln0=00 \cdot \ln 0 = 0이어서 쓰이지 않은 상태는 아무것도 기여하지 않습니다). 엔트로피는 G\lvert \mathcal{G} \rvert개의 상태 모두가 동등하게 쓰일 때 개념 상태 개수의 로그인 lnG\ln \lvert \mathcal{G} \rvert로 최대가 되고 하나의 상태가 모든 것을 흡수할 때 0이 되므로, lnG\ln \lvert \mathcal{G} \rvert로 나누고 1에서 빼면 [0,1][0, 1] 안의 붕괴 점수가 나옵니다. 이 장의 커밋된 비교에서 두 공식은 정확히 일치합니다: 지름길은 m=4m = 4개 상태 중 p=3p = 3개를 쓰므로 논문의 점수는 13/4=0.251 - 3/4 = 0.25이고, 아래에서 손수 계산하는 엔트로피 판 역시 0.25에 내려앉으며, 지도받은 쌍둥이에 대해서는 둘 다 0.00을 줍니다. 커밋된 구현은 공식 주석까지 포함합니다(rsbench_lite.py 213–225행):

def collapse_cls(occurrence: np.ndarray) -> float:
"""Concept collapse. The paper's Cls(C) = 1 − p/m is count-based (p =
how many of the m concept states are ever predicted); this module's
smoother entropy-based refinement, with v the occurrence vector (how
often each state is PREDICTED over the test set) and ṽ = v / Σv,

Cls(C) = 1 − H[ṽ] / ln|𝒢|, H[ṽ] = −Σ_s ṽ_s ln ṽ_s (0·ln 0 = 0),

is 0 when every state is used equally, 1 at complete collapse, and also
rises for uneven-but-nonzero usage (both give 0.25 / 0.00 here)."""
v = occurrence.astype(float) / occurrence.sum()
h = float(-np.sum(v[v > 0] * np.log(v[v > 0])))
return 1.0 - h / float(np.log(len(occurrence)))

붕괴와 AccC는 의도적으로 중복되지 않습니다. 앞 장들이 잡아낸 개념 맞바꿈과 같은 순열 지름길은 참값이 그러하듯 모든 상태를 정확히 같은 빈도로 쓰므로, 그 출현 벡터는 균일하며, Cls(C) = 0인데도 AccC는 형편없습니다. 두 참값 상태를 하나의 예측 상태 위로 사상하는 붕괴하는 지름길은 단사가 아닙니다: 어떤 상태는 결코 예측되지 않고, 엔트로피는 떨어지며, Cls(C)는 오릅니다. 이것이 companion의 모델 선택기가 학습된 재레이블링이 레이블 관점에서 완벽하면서 동시에 단사가 아닌 첫 번째 시드를 훈련 스윕에서 찾는 이유입니다(rsbench_lite.py 276–288행): 그것은 오직 이 지표만이 드러내도록 지어진 그 실패를 원하는 것입니다.

개념 ECE, 과신 탐지기. 개념 헤드는 아그맥스만 출력하지 않습니다; 확률을 출력하며, 지름길의 확률은 특정한 종류로 틀려 있습니다: 경사 하강법이 최적점으로 몰아넣었기 때문에 확신에 차서 틀린 것입니다. B=10B = 10개의 등폭 신뢰도 구간에 대한 기대 보정 오차(expected calibration error, ECE)는 그 자신의 독스트링에 담긴 공식으로부터 구현됩니다(rsbench_lite.py 231–239행; 이를 계산하는 루프는 248행까지 이어집니다):

def ece_10bin(conf: np.ndarray, correct: np.ndarray) -> float:
"""Expected calibration error over N_BINS equal-width confidence bins:

ECE = Σ_b (n_b / n) · | acc(b) − conf(b) |,

where bin b collects the predictions whose top-class confidence falls in
[b/10, (b+1)/10), acc(b) is the fraction of them that are correct and
conf(b) their mean confidence. A confident-but-wrong concept head (the
shortcut signature) pays the full |acc − conf| gap."""

기호를 해독해 봅시다: nn은 채점된 예측의 개수이고, 구간 bb(b=0,,9b = 0, \ldots, 9)는 최상위-클래스 신뢰도가 [b/10,(b+1)/10)[b/10, (b+1)/10)에 놓이는 nbn_b개의 예측을 모으며, acc(b)\mathrm{acc}(b)는 그중 옳았던 비율이고, conf(b)\mathrm{conf}(b)는 그들의 평균 신뢰도입니다; 절대 격차의 가중합은 신뢰도가 말하는 바를 정확히 뜻하는 헤드에 대해서는 0입니다. 레이블에 적용될 때 ECE는 익숙한 신뢰도 측도입니다; 이 패널의 반전은 그것을 개념에 적용한다는 점입니다: evaluate_suite는 400개의 테스트 지점에 걸쳐 두 개념 헤드를 모아, 각 예측의 신뢰도 maxuπj[u]\max_u \pi_j[u](헤드 jj의 소프트맥스 확률 벡터 πj\pi_j에서, 후보 값 uu로 색인된 가장 큰 항목; kk는 이미 개념의 개수를 세므로 새 글자를 씁니다)를 그 정확성(그 헤드의 아그맥스가 참값 비트 gjg_j와 같으면 1, 아니면 0)에 대비해 채점하여, 모델마다 800개의 채점된 예측을 얻습니다(rsbench_lite.py 251–268행). 보정 이론, 신뢰도 다이어그램, 추정량의 구간화 편향에 대한 완전한 유도는 의도적으로 미루어집니다: 다음 장이 그 수학을 소유합니다. 여기서 ECE는 한 가지 역할, "의미에 대해 확신에 차 있으면서도 틀렸다"에 대한 패널의 경보 역할을 합니다.

정면 대결: 하나의 초기화, 두 개의 최적점, 거짓말하는 하나의 열

위의 모든 것은 하나의 커밋된 비교에서 제 값을 합니다. 두 모델은 앞 장들 자신의 훈련 기계 장치에서 나온 것으로, 같은 초기화(스윕 시드 15)에서 시작합니다: 하나는 레이블만으로 훈련되어 붕괴하는 지름길 위에 내려앉고, 다른 하나는 120개 훈련 지점 중 12개에 개념 레이블을 붙여 훈련됩니다; 둘 다 같은 전체 배치 경사 하강법을 600 에포크 동안 돌립니다(shortcuts.py 312–339행). 커밋된 패널:

[3] the metric suite: two models, SAME init (shortcuts.py seed 15),
trained by shortcuts.py's own machinery on its 2-bit XOR task:
label-only — the sweep's first COLLAPSING shortcut, alpha = 00->00 01->01 10->01 11->11
concept-sup — the same seed with concept labels on 12/120 points, alpha = 00->00 01->01 10->10 11->11
metric label-only concept-sup reading
AccY (label acc) 1.0000 1.0000 labels cannot tell them apart
AccC (concept acc) 0.7500 1.0000 the RS signal: high AccY, low AccC
F1(C) macro 0.7333 1.0000 per-concept F1 agrees
Cls(C) collapse 0.2500 0.0000 state 10 is never predicted
ECE(C) 10-bin 0.2467 0.0013 confident AND wrong on concepts
the shortcut's predicted-state occurrence vector v = (100, 200, 0, 100) over 400 test points:

열마다 읽어 가면서, 참 상태 10을 예측 상태 01로 보내고 다른 세 상태를 고정하는 학습된 사상 α\alpha로부터 각 지름길 숫자를 손수 유도해 봅시다.

AccY: 1.0000 대 1.0000. 근사한 것이 아니라 동일하며, 필연적으로 그렇습니다: XOR은 상태 01과 10에 같은 레이블을 부여하므로, βK(01)=1=βK(10)\beta_{\mathsf{K}}(01) = 1 = \beta_{\mathsf{K}}(10), 세계가 상태 10에 있을 때마다 01을 예측하는 것은 어떤 레이블도 결코 바꾸지 않습니다. 패널의 첫 행은 서로 일치하는 두 숫자 안에 담긴 2부 전체의 위기입니다.

AccC: 0.7500 대 1.0000. 테스트 집합은 상태마다 100개씩, 총 400개 지점, 개념 비트가 각각 두 개씩, 채점된 비트가 800개입니다. 고정된 세 상태에서는 모든 비트가 옳아 600개 중 600개입니다. 10 군집에서는 예측 01이 비트 모두를 틀리게 만들어(첫 비트는 참 1에 대해 0, 두 번째 비트는 참 0에 대해 1), 200개 중 0개입니다. 따라서 AccC=600/800=0.7500\mathrm{AccC} = 600/800 = 0.7500으로, 출력된 숫자와 정확히 일치합니다.

F1(C): 0.7333 대 1.0000. 개념 1을 계산해 봅시다. 값 1은 오직 11 군집에 대해서만 예측됩니다: TP=100\mathrm{TP} = 100, FP=0\mathrm{FP} = 0이고, 10 군집의 참 1들은 놓치므로 FN=100\mathrm{FN} = 100입니다; 그러므로 P=1P = 1, R=100/200=12R = 100/200 = \tfrac12이고, F1=2112/(1+12)=23F1 = 2 \cdot 1 \cdot \tfrac12 / (1 + \tfrac12) = \tfrac{2}{3}입니다. 값 0은 300개 지점에 대해 예측되며 그중 200개가 참으로 0입니다: P=23P = \tfrac{2}{3}, R=1R = 1, F1=223/53=45F1 = 2 \cdot \tfrac23 / \tfrac53 = \tfrac{4}{5}입니다. 매크로 평균은 (23+45)/2=1115=0.7333\big(\tfrac23 + \tfrac45\big)/2 = \tfrac{11}{15} = 0.7333\ldots이며; 개념 2는 거울상이라 같은 값을 내므로, 두 개념에 대한 평균은 0.73330.7333으로 유지됩니다.

Cls(C): 0.2500 대 0.0000. 출현 벡터는 v=(100,200,0,100)v = (100, 200, 0, 100)입니다: 상태 01은 두 군집 전체에 대해 예측되고, 상태 10은 하나도 예측되지 않습니다. 정규화하면 v~=(14,12,0,14)\tilde{v} = (\tfrac14, \tfrac12, 0, \tfrac14)입니다. ln14=ln4\ln \tfrac14 = -\ln 4ln12=12ln4\ln \tfrac12 = -\tfrac12 \ln 4를 써서,

H[v~]=(14ln14+12ln12+0+14ln14)=14ln4+14ln4+14ln4=34ln4,H[\tilde{v}] = -\Big( \tfrac14 \ln \tfrac14 + \tfrac12 \ln \tfrac12 + 0 + \tfrac14 \ln \tfrac14 \Big) = \tfrac14 \ln 4 + \tfrac14 \ln 4 + \tfrac14 \ln 4 = \tfrac34 \ln 4,

따라서 Cls=134=0.25\mathrm{Cls} = 1 - \tfrac{3}{4} = 0.25로 정확히, 출력된 값과 같습니다. 지도받은 쌍둥이는 네 상태 모두를 100번씩 균일하게 써서 Cls=0\mathrm{Cls} = 0입니다.

ECE(C): 0.2467 대 0.0013. 600 에포크 뒤 최적점에서는 헤드들의 신뢰도가 1 근처에 앉으므로, 800개의 모인 예측 거의 전부가 최상위 구간에 놓이는데, 그곳에서 지름길은 겨우 4분의 3만 옳습니다; 그 구간은 대략 0.751=0.25\lvert 0.75 - 1 \rvert = 0.25를 치르며, 커밋된 0.2467은 그 격차에서 다른 곳에 있는 약간의 질량을 뺀 것입니다. 지도받은 쌍둥이는 옳으면서도 확신에 차 있어 0.0013입니다. 그 비율, 약 190배는 패널에서 가장 목소리가 큰 단일 칸이며, 다음 장의 주제를 미리 보여 줍니다: 무언가를 뜻하는 확률은 정확도와는 별개의 성취라는 것입니다.

위의 모든 방향성 있는 읽기는 산문이 아니라 코드로 강제됩니다(rsbench_lite.py 374–381행):

# Labels cannot tell the two models apart ...
assert short["acc_y"] >= 0.95 and sup["acc_y"] >= 0.95
# ... but every concept-level metric can, directionally:
assert short["acc_c"] <= 0.8 and sup["acc_c"] >= 0.95 # AccC
assert short["f1_c"] <= 0.8 and sup["f1_c"] >= 0.95 # macro F1(C)
assert short["cls_c"] >= 0.2 and sup["cls_c"] <= 0.05 # Cls(C)
assert short["ece_c"] >= 0.15 and sup["ece_c"] <= 0.05 # concept ECE
assert short["cls_c"] - sup["cls_c"] >= 0.15

하네스는 나아가 잡아낸 사상이 실제로 세어진 최적점 중 하나이고, 단사가 아니며, 항등원이 아니라는 것과, 지도받은 쌍둥이가 항등원을 정확히 회복한다는 것을 assert합니다(384–387행). 이 도구는 단지 숫자를 보고하는 데 그치지 않습니다; 그 숫자가 이 장이 말하는 바를 정말로 뜻한다는 것을 인증합니다.

실제 스위트가 장난감을 넘어 더하는 것

companion은 하나의 과제 계열, 하나의 추출기 계열, 이진 개념, 그리고 정확한 나열입니다. 발표된 스위트는 모든 축을 확장합니다 [1]. 그 과제 사다리는 기호 입력에서 지각으로 올라갑니다: MNIST 숫자 위의 산술 과제(MNIST는 미국 국립표준기술연구소가 수정한 손글씨 숫자 집합으로, 여기서는 지지 손잡이가 축소판으로 삼는 편향된 짝수-홀수 변형도 포함합니다), companion이 흉내 내는 논리 계열(잠재 비트 위의 패리티와 무작위 CNF), 칸딘스키 스타일의 시각-패턴 과제, 블렌더로 렌더링된 3차원 장면 과제, 그리고 개념이 교통 상황이고 레이블이 제동 또는 조향 결정인, "옳은 답, 틀린 개념"이 더는 학술적인 이야기가 아니게 되는 지점인 고위험 합성 운전 스위트입니다. 그 모델 하네스는 4권의 NeSy(neuro-symbolic, 신경-기호) 아키텍처들, 즉 DeepProbLog와 로직 텐서 네트워크와 시맨틱-로스 모델들에 걸쳐 있으며, 해석 가능성 문헌에서 온 개념-지도 기준선 계열인 개념 병목 모델들도 함께 다룹니다 [4]. 그리고 규모에서 보고된 패턴은 커밋된 장난감 패턴을 크게 확대한 것입니다: 편향된 분할에서 여러 모델 계열에 걸쳐, 거의 완벽한 레이블 정확도가 붕괴한 개념 정확도와 공존합니다 [1]. 그 결과들은 인용문헌이 보고할 몫이며 이 장은 그것을 그대로 인용할 뿐입니다; MNIST나 블렌더 규모의 그 무엇도 여기서 시뮬레이션되지 않습니다.

분포 밖: 값싼 경보와 그 사각지대

패널은 참값 개념을 필요로 합니다. 더 값싼 경보가 하나 있으며, 딥러닝 문헌은 오랫동안 그것을 모든 종류의 지름길 학습에 대한 범용 시험으로 권해 왔습니다: 훈련 분포 밖에서 평가하십시오. 왜냐하면 거짓된 규칙성에 맞춰진 해법은 그 규칙성이 성립하지 않는 곳에서 실패하기 때문입니다 [5]. 추론 지름길에 대해서는 이 권고가 정밀하고 셀 수 있는 형태를 지니며, 생성기는 그것을 위한 바늘을 함께 실어 나릅니다: ood 분할은 지지 편향이 배제한 개념 상태들을 정확히 덮습니다(rsbench_lite.py 320–325행에서 assert되며, 위에서 출력됩니다: 훈련은 00과 10만을 보고, ood 분할은 정확히 01과 11을 덮습니다).

커밋된 계수 표는 그 경보가 얼마나 큰 소리를 내는지 정량화하며, 새로운 훈련 실행은 필요 없습니다; 그 산술 자체가 전시물입니다. 절반 지지집합에서의 k=2k = 2 패리티 과제, 표의 세 번째 행을 봅시다: Nopt=212222=416=64N_{\mathrm{opt}} = 2^{1 \cdot 2} \cdot 2^{2 \cdot 2} = 4 \cdot 16 = 64개의 최적점입니다. 각각은 관측되지 않은 두 상태에 대해 자유로우며; 그곳에서도 레이블 관점에서 옳은 상태를 유지하려면 각 자유로운 상이 올바른 패리티 클래스, 즉 4개 상태 중 2개 안에 떨어져야 합니다. 계수기가 계산했던 방식대로 64를 상태마다 하나씩의 인자로 인수분해해 봅시다: 관측된 두 상태 각각은 자신의 레이블 클래스 크기인 2를 기여하고, 자유로운 두 상태 각각은 제약 없는 4를 기여하므로, 64=224464 = 2 \cdot 2 \cdot 4 \cdot 4입니다. 각 자유로운 상을 올바른 패리티 클래스로 제약하는 것은 그 4를 2로 바꾸므로, 편향된 64개의 최적점 중 정확히 2222=162 \cdot 2 \cdot 2 \cdot 2 = 16개만이 ood 분할에서도 레이블 관점에서 옳은 채로 남으며, 이는 표의 첫 행에 있는 전체-지지집합 개수입니다. 나머지 6416=4864 - 16 = 48개, 즉 편향된 최적점의 4분의 3은 적어도 하나의 ood 레이블을 틀리게 됩니다: 그들에 대해서는 AccY가 마침내 떨어지는데, 편향이 배제한 그 분할에서, 어떤 개념 주석도 필요 없이 그렇습니다. 이것이 분포 밖 평가가 레이블만의 평가를 부분적으로 구해 낸다는 뜻입니다.

부분적으로일 뿐이며, 같은 산술이 왜 부분적일 뿐인지를 말해 줍니다. 살아남은 16개에는 항등원과, 모든 상태에서 레이블을 보존하는 15개의 재레이블링이 포함되어 있습니다; 그 15개는 첫 행의 전체-지지집합 지름길들이며, 분포 안이든 밖이든 어떤 분할에서의 어떤 레이블 지표도 그것들에 대해서는 결코 움직이지 않을 것입니다. 분포 밖 시험은 정확히 편향이 만들어 낸 지름길들을 탐지할 뿐, 지식 자체가 허용하는 지름길에 대해서는 아무 말도 하지 못합니다: 앞 장의 대칭군은 테스트 분포를 바꾸어도 변하지 않습니다. 값싼 경보는 모든 하네스에 있어야 하지만, 패널을 대체하지는 못합니다.

도구 설계자의 점검표

스위트를 설계 원칙으로 벗겨 내면 네 가지가 남으며, 그 무엇도 개념에만 국한되지 않습니다:

  1. 시험 대상 성질에 대한 참값을 실어 나르십시오. 그 성질이 개념 의미론이라면 참값 개념을 실어 나르고, 그것이 증명 타당성이라면 참값 유도를 실어 나르십시오. 벤치마크는 자신이 갖지 않은 것을 감사할 수 없습니다.
  2. 여러분이 잃을까 두려운 성질을 채점하십시오, 채점하기 쉬운 대리물이 아니라. 레이블 정확도는 언제나 쉬운 열이었습니다; 패널이 존재하는 이유는 두려워하는 그 성질(의미)이 증명 가능하게 그것으로부터 분리되기 때문입니다.
  3. 어려움을 우연이 아니라 손잡이로 만드십시오. 지지 분율, 방해 요소 개수, 개념 개수 kk, 그리고 레이블 함수 모두가 여기서 조절 가능하고 시드가 붙어 있어서, 주장된 실패는 재현 가능하고 주장된 수선은 더 어려운 설정에서 시험 가능합니다.
  4. 실패 양상 자체를 세십시오. NoptN_{\mathrm{opt}}는 어떤 모델이 존재하기도 전에 과제의 위험을 값매깁니다; 틀리는 방법이 몇 가지인지를 말할 수 없는 벤치마크는 통과 점수가 무엇을 배제하는지도 말할 수 없습니다.

이 점검표는 이 장이 이 권의 나머지 부분에 내보내는 수출품입니다. 6부는 그것을 추론 벤치마크 전반에 적용하는데, 그곳에서 시험 대상 성질은 개념 의미가 아니라 함의(entailment)입니다: NeSy 벤치마크 스위트와 시뮬레이터는 생성기 기반 스위트들을 정확히 이 네 가지 질문으로 읽으며, 함의-격차와 난이도-표면 장들은 사실상 요건 1과 요건 3을 연역을 향해 겨눈 것입니다. 그 장들이 최종 답만 채점하는 벤치마크를 비판할 때, 그 비판은 취향의 판단이 아니라 이 장의 정리에 뒷받침되는 비판일 것입니다.

아직 풀리지 않은 부분

패널의 힘의 원천은 동시에 그 경계이기도 합니다: 모든 개념 지표는 참값 벡터 gg를 소비했고, 참값 개념은 오직 벤치마크가 세계를 생성했거나 그것을 재구성하도록 주석자에게 비용을 지불한 곳에서만 존재합니다. 이는 합성 스위트와 작게 정제된 말뭉치를 다루지만, 파운데이션 모델이 자신의 어휘를 배우는 그 무엇도 다루지 못합니다. 자연 데이터 위의 학습된 어휘에 대해 개념 품질을 측정하는 일은, 참값 개념도 없고 때로는 합의된 개념 목록조차 없이, 열려 있습니다. 현재의 후보들은 각각 다른 가정을 맞바꿉니다: 앙상블은 독립적으로 훈련된 모델들 사이의 불일치를 비식별 가능성의 대리물로 삼아, 이 장의 모델들이 나온 스윕을 일반화합니다 [6]; 개입(intervention)은 주장된 개념을 편집하는 것이 그 의미론이 말하는 대로 하류의 행동을 바꾸는지를 살피며, 이는 개념-병목 계보의 시험입니다 [4]; 그리고 보정 신호는 정확도에 도달할 수 없을 때조차 지름길 개념은 오보정되어 있다는 이론 위에서, 헤드의 신뢰도가 조금이라도 확률처럼 행동하는지를 묻습니다. 어느 것도 참값을 대신하지 못합니다; 모두가 의미 자체를 확인할 수 없을 때 그 측정 가능한 그림자 무언가가 살아남는다는 데 거는 내기입니다. 세 번째 내기가 다음 장의 몫입니다.

왜 중요한가

이 시리즈에게 이 장은 불가능성 결과가 닫힐 수 있는 유일한 방식으로 2부의 궤적을 닫습니다: 그것을 반박함으로써가 아니라 그것을 우회하도록 설계함으로써입니다. 4권은 가장 자랑스러운 재주가 과제 레이블만으로 은닉 개념을 훈련시키는 것이었던 시스템들을 지었습니다; 추론 지름길 장은 그 재주가 조용히 실패할 수 있음을 보였고, 식별 가능성은 어떤 레이블 지표도 그 실패를 볼 수 없음을 보였으며, 이 장은 두 결과 모두를 인프라로 바꾸었습니다: 참값을 아는 생성기, 위험을 값매기는 계수기, 손실을 측정하는 패널입니다. 여러분 자신의 연구를 위한 옮겨 담을 수 있는 교훈은 이 점검표이며, 특히 그 두 번째 줄입니다. 여러분이 설계하는 모든 평가는 암묵적으로 여러분이 잃을까 두려운 성질이 무엇인지를 선언합니다; 그 지표가 대신 채점하기 쉬운 성질을 겨냥한다면, 벤치마크는 정확히 여러분이 가장 신경 쓰던 곳에서 실패하는 시스템을 인증하게 될 것입니다. 커밋된 정면 대결은 다섯 행에 담긴 경계 우화입니다: 완벽하고, 동일하며, 무가치한 레이블 정확도의 한 열, 그리고 벤치마크가 이론이 반드시 갖추어야 한다고 말한 것을 갖추었기 때문에 비로소 존재하는 네 개의 열입니다.

핵심 용어

  • 추론 지름길(RS, reasoning shortcut): 레이블 목적 함수의 의도되지 않은 최적점; 항등원이 아닌 개념 상태의 재레이블링으로, 관측된 모든 레이블을 보존하면서 잘못된 의미를 배정합니다.
  • 지지집합(support): 훈련 데이터가 실제로 방문하는 참값 개념 상태들의 집합; 지름길 개수는 지식과 지지집합을 통해서만 과제에 의존합니다.
  • 참값 개념(gold concepts): 생성된 모든 예제에 딸린 참값 개념 벡터로, 생성기가 개념을 먼저 표본으로 뽑고 그로부터 입력을 렌더링했기 때문에 얻을 수 있는 것입니다(아무것도 없는 데서 렌더링된 방해 좌표는 어떤 곁길도 답을 나르지 않음을 검증합니다).
  • NoptN_{\mathrm{opt}} / 최적점 계수기: 레이블-보존 재레이블링의 개수; 여기서는 인수분해된 정확한 나열로 계산되고, 규모에서는 #SAT(명제 논리식의 만족 배정을 세는 것)로의 환원과, 적어도 1δ1 - \delta의 확률로 추정값이 참값의 1+ε1 + \varepsilon 배수 안에 있는 (ε,δ)(\varepsilon, \delta)-근사 계수기를 확장 가능한 백엔드로 삼아 계산됩니다.
  • AccY / AccC: 레이블 정확도와 개념 정확도; 그 격차가 어느 숫자도 홀로는 보여 주지 못하는 지름길 신호인 쌍입니다.
  • 매크로 F1(C): 개념 값들에 대해 비가중 평균된 클래스별 F1; 사라진 클래스는 그 빈도와 무관하게 온전한 몫을 치릅니다.
  • 개념 붕괴 Cls(C): 논문에서는 개수입니다: 한 번이라도 예측된 개념 상태의 비율을 1에서 뺀 것, 즉 혼동 행렬의 열들에 대한 1p/m1 - p/m입니다; companion에서는 더 매끄러운 엔트로피 정제판입니다: 출현 벡터(각 개념 상태가 예측된 횟수, 혼동 행렬의 열 합)의 정규화된 섀넌 엔트로피를 1에서 뺀 것입니다. 둘 다 어휘가 균일하게 쓰일 때 0이고, 상태가 사라질수록 커지며(엔트로피 판은 한 상태가 모든 것을 흡수할 때 1에 이릅니다), 이 장의 커밋된 쌍 위에서 둘은 일치합니다.
  • 개념 ECE: 개념 헤드에 적용된 10구간 기대 보정 오차; 확신에 차서 틀린 의미에 대한 패널의 탐지기입니다.
  • OOD 분할: 관측되지 않은 개념 상태들을 정확히 덮는 생성된 분할; 지지집합이 만든 지름길은 드러내지만 지식이 허용한 지름길은 드러낼 수 없는 값싼 경보입니다.

이 장이 이끄는 곳

패널의 마지막 행은 블랙박스로 쓰였습니다: 신뢰도와 정확성이 갈라질 때 커지는 숫자였습니다. 보정은 그 상자를 엽니다. 그것은 보정을 첫 원리로부터 유도하며(확률이 신뢰할 만하다는 것이 무엇을 뜻하는지, 신뢰도 다이어그램, ECE가 추정하는 분해와 그것이 겪는 구간화 편향), 그런 다음 이 장이 마련한 질문을 던집니다: 의미에 대한 참값을 구할 수 없을 때, 잘 보정된 신뢰도는 실제로 얼마나 많은 신뢰를 살 수 있으며, 보정은 companion 자신의 모델들 위에서 어떻게 감사되고 수선되는가? 이 권의 신뢰 장부는 "정답이 옳은 이유 때문에 옳은가"에서 "시스템이 자신이 틀릴 수 있음을 아는가"로 옮겨 갑니다.


동반 코드: examples/frontier/rsbench_lite.py는 시드가 고정된 생성기, 인증된 지름길 계수기, 다섯 지표 패널을 examples/frontier/shortcuts.py의 훈련된 모델과 정리 2의 열거 위에 구현합니다. 이 장의 모든 숫자를 재현하려면 python3 examples/frontier/rsbench_lite.py를 실행하십시오. 실행은 결정적이며 모든 방향성 주장은 assert로 지켜집니다.