POOOLING FOREST
페달을 밟는 인공지능: 제약 조건이 만들어내는 최적의 전략 - 임페리얼 칼리지 런던의 사이클링 시뮬레이션을 통해 물리적 제약이 어떻게 최적의 AI 전략을 만들어내는지 살펴
AI

페달을 밟는 인공지능: 제약 조건이 만들어내는 최적의 전략

임페리얼 칼리지 런던의 사이클링 시뮬레이션을 통해 물리적 제약이 어떻게 최적의 AI 전략을 만들어내는지 살펴보고, 엔지니어링 조직의 리소스 제약을 새로운 관점으로 해석합니다.

송찬영

CTO

안녕하세요. 풀링포레스트 CTO 송찬영입니다.

최근 업무 중에 잠시 머리를 식히다가 우연히 흥미로운 데모 페이지 하나를 발견했습니다. 임페리얼 칼리지 런던의 Andrew Davison이 만든 '사이클링 뉴로에볼루션(Cycling Neuroevolution)'이라는 시뮬레이션입니다. 처음에는 단순히 자전거를 탄 캐릭터들이 꼬물꼬물 움직이는 게 귀여워서 쳐다보고 있었는데, 이내 그 이면에 숨겨진 원리가 우리 개발팀이 겪고 있는 고민과 맞닿아 있다는 사실을 깨달았습니다.

이 시뮬레이션은 아주 단순합니다. 2000m의 코스를 누가 더 빨리 완주하는가를 겨룹니다. 흥미로운 점은 이 라이더들에게 그 누구도 "자전거 타는 법"을 코드로 짜주지 않았다는 것입니다. 대신 각 라이더는 작은 신경망(Neural Network)을 뇌로 가지고 태어납니다. 이들은 속도, 파워, 남은 배터리, 그리고 앞으로 닥칠 경사도 같은 '지각(percepts)' 데이터를 입력받아, 매 순간 얼마나 세게 페달을 밟을지(파워 출력)를 스스로 결정합니다.

첫 번째 세대의 라이더들은 그야말로 엉망진창입니다. 시작하자마자 전력질주를 하다 에너지가 고갈되어 멈추기도 하고, 내리막길에서 불필요하게 힘을 뺍니다. 하지만 레이스가 끝나고 상위 5명의 '엘리트' 유전자를 남겨 다음 세대로 복제하고 변이를 일으키는 과정을 반복하자 놀라운 일이 벌어졌습니다.

수십 세대가 지나자 라이더들은 "오르막에서는 세게 밟고, 내리막에서는 회복한다"는 전략을 스스로 터득했습니다. 심지어 공기 저항을 줄이기 위해 앞사람 뒤에 바짝 붙어가는 '드래프팅(Drafting)' 전략을 구사하는 라이더까지 등장했죠.

제가 이 단순한 게임에서 주목한 것은 바로 '제약 조건이 전략을 만든다'는 점이었습니다.

이 시뮬레이션에는 물리적, 생리학적 제약이 아주 정교하게 걸려 있습니다. 공기 저항은 속도의 제곱에 비례하고, 라이더에게는 15,000J이라는 한정된 무산소 배터리(W' anaerobic battery)가 주어집니다. 250W 이상의 파워를 내면 배터리가 닳고, 그 이하로 달리면 회복되죠.

만약 배터리가 무한대였다면 어땠을까요? AI는 그저 "무조건 최대 파워로 밟아라"라는 단순한 함수로 수렴했을 겁니다. 하지만 '고갈되는 에너지'와 '물리적 저항'이라는 냉혹한 제약이 있었기에, AI는 에너지를 효율적으로 배분하는 최적의 전략을 찾아냈습니다.

이걸 보면서 우리 엔지니어링 조직을 돌아보게 되었습니다.

우리는 종종 리소스 부족을 불평합니다. "서버 비용이 부족해요", "개발 기간이 너무 짧아요", "인력이 모자라요". 솔직히 말해 저 역시 CTO로서 경영진과 예산 문제로 씨름할 때마다 막막함을 느끼곤 했습니다. 하지만 이 사이클링 게임을 보며 관점을 조금 달리하게 되었습니다.

우리가 마주한 그 제약 조건들이야말로 우리를 더 스마트하게 만드는 원동력이 아닐까요?

예를 들어, LLM(거대언어모델)을 활용한 서비스를 개발할 때 토큰 비용과 응답 속도라는 제약이 있습니다. 이 제약이 없었다면 우리는 무식하게 모든 컨텍스트를 모델에 때려 넣었을 겁니다. 하지만 제약 덕분에 우리는 RAG(검색 증강 생성) 파이프라인을 정교하게 다듬고, 프롬프트를 최적화하며, 필요한 정보만 압축해서 전달하는 기술을 발전시켰습니다. 마치 라이더가 오르막을 위해 에너지를 아끼듯 말이죠.

또한, 이 시뮬레이션은 '명시적 프로그래밍'의 한계와 '진화적 학습'의 가능성을 보여줍니다. 만약 제가 개발자에게 "이 코스에 맞는 완벽한 주행 알고리즘을 if-else로 짜오세요"라고 했다면, 수많은 예외 처리와 복잡한 조건문으로 가득 찬, 유지보수 불가능한 코드가 나왔을 겁니다.

하지만 목표(가장 빨리 도착하기)와 제약(배터리, 물리법칙)만 명확히 정의하고, 시스템이 스스로 피드백을 통해 학습하게 두었을 때 훨씬 유연하고 강력한 해법이 등장했습니다.

풀링포레스트 팀원 여러분, 그리고 이 글을 읽으시는 엔지니어 여러분. 지금 여러분을 괴롭히는 레거시 코드의 제약, 인프라의 한계, 혹은 비즈니스 요구사항의 압박이 있나요? 그것을 단순한 장애물로 여기지 않았으면 합니다. 그 제약은 여러분의 코드가, 그리고 우리 조직이 더 고차원적인 전략을 학습하기 위한 필수적인 입력값(Input)입니다.

오늘도 무작위로 초기화된 가중치처럼 혼란스러운 하루가 될지도 모릅니다. 하지만 우리는 어제보다 조금 더 나은 방향으로 파라미터를 조정하고 있습니다. 그렇게 몇 번의 세대를 거치다 보면, 언젠가 우리는 그 누구도 예상치 못한 혁신적인 '드래프팅' 전략을 구사하고 있을 겁니다.

우리의 레이스는 2000m에서 끝나지 않으니까요. 조금 더 멀리 보고, 현명하게 페달을 밟아봅시다.

지금 읽으신 내용, 귀사에 적용해보고 싶으신가요?

상황과 목표를 알려주시면 가능한 옵션과 현실적인 도입 경로를 제안해드립니다.