강화학습(reinforcement learning) 기본개념 익히기

1. 강화학습(reinforcement learning)

 

미지의 환경(environment)에서 에이전트(agent)가 임의의 행동(action)을 했을 때 받는 보상(reward)을 통해 먼 미래의 누적 보상을 최대화하고자 어떠한 행동을 할 것인지를 학습하는 알고리즘

 

마치 반려견을 훈련시키는 것과 유사하다.

 

강아지 입장에서 "앉아"라는 명령어를 들었을때, 여러 행동 중 우연히 앉았을 때 간식이라는 보상을 받게 된다.

 

강아지는 처음에 "앉아"를 인식하지 못한 상황에서 보상을 받았기 때문에 행동과 보상의 관계를 인지하진 못한다.

 

하지만 시행착오를 통해 "앉으면 간식을 받을 수 있구나"라고 학습하게 된다.

 

 

강화학습은 에이전트(agent)가 환경에서 특정 행동을 하면, 환경(environment)은 행동에 대한 보상을 부여한다.

 

에이전트는 행동을 취함과 동시에 상태(state)를 이동하게 된다.

 

이러한 과정을 반복하면서 순차적으로 어떠한 행동을 할지를 학습하게 된다.

 

 

2. grid world

 

grid world에서는 agent가 시작점부터 목표 지점까지 최단 거리로 장애물을 피해 도달하는 것이 목적이다.

 

보상은 예를 들어 각 상태에서 -1점 보상을 받고, 목표점을 도달하면 10점을 받을 수 있다. 하지만 장애물을 만나면 -10점의 보상을 받는다.

 

 

https://www.mathworks.com/help/reinforcement-learning/ug/create-custom-grid-world-environments.html

 

 

요소 정의 grid world
상태(state) 에이전트가 처할 수 있는 상황 및 정보 S={(1,1),(1,2),...,(5,5)}
행동(action) 에이전트가 취할 수 있는 행동 A={위쪽, 아래쪽, 왼쪽, 오른쪽}
보상(reward) 에이전트가 행동을 선택했을때, 환경으로부터 받는 보상값 -10,-1,+20
할인율(discount factor) 미래 보상을 현재 보상 가치로 환산해주는 요소 r = 0.9

 

3. 할인율(discount factor)

 

할인율은 미래 가치를 현재 가치로 환산하는 0과 1 사이의 값이다.

 

만약 지금 당장 100만원을 받는 것과, 10년 뒤 100만원을 받는 것중에 어떤 것을 선택하겠는가?

 

당연히 현재 100만원을 선택할 것이다.

 

10년 뒤의 100만원의 가치보다 현재 100만원의 가치가 더 크기 때문에 지금 100만원을 받는 것이 더 이득이다.

 

 

4. 함수(function)

 

에이전트는 시작점을 출발해서 여러 행동을 통해 특정 상태에 도달하게 된다.

 

그리고 매 시점마다 에이전트는 보상 함수(reward function), 상태-가치 함수(state-value function), 행동-가치 함수(action-value function)를 구한다.

 

 

4-1) 보상 함수(reward function)

 

t 시점에서 에이전트가 상태 s에서 행동 a를 취했을때, 받을 수 있는 즉각적인 보상의 기댓값

 

$$R_{s}^{a} = E[R_{t+1} | S_{t} = s, A_{t} = a]$$

 

 

 

4-2) 상태-가치 함수(state-value function)

 

에이전트가 t시점일때, 상태 s에서의 가치

 

즉, 현재 상태에서 앞으로 일련의 행동을 시행하면 받을 수 있는 누적 보상의 기댓값

 

$$V_{\pi}(s) = E[R_{t+1} + rR_{t+2} + r^{2}R_{t+3} + ... | S_{t} = s]$$

 

식을 정리해보면 다음과 같다.

 

$$E[R_{t+1} + r(R_{t+2} + rR_{t+3} + ...) | S_{t} = s] = E[R_{t+1} + rV_{\pi}(S_{t+1})|S_{t} = s]$$

 

이에 대한 증명은.. 조건부기댓값을 풀어서 하면 되는것 같던데 너무 복잡해서 생략하고..

 

------------------------------------------------------------------------------------------------------------------------------

 

4-3)정책(policy)

 

모든 각각의 상태에서 에이전트가 할 행동들을 말한다.

 

어떤 상태 $S_{t}$에서 행동 $A_{t}$를 통해 $S_{t+1}$로 이동하는 것은, 확률적으로 이루어진다.

 

위 식에서 $\pi$는 정책이라고 부르는데 다음과 같이 정의함

 

어떤 상태 s에서 행동 a를 취할 확률

 

$$\pi(a|s) = P[A_{t}=a | S_{t} = s]$$

 

일반적으로 특정 상태 s에서 t시점에서 취할 수 있는 모든 행동 a에 대한 확률 합은 1이지만,

 

