#알고리즘
# Monte Carlo Tree Search(MCTS)의 원리와 단계별 과정
> 이 글은 ChatGPT의 Deep Research 기능을 이용하여 작성되었습니다.
## MCTS의 개념과 원리
**몬테카를로 트리 탐색(MCTS)**은 의사결정을 위한 **휴리스틱 탐색 알고리즘**의 하나로, 특히 **게임 AI** 분야에서 많이 활용된다. 예를 들어, 바둑을 비롯한 여러 **보드게임 AI**와 확률적 요소가 있는 **비결정적 게임**(포커 등)에 성공적으로 적용되어 왔다. MCTS는 전통적인 게임 트리 탐색(미니맥스 등)과 달리, **무작위 시뮬레이션**을 통해 상태의 가치를 평가하고 누적 통계를 바탕으로 **최적의 수를 점진적으로 찾아가는** 접근을 취한다 . 각 상태에서 가능한 수를 모두 완전 탐색하지 않고도, **반복적인 시뮬레이션**으로 유망한 수를 찾아내는 것이 MCTS의 핵심 개념이다.
MCTS의 작동 원리는 많은 **플레이아웃(playout)**, 즉 **임의의 완결 국면까지 시뮬레이션**을 반복 실행하는 것이다. 매 시뮬레이션의 최종 결과(승패 등)를 해당 경로의 노드들에 **보상(통계)**으로 누적함으로써, **다음 탐색 시에는 더 나은 수에 확률적으로 집중**하도록 유도한다. 요컨대, MCTS는 트리의 일부 경로만 **무작위 표본추출**로 탐색하면서 **탐험과 활용**(exploration vs. exploitation)을 균형 있게 조절하여 최적의 결정을 찾는다 . 이런 방식은 **도메인 특화 평가 함수 없이도** 게임 진행만 모사하면 되므로, 이론적 지식이 부족한 새로운 게임에도 적용할 수 있다는 장점이 있다.
## MCTS의 4단계 과정
_Figure: MCTS는 **선택(Selection)** → **확장(Expansion)** → **시뮬레이션(Simulation)** → **역전파(Backpropagation)**_의 네 단계를 한 사이클로 수행하며, 이를 여러 차례 반복해 탐색을 진행한다. 위 그림은 MCTS의 한 사이클을 나타낸 것으로, 진한 색으로 표시된 경로가 해당 사이클에서_ **_선택 단계_**_에 따라 확장된 경로이다. 이후 새로운 노드에서 무작위_ **_시뮬레이션_**_(플레이아웃)을 실행하고, 마지막으로 그 결과(승패)가 경로를 따라_ **_역전파_**_되어 각 노드의 승률 등의 통계가 갱신된다._
![[MCTS에 의한 시뮬레이션의 확장 과정.png]]
MCTS 알고리즘은 현재 상태를 루트 노드로 하여 다음의 **4가지 단계**를 반복 수행한다:
1. **선택 (Selection):** 루트 노드에서 시작하여 **트리 정책**에 따라 자식 노드들을 순차적으로 선택하여 내려간다. 아직 한 번도 시뮬레이션되지 않은 **리프 노드**에 도달할 때까지 이 과정을 반복한다 . 선택 단계에서는 보통 **UCT**(Upper Confidence bound applied to Trees)와 같은 공식을 사용하여 **탐험**(아직 시도되지 않은 수)과 **이용**(성과가 좋은 수)의 균형을 잡는다 . 이를 통해 현재까지 승률이 높았던 수를 우선시하면서도, 충분히 탐색되지 않은 수들도 가끔 선택하여 새로운 가능성을 탐험한다.
2. **확장 (Expansion):** 선택 단계에서 도달한 리프 노드가 **종단 상태**(승패 결정 등)가 아니면, 그 노드에서 한 단계 가능한 **모든 행동에 대한 자식 노드**들을 생성한다. 이렇게 트리에 새로운 노드들을 추가한 뒤, 그 중 임의로 **하나의 자식 노드**를 선택한다. (일반적으로는 추가된 자식 중 하나를 무작위로 선택하거나, 미리 정의된 기본 우선순위에 따라 선택한다.) 이 단계로 트리의 범위가 조금씩 확장된다.
3. **시뮬레이션 (Simulation):** 확장에서 선택된 새 자식 노드(Leaf 노드)를 시작점으로 **무작위 플레이아웃**을 실행한다. 즉, 해당 상태에서 **게임이 종료될 때까지** 무작위로 수를 두며 시뮬레이션을 진행한다. 이를 **롤아웃(rollout)** 또는 **플레이아웃**이라 하며, 시뮬레이션 결과로 승리, 패배 또는 무승부 등의 **보상 값**을 얻는다. (예: 체스나 바둑이면 마지막까지 둔 후 승패를 확인하고, 승리 시 +1, 패배 시 0의 보상을 부여하는 식으로 설정할 수 있다.)
4. **역전파 (Backpropagation):** 시뮬레이션 단계에서 얻은 결과(보상값)를 **트리 상위로 전파**하여 경로상의 모든 노드의 통계치를 업데이트한다. 선택 단계에서 내려왔던 경로를 따라 루트까지 거슬러 올라가며, 시뮬레이션 횟수(방문 수)를 +1 증가시키고 승패 결과에 따른 **승률** 등의 값을 누적한다. 이를 통해 해당 경로에 속한 수들의 예상 성능이 갱신되어, 다음 사이클의 Selection 단계에서 **더 높은 승률을 가진 수는 더 자주 선택**되도록 반영된다. (예를 들어 백의 승률이 70%로 나온 시뮬레이션이었다면, 경로 상 백의 수로 이루어진 노드들은 승리 횟수를 더하고, 흑의 수 노드들은 패배로 취급하여 승률을 보정한다.)
이러한 네 단계를 **정해진 계산량이나 시간** 동안 반복 실행한 후, 충분한 탐색을 거쳐 얻어진 통계에 따라 **최적의 수를 선택**하게 된다. 일반적으로 최종 결정은 루트 노드의 자식들 중 **방문 횟수가 가장 많았던 노드** (가장 많이 시뮬레이션된 수)를 선택하는 방식으로 이루어진다. 이처럼 MCTS는 제한된 횟수의 시뮬레이션으로도 트리를 점차 확장하며 **확률적으로 최선의 수**를 찾아낸다.
## MCTS의 장점과 단점
### 장점 (Advantages)
• **도메인 지식 없이 적용 가능:** MCTS는 **명시적인 평가 함수나 전문 지식 없이**도 작동한다는 큰 장점이 있다. 게임 규칙에 따른 시뮬레이션만 구현하면 되므로, **이론적으로 잘 연구되지 않은 게임이나 문제**에도 쉽게 적용할 수 있으며, **범용 게임 플레이어** 같은 영역에서 유용하다. 예를 들어, 기존 알고리즘들이 평가 함수를 만들기 어려운 보드게임에 취약한 반면, MCTS는 무작위 대국을 통해 스스로 수의 가치를 추정하여 돌파구를 찾는다.
• **큰 탐색 공간에서 효율적:** MCTS로 구축되는 게임 트리는 모든 가지를 균일하게 펼치지 않고, **승산 높은 부분에 비대칭적으로 성장**한다. 즉, 유망한 수에 시뮬레이션 노력을 집중하기 때문에, **분기수가 매우 큰 게임**에서도 기존의 완전탐색보다 효율적으로 좋은 결과를 얻는다. 실제로 MCTS는 체스보다 경우의 수가 훨씬 많은 **바둑에서 획기적인 성능 향상**을 보이며, 이는 가지치기 기반의 알파베타 탐색이 방대한 수를 감당하지 못하는 영역에서도 MCTS는 통계적 샘플링으로 돌파할 수 있음을 보여준다.
• **탐험과 탐욕의 균형 유지:** MCTS는 **UCT 공식** 등의 활용으로 이미 성과가 입증된 수를 **탐욕적으로 이용**(exploit)하면서도, 아직 충분히 탐색되지 않은 수를 **탐험**(explore)하는 균형을 자동으로 유지한다. 이 **탐색-탐험 균형** 덕분에 MCTS는 국지적으로 좋아 보이는 수에만 집착하지 않고, 장기적으로 더 나은 수를 놓치지 않도록 한다. 실제 AlphaGo의 대국에서 나온 **혁신적인 수**들도 이러한 MCTS의 탐험 성질 덕분이라는 분석이 있으며, **무작위성**을 적절히 활용하기 때문에 상대가 예측하기 어려운 수를 둘 수 있다는 이점도 있다.
• **확률적/비결정적 환경에 강함:** MCTS는 **확률적 요소**나 **비확정적인 결과**가 있는 환경에서도 자연스럽게 적용될 수 있다. 무작위 시뮬레이션으로 미래 결과를 예상하는 방식이기 때문에, 운이나 숨겨진 정보가 있는 게임에서도 평균적인 승률을 추정하여 의사결정을 내릴 수 있다. 실제로 MCTS는 **포커, 스캇(Skat), 매직더개더링** 등 **비결정적 게임** AI에도 성공적으로 활용되어 왔다. 이러한 특성은 MCTS를 **강화학습 MDP**와 접목해 확률적인 동적 시스템에서도 경로 계획을 할 수 있게 해주며, 일반적인 _Minimax_ 계열 알고리즘보다 범용성이 높게 만든다.
• **에니타임(anytime) 알고리즘:** MCTS는 **계산 자원만큼 성능을 향상**시킬 수 있는 에니타임 알고리즘이다. 탐색을 오래 할수록 통계의 신뢰도가 높아져 성능이 좋아지며, 반대로 **주어진 제한 시간 내**에서 최선의 결과를 즉시 낼 수도 있다. 중간에 알고리즘을 멈추더라도 현재까지 가장 많이 시도된 수를 선택하면 되므로, **제한된 계산 자원 하에서도** 유연하게 사용할 수 있다는 장점이 있다. 이 특성 덕분에 MCTS는 실시간 시스템에서 시간에 맞춰 결정을 내리거나, 계산 예산이 클수록 더 강해지는 AI를 만드는 데에도 적합하다.
### 단점 (Disadvantages)
• **높은 계산량과 시간 요구:** MCTS의 가장 큰 단점 중 하나는 충분한 **시뮬레이션 횟수를 확보하려면 많은 계산량**이 필요하다는 점이다. 무작위 시뮬레이션 자체는 가볍더라도 이를 수천~수만 번 반복해야 하므로, 상황에 따라 **실시간 적용이 어려울 수 있다**. 시뮬레이션 횟수가 부족하면 결과의 신뢰도가 떨어져 잘못된 수를 선택할 위험이 있으며, 복잡한 환경일수록 이 현상이 두드러진다. 따라서 제한된 시간 내에 수행해야 하는 **실시간 전략 게임(RTS)**이나 매우 **거대한 상태 공간**을 가진 문제에서는 MCTS를 직접 적용하기 어려워 추가적인 최적화나 근사 기법이 필요할 수 있다.
• **깊은 함정수(trap)를 놓칠 위험:** MCTS는 현재까지 **유망하지 않다고 평가된 경로는 거의 탐색하지 않는** 특성이 있기 때문에, 겉보기에 나빠 보여 잘 탐색되지 않은 수가 사실은 깊은 수읽기상 최선인 경우 이를 놓칠 수 있다. 즉, 상대방이 숨겨둔 **계략 수**(trap)를 초반에 승산이 낮다고 판단해 탐색하지 않다가, 실제 대국에서 그 수로 인해 패배할 수 있다는 것이다. 실제 사례로, AlphaGo는 이세돌과의 대국에서 **4국을 패배**했는데, 일부 분석에서는 MCTS가 간과한 **함정 수**를 이세돌 9단이 활용한 결과로 보고 있다. 이처럼 MCTS는 대국 중 **깊은 수읽기**를 통해 발견되는 특수한 경우에 완벽히 대응하지 못할 수 있으며, 이러한 부분에서 전통적인 완전탐색 기법보다 취약하다는 지적이 있다.
• **초기 성능 및 수렴 속도 문제:** MCTS는 시뮬레이션 횟수가 적을 때는 **무작위에 가까운 결정**을 내리므로, 초기에는 품질이 낮은 수를 둘 가능성이 있다. 충분한 반복 전에 **운에 기대는 플레이**를 할 수 있어, 때로는 초반 몇 수에서 손해를 볼 위험이 있다. 또한 **수렴 속도**가 느릴 수 있는데, 특히 **분기수가 너무 큰 경우** 참값에 수렴하려면 막대한 시뮬레이션이 필요하다. 이를 개선하기 위해 도메인 지식을 활용한 **헤비 플레이아웃(heavy playout)**이나, 신뢰구간을 이용한 **진행적 확장** 등의 기법이 제안되지만, 이러한 개선 없이는 기본 MCTS의 효율이 떨어질 수 있다. (예를 들어, 바둑에서 완전 무작위 플레이아웃 대신 **패턴 지식**을 일부 반영한 플레이아웃을 썼을 때 성능이 향상된 사례가 보고되었다.)
**Note:** 상기한 단점들을 보완하기 위해 여러 **개량 알고리즘**이 연구되고 있다(아래 최신 동향 참조). 예를 들어, 초기 움직임을 좀 더 다양하게 탐색하도록 **프로그레시브 확대**(progressive widening)나, 시뮬레이션 정책에 약간의 **휴리스틱**을 도입하는 등의 방식으로 함정 수를 완화하고 성능을 높일 수 있다.
## MCTS의 적용 사례
MCTS는 일반적인 기법인 만큼 **다양한 분야**의 의사결정 문제에 적용되어 왔다. 특히 아래와 같은 분야에서 뛰어난 성과와 활발한 활용 사례가 보고되었다:
• **보드게임 AI:** 체스, 바둑, 장기, 오목 등의 턴제 보드게임 인공지능에 MCTS가 널리 응용되고 있다. **바둑**의 경우, 2006년 MCTS가 도입된 이후 컴퓨터 바둑의 수준이 비약적으로 향상되었는데, 2007년 이후에는 주요 바둑 프로그램들이 모두 MCTS 기반으로 개발될 정도로 표준 기법이 되었다. MCTS의 도입으로 9단 수준의 아마 고수를 이기는 프로그램(예: MoGo, Fuego 등)이 등장했고, **Hex**, **Havannah**, **아마존즈(Amazons)**, **Arimaa** 등 다른 보드게임들에서도 MCTS를 활용한 강력한 AI가 만들어졌다 . 체스나 장기에서도 전통적인 알파베타 탐색과 평가함수 대신 MCTS를 실험적으로 도입한 엔진들이 존재하며, 특히 **분기수가 큰 보드게임일수록** MCTS의 이점이 부각되고 있다.
• **강화학습 및 자가 학습**: **DeepMind의 AlphaGo**는 **신경망을 결합한 MCTS**로 세계 챔피언급 인간 고수를 최초로 이긴 바둑 AI로 유명하다. AlphaGo는 **정책망**(다음 수 확률)과 **가치망**(현재 국면 승률)을 신경망으로 학습하고, 이를 MCTS의 시뮬레이션 평가에 활용하는 방식을 통해 이전까지의 어떤 바둑 프로그램보다 압도적으로 강한 성능을 보였다. 이 성공 이후, **AlphaGo Zero**(2017)에서는 아예 **인간 대국 데이터 없이** 자기 대국을 통해 신경망을 훈련하고 MCTS로 탐색하는 방식을 선보여 AlphaGo를 능가했고, 곧이어 나온 **AlphaZero**(2018)는 같은 알고리즘을 **체스**와 **쇼기**에까지 확장하여 **여러 보드게임을 범용적으로 마스터**하는 데 성공했다. AlphaZero는 MCTS의 **시뮬레이션 단계를 신경망 평가로 대체**하여 속도와 효율을 높인 케이스로, 게임 규칙 외에는 어떠한 도메인 지식도 사용하지 않고도 인간 초월의 실력을 보였다. 이렇듯 MCTS와 **딥러닝 기반 강화학습**의 결합은 게임 AI의 새로운 가능성을 열었고, OpenAI 등 다른 연구기관들도 복잡한 의사결정 문제에 MCTS를 통합하는 다양한 연구를 진행하고 있다.
• **로보틱스 및 경로 최적화:** MCTS는 로봇의 **경로 계획(path planning)**이나 **동작 시퀀스 최적화** 문제에도 응용되고 있다. 예를 들어, 로봇 팔이나 자율주행 로봇이 주어진 목표 지점까지 이동하는 경로를 찾는 문제에 MCTS를 적용한 연구들이 보고되었다. 한 연구에서는 MCTS를 변형한 **_Monte Carlo Path Planning(MCPP)_** 기법을 통해, **_부분 관측_** 환경의 로봇 경로계획에서 **_최적 경로를 높은 확률로 찾아내는_** 성과를 보였다. 이 접근법은 기존 RRT 알고리즘 대비 복잡한 환경에서 수렴 속도를 개선한 것으로 평가된다. 그 외에도 **스케줄링**(작업 일정 최적화), **조합 최적화** 등의 분야에서 MCTS를 활용하여 **대규모 해 공간을 효율적으로 탐색**하려는 시도가 이뤄지고 있으며, **다중 로봇의 협업 제어**나 **네트워크 최적화**와 같이 연속적 결정이 필요한 문제에도 MCTS 기반 솔루션이 연구되고 있다.
• **비디오 게임 AI 및 실시간 전략게임:** MCTS는 **비디오 게임의 인공지능**에도 응용 사례가 있다. 고전 아케이드 게임인 **Ms. Pac-Man**의 AI에 MCTS를 도입하여 고득점을 올리도록 한 연구나, 마이크로소프트의 액션 RPG **Fable Legends**에서 적 캐릭터의 **전술 결정을 MCTS로 처리**한 사례가 대표적이다. 이처럼 실시간으로 변화하는 게임 환경에서도 일정 시간 동안 시뮬레이션을 수행해 다음 행동을 결정함으로써, 기존의 스크립트형 AI보다 유연하고 인간에 가까운 플레이를 보여줄 수 있었다. 다만 **실시간 전략(RTS)** 게임과 같이 **상태 변화가 빠르고 연속적인 환경**에서는 매 턴 충분한 시뮬레이션을 돌리기 어려워 MCTS 적용이 까다롭다. 그럼에도 불구하고 **스타크래프트** 등의 RTS 게임에서도 MCTS를 일부 접목한 전술 및 전략 계획 AI에 대한 연구가 진행된 바 있으며, 제한된 범위 내에서는 일정 수준 효과를 보이기도 했다. (예컨대, 소규모 교전 상황에 MCTS로 유닛의 이동을 계획하는 실험 등이 있다.) **게임 AI 대회** 등에서도 MCTS는 참가자들이 자주 사용하는 기법으로 자리 잡았으며, 턴제 게임뿐 아니라 실시간 게임 AI 연구에서도 중요한 참고 알고리즘이 되고 있다.
## MCTS의 최신 연구 동향
MCTS는 지속적으로 발전하고 있으며, 특히 **강화학습과의 결합**, **딥러닝 등 최신 AI 모델과의 융합**을 통해 새로운 성과들이 나타나고 있다. 앞서 언급한 AlphaGo~AlphaZero 계열의 성공으로, **학습된 정책/가치망을 MCTS에 통합**하는 접근이 보편화되었다. 2017년 발표된 **AlphaGo Zero**는 인간 지식 없이 **자기 플레이 강화학습**만으로 바둑 실력을 끌어올리고, 그 **신경망 평가값을 MCTS에 활용**하는 방식으로 이전보다 **효율적인 탐색**을 이뤄냈다. 나아가 2018년의 **AlphaZero** 알고리즘은 동일한 MCTS+딥러닝 기법을 바둑뿐 아니라 체스, 쇼기까지 적용하여, **하나의 알고리즘으로 서로 다른 게임들을 정복**하는 데 성공하였다 . 이로써 MCTS와 딥러닝 결합의 **범용성**이 입증되었고, 게임 외 다른 결정 문제에도 유사한 접근을 적용하려는 연구가 늘고 있다.
특히 **모델 기반 강화학습**과 MCTS의 융합은 최신 화두이다. 2019년 DeepMind가 발표한 **MuZero**는 **환경의 동적 모델까지 학습**하여 MCTS에 활용한 획기적인 기법으로, **게임의 규칙을 모르더라도** 스스로 추론한 모델로 시뮬레이션을 진행해 최적 행동을 찾을 수 있음을 보여주었다. MuZero는 **아타리 게임**과 같이 복잡하고 확률적인 환경에서도 인간 수준을 뛰어넘는 성능을 보였으며, **바둑, 체스 등의 기존 보드게임에서도 AlphaZero와 동등한 성과**를 거두었다. 이는 MCTS가 더 이상 고정된 시뮬레이터에만 의존하지 않고, **AI가 학습한 내부 모델과 결합하여** 보다 **일반적인 의사결정 문제**로 확장될 수 있음을 시사한다. 이러한 **학습된 모델 + MCTS** 접근은 향후 로봇 제어, 자율주행 등 규칙을 명시하기 어려운 복잡한 현실 문제에도 응용될 것으로 기대된다.
MCTS 자체의 **성능 개선**에 대한 연구도 활발하다. 기본 MCTS의 연산량 한계를 극복하기 위해 **병렬화**, **분산 MCTS**, **진행적 전략** 등 다양한 기법이 제안되었다 . 그중 2022년 제안된 **가상 확장 MCTS(V-MCTS)** 알고리즘은 **상황에 따라 탐색 자원을 능동적으로 분배**하여, **어려운 국면에서는 더 깊이 탐색**하고 **쉬운 국면에서는 시간을 절약**하는 방식으로 MCTS를 가속하는 방법을 보였다. 연구 결과 V-MCTS는 원래 MCTS와 **유사한 성능을 유지**하면서도 **평균 절반 이하의 탐색 시간**만으로 동등한 결과를 달성하여, 시간 제약이 있는 환경에서 MCTS 활용 범위를 넓힐 수 있음을 입증했다. 이 밖에도 **신경망을 활용한 후보 수 필터링**, **Monte Carlo Tree Search를 개선한 그래프 탐색(MCGS)** 등 여러 변형 기법들이 제안되어, **실시간 적용성 향상**이나 **대규모 문제에의 확장** 등 MCTS의 단점을 보완하고 있다.
마지막으로, **최신 AI 모델과 MCTS의 융합** 가능성도 연구되고 있다. 거대 언어 모델(LLM)과 같은 최신 딥러닝 모델에 MCTS를 접목하여 **추론력과 탐색력을 결합**하려는 시도나, 복잡한 **멀티에이전트 환경**에서 MCTS를 활용해 **전략 시뮬레이션**을 수행하는 연구 등이 그 예이다. 일례로, 체스 해설을 하는 언어 모델에 MCTS를 도입해 다음 수를 선택하게 하거나, 전략 게임에서 **언어 모델이 생성한 행동 후보들을 MCTS로 평가**하는 등의 아이디어가 논의되고 있다. 이러한 융합 연구는 아직 초기 단계지만, **인공지능 시스템에 검색(search)의 능력을 부여**하는 한 방향으로서 MCTS의 가치가 재조명되고 있다. 즉, MCTS는 향후에도 **딥러닝**과 **고전 탐색 알고리즘**을 연결하는 **교량 역할**로서, 다양한 AI 분야에서 중요한 구성 요소로 남을 것으로 전망된다.
---
**참고 자료:** 본 연구에서는 MCTS의 알고리즘적 원리와 그 발전 양상을 다루었다. Wikipedia와 주요 논문 , AlphaGo 및 AlphaZero 관련 보고 , 그리고 MCTS 응용 사례에 관한 문헌 등을 참조하여 내용을 구성하였다. MCTS는 불확실성이 있는 복잡한 문제에서도 탁월한 성능을 발휘하는 탐색 기법이며, 지속적인 연구를 통해 그 적용 범위와 효율성이 꾸준히 확대되고 있다.