일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Q-Learning
- Machine Learning
- rnn
- GRU
- 최적화
- 신경망
- 정규화
- 차원 축소
- 인공 신경망
- reinforcement learning
- 활성화 함수
- python
- 지도 학습
- 딥러닝
- AI
- 머신 러닝
- 교차 검증
- 과적합
- LSTM
- 강화 학습
- CNN
- 자연어 처리
- 강화학습
- 데이터 전처리
- 머신러닝
- 손실 함수
- q-러닝
- 회귀
- 인공지능
- Deep learning
- Today
- Total
move84
강화 학습: 정책 반복 방법 완벽 가이드 본문
강화 학습(Reinforcement Learning, RL)은 에이전트가 환경과 상호 작용하며, 보상을 최대화하는 방향으로 학습하는 머신 러닝의 한 분야이다. 정책 반복(Policy Iteration)은 강화 학습의 핵심 알고리즘 중 하나로, 최적의 정책(optimal policy)을 찾는 데 사용된다. 이 글에서는 정책 반복의 개념, 알고리즘, 그리고 실제 파이썬 예제를 통해 정책 반복 방법을 자세히 살펴본다.
—
🧠 정책 반복의 기본 개념 (Policy Iteration: 기본 개념)
정책 반복은 두 가지 주요 단계, 즉 정책 평가(Policy Evaluation)와 정책 개선(Policy Improvement)을 반복적으로 수행하여 최적의 정책을 찾아가는 방법이다. 정책 평가는 현재 정책에 따라 각 상태(state)의 가치(value)를 계산하고, 정책 개선은 계산된 가치를 바탕으로 정책을 업데이트한다. 이 두 단계를 반복하면 정책은 점차 최적 정책에 수렴하게 된다.
—
💡 정책 평가 (Policy Evaluation: 정책 평가)
정책 평가는 주어진 정책 π(pi) 하에서 각 상태의 가치 함수 V(s)를 계산하는 과정이다. 이는 벨만 기대 방정식(Bellman Expectation Equation)을 사용하여 수행된다. 벨만 기대 방정식은 다음과 같이 나타낼 수 있다:
V(s) = E[R(s, a) + γ * V(s')]
여기서:
- V(s)는 상태 s의 가치
- E는 기대값
- R(s, a)는 상태 s에서 행동 a를 했을 때 받는 보상
- γ (감마)는 할인율(discount rate, 0 ≤ γ ≤ 1)
- V(s')는 다음 상태 s'의 가치
정책 평가는 반복적인 계산을 통해 이루어진다. 초기 가치 함수 V(s)를 0으로 초기화하고, 벨만 기대 방정식을 반복적으로 적용하여 가치 함수를 업데이트한다. 이 과정을 가치 함수가 수렴할 때까지 반복한다.
—
🚀 정책 개선 (Policy Improvement: 정책 개선)
정책 개선 단계에서는 정책 평가에서 계산된 가치 함수를 바탕으로 정책을 개선한다. 이는 각 상태 s에서 최적의 행동 a를 선택하여 새로운 정책 π'(pi prime)을 생성하는 과정이다. 최적의 행동은 현재 상태 s에서 가치를 최대화하는 행동이다. 정책 개선은 다음과 같은 수식을 통해 수행된다:
π'(s) = argmax_a {R(s, a) + γ * V(s')}
여기서:
- π'(s)는 새로운 정책에서 상태 s에서의 행동
- argmax_a는 가치를 최대화하는 행동 a를 선택
- R(s, a)는 상태 s에서 행동 a를 했을 때 받는 보상
- γ는 할인율
- V(s')는 다음 상태 s'의 가치
이 과정을 통해, 각 상태에서 더 나은 가치를 얻을 수 있는 행동을 선택함으로써, 정책이 점차 개선된다.
—
💻 정책 반복 알고리즘 (Policy Iteration: 알고리즘)
정책 반복 알고리즘은 정책 평가와 정책 개선을 반복적으로 수행하는 형태로 구성된다. 다음은 정책 반복 알고리즘의 일반적인 단계이다:
- 초기화 (Initialization): 임의의 초기 정책 π(pi)와 가치 함수 V(s)를 설정한다.
- 정책 평가 (Policy Evaluation): 현재 정책 π(pi)에 대한 가치 함수 V(s)를 계산한다.
- 정책 개선 (Policy Improvement): 가치 함수 V(s)를 사용하여 새로운 정책 π'(pi prime)을 생성한다.
- 수렴 확인 (Convergence Check): 새로운 정책 π'(pi prime)이 이전 정책 π(pi)과 동일한지 확인한다. 만약 동일하다면 알고리즘을 종료하고, 그렇지 않다면 π(pi) = π'(pi prime)으로 업데이트하고 2단계로 돌아간다.
이 과정을 통해 정책은 점차적으로 최적 정책으로 수렴하게 된다.
—
🐍 파이썬 예제 (Python Example: 파이썬 예제)
다음은 간단한 그리드 월드(grid world) 환경에서 정책 반복을 구현하는 파이썬 예제이다. 이 예제는 정책 평가, 정책 개선, 그리고 전체 정책 반복 과정을 포함한다.
import numpy as np
# 그리드 월드 환경 설정
GRID_SIZE = 4
ACTIONS = ['UP', 'DOWN', 'LEFT', 'RIGHT']
def is_valid(row, col):
return 0 <= row < GRID_SIZE and 0 <= col < GRID_SIZE
# 보상 및 전이 확률 설정
rewards = np.zeros((GRID_SIZE, GRID_SIZE))
rewards[GRID_SIZE - 1, GRID_SIZE - 1] = 1 # 목표 지점 보상
transitions = {
'UP': (-1, 0),
'DOWN': (1, 0),
'LEFT': (0, -1),
'RIGHT': (0, 1)
}
# 할인율 설정
discount_factor = 0.9
# 정책 평가 함수
def policy_evaluation(policy, values, theta=0.001):
while True:
delta = 0
for row in range(GRID_SIZE):
for col in range(GRID_SIZE):
if row == GRID_SIZE - 1 and col == GRID_SIZE - 1: # 목표 지점은 가치 0
continue
v = values[row, col]
new_value = 0
for action in ACTIONS:
dr, dc = transitions[action]
new_row, new_col = row + dr, col + dc
if not is_valid(new_row, new_col):
new_row, new_col = row, col # 경계 밖이면 원래 위치
new_value += 0.25 * (rewards[row, col] + discount_factor * values[new_row, new_col])
values[row, col] = new_value
delta = max(delta, abs(v - values[row, col]))
if delta < theta:
break
return values
# 정책 개선 함수
def policy_improvement(values):
policy = np.zeros((GRID_SIZE, GRID_SIZE), dtype=int) # 0:UP, 1:DOWN, 2:LEFT, 3:RIGHT
policy_stable = True
for row in range(GRID_SIZE):
for col in range(GRID_SIZE):
if row == GRID_SIZE - 1 and col == GRID_SIZE - 1: # 목표 지점 정책
continue
old_action = policy[row, col]
best_value = -np.inf
best_action = None
for action_idx, action in enumerate(ACTIONS):
dr, dc = transitions[action]
new_row, new_col = row + dr, col + dc
if not is_valid(new_row, new_col):
new_row, new_col = row, col
value = rewards[row, col] + discount_factor * values[new_row, new_col]
if value > best_value:
best_value = value
best_action = action_idx
policy[row, col] = best_action
if policy[row, col] != old_action:
policy_stable = False
return policy, policy_stable
# 정책 반복 함수
def policy_iteration():
# 초기 정책 (모든 행동을 동일 확률로 선택)
policy = np.zeros((GRID_SIZE, GRID_SIZE), dtype=int)
values = np.zeros((GRID_SIZE, GRID_SIZE))
while True:
# 정책 평가
values = policy_evaluation(policy, values)
# 정책 개선
policy, policy_stable = policy_improvement(values)
if policy_stable:
break
return policy, values
# 실행
optimal_policy, optimal_values = policy_iteration()
# 결과 출력
print("Optimal Policy:")
for row in range(GRID_SIZE):
for col in range(GRID_SIZE):
action_idx = optimal_policy[row, col]
if row == GRID_SIZE - 1 and col == GRID_SIZE - 1:
print("G", end=" ") # Goal
else:
print(ACTIONS[action_idx][0], end=" ") # 첫 글자 표시
print()
print("\nOptimal Values:")
print(optimal_values)
이 예제는 4x4 그리드 월드 환경에서 최적의 정책을 찾는 과정을 보여준다. 각 단계별로 정책 평가와 정책 개선을 수행하며, 최종적으로 최적의 정책과 가치 함수를 출력한다. policy_evaluation
함수는 주어진 정책 하에서 가치 함수를 계산하고, policy_improvement
함수는 가치 함수를 기반으로 정책을 개선한다. policy_iteration
함수는 이 두 함수를 반복적으로 호출하여 최적 정책을 찾는다.
—
🗺️ 정책 반복의 장단점 (Policy Iteration: 장단점)
정책 반복은 최적의 정책을 찾는 강력한 방법이지만, 몇 가지 장단점을 가지고 있다.
- 장점:
- 최적 정책으로 수렴하는 것을 보장한다.
- 정책 개선 단계에서 항상 정책을 개선한다.
- 단점:
- 정책 평가 단계에서 가치 함수를 정확하게 계산해야 하므로, 계산 비용이 많이 들 수 있다.
- 환경이 복잡할수록 계산 시간이 증가한다.
—
✅ 결론 (Conclusion: 결론)
정책 반복은 강화 학습에서 최적 정책을 찾는 효과적인 방법이다. 정책 평가와 정책 개선을 반복적으로 수행하여 최적 정책으로 수렴하며, 이론적으로는 최적해를 보장한다. 하지만 계산 비용이 많이 들 수 있으므로, 복잡한 환경에서는 다른 방법(예: 가치 반복)과 비교하여 적절한 방법을 선택해야 한다. 이 글에서 제공된 예제와 설명을 통해 정책 반복을 이해하고, 실제 문제에 적용하는 데 도움이 되기를 바란다.
—
📚 핵심 용어 요약 (Key Terms: 핵심 용어)
- 강화 학습 (Reinforcement Learning, RL): 에이전트가 환경과 상호 작용하며 보상을 최대화하도록 학습하는 머신 러닝의 한 분야.
- 정책 반복 (Policy Iteration): 정책 평가와 정책 개선을 반복적으로 수행하여 최적 정책을 찾는 강화 학습 알고리즘.
- 정책 (Policy, π): 특정 상태에서 어떤 행동을 할지 결정하는 전략.
- 가치 함수 (Value Function, V(s)): 특정 상태에서 에이전트가 얻을 수 있는 예상 누적 보상.
- 정책 평가 (Policy Evaluation): 주어진 정책 하에서 각 상태의 가치 함수를 계산하는 과정.
- 정책 개선 (Policy Improvement): 가치 함수를 사용하여 정책을 개선하는 과정.
- 벨만 기대 방정식 (Bellman Expectation Equation): 가치 함수를 계산하기 위한 핵심 방정식.
- 할인율 (Discount Rate, γ): 미래 보상의 중요도를 나타내는 값 (0 ≤ γ ≤ 1).
- 상태 (State): 환경의 특정 상황.
- 행동 (Action): 에이전트가 환경에서 수행할 수 있는 동작.
- 최적 정책 (Optimal Policy): 에이전트가 환경에서 최대 보상을 얻을 수 있는 정책.
—
'강화학습' 카테고리의 다른 글
강화 학습: 비동기적 어드밴티지 액터-크리틱 (A3C) 완전 분석 (0) | 2025.04.06 |
---|---|
강화 학습: Actor-Critic 방법론 완벽 분석 (0) | 2025.04.06 |
강화 학습: 우선순위 경험 재생 (Prioritized Experience Replay) 심층 분석 (0) | 2025.04.05 |
강화 학습: Deep Q-Networks (DQN) 기본 이해 (0) | 2025.04.05 |
강화 학습: Markov Decision Processes (MDP) 기본 사항 (0) | 2025.04.05 |