본문 바로가기
IT

Lab 4: Q-learning을 활용한 Exploration and Exploitation와 할인된 보상 discounted reward 최적화

by 작은비움 2024. 7. 17.
반응형

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값이 가장 높은 행동을 선택합니다. ε 값은 일반적으로 시간이 지남에 따라 감소시켜, 초기에는 많은 탐험을 하고 후반에는 착취를 더 많이 하게 합니다.

다음은 ε-탐욕 정책을 구현하는 코드 예시입니다:

import numpy as np

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': 다음 상태
  • max⁡Q(s′,a′)\max Q(s', a'): 다음 상태에서의 최대 Q값

Q-learning 코드 구현

다음은 Q-learning 알고리즘을 Python으로 구현한 예시입니다:

import numpy as np

# 환경 설정
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, 머신러닝, 인공지능, 알고리즘

반응형

댓글