Data Science/강화학습

[강화학습] 가치함수(Value Function)

dev-js 2024. 10. 3. 17:02

 

 

Value Function(가치함수)

 

value function(가치함수) : agent가 계산하는 값으로 각 state가 얼마나 가치있는지를 계산하는 함수이다.

정책 π를 따를 때, 상태 s로부터 예상되는 장기 보상의 누적값이다.

여기서 중요한 점은 "장기 보상의 값"이라는 것이다.

 

이는 reward(보상)과는 다른 의미이다.

 

Reward : 즉각적인 보상

ex) 야구 게임을 할 때 희생 번트를 하는 것은 그 번트를 하는 타자가 1루에서 아웃 될 확률이 매우 높다. 그래서 번트를 하는 action은 낮은 reward를 가지게 될 수 있다.

 

Value Function : 장기적 관점의 누적 보상 (가치 판단)

ex) 희생 번트는 reward는 낮을 수 있지만 장기적으로 보았을 때 출루되어있는 선수들이 진로할 수 있고, 득점을 할 확률이 높아지게 된다. 따라서 장기적으로 보았을 때는 번트를 하는 action이 다르게 가치가 매겨질 수 있다.

 

 

Value Function은 두 가지로 나눌 수 있다.

  • State Value function (상태 가치 함수) : $  $ V^{\pi }(s) $ 
    • agent가 정책 π를 따를 때 state S의 가치 (상태 자체의 가치)
  • Action Value Function (행동 가치 함수) : $ q^{\pi }(s, a) $
    • Agent가 정책 π를 따를 때 상태 state S 에서 action a를 취하는 것의 가치 (행동의 가치)

상태가치함수와 행동가치함수는 서로 상호보완된다.

행동 가치 함수를 알아내기 위해서는 next state의 value와 current state를 알아야 한다.

그렇기 때문에 state value 를 알아야 action value를 알 수 있게 된다.

 

value function을 더 알아보기 전에 reward와 return(이득) 에 대해서 조금 더 알고있어야 한다.

 

 

 

보상(Reward)과 이득(Return)

 

Return(이득) : 보상값들의 누적 합

return을 다음과 같은 식 $ G_{t}  $ 으로 나타낼 수 있다.

$$ G_{t}=R_{t+1} + R_{t+2} + R_{t+3} + ... + R_{T} $$

 

$ G_{t}  $ : time t 이후의 reward의 총합

T : final time sleep

 

$ G_{t} $ 는 항상 랜덤하다.

그 이유는 MDP의 dynamics가 stochastic 하기 때문이다.

MDP Backup Diagram

 

그럼 agent는 return값을 통해 목표를 수립할 수 있다.

return(이득)이 reward의 총 합이므로 agent는 return 값이 최대가 되는것을 목표로 둘 수 있게 된다.

$$ \mathbb{P}[G_{t}]=R_{t+1} + R_{t+2} + R_{t+3} + ... + R_{T} $$

 

 

return은 Episodic Task, Continuing Task 에 따라 다르게 책정 된다.

하지만 그 식은 하나의 식으로 통합될 수 있다.

 

Episodic Task 에서의 Return은 다음과 같이 정의될 수 있다.

$$ G_{t}=R_{t+1} + R_{t+2} + R_{t+3} + ... + R_{T} $$

각 episode는 terminal state로 종료된다. 그렇기 때문에 각 episode는 독립적이라고 할 수 있다.

그렇기 때문에 각 episode가 끝날 때 마다 return이 계산되고, 유한한 값이 된다.

체스 게임이나 최단경로 길 찾기 같은 경우 episodic task 라고 할 수 있다.

 

Continuing Task 에서의 Return은 다음과 같이 설명된다.

Continuing Task은 환경과의 interaction이 break 되지 않고 지속되는 것을 의미한다.

그렇기 때문에 Continuing Task은 terminal state가 없고, return값이 무한으로 된다고 할 수 있다.

$$ G_{t}=R_{t+1} + R_{t+2} + R_{t+3} + ... = \infty $$

 

 

이 식을 Finite Task와 통합할 수 있다.

이때 할인율(discount rate, $ \gamma  $)을 사용하게 된다.

 

$ G_{t} = R_{t+1} + \gamma R_{t+2} + \gamma ^{2}R_{t+3} + \gamma ^{3}R_{t+4} + ... $

$        = R_{t+1} + \gamma (R_{t+2} + \gamma R_{t+3} + \gamma ^{2}R_{t+4} + ...) $

$ = R_{t+1} + \gamma G_{t+1} $

 

Continuing을 Finite ($ 0 \leq  \gamma  < 1 $) Task로 전환할 수 있음을 위 식을 통해 확인할 수 있다.

그래서 Episodic Task, Continuing Task의 Reward 식을 통합하면 다음과 같이 제귀적으로 정리할 수 있다.

$$ G_{t}=\sum_{k=0}^{\infty }\gamma R_{t+k+1} $$

 

 

