Lab 4: Q-learning을 활용한 탐험 및 착취와 할인된 보상 최적화
Q-learning은 강화 학습의 중요한 기법 중 하나로, 주어진 환경에서 최적의 정책을 학습하는 데 사용됩니다. 이번 글에서는 Q-learning의 탐험(Exploration)과 착취(Exploitation) 전략 및 할인된 보상(Discounted Reward)에 대해 알아보고, 이를 구현하는 방법을 상세히 설명하겠습니다.
Q-learning 개요
Q-learning은 에이전트가 환경과 상호작용하면서 얻는 보상(reward)을 바탕으로 최적의 행동(action)을 학습하는 알고리즘입니다. 이 과정에서 중요한 두 가지 개념이 바로 탐험과 착취입니다.
- 탐험(Exploration): 에이전트가 아직 경험하지 못한 상태(state)와 행동(action)을 탐험하여 새로운 정보를 얻는 과정입니다.
- 착취(Exploitation): 에이전트가 현재까지 학습한 정보를 바탕으로 최적의 행동을 선택하는 과정입니다.
이 두 가지 개념을 균형 있게 조절하는 것이 Q-learning의 핵심입니다. 또한, 미래의 보상을 고려하여 현재의 행동을 평가하는 할인된 보상(Discounted Reward) 개념도 중요합니다.
(이미지를 입력하세요)
Q-learning의 탐험과 착취
탐험과 착취를 조절하는 일반적인 방법 중 하나는 ε-탐욕 정책(ε-greedy policy)입니다. 이 정책은 일정 확률(ε)로 탐험을 하고, 나머지 확률(1-ε)로 현재의 Q값이 가장 높은 행동을 선택합니다. ε 값은 일반적으로 시간이 지남에 따라 감소시켜, 초기에는 많은 탐험을 하고 후반에는 착취를 더 많이 하게 합니다.
다음은 ε-탐욕 정책을 구현하는 코드 예시입니다:
def epsilon_greedy(Q, state, epsilon):
if np.random.rand() < epsilon:
# 탐험: 랜덤한 행동 선택
action = np.random.choice(len(Q[state]))
else:
# 착취: Q값이 최대인 행동 선택
action = np.argmax(Q[state])
return action
할인된 보상
할인된 보상은 미래의 보상을 현재의 보상으로 변환하는 방법입니다. 할인율(γ)을 사용하여 먼 미래의 보상을 현재보다 덜 중요하게 만듭니다. 할인율은 0과 1 사이의 값을 가지며, 1에 가까울수록 먼 미래의 보상을 더 중요하게 고려합니다.
할인된 보상을 사용하는 Q-learning 업데이트 식은 다음과 같습니다:
Q(s,a)←Q(s,a)+α[r+γmaxQ(s′,a′)−Q(s,a)]
여기서:
- : 상태 s에서 행동 a를 했을 때의 Q값
- α\alpha: 학습률
- rr: 현재 상태에서의 보상
- γ\gamma: 할인율
- s′s': 다음 상태
- maxQ(s′,a′)\max Q(s', a'): 다음 상태에서의 최대 Q값
Q-learning 코드 구현
다음은 Q-learning 알고리즘을 Python으로 구현한 예시입니다:
# 환경 설정
num_states = 5
num_actions = 2
Q = np.zeros((num_states, num_actions))
alpha = 0.1 # 학습률
gamma = 0.9 # 할인율
epsilon = 0.1 # 탐험 확률
# Q-learning 알고리즘
for episode in range(1000):
state = np.random.randint(0, num_states) # 초기 상태
done = False
while not done:
action = epsilon_greedy(Q, state, epsilon)
next_state = np.random.randint(0, num_states) # 환경에 따른 다음 상태
reward = np.random.randn() # 임의의 보상
done = np.random.rand() < 0.1 # 임의로 종료 결정
# Q값 업데이트
best_next_action = np.argmax(Q[next_state])
td_target = reward + gamma * Q[next_state][best_next_action]
td_error = td_target - Q[state][action]
Q[state][action] += alpha * td_error
state = next_state
print("최종 Q-테이블:")
print(Q)
위 코드에서 각 에피소드마다 에이전트는 초기 상태에서 시작하여 종료 상태에 도달할 때까지 행동을 선택하고 Q값을 업데이트합니다. ε-탐욕 정책을 사용하여 탐험과 착취의 균형을 맞추고, 할인된 보상을 통해 미래의 보상을 고려합니다.
(이미지를 입력하세요)
결론
Q-learning은 강화 학습에서 널리 사용되는 알고리즘으로, 탐험과 착취의 균형을 맞추고 할인된 보상을 통해 최적의 정책을 학습합니다. ε-탐욕 정책과 할인된 보상을 활용하여 Q-learning을 구현하면, 다양한 환경에서 효과적으로 학습할 수 있습니다.
이 글을 통해 Q-learning의 기본 개념과 구현 방법을 이해하는 데 도움이 되었기를 바랍니다. 앞으로 강화 학습을 더욱 심화하여 다양한 응용 분야에 적용할 수 있기를 기대합니다.
태그: 강화학습, Q-learning, 탐험, 착취, 할인된보상, ε-탐욕정책, Python, 머신러닝, 인공지능, 알고리즘
'IT' 카테고리의 다른 글
Make 프로그램 이용 노코드 자동화 ChatGPT와 구글 시트 연동하기! (0) | 2024.07.17 |
---|---|
Lecture 05: Q-learning을 활용한 비결정론적 세계에서의 학습 (0) | 2024.07.17 |
OpenAI GYM 환경을 이용한 강화 학습 실습 (0) | 2024.07.17 |
Q-러닝을 통한 강화 학습 실습: Frozen Lake 예제 (0) | 2024.07.17 |
Q-러닝을 완벽하게 하는 방법 (0) | 2024.07.17 |
댓글