인공지능/강화학습

강화학습 11강 - 강화학습 실습 예제

이게될까 2024. 6. 8. 16:27
728x90
728x90

전이 확률이 1이다 == action과 다음 state과 같다. 

Frozen Lake에서 랜덤만 넣으니 학습이 잘 되지않닸다.
-> 경험을 다양하게 시켜보자 == max를 뽑고 입실론을 넣어주자 : 쪼금 늘었다.
-> 에피소드를 진행할수록 입실론을 줄여보자 - 안좋아졌다. => 적당히 남겨놓고 경험하게 둬야 한다. 
-> 이전 Q와 알파 Q로 나누자 - 알파를 조절하면 정보의 반영 정보 조절 가능하다 - 파라미터 추가로 성능 향상 
-> 입실론을 빼고 Q에 랜덤 노이즈를 더해줬다. == 랜덤성이 부여되었다.(Q값이 큰 차이가 없으면 다양한 경험이 가능하다.) - 가능성이 있는 곳을 선택하여 안 간 곳이 사라지고, 성능이 향상되었다. 

 

더보기

11. 강화학습 실습 예제

11.1 Escape Room

방탈출 예제:

  • 5개의 방으로 구성된 건물이 있으며, 숫자 5는 외부를 의미합니다. 각 노드는 방을, 화살표는 방 사이의 문을 나타냅니다.
  • 에이전트는 무작위로 시작하여 건물 밖으로 나가는 것이 목표입니다.
  • 상태와 행동을 정의하여 에이전트가 목표 상태 5에 도달하도록 합니다.

코드 예제:

import numpy as np
import random

gamma = 0.8
Q = np.zeros([6, 6])
R = np.array([
    [-1, -1, -1, -1, 0, -1],
    [-1, -1, -1, 0, -1, 100],
    [-1, -1, -1, 0, -1, -1],
    [-1, 0, 0, -1, 0, -1],
    [0, -1, -1, 0, -1, 100],
    [-1, 0, -1, -1, 0, 0]
])

for episode in range(10):
    initial_state = random.randint(0, 4)
    current_state = initial_state

    while current_state != 5:
        current_state_aggregate = {}
        next_state_aggregate = {}
        for index, value in enumerate(R[current_state]):
            if value != -1:
                current_state_aggregate[index] = value
        next_state = random.choice(list(current_state_aggregate.keys()))
        for index_, value_ in enumerate(R[next_state]):
            if value_ != -1:
                next_state_aggregate[index_] = value_
        Q[current_state, next_state] = R[current_state, next_state] + gamma * max(Q[next_state, list(next_state_aggregate.keys())])
        current_state = next_state

print(Q.astype('int32'))

11.2 Frozen Lake

Frozen Lake 예제:

  • gym 라이브러리를 사용하여 강화학습을 적용하는 예제입니다.
  • 에이전트가 얼음 호수에서 빠지지 않고 목표 지점까지 도달하는 것이 목표입니다.
  • 다양한 설정과 파라미터 조합을 통해 학습 과정을 시뮬레이션합니다.

코드 예제:

import gym
import numpy as np
import matplotlib.pyplot as plt
import random

env = gym.make('FrozenLake-v1')
Q = np.zeros([env.observation_space.n, env.action_space.n])
num_episodes = 1000
rList = []
successRate = []

def rargmax(vector):
    m = np.amax(vector)
    indices = np.nonzero(vector == m)[0]
    return random.choice(indices)

for i in range(num_episodes):
    state = env.reset()[0]
    total_reward = 0
    done = False
    while not done:
        action = rargmax(Q[state, :])
        new_state, reward, done, _, _ = env.step(action)
        Q[state, action] = reward + np.max(Q[new_state, :])
        total_reward += reward
        state = new_state
    rList.append(total_reward)
    successRate.append(sum(rList)/(i+1))

print("Final Q-Table")
print(Q)
print("Success Rate: ", successRate[-1])
plt.plot(range(len(successRate)), successRate)
plt.plot(range(len(rList)), rList)
plt.show()

변형된 Frozen Lake 예제:

  • is_slippery 옵션을 조정하여 환경의 난이도를 변경할 수 있습니다.
  • 탐험과 활용 사이의 균형을 맞추기 위해 ε-greedy 전략을 사용할 수 있습니다.
  • 학습률과 할인율을 조정하여 에이전트의 학습 성능을 최적화할 수 있습니다.

11.3 Taxi

택시 예제:

  • gym 라이브러리의 Taxi-v3 환경을 사용하여 택시 운전사 역할을 수행하는 예제입니다.
  • 에이전트는 승객을 태우고 목적지까지 데려다 주는 것이 목표입니다.
  • Q-learning 알고리즘을 사용하여 최적의 정책을 학습합니다.

