LLM과 게임 AI의 만남: 왜 기존 프롬프팅 방식은 한계에 부딪혔나?
들어가며: AI가 게임을 배우는 새로운 방법
여러분은 ChatGPT에게 체스나 오목을 두어보라고 요청한 적이 있나요? 아마도 놀라운 결과를 보셨을 수도, 혹은 실망스러운 수를 목격하셨을 수도 있습니다. 최근 arXiv에 공개된 "Code World Models for General Game Playing" 논문은 이런 경험의 이유를 명확히 설명하며, 게임 AI 분야에 새로운 패러다임을 제시합니다.
2025년 10월 발표된 이 연구는 16명의 연구진이 협력한 대규모 프로젝트로, LLM(대규모 언어 모델)이 게임을 플레이하는 방식에 대한 근본적인 재고를 요구합니다. 본 글에서는 시리즈의 첫 번째로, 기존 접근법의 한계와 새로운 해결책의 필요성을 살펴봅니다.
기존 방식: 프롬프팅으로 직접 수를 생성하기
직관적이지만 불완전한 접근
현재 대부분의 LLM 기반 게임 플레이는 매우 직관적인 방식으로 작동합니다. 게임의 규칙을 자연어로 설명하고, 현재 게임 상태를 텍스트로 제공한 뒤, "다음 수를 선택하세요"라고 요청하는 것이죠. 예를 들어:
게임 규칙: 체스는 8x8 보드에서...
현재 상태: 백색 폰이 e2에 있고...
질문: 다음 수는 무엇입니까?
얼핏 보면 합리적인 접근처럼 보입니다. LLM은 방대한 텍스트 데이터를 학습했고, 게임 규칙을 이해하는 능력이 있으니까요. 하지만 실제로는 여러 심각한 문제에 직면합니다.
문제 1: 불법 수의 빈번한 발생
가장 치명적인 문제는 LLM이 규칙을 위반하는 수를 제안한다는 점입니다. 체스에서 비숍을 직선으로 움직이거나, 오목에서 이미 돌이 놓인 위치에 착수하는 식입니다.
LLM은 패턴 매칭에 기반한 확률적 생성 모델입니다. 따라서 "그럴듯해 보이는" 답변을 생성하지만, 엄격한 규칙 준수를 보장하지 못합니다. 이는 마치 체스 규칙을 읽어본 초보자가 때때로 말의 움직임을 혼동하는 것과 비슷합니다.
문제 2: 전략적 탐색의 부재
인간 고수나 전통적인 게임 AI는 여러 수 앞을 내다봅니다. 체스 엔진은 수백만 개의 가능한 수순을 탐색하며 최적의 수를 찾습니다. 하지만 프롬프팅 기반 LLM은 즉각적으로 한 수만을 생성합니다.
이는 마치 장기 게임에서 첫 번째 떠오른 수를 바로 두는 것과 같습니다. 때로는 좋은 수일 수 있지만, 체계적인 탐색을 통해 찾아낸 최선의 수와는 거리가 멉니다.
문제 3: 일관성 없는 추론
같은 상황을 다시 물어보면 LLM은 다른 수를 제안할 수 있습니다. 이는 모델의 확률적 특성 때문인데, 게임에서는 치명적입니다. 같은 상황에서 일관된 판단을 내리지 못한다면, 장기적인 전략을 수립할 수 없습니다.
왜 이런 문제가 발생하는가: LLM의 본질적 특성
통계적 패턴 vs 형식적 규칙
LLM은 통계적 패턴을 학습합니다. "체스에서 비숍은 대각선으로 움직인다"는 지식을 가지고 있지만, 이는 프로그래밍 언어의 엄격한 if-then 규칙이 아니라 "그럴 가능성이 높다"는 통계적 경향입니다.
반면 게임 규칙은 형식적이고 절대적입니다. 비숍은 "반드시" 대각선으로만 움직여야 하며, 예외는 없습니다. 이 간극이 불법 수 생성의 근본 원인입니다.
토큰 생성의 순차적 특성
LLM은 한 번에 하나의 토큰을 생성합니다. 전체 게임 트리를 탐색하거나, 여러 가능성을 동시에 평가하는 구조가 아닙니다. 이는 AlphaGo나 Stockfish 같은 전통적 게임 AI가 사용하는 몬테카를로 트리 탐색(MCTS)이나 미니맥스 알고리즘과는 근본적으로 다릅니다.
검증 메커니즘의 부재
LLM이 생성한 수가 합법적인지 자체적으로 검증할 방법이 없습니다. 외부 검증 시스템을 추가할 수는 있지만, 이는 사후 처리에 불과하며 애초에 올바른 수를 생성하는 것과는 다릅니다.
해결책의 필요성: 새로운 패러다임을 향하여
LLM의 강점을 살리면서 약점을 보완하려면?
LLM은 분명 강력한 능력을 가지고 있습니다:
문제는 이런 강점을 어떻게 활용하면서도, 약점(불법 수, 탐색 부재, 불일치)을 극복할 수 있느냐는 것입니다.
코드 월드 모델: 해답의 실마리
논문이 제시하는 해법은 놀라울 정도로 우아합니다. LLM에게 직접 수를 생성하라고 요청하는 대신, 게임 규칙을 Python 코드로 번역하라고 요청하는 것입니다.
이 접근법은 다음과 같은 장점을 가집니다:
LLM은 "의미 이해"라는 자신의 강점을 발휘하여 규칙을 코드로 변환하고, 실제 게임 플레이는 검증 가능하고 효율적인 코드가 담당하는 것이죠.
실제 사례: 간단한 게임으로 보는 차이
틱택토(Tic-Tac-Toe)를 예시로
기존 프롬프팅 방식:
현재 보드:
X | O |
---------
| X |
---------
| | O
다음 수를 선택하세요 (1-9):
LLM 응답: "7번 위치에 X를 놓겠습니다" (때로는 이미 점유된 칸을 선택)
코드 월드 모델 방식:
def get_legal_moves(board):
return [i for i, cell in enumerate(board) if cell == ' ']
def make_move(board, position, player):
new_board = board.copy()
new_board[position] = player
return new_board
def check_winner(board):
# 승리 조건 검증 로직
...
이제 MCTS나 미니맥스 알고리즘이 이 함수들을 사용하여 체계적으로 최적의 수를 찾습니다. 불법 수는 원천적으로 불가능합니다.
연구의 의의와 다음 단계
게임 AI를 넘어서
이 접근법의 진정한 가치는 게임에만 국한되지 않습니다. "자연어 규칙 → 실행 가능한 코드" 변환은 다양한 분야에 적용 가능합니다:
LLM의 언어 이해 능력과 전통적 프로그래밍의 정확성을 결합하는 이 패러다임은, AI 응용의 새로운 지평을 열 수 있습니다.
시리즈 예고
다음 글에서는 코드 월드 모델의 구체적인 구현 방법을 살펴봅니다:
기술적 세부사항과 실제 구현 예시를 통해, 이 혁신적 접근법의 실체를 파악해보겠습니다.
마치며: AI 개발자에게 주는 시사점
이 연구가 우리에게 주는 교훈은 명확합니다. LLM은 만능이 아니지만, 적절히 활용하면 강력한 도구가 됩니다. 핵심은 LLM에게 잘하는 일을 시키는 것입니다.
다음 글에서는 이 철학이 실제로 어떻게 구현되는지 코드 수준에서 살펴보겠습니다.
---
참고문헌
키워드: LLM, 게임 AI, 인공지능, 머신러닝, 코드 생성, MCTS, 자연어 처리, AI 연구, arXiv