어떠한 외부 변수가 개입한다면 아닐 수도 있게 된다.

 

오른쪽으로 이동 시켰는데 누군가가 왼쪽으로 강제로 바꾼다든지..

 

 

4-4)벨만의 기대방정식

 

원래 상태 가치함수는 다음과 같고

 

$$V(s) = E[R_{t+1} + rR_{t+2} + r^{2}R_{t+3} + ... | S_{t} = s]$$

 

여기에 정책 $\pi$를 적용해서 만든 식을 벨만의 기대방정식이라고 부른다

 

$$V_{\pi}(s) = E_{\pi}[R_{t+1} + rV_{\pi}(S_{t+1})|S_{t} = s]$$

 

------------------------------------------------------------------------------------------------------------------------------

 

 

4-5) 행동-가치함수(action-value function)

 

에이전트가 t시점에서 상태 s에서 어떤 행동 a를 취했을때, 앞으로 일련의 행동을 시행하면서 받을 수 있는 누적 보상의 기댓값

 

$$Q_{\pi}(s,a) = E[R_{t+1} + rQ_{\pi}(S_{t+1}, A_{t+1}) | S_{t} = s, A_{t}  = a]$$

 

행동 - 가치 함수와 상태-가치 함수 사이 관계식은 다음과 같다고 한다.

 

$$V_{\pi}(s) =\sum_{a \in A}\pi(a|s)Q_{\pi}(s,a)$$

 

어떤 상태 s에서 가능한 모든 행동을 할 확률과 그에 따른 보상의 곱의 합이 해당 상태에서 받을 수 있는 보상의 기댓값

 

상태-가치함수가 행동 - 가치 함수를 포함한다고 해야하나?

 

 

5. 강화학습의 목표

 

강화학습의 목표는 직관적으로 생각해보면.. "미래의 누적되는 보상을 최대화하는, 현재부터 순차적인 행동을 결정하는 것"

 

여기서 행동 가치 함수를 잘 살펴보자.

 

$$Q_{\pi}(s,a) = E[R_{t+1} + rQ_{\pi}(S_{t+1}, A_{t+1}) | S_{t} = s, A_{t}  = a]$$

 

다음 상태 $S_{t+1}$에서 다음 행동 $A_{t+1}$의 Q-value는, 다음 상태에서 다음 행동을 취할 때 얻는 보상의 기댓값일거고.. 여기에 할인율 r을 곱하면 현재 시점에서의 가치

 

$R_{t+1}$은 현재 상태 $S_{t}$에서 어떤 행동 $A_{t}$를 취할 때 얻는 보상의 기댓값이고..

 

그러면 각 상태에서 최대 행동-가치 함수를 갖는 행동을 찾는 것이라고 할 수 있다.

 

에이전트가 취할 최적의 정책은, $$\pi = max_{\pi}(Q(s,a))$$이고, 이러한 행동에 따라 움직이면 보상의 합을 최대로 받게 된다.

 

 

6. 여러가지 강화학습

 

실제환경에서는 여러 외부 변수도 있고, 상태, 보상, 정책의 정보를 정확히 아는 경우는 당연히 없다

 

그래서

 

몬테카를로 정책평가(monte-carlo policy evaluation),

 

시간 차 학습(temporal difference policy),

 

살사(SARSA),

 

Q-Learning,

 

DRL(Deep Reinforcement Learning) 등 여러 강화학습 기법이 사용된다고함

 

 

애초에 처음에 train할때는 어떻게 움직여야하는지 아무런 정보가 없으니까..

 

위에서 제시한 기법들을 사용해서 상태나, 보상함수, 정책 값들을 구해나가겠지..

 

그래서, 여러 경로를 탐험해보면서 이 경로는 이런 보상, 이 경로는 저런 보상,... 전부 파악하지 않을까?

 

그리고 실제 test 환경에서 train한 내용을 바탕으로, 매 상태마다 미래 누적 보상이 최대인 최적의 정책을 찾고, 그 정책대로 움직여서, 최대 보상인 경로로 움직이겠지 

 

 

참조

 

[강화학습] 2-3강. 벨만 방정식 (Bellman equation) 쉬운 설명 - YouTube

 

 

강화 학습 기초 - 정책(Policy), 가치 함수(Value Function) 그리고 벨만 방정식(Bellman Equation) (tistory.com)

 

강화 학습 기초 - 정책(Policy), 가치 함수(Value Function) 그리고 벨만 방정식(Bellman Equation)

https://wikibook.co.kr/reinforcement-learning/ 파이썬과 케라스로 배우는 강화학습: 내 손으로 직접 구현하는 게임 인공지능 “강화학습을 쉽게 이해하고 코드로 구현하기” 강화학습의 기초부터 최근 알

wnthqmffhrm.tistory.com

 

 

TAGS.

Comments