코드 예제:

import gym
import numpy as np

env = gym.make("Taxi-v3")
Q = np.zeros([env.observation_space.n, env.action_space.n])
Total_reward = 0

for episode in range(100):
    done = False
    Total_reward = 0
    state = env.reset()[0]
    while not done:
        action = np.argmax(Q[state])
        next_state, reward, done, _, _ = env.step(action)
        Q[state, action] = reward + np.max(Q[next_state])
        Total_reward += reward
        state = next_state
    if episode % 10 == 0:
        print(f'Episode {episode} Total Reward: {Total_reward}')

이 요약을 통해 강화학습의 다양한 실습 예제들(방탈출, Frozen Lake, Taxi)을 이해하고, 각 예제에서 사용되는 알고리즘과 코드 구현 방법을 알 수 있습니다. 각 예제는 강화학습의 기본 개념과 방법론을 학습하는 데 도움이 됩니다.

O, X 문제 (10문제)

  1. Escape Room 문제에서는 에이전트가 초기 상태 0~4에서 목표 상태 5에 도달하려 한다. (O)
    • 해설: Escape Room 문제에서 에이전트는 초기 상태 0~4에서 시작하여 목표 상태 5에 도달하려 합니다.
  2. Frozen Lake 문제는 gym 라이브러리를 사용하여 구현된다. (O)
    • 해설: Frozen Lake 문제는 gym 라이브러리를 사용하여 구현됩니다.
  3. Frozen Lake 문제에서 디폴트 설정은 is_slippery=True이다. (O)
    • 해설: Frozen Lake 문제의 디폴트 설정은 is_slippery=True입니다.
  4. Taxi 문제는 총 4개의 상태와 4개의 행동으로 구성된다. (X)
    • 해설: Taxi 문제는 더 많은 상태와 행동으로 구성됩니다.
  5. Q-Learning 알고리즘은 온-폴리시(on-policy) 학습 방법이다. (X)
    • 해설: Q-Learning 알고리즘은 오프-폴리시(off-policy) 학습 방법입니다.
  6. Frozen Lake 문제에서 에이전트는 최적의 정책을 학습하기 위해 1000번의 에피소드를 사용한다. (O)
    • 해설: 에이전트는 최적의 정책을 학습하기 위해 1000번의 에피소드를 사용합니다.
  7. Escape Room 문제에서 보상 행렬 R은 음수 값만 가진다. (X)
    • 해설: 보상 행렬 R은 음수 값 외에도 0과 양수 값을 가집니다.
  8. Frozen Lake 문제에서 성공률(Success Rate)은 에피소드 수에 따라 변한다. (O)
    • 해설: 성공률은 에피소드 수에 따라 변합니다.
  9. Taxi 문제에서 에이전트는 목표 상태에 도달하면 에피소드가 종료된다. (O)
    • 해설: 목표 상태에 도달하면 에피소드가 종료됩니다.
  10. Q-Learning에서 학습 속도는 러닝 레이트(learning rate)에 의해 조절된다. (O)
    • 해설: 러닝 레이트는 학습 속도를 조절하는 데 사용됩니다.

빈칸 문제 (10문제)

  1. Escape Room 문제에서 에이전트는 초기 상태 0~4에서 목표 상태 __에 도달하려 한다. (5)
    • 해설: 에이전트는 초기 상태 0~4에서 목표 상태 5에 도달하려 합니다.
  2. Frozen Lake 문제는 __ 라이브러리를 사용하여 구현된다. (gym)
    • 해설: Frozen Lake 문제는 gym 라이브러리를 사용하여 구현됩니다.
  3. Frozen Lake 문제에서 디폴트 설정은 is_slippery=__이다. (True)
    • 해설: Frozen Lake 문제의 디폴트 설정은 is_slippery=True입니다.
  4. Taxi 문제는 총 __개의 상태와 행동으로 구성된다. (정확한 상태와 행동 수)
    • 해설: Taxi 문제는 더 많은 상태와 행동으로 구성됩니다.
  5. Q-Learning 알고리즘은 __ 학습 방법이다. (오프-폴리시)
    • 해설: Q-Learning 알고리즘은 오프-폴리시(off-policy) 학습 방법입니다.
  6. Frozen Lake 문제에서 에이전트는 최적의 정책을 학습하기 위해 __번의 에피소드를 사용한다. (1000)
    • 해설: 에이전트는 최적의 정책을 학습하기 위해 1000번의 에피소드를 사용합니다.
  7. Escape Room 문제에서 보상 행렬 R은 음수 값 외에도 __와 양수 값을 가진다. (0)
    • 해설: 보상 행렬 R은 음수 값 외에도 0과 양수 값을 가집니다.
  8. Frozen Lake 문제에서 성공률(Success Rate)은 __ 수에 따라 변한다. (에피소드)
    • 해설: 성공률은 에피소드 수에 따라 변합니다.
  9. Taxi 문제에서 에이전트는 목표 상태에 도달하면 __가 종료된다. (에피소드)
    • 해설: 목표 상태에 도달하면 에피소드가 종료됩니다.
  10. Q-Learning에서 학습 속도는 __에 의해 조절된다. (러닝 레이트)
    • 해설: 러닝 레이트는 학습 속도를 조절하는 데 사용됩니다.

