본문 바로가기
Data & Research

[Reinforcement Learning] The Cliff Walking Problem

by 물박사의 저장공간 2025. 7. 1.

2025.06.29 - [Data & Research] - [Reinforcement Learning] Table of Contents


이번 포스팅에서는 지난 포스팅에서 살펴봤던 대표적인 강화학습 알고리즘에 대해서 Gemini의 도움을 받아 만들어진 간단한 예시에서 어떤식으로 실제 코딩이 작동하는지 살펴보도록 하겠습니다. 

 

 

1. '위험한 절벽' (The Cliff Walking Problem)

모든 알고리즘을 테스트할 간단한 격자 환경(Grid World)을 설정하겠습니다.

  • 환경: 3x5 크기의 격자.
  • 상태(States): 15개의 상태 (0~14).
    • 시작점(S): 10번 칸 (좌측 하단)
    • 목표(G): 14번 칸 (우측 하단)
    • 절벽(Cliff): 11, 12, 13번 칸. 이곳에 빠지면 큰 음의 보상을 받고 시작점으로 돌아갑니다.
  • 행동(Actions): 0: 상, 1: 하, 2: 좌, 3: 우 (4가지)
  • 보상(Rewards):
    • 목표 도달: +10
    • 절벽에 빠짐: -100
    • 그 외 모든 스텝: -1 (최단 경로를 찾도록 유도)

이 게임세팅의 재밌는 점은 절벽 바로 위를 지나가는 위험하지만 빠른 최적 경로와, 절벽을 멀리 돌아가는 안전하지만 느린 경로가 존재한다는 점입니다. 알고리즘의 특성에 따라 어떤 경로를 학습하는지, 또 학습시간은 얼마나 걸리는지 주의하면서 살펴보시죠.

 

 

2. Python Code 파일

A_Gamesetting.py
0.00MB
B_Algorithms.py
0.01MB
C_Main_operation.py
0.00MB

 

 

3. 결과 및 분석

Running Monte Carlo Control...
Finished in 18.35 seconds.
---------------------
| > | > | > | > | v | 
| ^ | ^ | ^ | ^ | v | 
| S | C | C | C | G | 
---------------------

Running SARSA...
Finished in 0.31 seconds.
---------------------
| > | > | > | > | v | 
| ^ | ^ | ^ | ^ | v | 
| S | C | C | C | G | 
---------------------

Running Q-Learning...
Finished in 0.29 seconds.
---------------------
| > | > | > | > | v | 
| > | > | > | > | v | 
| S | C | C | C | G | 
---------------------

Running REINFORCE with Baseline...
Finished in 5.81 seconds.
---------------------
| > | > | ^ | > | v | 
| ^ | ^ | ^ | ^ | v | 
| S | C | C | C | G | 
---------------------

Running Actor-Critic...
Finished in 0.83 seconds.
---------------------
| > | > | > | > | v | 
| ^ | ^ | ^ | ^ | v | 
| S | C | C | C | G | 
---------------------

Running Off-Policy MC Control...
Finished in 35.12 seconds.
---------------------
| > | > | > | > | v |
| > | > | > | > | v |
| S | C | C | C | G |
---------------------

Running Off-Policy Policy Gradient w/ IS...
Finished in 75.43 seconds.
---------------------
| > | > | > | v | v |
| > | > | > | > | v |
| S | C | C | C | G |
---------------------

 

SARSA : ε-Greedy 정책으로 행동하면서 그 정책의 가치를 평가하기 때문에, 탐험 중 절벽에 빠질 위험을 Q값에 반영합니다. 따라서 절벽에서 멀리 떨어진 안전한 경로를 학습합니다. 이는 '현실주의적인' 학습 방식이라고 볼 수 있습니다.

Q-Learning : Q-러닝은 Off-Policy이므로, 탐험하는 ε-Greedy 정책과 별개로 최적 정책을 배울 수 있습니다. 그 결과, 절벽에 빠질 위험을 감수하더라도 가장 빠른 길을 찾아냅니다. 학습된 정책은 절벽 바로 위를 따라가는, 매우 '이상주의적이고 공격적인' 최단 경로입니다.

REINFORCE : REINFORCE는 분산이 매우 커서 학습이 불안정하고 많은 에피소드를 필요로 합니다. 베이스라인을 사용하면 성능이 개선되지만, 여전히 MC 기반의 한계를 가집니다. 학습된 정책은 On-Policy 특성상 SARSA와 유사하게 안전한 길을 택하는 경향이 있습니다.

 Actor-Critic : Actor-Critic은 TD 기반으로 매 스텝마다 안정적인 신호(TD 오차)를 사용하므로 REINFORCE보다 훨씬 안정적이고 빠르게 학습합니다. 학습된 정책은 On-Policy 특성을 가지므로 SARSA와 유사하게 안전한 경로를 찾지만, 정책을 직접 학습하므로 더 복잡한 문제에 잘 적용됩니다.

 

요약하면,

 

  • On-Policy (MC Control, SARSA, REINFORCE, Actor-Critic): 실제로 행동하는 (\epsilon)-Greedy (또는 Softmax) 정책의 영향으로, 절벽에 빠질 작은 가능성도 회피하려는 경향이 있어 안전한 경로를 학습합니다.
  • Off-Policy (Q-Learning): 행동과 학습이 분리되어, 탐험 중 절벽에 빠지는 경험과 무관하게 '최적'이라고 생각하는 가장 빠른 경로를 학습합니다. 결과적으로 위험하지만 최단 경로를 학습합니다.
  • 분산 (Variance): MC 기반(MC Control, REINFORCE)은 분산이 커 학습이 불안정하며, TD 기반(SARSA, Q-Learning, Actor-Critic)은 분산이 작아 더 안정적이고 빠릅니다. Actor-Critic은 REINFORCE의 분산 문제를 직접적으로 해결하기 위해 TD를 사용합니다.