
보장할 수 없는 상황을 마주했을 때, 보장을 버리지 않고 한 단계 위로 물러나기 — 22단계 구현 과정에서 3번 반복된 동일한 패턴
요약
기호 추론 에이전트(Thinking Stone)를 확장하는 과정에서 마주한 불확실성(확률, 가치 등)을 해결하기 위해, 보장의 대상을 메타 레벨로 격상하여 시스템의 건전성을 유지하는 설계 패턴을 다룹니다.
핵심 포인트
- 불확실한 상황에서 보장의 대상을 메타 레벨(추정 과정의 정확성)로 전환
- 확률적 판단 도입을 통해 교정 오차(Calibration error)를 획기적으로 개선
- 제안과 검증을 분리하여 제안자의 성능과 무관하게 결론의 건전성 보장
- 외부 파라미터 의존성을 줄이기 위한 가치 판단 설계의 필요성
요약
쌓기 놀이(Building blocks)의 세계에서 움직이는 기호 추론 에이전트(Thinking Stone, 이하 TS)를 22단계에 걸쳐 확장해 나가는 과정에서, 성질이 완전히 다른 세 가지 벽에 대해 완전히 동일한 방식으로 대처했다는 사실을 구현을 마친 후에 깨달았다.
| 벽에 부딪힌 단계 | 보장할 수 없게 된 것 | 물러난 지점 |
|---|---|---|
| 확률 | "이 결론은 참이다" | "이 확률은 관찰로부터 올바르게 계산되었다" |
| ... |
세 가지 모두 사전에 "이런 설계로 하자"라고 결정한 것이 아니었다. 벽에 부딪힐 때마다, 나중에 동일한 형태가 반복해서 나타났다. 본고는 그 패턴과 그것이 기능하는 조건, 그리고 기능하지 않았던 한 가지 사례를 보고한다.
코드와 테스트(452건)는 공개되어 있다: thinking-stone
전제: TS의 검증기는 어떻게 작동하는가
TS는 제안(무엇을 해야 하는가)과 검증(그것이 옳은가)을 분리한 구조로 작동한다. 제안은 누가 해도 상관없으며, 환각(Hallucination)에 가까워도 괜찮다. 검증기가 규칙에 비추어 독립적으로 재계산하며, 통과하지 못한 것은 채택하지 않는다. 이를 통해 6층 × 5종류의 제안자(유능함·엉터리·환각 섞임·침묵·고장)의 조합으로 건전성(Soundness)을 측정해도 항상 100%가 유지됨을 확인했다.
이 구조의 강점은 "제안이 아무리 틀리더라도 채택되는 결론은 옳다"는 것을 기계적으로 보장할 수 있다는 점에 있다. 본고에서 다루는 것은 이 보장 그 자체가 성립하지 않게 된 세 가지 국면이다.
벽 1: 확률 — "참이다"를 보장할 수 없게 되었을 때
TS의 세계에는 기울어진 면 위의 물체가 지탱될 수 있는지를 결정하는 임계값(Threshold)이 있다. 임계값 바로 경계의 조건(Boundary condition)을 300회 관찰한 결과, 실제로 지탱된 비율은 0.697이었다. 이보다 엄밀한 이론은 존재하지 않는다 — 동일한 기술에 대해 결과가 엇갈리는 관찰 쌍이 91개 있었으며, 기호 규칙만으로는 0.697이 천장이 된다는 것을 확인할 수 있었다.
여기서 TS가 취한 대처는 보장의 대상을 옮기는 것이었다.
구: 검증기는 "Supports(y, x)는 참이다"를 보장한다. -
신: 검증기는 "P(Supports(y, x)) = 0.697이 관찰 이력으로부터 올바르게 계산되었다"를 보장한다.
대상 레벨(세계에 대하여)의 주장은 불확실해졌지만, 메타 레벨(자신이 어떻게 추정했는가에 대하여)의 주장은 여전히 확실하다. "나는 0.697의 확실성으로 그렇게 생각한다"라는 주장 자체는 반드시 옳다.
이로 인해 무엇이 변했는가. 0/1의 정답률은 0.697 그대로 움직이지 않는다(정보 이론적인 상한선이므로 당연하다). 하지만, 교정 오차(Calibration error)("0.7이라고 말했을 때 실제로 7할이 맞는가")는 0.050에서 0.002로 개선되었고, 행동 성공률(불확실성을 고려한 계획 수립의 실측 결과)은 0.624에서 0.690으로 올라갔다. "단정하는 핵"도 "답을 거부하는 핵"도 위험한 계획과 안전한 계획을 구분할 수 없다. 구분을 가능하게 만든 것은 확률 그 자체였다.
벽 2: 가치 — "올바른 판단"을 보장할 수 없게 되었을 때
확률을 다룰 수 있게 되자 다음 벽이 나타났다. "0.303의 확률로 물건을 부수는 행동을 취해야 하는가"는 확률을 아무리 정밀하게 해도 연역만으로는 결정되지 않는다. 임계값을 $\theta=0.30$으로 두면 망설이고, $\theta=0.31$로 두면 실행한다. 데이터는 $\theta$를 결정하지 않는다.
처음에는 $\theta$를 외부 파라미터(External parameter)로 직접 주었다. 하지만 이 방식으로는 물체가 늘어날 때마다 "이 물체의 가치는 얼마인가"를 인간이 계속해서 제공해야 하며, 외부 의존성이 세계의 크기에 비례하여 늘어난다.
그래서 가치 그 자체를 내부 상태(Internal state)로부터 도출하는 구성으로 바꾸었다. 에이전트에게 "자원(Resource)"이라는 내부 상태를 갖게 하고, 항상성(Homeostasis, 목표값으로부터의 편차를 최소화하려는 성질)만을 부여한다. 부여하는 것은 사실뿐이다 — "이 물체가 부서지면 자원이 0.50 감소한다". "자원이 줄어들면 나쁘다"라는 사실 자체는 어디에도 적혀 있지 않다. 그것은 항상성의 정의로부터 자동으로 도출된다.
결과적으로 $\theta$는 물체마다 인간이 지정하는 것에서, 내부 상태와 항상성의 형태로부터 계산되는 것으로 바뀌었다. 기지의 물체에서는 외부에서 가치를 직접 주는 방식과의 판정 오차가 둘 다 0이었다. 하지만, **본 적 없는 물체(부서지면 신체를 상하게 하는 칼날 등)**에 대해서는 외부 지정 방식은 오차가 0.259까지 악화된 반면, 내부 상태로부터 도출하는 방식은 오차가 0이었다(성질로서 완전히 새로운 "해악의 종류"라 하더라도, 내부 상태에 미치는 영향이라는 공통 언어로 다룰 수 있기 때문이다).
나아가, 명시적으로 프로그래밍하지 않은 행동이 나타났다. 내부 상태(internal state)가 부족할 때는 리스크가 높은 선택을 하고, 충족되어 있을 때는 신중해진다. 고정된 θ를 가진 에이전트는 너무 신중하면 굶주리고, 너무 대담하면 파멸하지만(실측 결과 197수·38수라는 이른 단계에서 파탄), 항상성(homeostasis)에 기반하여 θ를 매번 도출하는 에이전트만이 안정적으로 생존을 지속했다.
여기서의 이동은, "이 판단은 옳다"에서 "이 가치는 내부 상태로부터 올바르게 도출되었다"로의 퇴피(退避)였다. 외부 의존이 사라진 것은 아니다("왜 자원을 유지하고 싶은가"라는 항상성의 목표 자체는 궁극적으로 인간이 부여한다). 하지만 그 의존은 한 번만 부여하면 되었고, 세계의 크기에 비례하여 늘어나지 않게 되었다.
벽 3: 미지의 위험——"안전하다"를 보장할 수 없게 되었을 때
여기까지는 닫힌 세계(보이는 범위가 전부라는 전제) 안에서의 이야기였다. 이 전제를 벗어나면 어떤 일이 발생하는지를 확인했다.
시야 밖에 물체가 존재할 수 있는 상황으로 설정하자, TS의 "이 행동에는 부작용이 없다"라는 증명은, 검증기(verifier)가 정상적으로 기능하고 있음에도 불구하고 잘못 통과하게 되었다. 보이지 않는 것은 사실의 집합에 존재하지 않기 때문에, 증명으로서는 형식적으로 옳지만 실제로는 보이지 않는 곳에서 물건이 부서진다. 건전성(integrity)이 깨진 것은 검증기 측이 아니라, 세계(지각) 측이었다.
확률로 대처하려 해도 효과가 없었다. 기지의 선택지를 아무리 정밀하게 검토해도, 애초에 존재를 모르는 선택지의 확률은 계산할 방법이 없다(실측 시 교정 오차(calibration error)가 0.002에서 0.232까지 악화되었다). 분모를 셀 수 없으니 당연한 결과다.
여기서 시도한 것이 가역성(reversibility)—"이 행동은 나중에 되돌릴 수 있는가"를 연역하게 하는 것이었다. 그러나 이 역시 닫힌 세계의 전제 위에서 판정하게 하면 전혀 기능하지 않았다. 보이지 않는 부분에 대해서는 "되돌릴 수 있다"라는 증명이 (보이는 범위 내에서는) 올바르게 구성되어 버려, 실제로는 보이지 않는 곳에서 불가역적인 파손이 일어난다. 파손된 비율은 가역성을 전혀 고려하지 않을 때와 동일한 0.501 그대로였다.
효과가 있었던 것은 가역성의 정밀한 계산이 아니라, 한 줄의 보수적인 규칙이었다. "보이지 않는 부분에 접하는 행동은 가역이라고 간주하지 않는다." 이것만으로 파손된 비율은 0.501에서 0으로 떨어졌다. 새로운 지식은 하나도 늘지 않았다. 판단의 구조만 바뀌었을 뿐이다.
여기서의 이동은 "이 행동은 안전하다"에서 "보이지 않는 부분에는 접하지 않는다"로의 퇴피이다. 다만, 이 이동에는 벽 1·벽 2와는 다른 성질이 있다. 다음 절에서 서술한다.
3가지에 공통되는 형태
세 가지 사례를 나열하면 다음과 같은 구조가 반복되고 있음을 알 수 있다.
- 대상 레벨의 주장을 포기한다. "이것은 참이다", "이것은 옳다", "이것은 안전하다"——세계 그 자체에 대한 단정을 보장할 수 없게 된다.
- 메타 레벨, 혹은 구조적인 주장으로 물러난다. "나는 이 확률로 그렇게 생각한다", "이 가치는 이 내부 상태로부터 도출되었다", "보이지 않는 부분에는 접하지 않는다"——자신의 추론 과정이나 판단의 구조에 대해서는 여전히 확실하게 주장할 수 있는 지점까지 후퇴한다.
- 물러난 곳에서 외부 입력에 대한 의존이 세계의 크기에 대해 스케일링(scaling)되지 않는다. 물체가 늘어나도 θ를 하나하나 다시 부여할 필요는 없다. 시야 밖에 무엇이 있는지 몰라도 판단의 질은 유지할 수 있다.
이 3단계가 확률, 가치, 안전성이라는 서로 독립적인 문제 설정에서, 독립적이면서도 동일한 형태로 나타났다.
왜 이 형태가 반복해서 나타나는가 (가설)
확증은 없다. 여기서부터는 추측이지만, 제안과 검증을 분리하는 아키텍처 자체가 이 퇴피 패턴을 유발하기 쉬운 것이 아닌가라고 생각하고 있다.
검증기의 역할은 "어떤 주장이 주어진 규칙과 절차에 비추어 올바르게 도출되었는가"를 확인하는 것이며, 그 주장의 대상이 무엇인지에는 본질적으로 의존하지 않는다. 대상이 세계의 사실이라면 "참인가"를 검증하고, 대상이 확률이라면 "올바르게 계산되었는가"를 검증하며, 대상이 가역성의 판단 규칙이라면 "그 규칙이 올바르게 적용되었는가"를 검증한다. 검증이라는 기능 자체가 대상 레벨과 메타 레벨을 구분하지 않는 형태로 구현되어 있기 때문에, 대상 레벨에서 막혔을 때 동일한 검증의 틀 안에서 메타 레벨로 슬라이드하기 쉽다는 구조적인 이유가 있는 것이 아닐까 생각한다.
이는 어디까지나 구현 후에 되돌아보며 세운 가설이며, 다른 아키텍처에서도 같은 일이 일어나는지, 의도적으로 설계하면 재현할 수 있는지는 검증하지 않았다.
한계: 물러날 곳이 없었던 한 가지 사례
솔직하게 적어둘 필요가 있다. 이 패턴이 항상 기능하는 것은 아니다.
시야 밖에 무엇이 있는지라는 문제 그 자체(Unknown Unknowns, 미지의 미지)에 대해서는, 확률(Probability)이라는 퇴피처를 시도했으나 기능하지 않았다(앞서 언급했듯이, 교정 오차(Calibration Error)가 악화되었다). 가역성(Reversibility)이라는 퇴피처 또한, 닫힌 세계(Closed World)를 전제로 계산하는 한 기능하지 않았다. 최종적으로 기능한 것은 "보이지 않는 부분에는 손대지 않는다"라는 보수적인 규칙이었으나, 이는 문제를 해결한 것이 아니라 회피하고 있는 것이다. 실제로 기아(Starvation)에 가까운 내부 상태일 때는 이 보수적 규칙을 깨고 행동하여, 단 한 번 물건을 파손했다. "절대적으로 안전"을 관철하는 방침은, 반대로 생존하지 못함으로써 파탄 났다.
미지의 미지 그 자체에 대해 확실하게 기능하는 퇴피처를, 이 구현에서는 찾아내지 못했다. 되돌아올 수 있게 만들 수는 있었지만, 대비할 수는 없었다.
요약
"보장할 수 없는 것을 마주했을 때, 보장을 버리지 않고 한 단계 위로 물러나기"라는 방식은 확률, 가치, 안전성이라는 세 가지 독립적인 벽에서 각각 독립적으로 발견된 동일한 패턴이었다. 사전에 통합 설계로서 결정한 것이 아니라, 각각의 벽에 부딪혔을 때의 구현 판단이 나중에 되돌아보니 같은 형태를 띠고 있었다.
이 패턴이 기능하는 조건(물러난 곳이 정말로 세계의 크기에 의존하지 않는 구조로 되어 있는가)과, 기능하지 않는 조건(진정한 미지의 것—미지의 미지—에 대해서는 메타 레벨(Meta-level)로의 퇴피 자체가 성립하지 않는 경우가 있다) 양쪽 모두를 구현과 실측을 통해 확인할 수 있었던 것이 본고의 주요 보고 내용이다.
구체적인 수치와 구현의 상세 내용(특히 벽 3의 가역성 실험, 닫힌 세계 상태에서 가역성을 판정하면 효과가 없었던 이야기)은 후속편인 케이스 스터디 기사로 정리할 예정입니다. 공개되는 대로 본고에도 링크를 추가하겠습니다.
재현 방법
git clone https://github.com/aikun2-h/thinking-stone
cd thinking-stone
pip install -r requirements.txt
...
설계 시의 판단(왜 이 형태로 정착했는지, 그 외에 어떤 안을 버렸는지)은 리포지토리 내의 설계 문서에 일본어로 기록되어 있다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기