서술형 문제 (10문제)

  1. Escape Room 문제의 Q-Learning 알고리즘 과정을 설명하시오.
    • 정답: Escape Room 문제에서 Q-Learning 알고리즘은 Q 테이블을 초기화하고, 주어진 에피소드 수만큼 반복하며 에이전트가 상태와 행동을 통해 보상을 얻는 과정을 통해 학습합니다. 초기 상태에서 무작위로 시작하여 목표 상태에 도달할 때까지 이동하며, 각 상태 전이에서 보상 값을 갱신하여 최적의 경로를 학습합니다.
    • 해설: Q-Learning 알고리즘은 Q 테이블을 업데이트하며, 에이전트가 최적의 경로를 찾도록 학습합니다.
  2. Frozen Lake 문제에서 사용하는 Q-Learning 알고리즘의 작동 방식을 설명하시오.
    • 정답: Frozen Lake 문제에서 Q-Learning 알고리즘은 에이전트가 환경에서 상호작용하며 보상을 최대화하는 방법을 학습합니다. 각 상태에서 가능한 행동 중 최적의 행동을 선택하고, 행동 후 얻는 보상과 다음 상태의 최대 Q 값을 사용하여 Q 테이블을 업데이트합니다. 이는 여러 에피소드를 통해 반복되어 최적의 정책을 학습합니다.
    • 해설: 에이전트는 상태와 행동을 통해 보상을 최대화하며 Q 테이블을 업데이트합니다.
  3. Taxi 문제에서 Q 테이블을 학습하는 과정을 설명하시오.
    • 정답: Taxi 문제에서 Q 테이블 학습은 에이전트가 환경에서 상호작용하며 보상을 최대화하는 과정입니다. 초기 상태에서 무작위로 시작하여 목표 상태에 도달할 때까지 행동하며, 각 상태 전이에서 보상 값을 갱신하여 최적의 정책을 학습합니다. 이는 여러 에피소드를 통해 반복됩니다.
    • 해설: Q 테이블은 에이전트의 상호작용을 통해 업데이트되며, 최적의 정책을 학습합니다.
  4. Q-Learning 알고리즘에서 러닝 레이트와 할인율의 역할을 설명하시오.
    • 정답: 러닝 레이트(learning rate)는 새로운 정보가 Q 값을 업데이트할 때 반영되는 비율을 조절합니다. 할인율(discount factor)은 미래 보상의 중요도를 조절하며, 미래 보상을 현재 가치로 환산하는 데 사용됩니다. 이 두 파라미터는 학습 속도와 최적화 과정에 중요한 역할을 합니다.
    • 해설: 러닝 레이트와 할인율은 Q 값을 업데이트하고 미래 보상을 반영하는 데 중요한 역할을 합니다.
  5. Frozen Lake 문제에서 성공률(Success Rate)을 높이는 방법을 설명하시오.
    • 정답: 성공률을 높이기 위해서는 충분한 에피소드를 통해 학습을 진행하고, 탐험과 활용의 균형을 맞추는 것이 중요합니다. 초기에는 탐험을 많이 하여 다양한 상태를 경험하고, 이후에는 학습된 Q 값을 활용하여 최적의 정책을 따르는 것이 효과적입니다. 또한, 적절한 러닝 레이트와 할인율을 설정하는 것도 중요합니다.
    • 해설: 충분한 학습, 탐험과 활용의 균형, 적절한 파라미터 설정이 성공률을 높이는 데 도움이 됩니다.
  6. Escape Room 문제에서 보상 행렬 R의 역할을 설명하시오.
    • 정답: 보상 행렬 R은 각 상태 전이에서 에이전트가 받는 보상을 정의합니다. 이는 에이전트가 최적의 경로를 찾기 위해 학습하는 데 중요한 정보로 사용됩니다. 긍정적인 보상은 목표 상태에 도달하는 경로를 강화하고, 부정적인 보상은 잘못된 경로를 억제하는 역할을 합니다.
    • 해설: 보상 행렬 R은 에이전트의 학습 과정에서 중요한 정보를 제공하여 최적의 경로를 찾도록 도와줍니다.
  7. Taxi 문제에서 에이전트가 최적의 정책을 학습하기 위해 필요한 요소를 설명하시오.
    • 정답: 에이전트가 최적의 정책을 학습하기 위해서는 충분한 상호작용을 통해 다양한 상태와 행동을 경험하고, Q 테이블을 업데이트해야 합니다. 또한, 탐험과 활용의 균형을 맞추고, 적절한 러닝 레이트와 할인율을 설정하는 것이 중요합니다. 이를 통해 에이전트는 최적의 정책을 학습할 수 있습니다.
    • 해설: 충분한 상호작용, 탐험과 활용의 균형, 적절한 파라미터 설정이 필요합니다.
  8. Frozen Lake 문제에서 Q 테이블을 초기화하는 방법을 설명하시오.
    • 정답: Q 테이블은 모든 상태와 행동 쌍에 대해 초기 값을 0으로 설정하여 초기화됩니다. 이는 에이전트가 학습을 시작하기 전에 Q 값을 초기화하는 과정으로, 이후 학습을 통해 Q 값이 업데이트됩니다.
    • 해설: Q 테이블은 모든 값이 0으로 초기화되며, 학습을 통해 업데이트됩니다.
  9. Escape Room 문제에서 감마(gamma) 값의 역할을 설명하시오.
    • 정답: 감마(gamma) 값은 할인율로, 미래 보상의 중요도를 결정합니다. 감마 값이 높을수록 에이전트는 미래 보상을 더 중시하게 되며, 감마 값이 낮을수록 현재 보상을 더 중시하게 됩니다. 이는 에이전트의 학습 과정에서 보상의 타임 프레임을 조절하는 중요한 파라미터입니다.
    • 해설: 감마 값은 미래 보상의 중요도를 결정하여 학습 과정에 영향을 미칩니다.
  10. Taxi 문제에서 에피소드의 역할을 설명하시오.
    • 정답: 에피소드는 에이전트가 초기 상태에서 시작하여 목표 상태에 도달할 때까지의 일련의 행동과 상태 전이 과정을 의미합니다. 에이전트는 여러 에피소드를 반복하여 경험을 축적하고 Q 테이블을 업데이트하여 최적의 정책을 학습합니다.
    • 해설: 에피소드는 학습 과정에서 에이전트가 경험을 축적하고 Q 테이블을 업데이트하는 데 중요한 역할을 합니다.

