12-3. Q-Learning: 가치 기반 강화 학습
1. 가치 기반 강화 학습의 이해
강화 학습은 에이전트가 환경과 상호작용하며 특정 목표를 달성하도록 학습하는 머신 러닝의 한 분야입니다. 에이전트는 환경으로부터 보상을 받으며, 이를 통해 최적의 행동 전략, 즉 정책(Policy)을 학습합니다. 강화 학습에는 여러 접근 방식이 있으며, 그중 하나가 가치 기반(Value-based) 방법입니다. Q-Learning은 가치 기반 강화 학습의 대표적인 알고리즘입니다.
가치 기반 방법은 각 상태(State) 또는 상태-행동 쌍(State-Action pair)에 대한 가치(Value)를 추정합니다. 여기서 "가치"란, 주어진 상태에서 특정 정책을 따랐을 때 얻을 수 있는 예상 누적 보상(Expected Cumulative Reward)을 의미합니다. Q-Learning은 이 가치를 학습하고, 이를 바탕으로 최적의 정책을 결정합니다. 마치 바둑에서 각 "수"의 좋고 나쁨을 평가하듯이, Q-Learning은 각 상태에서 가능한 모든 행동의 가치를 평가합니다.
Q-Learning의 핵심은 Q-table을 통해 학습하는 것입니다. Q-table은 모든 상태-행동 쌍에 대한 Q-value를 저장하는 테이블입니다. Q-value는 에이전트가 특정 상태에서 특정 행동을 했을 때 얻을 것으로 예상되는 미래 보상의 총합을 나타냅니다.

