본문 바로가기
카테고리 없음

Dummy Q Learning | 모두를 위한 RL강좌

by judy@ 2025. 1. 18.

강의 자료

Lecture 3: Dummy Q-learning (table)

What I learnt

- Frozen Lake 게임에서, 전체 게임 환경을 볼 수 있다면 reward를 maximize하는 것이 어려워보이지 않으나, 실제 게임 상황에서는 자신의 현재 상태(state)와 이미 지나간 곳만 알 수 있음.

- 위와 같은 상황에서 agent는 어떤 선택을 해야 최대의 보상을 취할 수 있을까? 물론 무작위로 이동하는 것도 도움이 될 수 있으나, 이동에서 얻을 수 있는 잠재적인 보상을 기억하고, 기억에 기반해 움직이는 방법이 있을 수 있다.

- 가장 간단한 강화학습 중 하나인, Q-learning은, 현재 상태(state)와 행동(action)을 입력으로 하고, 출력으로 보상(reward)을 제공하는 행동 기반 정책을 Q-table에 기록하고 업데이트하여 최적의 보상 경로를 찾아가는 방법이다.

- Q-table 은 초기에 모두 0의 값으로 초기화하고, agent와 env가 상호작용하며, state, action에 대해 발생하는 보상을 Q-table에 업데이트한다. Q 값은 s에서 a 행동에 대한 직접적인 보상 r과 s'에서의 최적의 Q값을 더하여 구해지며, state에서 action 전에 최적의 Q를 반환할 action을 찾아 실행한다.

- Q(S,A) = R + Q(S', A') Q값은 다음과 같이 업데이트할 수 있고, 이로써 Q값는 단순 보상이 아닌, 현 시점의 행동에 대한 보상과 행동으로 전이한 다음 상태에서의 최적보상합을 더한 것으로, 최적의 보상을 누적한 값을 의미한다고 해석할 수 있다. 즉, 당장 시행한 행동에 대한 보상 외에도 미래에 얻을 수 있는 최적의 보상들을 고려하여 기록함으로써, agent가 미래를 고려하여 보상을 최대화할 수 있도록 돕는다는 것을 알 수 있음....:ㅁ

 

What I wonder

- 대략적인 그림은 그려지는데,  Q 값이 무엇인지, 어떻게 기록될지 명확히 와닿지 않음

   - Key Components of Q-learning (출처)

       1. Q-values or Action Values: Q-values는 state와 action에 의해 정의됨. Q(S,A)는 상태 S에서 행동 A를 취하는 것이 얼마나 좋을지 추정한 값을 말함. Q(S,A)의 추정치는 TD-Update rule을 사용하여 반복적으로 계산됨.

       2. Rewards and Episodes: agent는 자신의 생애(lifetime) 동안, a start state에서 시작하여 행동의 선택과 환경에 대한 상호작용에 의해 next state로 여러 번 전이하게 됨. 매 전이에서 agent는 takes an action, observes a reward from the environment, and then trasits to another state. 어떤 시점에 agent는 더 이상의 전이가 불가능한 종료 상태 (terminating state)를 마주하게 될 것이며 이는 an episode의 종료를 의미함.

       3. Temporal Difference or TD-Update: Q(S,A) <- Q(S,A) + a( R + rQ(S', A') - Q(S,A) ) 아직 discounting factor까지는 진도를 안나가서 이해가 잘 안가는데, 여기부터는 다음 강의 듣고 이해해보도록..!

Lab 3: Dummy Q-learning (table)

What I learnt

- 서술한 알고리즘을 그대로 코드로 옮기면 FrozenLake 기준으로 성공률 91~95% 정도의 결과를 얻을 수 있다.

- Dummy Q-learning 알고리즘

    1. Q table의 모든 s와 a에 대한 entry를 0으로 초기화

    2. 현재 상태 관찰 (observe current state)

    3. 아래를 반복

        1) argmax a' Q^(s', a') 에 의해 행동 선택 및 실행 (중복 값이 있다면 행동 무작위로 선택)

        2) 보상 r 수령

        3) 새로운 상태로 관찰

        4) table entry를 업데이트 Q^(s, a) <- r + max a' Q^(s', a')

        5) 새로운 상태로 전이

Dummy Q-learning 알고리즘

 


What I wonder

- FrozenLake 를 실행해보고 싶지만 gymnasium 패키지에는 따로 없는 듯, 다른 단순한 게임을 찾아서 위 알고리즘을 직접 구현해보자.

- GPT 왈, CartPole 이라는 게임이 간단하다고 함. 상태는 4개의 변수 (카트 위치, 속도, 막대기 각도, 막대기 각속도) 로 구성되며, 행동은 카트를 좌우로 이동하기에 두 개, 보상은 막대기가 수직에 가깝게 유지될 때마다 보상이 1씩 주어지고, 세 개 중 하나의 종료 조건에 의해 에피소드가 끝난다고 함. 이해를 위해 게임은 다음 사이트에서 실행해볼 수 있었음.

- 게임에 대한 자세한 설명은 Gymnasium docs에서 확인할 수 있음. 아래를 통해, 이 게임의 경우 상태가 discrete 하지 않고 continuous하며, 4개의 변수에 의해 설명됨을 알 수 있음. FrozenLake의 경우, 상태가 discrete 하여 Q table을 정의하고 업데이트하는 것이 어렵지 않았는데 이런 경우에는 어떻게 해야할지 갑자기 막막해짐..;ㅁ

- 엣헴;;; 어메이징하게도 Frozen Lake는 있었다ㅋㅋ 다시 돌아가서 이걸로 해보자.

- 구현: https://github.com/twndus/RL/blob/main/sungkim/03_dummy_q_learning.py

FrozenLake - gymnasium

- 구현 중 애로사항: FrozenLake 에는 is_slippery 라는 옵션이 있었는데, 이 옵션을 False로 지정해주지 않으면, 1/3의 확률로 의도대로 이동하게 되어 목적지에 달성할 확률이 매우 떨어지게 됐다. 따라서 환경 생성 시 꼭 False로 지정해주어야 함.

- 여하튼, env과 action 이 모두 discrete 한, 매우 rare 하지만 지금과 같은 상황에서는 dummy Q learning 과 같이 놀랍도록 단순한 기억 기반의 action policy 로도 성공률 91-95%에 달하는 에이전트를 만들 수 있음을 알게 됨. 그렇다면, 이 성공률을 더 높일 수 있는 방법은 뭐가 있을까?

   - Q value 업데이트 시, reward를 값 그대로 반영하는 것이 아니라, 보상과의 거리에 따라 decaying 하여 적용하면, 더 효율적인 방법으로 목적지에 도달할 가능성이 있을 듯.

   - 음.... 모르겠다. 뒤 강의를 보자.

- 또 하나 궁금한 점은, discrete 이 아닌 경우 action policy 기반의 에이전트 생성이 가능할까? 이것도 차차 알아보자

반응형