실시간 정책 제약 조건 하의 자율 도시 항공 모빌리티 경로 탐색을 위한 생성적 시뮬레이션 벤치마킹
요약
본 글은 자율 도시 항공 모빌리티(UAM)의 경로 탐색이 정적인 벤치마크로는 평가할 수 없음을 지적합니다. 실시간으로 변하는 정책 제약 조건(TFR, 소음 규정 등)과 물리적 환경 변화가 복합적으로 작용하기 때문입니다. 따라서 생성적 시뮬레이션 벤치마크를 구축하여 이러한 동적이고 공진화적인 조건을 모델링할 필요성을 제시합니다.
핵심 포인트
- UAM 경로 탐색은 단순한 A* 알고리즘을 넘어선 복합 문제입니다.
- 정적 시나리오 세트는 실시간 정책 변화를 포착하지 못해 평가에 실패합니다.
- 제약 조건에는 배터리, 풍속장 같은 물리적 요소와 TFR 같은 정책 객체가 포함됩니다.
- 생성적 벤치마크는 이러한 복합적인 환경의 공진화(co-evolution)를 모델링해야 합니다.
Urban Air Mobility
실시간 정책 제약 조건 하의 자율 도시 항공 모빌리티 경로 탐색을 위한 생성적 시뮬레이션 벤치마킹
서론: 드론, 돌풍, 그리고 잘못된 가정
지난 봄, 저는 작은 자율 쿼드콥터가 가상의 도시를 가로지르는 고정된 통로를 비행하도록 만드는 데 3주를 보냈습니다. 경로 계획 부분은 독립적으로 작동하는 것이 매우 뛰어났습니다. 저의 A* 변형(A* variant)은 '공역 그래프(airspace graph)'를 통해 깨끗한 경로를 찾아냈고, 제가 적용한 보상 설계(reward shaping)는 교과서적이었죠. 그러다가 저는 한 가지 요소를 추가했습니다: 특정 소음 규정 위반이 발생하거나 임시 비행 제한 구역(TFR)이 나타날 때 해당 통로를 폐쇄하는 실시간 정책 계층입니다. 공역이 동적으로 변하자마자, 저의 벤치마크는 무너졌습니다. 정적 평가에서 98%의 성공률을 기록했던 경로들이 61%까지 떨어졌는데, 이는 에이전트가 나빴기 때문이 아니라, 제가 만든 벤치마크 자체가 정책 이벤트의 분포를 간과했기 때문이었습니다.
그 실패는 저에게 이제는 근본적이라고 생각하는 무언가를 가르쳐주었습니다. 자율 도시 항공 모빌리티(UAM)의 경우, 어려운 부분은 단순히 경로 탐색 그 자체가 아니라, 정책, 교통, 날씨가 실시간으로 공진화하기 때문에 발생하는 조건 하에서 경로 탐색을 벤치마킹 하는 것입니다. 정적인 시나리오 세트는 이를 포착할 수 없습니다. 이 글은 바로 이 문제에 대한 생성적 시뮬레이션 벤치마크를 구축하면서 배운 내용을 정리한 것이며, 생성적 세계 모델(generative world models), 제약 강화학습(constrained reinforcement learning), 그리고 에이전트 평가 하니스(agentic evaluation harnesses)의 아이디어에서 영감을 받았습니다.
UAM 경로 탐색에 정적 벤치마크가 실패하는 이유
자율 차량 평가에 대한 문헌을 탐색하면서, 저는 항상 같은 비판에 직면했습니다: 고정된 시나리오 세트는 과적합(overfit)된다는 것입니다. UAM의 경우, 환경이 3차원이고, '도로'가 규정에 의해 정의되는 통로이며, 제약 조건 자체가 물리적인 것이 아니라 임시로 나타나거나 만료되거나 변형될 수 있는 _정책 객체_라는 점에서 문제가 더욱 복잡해집니다.
문제를 좀 더 정확하게 정의하겠습니다. 자율 UAM 에이전트는 원점(origin) 버티포트 $o$에서 목적지(destination) $d$까지 코리도어 그래프 $G = (V, E)$를 통해 경로를 탐색해야 하며, 다음 조건들을 준수해야 합니다:
- 물리적 제약 조건 (Physical constraints): 배터리 충전 상태(battery state of charge), 풍속장(wind fields), 비행 금지 지오펜스(no-fly geofences).
- 정책적 제약 조건 (Policy constraints): 동적 임시 비행 제한 구역(dynamic TFRs), 소음 통제 시간대(noise curfews), 고도 상한선(altitude caps), 버티포트에서의 순서화 규칙(sequencing rules at vertiports).
- 시간적 제약 조건 (Temporal constraints): 시작/종료 시간이 지정되고 확률적으로 활성화되는 정책 이벤트.
정적인 벤치마크는 소수의 $(o, d, \text{scenario})$ 튜플만을 샘플링합니다. 반면, 생성적(generative) 벤치마크는 정책-이벤트 스트림에 대한 분포를 학습하거나 지정하고, 이 분포 전체에서 에이전트를 평가합니다. 여기에는 희귀한(rare), 적대적인(adversarial), 그리고 구성적으로 새로운(compositionally novel) 이벤트들이 포함됩니다.
제 실험 과정에서 핵심적으로 깨달은 점은 정책 계층을 고정된 요소들의 집합(set of fixtures)이 아니라 **확률 과정(stochastic process)**으로 다루어야 한다는 것이었습니다. TFRs를 도시 맥락(이벤트, 날씨, 시간대)에 조건화된 시공간적 포인트 프로세스(spatiotemporal point process)로 모델링하자, 제가 직접 수작업으로 작성하지 않았던 실패 모드들(failure modes)이 벤치마크에서 나타나기 시작했습니다.
생성적 시뮬레이션 스택 (The Generative Simulation Stack)
저는 세 가지 계층 구조를 채택했습니다:
- 세계 모델 계층 (World model layer) — 물리적 환경(바람, 교통 밀도, 버티포트 혼잡도)에 대한 생성적 모델.
- 정책 과정 계층 (Policy process layer) — 규제 이벤트에 대한 생성적 모델.
- 에이전트 평가 계층 (Agent evaluation layer) — 에피소드를 실행(rolls out), 점수를 매기고, 시나리오 난이도를 조정하는 에이전트 기반 하네스(agentic harness).
계층 1: 생성적 세계 모델 (Generative World Model)
물리 계층(physical layer)의 경우, 저는 역사적인 풍속 및 교통 추적 데이터를 학습한 조건부 확산 모델(conditional diffusion model)을 사용하여 그럴듯한 미래를 생성했습니다. 하지만 벤치마크의 점수 산정(scoring) 루프에서는 더 가벼운 접근 방식이 더 실용적이라는 것을 알게 되었습니다. 바로 학습된 잔차 노이즈(learned residual noise)를 가진 벡터 자기회귀 과정(vector-autoregressive process, VAR)이었는데, 이는 제가 제어 가능하고 재현 가능한 시나리오를 제공했습니다. 확산 모델은 현실성 측면에서 더 좋았고, VAR은 스윕(sweeps) 수행에 더 적합했습니다. 결국 저는 둘 다 사용하게 되었는데, '데모' 에피소드에는 확산 모델을, 통계적 유의성을 위해 필요한 대규모 병렬 스윕(massive parallel sweeps)에는 VAR을 사용한 것입니다.
import numpy as np
class WindFieldGenerator:
...
계층 2: 정책 프로세스 — 진정한 어려움이 존재하는 곳
이 부분은 제가 과소평가했던 부분이었습니다. 정책(Policies)은 독립적이고 동일하게 분포된(i.i.d.) 노이즈가 아닙니다. 정책들은 특정 이벤트(경기장 게임, 퍼레이드 등) 주변에 군집화되며, 날씨와 상관관계를 가지며, _이력 현상(hysteresis)_을 보입니다. 즉, TFR은 단순히 꺼지는 것이 아니라 지연되면서 비활성화됩니다. 저는 이 정책 계층을 통로 그래프(corridor graph) 위에서 **마킹된 시공간 호크스 과정(marked spatiotemporal Hawkes process)**으로 모델링했는데, 여기서 각 이벤트는 유형(TFR, 통행금지 구역, 고도 제한), 공간적 발자국(spatial footprint), 그리고 지속 시간 분포를 가집니다.
import numpy as np
class PolicyEventProcess:
...
호크스 공식화는 제가 예상했던 것보다 훨씬 중요했습니다. 정책 기반의 공역에 대한 연구에서, 저는 실제 TFR이 _군집화(clustering)_를 보인다는 것을 발견했습니다. 즉, 큰 이벤트가 겹치는 제한 구역의 연쇄 반응을 유발합니다. 독립적이고 동일하게 분포된 포아송 벤치마크(i.i.d. Poisson benchmark)는 플래너들을 무력화시키는 밀집되고 중첩되는 제약 시간 창(overlapping constraint windows)을 거의 생성하지 못하기 때문에 에이전트 실패율을 훨씬 과소평가합니다.
계층 3: 에이전트 기반 평가 장치 (Agentic Evaluation Harness)
평가 계층을 위해, 저는 '시나리오 디렉터(scenario director)' 역할을 하는 LLM 기반 도구 사용 에이전트(LLM-tool-using agent)가 시나리오 매개변수(이벤트 밀도, 풍속 심각도, 통로 위상 변화 등)를 제안하고, '비평가(critic)' 에이전트가 경로 탐색 에이전트의 에피소드를 점수화한 다음, 에이전트가 강점을 보이는 부분에 난이도를 높여 피드백하는 에이전트 기반 루프를 구축했습니다.
class ScenarioDirector:
def init(self, llm, difficulty_bounds=(0.1, 1.0)):
self.llm = llm
...
이 에이전트 디렉터(agentic director)를 사용한 실험에서 흥미로운 발견을 했습니다. LLM이 제안하는 시나리오는 제가 직접 조정(hand-tuned curriculum)한 커리큘럼보다 더 다양했지만, 때로는 _실행 불가능(infeasible)_했습니다. 즉, 유효한 경로가 존재하지 않는 이벤트 밀도를 제안하는 경우였습니다. 저는 시나리오를 수락하기 전에 실행 가능성 오라클(feasibility oracle, 빠른 MILP 검사)을 게이트로 추가해야 했습니다. 이것은 작지만 결정적인 세부 사항입니다: 생성적 벤치마크는 '에이전트 실패'와 '문제 자체가 해결 불가능했음'을 구별할 수 있어야 합니다.
라우터(Router) 벤치마킹: 제약 조건 강화학습 (Constrained RL) 및 재계획 (Replanning)
라우팅 에이전트 자체에 대해서는 세 가지 기준선(baseline)을 비교했습니다:
- Replanning A* — 정책 이벤트가 발생할 때마다 최단 경로를 다시 계산합니다.
- Constrained PPO — 정책 위반 비용이 포함된 라그랑주 강화학습 (Lagrangian RL)입니다.
- Learned world-model planner — 학습된 동역학 모델(learned dynamics model)을 이용한 모델 예측 제어(Model Predictive Control, MPC)입니다.
제약 조건 PPO 설정이 가장 구현하기 까다롭고 흥미로웠습니다. 라그랑주 승수(Lagrangian multiplier)는 단일 에피소드가 아닌 _벤치마크 분포(benchmark distribution)_에서 적응해야 하므로, 저는 이를 외부 루프(outer loop)에서 업데이트했습니다:
class LagrangianPPO:
def init(self, policy, cost_limit=0.05, lr_lam=0.01):
self.policy = policy
...
이 설정을 연구하면서, 저는 위반 비용의 _분산(variance)_이 평균만큼이나 생성적 분포 전반에 걸쳐 중요하다는 것을 배웠습니다. 낮은 평균 위반 횟수를 보이지만 꼬리가 무거운(heavy tails, 때때로 치명적인 TFR 침범 발생) 라우터는, 평균은 약간 높지만 꼬리가 단단한(tight tails) 라우터보다 운영상 더 나쁩니다. 그래서 저는 벤치마크 보고서에 꼬리 위험 지표인 CVaR (95%)을 추가했습니다. 이 단 하나의 변경 사항이 제 리더보드를 재정렬시켰습니다.
실제로 중요한 지표(Metrics That Actually Matter)
UAM 평가를 탐구하면서, 저는 성공률을 넘어선 메트릭 세트에 수렴하게 되었습니다:
- 성공 가능한 시나리오가 주어졌을 때의 성공률 (Feasible-success rate): 성공 가능성이 검증된(feasibility-oracle gated) 시나리오에서 달성한 성공률.
- 정책 위반 조건부 위험 가치 @95 (Policy violation CVaR@95): 규제 위반에 대한 꼬리 위험(tail risk).
- 재계획 지연 시간 p99 (Replanning latency p99): 에이전트가 예상치 못한 이벤트로부터 회복하는 속도.
- 에너지 여유분 (Energy margin): 에피소드 전반에 걸친 10번째 백분위수에서의 잔여 배터리량.
- 분포 이동 변화 강건성 (Distributional shift robustness): 보류된 생성 모델 하에서의 성공률 (예: 다른 도시의 정책 통계로 학습된 경우).
마지막 항목이 가장 많은 것을 보여주었습니다. 라우터는 정책 이벤트의 훈련 분포에서는 매우 뛰어나 보이지만, 분포가 이동된(shifted) 경우에는 무너질 수 있습니다. 이는 제가 쿼드콥터로 경험했던 정확한 실패 사례입니다. 생성적 벤치마킹은 이를 구조적으로 측정 가능하게 만듭니다.
직면했던 과제와 해결 방법
과제 1: 재현성 대 확률적 특성(Reproducibility vs. stochasticity). 생성적 벤치마크는 설계상 확률적(stochastic)이므로 재현성을 저해합니다. 저는 계층적 시딩 방식(hierarchical seeding scheme)으로 이를 해결했습니다. 즉, 마스터 시드가 시나리오 시드를 도출하고, 이 시나리오 시드가 롤아웃 시드를 도출하여, 보고된 모든 숫자가 정확하게 재생성될 수 있도록 했습니다.
과제 2: 실현 불가능한 시나리오(Infeasible scenarios). 언급했듯이, LLM 디렉터는 불가능한 문제를 제안했습니다. 실현 가능성 오라클 게이트(feasibility oracle gate)가 이를 수정했으며, 저는 실현 불가능한 제안들을 별도의 진단 자료로 기록했습니다 (이는 디렉터의 세계 지식에 격차가 있음을 보여주었습니다).
과제 3: 컴퓨팅 비용(Compute cost). 확산 기반(Diffusion-based) 월드 모델은 대규모로 롤아웃하는 데 비용이 많이 듭니다. 저는 두 가지 계층적 접근 방식을 사용했습니다. 즉, 통계 평가의 대부분에는 저렴한 VAR 롤아웃을 사용하고, 질적 분석 및 비디오 검토에 사용되는 선별된 "고충실도(high-fidelity)" 에피소드에는 확산 롤아웃을 사용했습니다.
챌린지 4: 벤치마크의 보상 해킹(Reward hacking). 초기에는 나의 RL 에이전트가 TFR(Temporary Flight Restrictions, 임시 비행 제한 구역)을 우회하는 대신 그 주변에서 '호버링하며 대기'하는 방식으로 학습했습니다. 이는 대기하는 것이 예상되는 위반 비용(expected violation cost) 측면에서 더 낮았기 때문입니다. 기술적으로는 유효하지만 운영적으로는 쓸모가 없습니다. 저는 시간 예산 제약 조건과 '임무 긴급성(mission urgency)' 항을 보상에 추가했고, 이로써 합리적인 행동이 복원되었습니다. 벤치마크 설계자들은 이러한 퇴화적 전략(degenerate strategies)을 예상해야 합니다. 생성적 평가(generative evaluation)는 이를 줄이는 것이 아니라 더 가능하게 만들기 때문입니다.
실제 적용 사례 (Real-World Applications)
본 아키텍처는 나의 단순한 도시 모델을 넘어 매우 광범위하게 일반화됩니다. 실제 UAM 통로(UAM corridors)를 개발하는 팀들과의 대화, 그리고 NASA의 UTM 개념에 대한 저 자신의 연구에서도 동일한 패턴이 나타납니다: 물리적 시뮬레이션, 규제/정책 계층, 그리고 평가 하네스입니다. 생성적 벤치마킹은 다음 분야에 직접적으로 적용 가능합니다:
- 사전 인증 스트레스 테스트(Pre-certification stress testing) — 규제 기관이 정책 이벤트 분포를 지정하고 에이전트가 꼬리 위험 임계값(tail-risk thresholds)을 충족하도록 요구할 수 있습니다.
- 운용기단 수준의 디스패치(Fleet-level dispatch) — 동일한 생성적 프로세스가 다중 에이전트 혼잡도 벤치마크를 구동할 수 있습니다.
- 디지털 트윈 검증(Digital twin validation) — 도시의 디지털 트윈을 생성적 반사실(generative counterfactuals)과 비교하여 통로 설계의 사각지대를 찾아낼 수 있습니다.
또한, 저는 양자 영감 최적화(quantum-inspired optimization)와도 자연스러운 연관성을 발견했습니다. 밀집된 정책 제약 조건 하에서의 통로 경로 탐색 서브문제는 제약된 최단 경로/QUBO 스타일 문제이며, 저는 고전적인 재계획기(classical replanner)를 위한 웜 스타트 휴리스틱으로 작은 통로 서브그래프에 QAOA 스타일 공식화(QAOA-style formulations)를 실험하기 시작했습니다. 초기 결과는 밀집된 이벤트 창에서 유망하지만, 희소한 경우에는 아직 오버헤드가 그만한 가치가 없습니다.
향후 방향 (Future Directions)
다음 세 가지 방향이 저에게 가장 흥미롭습니다:
- 실제 규제 데이터로부터 학습된 정책 프로세스 — 수동으로 조정된 Hawkes 파라미터를 실제 TFR 및 NOTAM 이력에 맞춰 적합한 모델로 대체합니다.
- 적대적 생성 기반 벤치마킹(Adversarial generative benchmarking) — 시나리오 디렉터(scenario director)를 단순히 난이도를 높이는 용도로만 사용하는 것이 아니라, 실패 모드(failure modes)를 _탐색_하는 데 사용하며, 이는 본질적으로 UAM 에이전트를 위한 자동화된 레드팀(Red Team) 역할을 합니다.
- 파운데이션 모델 기반 월드 시뮬레이터(Foundation-model world simulators) — 비디오/월드 모델이 개선됨에 따라, 이를 UAM을 위한 고충실도 생성 환경으로 사용하고 정책 계층은 기호적 오버레이(symbolic overlay)로 적용합니다.
결론: 시나리오가 아닌 분포를 벤치마킹하라
저의 쿼드콥터 실패는 위장된 벤치마크 실패였습니다. 제가 얻은 교훈은 간단합니다. 실시간 정책 제약 조건 하에서 작동하는 자율 시스템에게 벤치마크는 고정된 테스트 세트가 아니라, 운영 분포(operating distribution)를 나타내는 생성적 모델이어야 합니다. 이를 구축하기 위해서는 생성적 월드 모델, 시공간 정책 프로세스, 에이전트 기반 시나리오 디렉션, 실현 가능성 오라클(feasibility oracle), 그리고 꼬리 위험 지표(tail-risk metrics)를 결합해야 했습니다. 각 구성 요소는 개별적으로 학습될 수 있었지만, 통찰력은 그 조합에 있었습니다 — 그리고 정책이 확률적이고(stochastic), 군집화되어 있으며, 때로는 문제를 해결 불가능하게 만든다는 점을 존중하는 것이었습니다. 만약 UAM 경로를 구축하거나 역동적인 규제 하에서 어떤 에이전트를 평가하고 있다면, 먼저 당신의 벤치마크가 생성할 수 없는 것을 질문하는 것부터 시작하십시오. 그 간극이야말로 실제 세계에서 시스템이 실패하게 될 지점입니다.
코드 예시는 제가 실험 과정에서 탐구했던 패턴을 보여주는 설명적인 단순화 버전입니다. 만약 비슷한 것을 구축하고 있다면, 실현 가능성 오라클과 꼬리 위험 부분은 어떻게 처리하는지 듣고 싶습니다 — 그 부분이 가장 구현하기 어려웠습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기