[HUFS RL] 강화학습 : Reinforcement Learning: Q- Learning

Uomnf97·2022년 2월 16일
1

강화학습

목록 보기
2/6

지난 내용 복습하기 :

  • 환경(Environemt) : 에이전트가 액션을 취하는 환경을 말합니다. 슈퍼마리오 게임을 예를 든다면 버섯, 현재 마리오의 위치, 아이템, 구조물, 점수 등등 모든 것들이 환경이 됩니다.
  • 상태(State) : 상태(State)는 Agent의 상태를 말하며 시간 t에서의 상황을 나타내며 상황이 어떠한지 나타내는 집합입니다. 가능한 모든 상태를 state space라고 부릅니다.
  • 에이전트(Agent) : 에이전트는 학습 대상을 말합니다. 환경안에서 학습을 하는 주체로 보상을 최대로 받는 방식으로 학습을 합니다
  • 보상(Reward) : 에이전트가 한 번 학습했을 때 주어지는 값입니다. 사용자가 설정한 결과를 만들어냈을때(최고점 획득,최소경로 학습, 최적경로 학습 등) 높은 값의 보상값을 얻을 수 있습니다.
  • 행동(Act) : Agent가 취하는 행동으로 환경에 따라 다른 action 집합을 가지고 있습니다. 주로 앞으로가기, 뒤로가기와 같은 것들을 벡터형태 혹은 매트릭스 형태로 표현합니다. 그리고 이 가능한 모든 행동 집합을 Action Space라고 부르고 행동의 유한성에 따라 유한할 경우 Discrete Action set을 갖고, 무한한 경우 continuous Action Set을 갖고 있습니다.
    • Ex) Discrete Action Set 예시 : 마리오게임에서 점프, 앞으로 가기
    • Ex) Continuous Action Set 예시 : 자율주행 자동차에서 회전각도
  • 정책(Policy) : 궁극적으로 학습을 통해 구하려는 것으로 특정 상황에서의 action 혹은 action의 확률을 정의합니다.
  • Exploitation : 학습을 한 결과를 바탕으로 탐색을 하는 방법
  • Exploration : 새로운 학습을 위해 학습이 제시한 가이드라인 밖을 벗어난 방법으로 탐색을 하는 방법
  • Episode : initial state부터 terminal state까지의 cycle을 말하며 보통 epoch과 같은 강화학습의 학습 단위로 쓰입니다. 여러 step으로 이루어져있습니다.
  • Step: t번째 state에서 t+1 state까지 이동하는 cycle을 말합니다.

Q-Learning

  • Q learning이란 : Q -learning이란 벨만 방정식을 이용하여 미래가치를 예상하여 action을 정하는 방법으로 Model-Free Reinforcement Learning의 한 종류입니다.
  • 벨만 방정식, Q-Table 그리고 Exploitation이라는 개념을 이용해서 학습을 진행합니다!

주요 개념

벨만 방정식

  • concept : 현재의 Q-value는 현재의 즉각적인 보상과 미래의 가치와 함께 표현된다

    concept : 현재의 보상을 미래의 보상보다 크게 평가한다!

  • 중요 역할 :
    알아두어야하는 것!
    1.Gamma : 0~1사이의 값을 적용하여 Q값에 곱해주어 현재 즉각적 보상의 가치를 미래의 가치보다 높여 줍니다. 예를들어 gamma가 0.9이고 현재 t,t+1,t+2의 즉각적인 가치가 1이라고 가정했을 때, t시점에서 얻을 수 있는 가치는 시간이 1단위 증가할때마다 gamma값을 곱해주어 값을 계산해주게 되고, 각각 1, 0.9, 0.81로 측정됩니다. 즉 0-1사이의 값을 곱함으로서 현재시점부터 먼 미래일수록 미치는 영향이 감소하는 것



2. Epsilon : Exploitation을 가능하게 해주는 방법으로 새로운 방법을 시도해서 학습의 성능을 높여주는 방식입니다. 예를 들면 epsilon이 0.9라면 1의 보상값을 얻을 방법을 있지만 학습할 때마다 0.1정도에 해당하는 학습 에피소드에서는 1보다 큰 보상을 얻을 수 있도록 새로운 방법을 찾아봅니다!

FrozenLake

-> 코드 확인하기

강사 : 구태훈
내용 : HUFS AI 집중 캠프

profile
사회적 가치를 실현하는 프로그래머

0개의 댓글