확률적 표면(Stochastic Surface) 축소하기: 확률적 시스템을 위한 설계 표준
요약
확률적 시스템의 신뢰성을 높이기 위해 '확률적 표면(Stochastic Surface)'을 축소해야 한다는 설계 원칙을 제안합니다. 모델의 불확실한 출력을 최소화하고, 결정론적인 구조와 검증 단계를 통해 시스템의 예측 가능성과 수정 가능성을 확보하는 방법을 다룹니다.
핵심 포인트
- 확률적 표면은 모델의 출력 중 결정론적 검증 없이 확률에만 의존하는 비율을 의미함
- 신뢰성 공학의 핵심은 확률적 표면을 줄여 결정론적 구조로 밀어 넣는 것임
- 결정론적 요소는 오류의 위치 파악과 수정이 가능하여 시스템 수렴을 도움
- 모델은 자신의 출력이 맞았는지 스스로 신호를 줄 수 없으므로 외부 검증 구조가 필수적임
나는 같은 문장의 변형들을 계속해서 쓰고 있다. 에이전트 메모리(Agent memory)는 반드시 진실의 근원(Source of truth)에서 종료되어야 한다. 에이전트 루프(Agent loop)는 반드시 확인(Check) 단계에서 종료되어야 한다. 생성형 3D(Generative 3D)는 반드시 검증기(Verifier)에서 종료되어야 한다. 확률적인 부분이 제안하면, 결정론적인(Deterministic) 부분이 처리한다.
네 개의 조각, 하나의 형태. 그것은 대개 네 개의 우연이 아니라 그 아래에 어떤 법칙이 존재한다는 신호다. 이것은 그 법칙을 기록하고, 시스템이 망가진 후가 아니라 출시되기 전의 다음 시스템에 적용할 수 있는 표준으로 만들기 위한 나의 시도다.
동반된 글에서는 생성형 AI가 그럴듯한 형태를 구축하며, 정확성은 생성기(Generator)를 둘러싼 구조와 검증(Verification)으로부터 와야 한다고 주장했다. 그것은 모델 외부에 무언가가 필요한지 '여부'에 대해 답한다. 하지만 '얼마나' 필요한지, 혹은 '경계선이 어디에 위치하는지'에 대해서는 답하지 않는다. 이 글은 그 경계선에 관한 것이다.
아무도 이름 붙이지 않는 수치
모든 확률적 시스템에는 거의 아무도 입 밖으로 내뱉지 않는 숫자가 붙어 있다. 그것은 출력물의 비율 중, 해당 부분을 고정하거나 확인할 수 있는 결정론적인(Deterministic) 요소 없이 모델이 그것을 맞히느냐에만 정확성이 달려 있는 비율이다.
이를 **확률적 표면 (Stochastic surface)**이라고 부르자.
순수한 엔드 투 엔드(End-to-end) 모델은 확률적 표면이 1이다. 그것이 내뱉는 모든 것은 샘플(Sample)이며, 모든 샘플은 최종적인 것으로 신뢰된다. 휴대용 계산기의 확률적 표면은 0이다. 실제 시스템은 그 사이에 위치하며, 정확한 위치는 모델보다, 프롬프트(Prompt)보다, 프레임워크(Framework)보다 더 중요한 단 하나의 핵심적인 설계 결정이다.
내가 할 수 있는 한 가장 명확하게 주장하자면 다음과 같다:
확률적 시스템의 신뢰성은 확률적 표면의 크기에 의해 제한된다. 신뢰성 공학(Reliability engineering)은 표면 축소다. 즉, 출력물의 가능한 많은 부분을 결정론적인 구조(Deterministic structure)로 밀어 넣고, 모델에는 진정으로 고정할 수 없는 최소한의 불가분한 부분만을 남기는 것이다.
이것은 스타일의 선호 문제가 아니다. 샘플이 무엇인지로부터 도출되는 결과다.
왜 표면이 신뢰성을 제한하는가
결정론적 구성 요소(deterministic component)는 샘플러가 결코 가질 수 없는 속성을 가지고 있습니다. 즉, 틀렸을 때 매번 같은 방식으로 틀리며, 그 원인을 찾아낼 수 있다는 점입니다. 단위 테스트(unit test)가 실패하거나, 제약 조건(constraint)이 위반되거나, 스키마(schema)가 페이로드를 거부합니다. 오류의 위치를 파악할 수 있으며(locatable), 이는 곧 수정 가능하다(fixable)는 것을 의미합니다. 결과적으로 시간이 흐름에 따라 시스템의 해당 부분은 올바른 방향으로 수렴하고 그 상태를 유지하게 됩니다.
샘플은 이러한 특성이 전혀 없습니다. 샘플은 매번 새롭게 추출되며, 매번 다른 방식으로 틀릴 수 있고, 결정적으로 자신이 틀렸는지에 대한 어떠한 신호도 전달하지 않습니다. 그럴듯해 보이는 출력과 올바른 출력은 생성기(generator) 내부에서는 구별할 수 없습니다. 이것이 전체 문제의 핵심을 한 문장으로 요약한 것입니다. 모델은 자신이 성공했는지 알려줄 수 없으므로, 설령 성공했을 때조차 신뢰할 수 없습니다.
이제 이러한 샘플들이 쌓인다고 가정해 봅시다. 만약 출력의 30%가 확률적 표면(stochastic surface) 위에 있다면, 모든 결과의 30%는 확신을 가지고 있지만 감지할 수 없는 방식으로 틀릴 수 있는 '검증되지 않은 주장'이 되며, 당신은 그 30%가 어느 부분인지에 대한 지도조차 갖지 못하게 됩니다. 실패는 스스로를 알리지 않습니다. 실패는 발생 지점에서 멀리 떨어진 하류(downstream) 단계에서, 워크플로우가 완벽하게 완료되었다고 믿고 지나쳐버린 '문 없는 오두막'처럼 나타납니다.
따라서 대략적인 정신적 모델(mental model)은 다음과 같습니다:
신뢰성(reliability) ≈ 1 − (고정되지 않은 확률적 비율(unanchored stochastic fraction))
이것은 문자 그대로 계산해야 하는 공식은 아니지만, 올바른 직관입니다. 출력을 생성(inventing)하는 대신 검색(retrieving)함으로써, 샘플링(sampling)하는 대신 규칙(rule)으로부터 도출함으로써, 그리고 명세(spec)에 따라 확인함으로써 표면에서 떼어내는 출력의 매 1%는, 감지할 수 없는 부채(liability)가 되지 않는 1%가 됩니다. 모델을 더 개선한다고 해서 확률적 시스템이 신뢰할 수 있게 되는 것이 아닙니다. 모델이 전적으로 책임져야 하는 출력의 양을 줄임으로써 시스템을 신뢰할 수 있게 만드는 것입니다.
그것은 모든 것을 재정의합니다. 이는 작업이 "최선의 모델을 고르는 것"이 아니라는 의미입니다. 대신 "모델만이 할 수 있는 부분에 대해서만 가능한 한 가장 작은 원을 그리고, 그 외의 모든 곳에는 결정론적 구조 (deterministic structure)를 구축하는 것"입니다. 시스템의 두 측면, 즉 생성(generation) 방식과 평가(evaluation) 방식이 이를 가장 명확하게 보여줍니다. 이 둘은 결국 동일한 움직임임이 드러납니다.
생성 측면: 발명하지 말고, 고정하라
모델이 무언가를 생성해야 할 때, 게으른 기본 설정은 그것을 설명하고 모델이 사전 학습된 지식 (prior)으로부터 그것을 마법처럼 불러내게 하는 것입니다. 이는 의도적으로 확률적 표면 (stochastic surface)을 최대화합니다. 거의 항상 더 나은 방법을 찾을 수 있으며, 그 옵션들은 모델이 발명해야 하는 비트 (bits)의 양에 따라 정렬된 깔끔한 사다리 형태를 이룹니다.
티어 1: 검색 후 수정 (retrieve, then edit)
가장 저렴하면서도 과소평가된 방법은 다음과 같습니다. 처음부터 생성하지 말고, 가장 유사한 고품질의 실제 사례를 찾아 작업에 필요한 부분만 수정하십시오.
게임 스튜디오의 예를 들면, 이는 "중세 시대 오두막을 생성하라"와 "여기에 우리 아티스트들이 제작하여 출시한 오두막이 있으니, 이를 남쪽 문이 있는 15x15 크기의 면적으로 조정하라"의 차이와 같습니다. 전자는 모델에게 전체 결과물을 환각 (hallucinate)하도록 요구합니다. 후자는 모델에게 올바른 시작점을 건네주고 차이점 (delta)만을 요구합니다. 이로 인해 확률적 표면이 전체 객체에서 수정 사항으로 축소됩니다.
이 원칙은 게임을 훨씬 넘어 일반화됩니다. 검색 증강 생성 (Retrieval-augmented generation, RAG)은 텍스트를 위한 이 방식입니다. 코딩 모델에게 아무것도 모르는 상태에서 함수를 작성하게 하는 대신, 기존의 테스트된 함수를 수정하도록 요청하는 것은 코드를 위한 이 방식입니다. 모든 경우에 논리는 동일합니다. 모델의 실제 작업량은 전체 정보에서 검색 가능한 정보를 뺀 값입니다. 실제 사례에 이미 존재하는 모든 것은 모델이 발명할 필요가 없는 정보이며, 따라서 틀릴 수도 없는 정보입니다. 당신은 유사도 검색 (similarity search)을 사용하여 표면을 낮추는 비용을 지불합니다. 이는 거의 항상 이득이 되는 거래입니다.
주의해야 할 실패 모드(failure mode): 검색(retrieval)은 당신을 검색된 대상에 고정시키므로, 검색 품질이 새로운 하한선(floor)이 됩니다. 형편없는 이웃(garbage neighbors)은 형편없는 편집(garbage edits)을 낳습니다. 하지만 변화한 점에 주목하십시오. 실패의 양상이 보이지 않는 생성적 환각(generative hallucination)에서, 당신이 검사하고, 점수를 매기고, 개선할 수 있는 가시적이고 확인 가능한(visible, checkable) 검색 단계로 이동했습니다. 이것이 바로 불완전할지라도 표면 축소(surface reduction)인 이유는, 고정되지 않은 실패를 고정된 실패로 전환하기 때문입니다.
Tier 2: 분포를 좁히기 위한 미세 조정 (fine-tune)
검색(Retrieval)은 _시작점(starting point)_을 바꿉니다. 미세 조정(Fine-tuning)은 _분포(distribution) 자체_를 바꿉니다.
이 단계는 가장 먼저 시도되면서도 가장 적게 이해되는 단계이기에 깊이 고민해 볼 가치가 있습니다. 베이스 모델(base model)은 인터넷에 존재할 법한 출력물들의 거대한 매니폴드(manifold)로부터 샘플링합니다. 당신만의 고품질, 도메인 특화 데이터로 미세 조정(fine-tuning)을 하면, 모델의 기본 샘플이 당신의 도메인이 '좋다'고 간주하는 것에 훨씬 더 가깝게 착륙하도록 그 매니폴드를 재형성합니다. 당신은 모델에게 새로운 사실을 가르치는 것이라기보다, 사전 확률(prior)의 질량 중심(center of mass)을 당신의 분포 위로 이동시키고, 분산(variance)을 줄이는 것입니다.
스튜디오의 경우, 이미 출시되었고, 아트 디렉팅이 완료되었으며, 스타일이 일관된 자산(assets)들로 구성된 자체 코퍼스(corpus)로 모델을 학습시키는 것은 검색(retrieval)이 할 수 없는 일을 수행합니다. 즉, 단순히 '검색 후 편집된' 결과물뿐만 아니라, 전형적인(typical) 생성물 자체가 스타일과 사양(spec)에 맞게 만듭니다. 이는 검색할 이웃이 없는 경우를 포함하여 모든 영역에서 하한선(floor)을 높여줍니다. 또한 규모가 충분히 커지면 경제성 측면에서도 유리합니다. 매번 거대한 프론티어 프롬프트(frontier prompt)에 비용을 지불하는 대신, 수백만 번의 생성에 걸쳐 분할 상환되는 일회성 학습 비용을 지불하게 되기 때문입니다.
하지만 미세 조정 (fine-tuning)이 확률적 표면 (stochastic surface)에 무엇을 수행하고 무엇을 수행하지 않는지에 대해 정확히 인지해야 합니다. 왜냐하면 바로 이 지점에서 사람들이 과도한 신뢰를 보내기 때문입니다. 미세 조정은 표면을 낮추는 것이지, 제거하는 것이 아닙니다. 완벽한 15x15 크기의 오두막 데이터로 미세 조정된 모델은 보통 15x15에 더 가까운 오두막을 생성할 것입니다. 하지만 이 모델은 여전히 충족하고 확인해야 할 술어 (predicate)로서 "점유 면적이 15x15이다"라는 표현 (representation)을 가지고 있지 않습니다. 모델은 더 좁은 분포 (distribution)에서 샘플링을 수행하지만, 여전히 샘플링을 하고 있는 것입니다. 이산적 제약 (discrete constraint)은 여전히 이산적이며, 더 좁아진 연속적 분포 (continuous distribution) 또한 여전히 연속적입니다. 미세 조정은 더 다루기 쉬운 샘플러 (sampler)를 얻게 해줄 뿐입니다. 그것은 솔버 (solver)나 검증기 (verifier)를 제공하지 않으며, 미세 조정된 모델을 마치 그것들인 것처럼 취급하는 것이 바로 이 표준 전체가 방지하고자 하는 과도한 신뢰 (over-trust)입니다.
올바른 해석은 다음과 같습니다: 미세 조정은 가장 강력한 _생성 측면 (generation-side)_의 레버 (lever)이지만, 생성 측면의 레버에는 한계가 있습니다. 그것들은 제안 (proposal)을 더 좋게 만들 뿐입니다. 제안이 스스로 해결되도록 (self-disposing) 만들지는 못합니다.
Tier 3: 잔차(residual)만 생성하기
가져올 수 있는 것을 모두 가져오고(retrieved) 축소할 수 있는 것을 모두 축소한 뒤, 남은 부분, 즉 고정할 수 있는 사전 정보 (prior)가 없는 진정으로 새로운 부분만이 모델이 자유롭게 발명하도록 내버려 두는 영역입니다. 그 잔차 (residual)야말로 생성적 사전 정보 (generative prior)가 제 역할을 다하는 곳입니다: 즉, 그럴듯하고, 다양하며, 풍부한 단일 형태를 만들어내는 것입니다. 동반 기사(companion piece)에 등장한 구(sphere)와 성문(gatehouse)이 이 단계를 잘 수행한 사례입니다.
핵심은 그 잔차를 작업이 허용하는 한 최대한 작게 만들고, 그것을 감싸는 것이지, 결코 그것이 최종 결과물로 남게 두어서는 안 된다는 것입니다. 이것이 시스템의 또 다른 측면입니다.
평가 측면: 규칙이 먼저, 모델은 마지막에
이제 출력을 생성하는 것에서 그것을 판단하는 것으로 전환해 봅시다. 동일한 법칙이 적용되며, 안티 패턴 (anti-pattern)은 진전처럼 보이기 때문에 더욱 유혹적입니다: 전체 출력을 LLM에 전달하고 "이것이 좋은가요?"라고 묻는 것입니다.
그것은 당신의 평가(evaluation)의 확률적 표면(stochastic surface)을 100%로 만듭니다. 당신은 자신이 언제 틀렸는지 말할 수 없는 생성기(generator)를 평가하기 위해, 자신이 언제 틀렸는지 말할 수 없는 판사(judge)를 만든 것입니다. 트렌치코트를 입은 두 명의 닻 없는 샘플러(unanchored samplers)와 같습니다. 겉으로는 아름답게 시연되지만, 내부적으로는 조용히 부패합니다.
신뢰할 수 있는 구조는 각 계층이 얼마나 고정(anchored)되어 있는지에 따라 정렬된 계층 구조이며, 가능한 한 많은 가중치를 상단으로 밀어 올려야 합니다:
-
결정론적 지표(deterministic metric)를 통한 정량화(Quantifiable). 측정할 수 있는 모든 것을 측정하십시오. 풋프린트(Footprint) 크기, 블록 수, 지연 시간(Latency), 컴파일 성공 여부, 테스트 통과율, 스키마 유효성(Schema validity), 금지된 요소의 개수 0개 등입니다. 이것은 기반 계층(bedrock layer)이며, 확률적 표면이 0이기 때문에 도메인이 허용하는 한 가장 많은 가중치를 가져야 합니다. 이것은 매번 동일한 방식으로 옳습니다.
-
수치는 아니지만 프로그램 체크(program check)로 정형화(Formalizable) 가능한 것. 숫자는 아니지만 여전히 결정 가능한(decidable) 것들입니다: 문을 실제로 통과할 수 있는가(경로 탐색기 실행), 그래프가 요구되는 구조를 갖추었는가, 설정(config)이 이 불변량(invariant)을 충족하는가 등입니다. 여전히 결정론적이며, 여전히 위치를 특정할 수 있고, 여전히 표면이 0입니다. 이것은 절차적(procedural) 및 상징적(symbolic) 계층입니다.
-
환원 불가능하게 주관적인(Irreducibly subjective) 영역을 위한 제한된 모델 판사(bounded model judge).
그리고 이 지점이 평가를 단순한 일회성 설정 이상으로 만드는 부분입니다. 모델의 머릿속에만 머물던 "이것은 너무 넓어 보입니다"와 같은 판단을 "발자국(footprint)은 사양(spec)과 일치해야 한다"와 같은 규칙으로 바꿀 때마다, 당신은 그것을 레이어 3에서 레이어 1로 영구적으로 이동시키는 것입니다. 그것은 결코 되돌아가지 않습니다. 이런 방식으로 구축된 평가는 하나의 *래칫(ratchet, 역전 방지 장치)*과 같습니다. 즉, 축적된 인간의 판단을 한 단계씩 결정론적 체크(deterministic checks)로 꾸준히 전환하는 메커니즘이며, 각 단계는 표면(surface)을 축소시키고 결코 다시 놓아주지 않습니다. "AI가 AI를 채점하게 하라"는 방식은 이와 정반대이며, 표면이 100% 상태로 고착되어 이를 낮출 수 있는 메커니즘이 없는 상태를 의미합니다.
두 측면은 하나의 움직임이다
한 걸음 물러나서 보면, 생성 사다리(generation ladder)와 평가 계층(evaluation hierarchy)은 양 끝에서 바라본 동일한 도표입니다.
양쪽 모두에서 당신은 선을 긋고 있습니다. 선의 한쪽에는 결정론적(deterministic) 부분, 즉 검색된 예시(retrieved examples), 좁혀진 분포(narrowed distributions), 제약 조건 해결사(constraint solvers), 지표(metrics), 프로그램 체크(program checks)가 있습니다. 다른 한쪽에는 환원 불가능한 확률적 잔차(irreducible stochastic residual), 즉 새로운 형태나 진정으로 주관적인 판단이 있습니다. 그 선이 바로 확률적 표면(stochastic surface)입니다. 생성과 평가는 단지 그것의 두 가지 투영(projections)일 뿐이며, 하나는 생산을 위한 것이고 다른 하나는 판단을 위한 것입니다.
제가 계속해서 쓰고 있는 모든 시스템은 그 선을 잘 긋는 사례들입니다. 에이전트 메모리(Agent memory)는 모델의 모호한 추측(hedge)이 대조할 출처 없이 사실로 저장될 때 실패합니다. 해결책은 메모리를 진실의 근거(source of truth)에 고정하여 표면을 축소하는 것입니다. 어드바이저(advisor) 전략은 대량의 작업에는 저렴한 모델을 사용하고, 반드시 맞아야 하는 소수의 지점에만 비싸고 결정적인 연산(compute)을 예약합니다. 이것이 비용 차원에서의 표면 축소입니다. 검색(Retrieval) 대 그렙(grep), 게임 콘텐츠를 위한 계획-생성-해결-검증(plan-generate-solve-verify), 규칙 우선 평가(rules-first evaluation)는 모두 동일한 법칙을 따릅니다: 확률적 구성 요소가 제안하면, 문제에서 허용하는 한 최대한의 결정론적 구성 요소가 결정한다.
표준
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기