식 $ G_{t} = R_{t+1} + \gamma G_{t+1}  $에서 $ \gamma $ 값을 조절하면서 Return 값을 조절할 수 있음을 알 수 있다.

이를 Discounting 효과라고 한다.

 

  • $ \gamma $ = 0일 때
    • $ G_{t} = R_{t+1} $ 이므로 agent는 당장의 reward만 계산하면 된다.
    • 근시안적 agent
  • $ \gamma $ = 1일 때
    • $ G_{t}=R_{t+1} + R_{t+2} + R_{t+3} + ... + R_{t+k} $ 이므로 현재의 reward와 미래의 reward를 똑같이 간주하게 된다.
    • agent는 미래의 reward를 더 강하게 고려하게 된다.
    • 원시안적 agent

$ \gamma $는 하이퍼파라미터 이다.

 

여기까지 Reward와 Return 값의 관계에 대해 알아보았다.

그렇다면 Return값을 통해서 Value Function(가치함수)를 재정의 할 수 있게 된다.

 

 

 

Return을 통한 Value Function 정의

 

Value Function은 주어진 state에서 agent가 기대 가능한 future reward (expected return)을 평가하는 함수라고 할 수 있다.

$$ \nu (s) = E[G_{t}|S_{t}=s] $$

 

$ \nu (s)$ : value function

 

식을 해석하면 "agent가 state s로 갔을 때 어떤 $ G_{t} $ 를 얻을 수 있는가" 에 대한 의미이다.

그리고 Value Function은 agent의 경험으로부터 학습 가능하다.

 

이 value function을 통해서 강화학습의 고질적인 문제젬들을 해결할 수 있게 된다.

 

 

 

Value Function 으로 미래의 reward를 예측

 

  • 강화학습에서는 보상이 즉시 주어지지 않는다. 수십 step이 지난 후 reward가 주어질 수 있다. 하지만 value function으로 current state와 next state의 value를 계산할 수 있게 된다. 
  • reward, policy, environment가 모두 stochastic한 상황들을 value function을 통해서 계산할 수 있게 된다
    • Value Function은 모든 가능한 미래 reward를 평균화 낼 수 있게 된다.(서로 다른 policy를 평가 가능)

정리하자면 강화학습의 궁극적인 목표는 좋은 Policy를 학습하는것이고, 그 수단으로 Value Function이 쓰이게 되는 것이다. 

 

 

그렇다면 return으로 행동가치함수를 재정의 해보면

$$  q_{\pi }(s, a)\doteq E_{\pi }[G_{t}|S_{t}=s, A_{t}=a] $$

 

: time t, state s 에서 action a를 했을 때의 

 

 

 

 

Value Function 예시

 

student markov chain

 

value function이 실제로 어떻게 계산이 되는지 student markov chain을 통해서 알아보자.

일단 Class1 에서 시작되고, Sleep이 end point이다.

$ \gamma = 1  $ 이라고 가정할 것이다.

 

우리는 value function으로 각 state들의 가치들을 판단하여 최적의 policy를 찾고자 한다. 그것이 목표라고 할 수 있다.

그러기 위해서는 어떤 action을 해야하는지 정하는 것이 중요하다고 할 수 있다.

그 action을 판단하기 위해서는 각 state들의 기댓값을 구해야 한다.

그러기 위해 Class 1의 기댓값을 구하는 과정을 알아보자.

 

일단 Class 1에서 시작하는 모든 가능한 episode들을 알아봐야 한다.

식 $ G_{t} = R_{t+1} + \gamma R_{t+2} + \gamma ^{2}R_{t+3} + \gamma ^{3}R_{t+4} + ...  $ 에서 Class1에서의 return값인 $ G_{1} $ 값을 알고자 할 때,

$$ G_{1} = R_{2} + \gamma R_{3} + ... + \gamma ^{T-2} R_{T} $$

식을 통해서 각 episode들의 return값을 알아볼 수 있게 된다.

 

 

가능한 episode들의 예를 들어본다면

Episode 1 : C1 C2 C3 Pass Sleep

Episode 2 : C1 C2 C3 Pub C2 Sleep

Episode 3 : C1 FB FB C1 C2 Pub C1 FB FB FB C1 C2 C3 Pub C2 Sleep

 

이렇게 예를 들어볼 수 있을 것 같다.

각 episode들의 value $ \nu $를 구해보자.

$ \nu _{1} $ = (-2) + (-2)*1/2 + (-2)*1/4 + 10*1/8 = -2.25

$ \nu _{1} $ = (-2) + (-2)*1/2 + (-2)*1/4 + 1*1/8 + (-2)*1/16 + 0*1/32 = -3.5

$ \nu _{1} $ = (-2) + (-1)*1/2 + (-1)*1/4 + (-2)*1/8 + ... = -3.2

 

agent는 모든 가능한 episode들을 시행한 후 각 return들의 평균을 구할 것이다.

평균을 구하게 되면 그것이 Class 1의 기댓값이 된다.

 

 

 

728x90