단답형 문제 (10문제)

  1. Escape Room 문제에서 에이전트는 초기 상태 0~4에서 목표 상태 어디에 도달하려 하는가?
    • 정답: 5
    • 해설: 에이전트는 초기 상태 0~4에서 목표 상태 5에 도달하려 합니다.
  2. Frozen Lake 문제는 어떤 라이브러리를 사용하여 구현되는가?
    • 정답: gym
    • 해설: Frozen Lake 문제는 gym 라이브러리를 사용하여 구현됩니다.
  3. Frozen Lake 문제에서 디폴트 설정은 is_slippery가 무엇인가?
    • 정답: True
    • 해설: Frozen Lake 문제의 디폴트 설정은 is_slippery=True입니다.
  4. Taxi 문제는 총 몇 개의 상태와 행동으로 구성되는가?
    • 정답: 정확한 상태와 행동 수
    • 해설: Taxi 문제는 더 많은 상태와 행동으로 구성됩니다.
  5. Q-Learning 알고리즘은 어떤 학습 방법인가?
    • 정답: 오프-폴리시
    • 해설: Q-Learning 알고리즘은 오프-폴리시(off-policy) 학습 방법입니다.
  6. Frozen Lake 문제에서 에이전트는 최적의 정책을 학습하기 위해 몇 번의 에피소드를 사용하는가?
    • 정답: 1000
    • 해설: 에이전트는 최적의 정책을 학습하기 위해 1000번의 에피소드를 사용합니다.
  7. Escape Room 문제에서 보상 행렬 R은 음수 값 외에도 무엇과 양수 값을 가지는가?
    • 정답: 0
    • 해설: 보상 행렬 R은 음수 값 외에도 0과 양수 값을 가집니다.
  8. Frozen Lake 문제에서 성공률(Success Rate)은 무엇 수에 따라 변하는가?
    • 정답: 에피소드
    • 해설: 성공률은 에피소드 수에 따라 변합니다.
  9. Taxi 문제에서 에이전트는 목표 상태에 도달하면 무엇이 종료되는가?
    • 정답: 에피소드
    • 해설: 목표 상태에 도달하면 에피소드가 종료됩니다.
  10. Q-Learning에서 학습 속도는 무엇에 의해 조절되는가?
    • 정답: 러닝 레이트
    • 해설: 러닝 레이트는 학습 속도를 조절하는 데 사용됩니다.
728x90