My LLM Critic Flip-Flops on Every Run. That's Fine — Because a Frozenset Decides What's Fatal.
개요
LLM 비평가(critic)가 동일한 입력에 대해 매번 다른 판단을 내리는 비결정적 특성을 가지지만, 'frozenset'을 활용한 코드 기반의 안전 장치가 치명적인 결함을 방지하는 설계 원리가 제시됩니다.
주요 내용
* LLM 비평가의 비일관성: 동일한 입력에 대해 LLM 비평가가 내놓는 판결(verdict)과 근거(explanation)가 매번 달라지는 label_flip_rate = 1.0 및 evidence_drift_rate = 1.0가 측정되었습니다.
* 결함 있는 계획의 승인율 0%: 이러한 비일관성에도 불구하고, 결함 있는 계획이 발견되지 않은 채 승인되는 underclaim_approvals = 0라는 결과도 동시에 유지되었습니다.
* 안전 계약의 두 가지 방향: LLM 비평가의 오류는 'Under-claim'(결함 있는 계획이 통과)과 'Over-claim'(정상 계획이 잘못 차단됨) 두 가지 방향으로 나뉩니다.
* 책임 분담: 'Under-claim' 방향은 사전 조건, 토폴로지 순서, 롤백 신뢰성 등 코드 기반의 결정론적 게이트(deterministic gates)가 담당하며, LLM은 관여하지 않습니다.
* 'frozenset'을 통한 'Over-claim' 제어: 'Over-claim' 방향은 특정 'blocker'로 간주될 수 있는 위험 요소를 'frozenset'으로 정의하고, LLM이 제기한 차단 사유가 이 'frozenset'에 포함되지 않으면 코드 레벨에서 경고(WARNING)로 강등시키는 방식으로 제어됩니다.
* 구조적 속성에 기반한 결정: LLM의 판결은 '장식적(decorative)'이며, 실제적인 결정 권한은 코드가 검증 가능한 구조적 속성(property)에 부여됩니다. LLM은 '조언자(advisory)' 역할을 수행합니다.
* 설계 원리: LLM 판단을 중요 의사결정 경로에 둘 경우, LLM의 비결정성, 프롬프트 민감성 등의 취약점을 모두 상속하게 됩니다. 핵심 경로는 결정론적으로 유지하고, LLM은 코드에서 검증 가능한 구조적 속성에 기반한 판단을 보조하는 역할로 제한해야 합니다.
* 구현상의 '솔기(seam)': 'frozenset'이 효과적인 이유는 발견된 위험의 '가족(family)'이 결정론적으로 파생되기 때문이며, LLM이 이 가족을 오분류할 경우 취약점이 발생할 수 있습니다. 또한, 결정론적 게이트는 구조만 검사하므로 잘 구성된 악의적인 계획은 통과할 수 있는 한계가 있습니다.
* 중단된 시도: LLM 비평가의 일관성을 높이려고 프롬프트를 튜닝하는 시도를 중단했으며, LLM의 판결을 직접적인 차단 근거로 삼는 것을 중단했습니다. LLM은 '조언' 계층으로, 결정론적 게이트가 '차단(veto)' 계층을 담당하게 했습니다.
시사점
LLM의 비결정적인 특성을 회피하고 안전성을 확보하기 위해, 코드 기반의 결정론적 검증을 핵심 경로에 두고 LLM은 보조적인 조언 역할로 제한하는 설계 원칙은 LLM 시스템 구축 시 일반화될 수 있는 중요한 접근 방식입니다.
댓글
GitHub Discussions