2. Q-Learning 알고리즘의 원리
Q-Learning은 Q-table을 업데이트하는 방식으로 작동합니다. Q-table의 각 항목, 즉 Q-value는 다음과 같은 갱신 규칙(update rule)에 따라 지속적으로 업데이트됩니다.
$$ Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left[ r_{t+1} + \gamma \max_{a} Q(s_{t+1}, a) - Q(s_t, a_t) \right] $$
- $Q(s_t, a_t)$: 현재 상태 $s_t$에서 행동 $a_t$를 했을 때의 Q-value
- $\alpha$: 학습률(learning rate). 0과 1 사이의 값으로, 새로운 정보를 얼마나 반영할지 결정합니다.
- $r_{t+1}$: 다음 시점 $t+1$에서 받은 보상
- $\gamma$: 할인율(discount factor). 0과 1 사이의 값으로, 미래 보상을 얼마나 중요하게 고려할지 결정합니다. 0에 가까울수록 현재 보상을, 1에 가까울수록 미래 보상을 중요하게 생각합니다.
- $s_{t+1}$: 다음 상태
- $a$: 다음 상태 $s_{t+1}$에서 가능한 모든 행동
- $\max_{a} Q(s_{t+1}, a)$: 다음 상태 $s_{t+1}$에서 가능한 모든 행동 중 가장 높은 Q-value
이 갱신 규칙은 에이전트가 경험을 통해 Q-value를 "학습"하는 과정을 나타냅니다. 즉, 현재 상태에서 행동을 취한 후 얻은 보상과, 다음 상태에서 최적의 행동을 했을 때 얻을 수 있는 예상 보상을 결합하여, 현재 행동의 Q-value를 업데이트합니다.
1) 알고리즘 단계별 설명
- 초기화:
Q-table을 0 또는 작은 무작위 값으로 초기화합니다. - 상태 관찰: 에이전트는 환경의 현재 상태 $s_t$를 관찰합니다.
- 행동 선택: 에이전트는 현재 상태에서 행동 $a_t$를 선택합니다. 일반적으로, 학습 초기에는 탐험(Exploration)을 위해 무작위 행동을 선택하고, 학습이 진행됨에 따라 활용(Exploitation)을 위해 Q-value가 가장 높은 행동을 선택합니다.
ε-greedy정책이 널리 사용됩니다. - 보상 및 다음 상태 관찰: 에이전트는 행동 $a_t$를 취하고, 환경으로부터 보상 $r_{t+1}$을 받고, 다음 상태 $s_{t+1}$로 이동합니다.
- Q-value 업데이트: 위에서 설명한 Q-value 갱신 규칙을 사용하여
Q-table의 $Q(s_t, a_t)$를 업데이트합니다. - 반복: 2단계부터 5단계를 에피소드(Episode)가 종료될 때까지 또는 미리 정해진 횟수만큼 반복합니다.
2) 탐험과 활용
강화 학습에서 중요한 요소 중 하나는 탐험과 활용의 균형입니다.
- 탐험(Exploration): 새로운 행동을 시도하여, 더 좋은 보상을 얻을 수 있는 새로운 경로를 찾는 과정입니다. 탐험을 통해 에이전트는 환경에 대한 더 많은 정보를 얻고, 최적의 정책을 발견할 가능성을 높입니다.
- 활용(Exploitation): 현재까지 학습된 Q-value를 바탕으로, 가장 높은 Q-value를 가진 행동을 선택하는 과정입니다. 활용을 통해 에이전트는 학습된 지식을 이용하여 보상을 극대화합니다.
탐험과 활용의 균형을 맞추기 위해, ε-greedy 정책과 같은 방법을 사용합니다.
ε-greedy정책: 확률ε로 무작위 행동을 선택하고, 확률1-ε로 Q-value가 가장 높은 행동을 선택합니다.ε는 일반적으로 학습이 진행됨에 따라 감소하며, 탐험의 비중을 점차 줄이고 활용의 비중을 늘립니다.
3. Q-table을 이용한 최적 정책 학습
Q-Learning은 Q-table을 학습하고, 학습된 Q-table을 기반으로 최적 정책을 결정합니다. Q-table이 충분히 학습된 경우, 에이전트는 각 상태에서 가장 높은 Q-value를 가진 행동을 선택함으로써 최적의 정책을 따르게 됩니다.
1) Q-table의 예시
간단한 예시를 통해 Q-table의 개념을 이해해 봅시다.
예시:
- 환경: 간단한 그리드 월드 (Grid World)
- 상태: 에이전트의 위치 (예: (0, 0), (0, 1), (1, 0), (1, 1))
- 행동: 상, 하, 좌, 우 (Up, Down, Left, Right)
- 보상: 목표 지점에 도달하면 +1, 다른 행동은 -0.1
Q-table은 각 상태와 각 행동에 대한 Q-value를 저장합니다. 예를 들어, Q-table의 일부는 다음과 같을 수 있습니다.
| 상태 | 행동 (Up) | 행동 (Down) | 행동 (Left) | 행동 (Right) |
|---|---|---|---|---|
| (0, 0) | -0.1 | -0.1 | -0.1 | 0.0 |
| (0, 1) | 0.0 | -0.1 | -0.1 | 0.9 |
| (1, 0) | -0.1 | 0.9 | 0.0 | -0.1 |
| (1, 1) | 0.9 | -0.1 | 0.9 | -0.1 |
이 경우, 에이전트는 (0, 0)에서 "Right"을, (0, 1)에서 "Right"를, (1, 0)에서 "Down"을 선택하는 것이 최적의 정책일 것입니다.

2) 코드 예시 (Python)
import numpy as np
# Q-table 초기화
def initialize_q_table(states, actions):
return np.zeros((len(states), len(actions)))
# ε-greedy 정책
def choose_action(state, q_table, epsilon, actions):
if np.random.uniform(0, 1) < epsilon:
return np.random.choice(actions) # 탐험
else:
return np.argmax(q_table[state, :]) # 활용
# Q-value 업데이트
def update_q_value(q_table, state, action, reward, next_state, learning_rate, discount_factor):
predict = q_table[state, action]
target = reward + discount_factor * np.max(q_table[next_state, :])
q_table[state, action] += learning_rate * (target - predict)
# Q-Learning 알고리즘
def q_learning(env, learning_rate, discount_factor, epsilon, epsilon_decay_rate, min_epsilon, num_episodes):
q_table = initialize_q_table(env.states, env.actions)
rewards_per_episode = []
for episode in range(num_episodes):
state = env.reset() # 환경 초기화
terminated = False
truncated = False
total_reward = 0
while not terminated and not truncated:
action = choose_action(state, q_table, epsilon, env.actions)
next_state, reward, terminated, truncated, _ = env.step(action)
update_q_value(q_table, state, action, reward, next_state, learning_rate, discount_factor)
state = next_state
total_reward += reward
# ε 감소
epsilon = max(min_epsilon, epsilon * epsilon_decay_rate)
rewards_per_episode.append(total_reward)
return q_table, rewards_per_episode
위 코드는 Q-Learning 알고리즘의 핵심 부분을 간략하게 구현한 예시입니다. env는 환경 객체이며, env.states, env.actions는 각각 상태와 행동의 집합을 나타냅니다. env.reset()은 환경을 초기화하고, env.step(action)은 주어진 행동을 취하고 다음 상태, 보상, 종료 여부 등의 정보를 반환합니다.
4. Q-Learning의 장단점과 고려 사항
1) 장점
- 단순성: 구현이 비교적 쉽고, 이해하기 쉬운 알고리즘입니다.
- 오프-폴리시(Off-policy) 학습: 현재 정책과 다른 정책에서 수집된 데이터를 사용하여 학습할 수 있습니다. 이는 더 효율적인 데이터 활용을 가능하게 합니다.
- 보장된 수렴: 충분한 시간 동안 학습하면, Q-Learning은 최적의 Q-value에 수렴함을 수학적으로 보장합니다.
2) 단점
- 상태 공간의 저주(Curse of Dimensionality): 상태 공간이 커지면 (예: 이미지, 복잡한 환경) Q-table의 크기가 매우 커져, 메모리 문제가 발생하고 학습 속도가 느려질 수 있습니다.
- 탐험 문제: 무작위 탐험은 비효율적일 수 있으며, 학습 시간을 늘릴 수 있습니다.
- 과대평가 문제: Q-Learning은 종종 Q-value를 과대평가하는 경향이 있습니다.
3) 고려 사항 및 개선 방향
- 상태 공간의 크기: 상태 공간이 큰 문제에는 Q-table 대신, 심층 신경망을 사용하여 Q-value를 추정하는 DQN(Deep Q-Network)과 같은 딥러닝 기반의 강화 학습 기법을 사용합니다.
- 탐험 전략: 탐험 효율을 높이기 위해,
ε-greedy외에Boltzmann exploration과 같은 다른 탐험 전략을 사용할 수 있습니다. - 과대평가 문제: Double Q-Learning과 같은 기법을 사용하여 과대평가 문제를 완화할 수 있습니다.
- 경험 재생(Experience Replay): 에이전트가 경험한 transition들을 저장하고, 이를 무작위로 샘플링하여 학습에 사용하는 기법으로, 데이터 효율성을 높이고 학습 안정성을 향상시킵니다.
5. 결론
Q-Learning은 가치 기반 강화 학습의 기본적인 알고리즘으로, Q-table을 통해 최적의 정책을 학습하는 방법을 제공합니다. 단순하지만 강력하며, 강화 학습의 기본 원리를 이해하는 데 매우 유용합니다. 하지만, 상태 공간의 크기, 탐험 전략, 과대평가 문제 등 몇 가지 단점이 존재합니다. 이러한 단점을 보완하기 위해 DQN과 같은 딥러닝 기반의 강화 학습 기법이 개발되었으며, Q-Learning의 기본적인 원리를 이해하는 것은 딥러닝 기반 강화 학습 알고리즘을 이해하는 데에도 도움이 됩니다. Q-Learning은 강화 학습 분야에서 중요한 위치를 차지하고 있으며, 다양한 응용 분야에서 활용될 수 있습니다.
비슷한 글 추천
12-6. 강화 학습 실습: OpenAI Gym 환경에서 학습
OpenAI Gym 환경에서 강화 학습 알고리즘(Q-Learning, DQN)을 이용하여 에이전트를 학습시키는 실습 과정을 상세히 설명합니다.
12-4. Deep Q-Network (DQN): 심층 신경망 기반 강화 학습
DQN의 구조와 작동 원리를 상세히 설명하고, Q-Learning의 한계를 극복하는 방법을 제시합니다.
6-4. 페이지 교체 알고리즘 (Page Replacement Algorithms)
FIFO, OPT, LRU, LFU, MFU 등 페이지 교체 알고리즘을 설명하고, 성능을 비교합니다.
8-2. 코딩 테스트: 구현 문제 풀이
구현 문제 유형, 조건 처리, 문자열 처리, 시뮬레이션, 예시 문제 풀이.
Comments (0)
No comments yet. Be the first to comment!
Please to write a comment.