Value Function

State-value function

agent가 state 1에 있다고 가정해봅시다. 거기서부터 쭉 action을 취해가면서 이동할테고 그에 따라서 reward를 받는 것들을 기억할 것입니다. 끝이 있는 episode라고 가정했을 때 episode가 끝났을 때 state 1에서부터 받았던 reward를 다 더할 수 있을 겁니다. 밑은 Silver교수님 강의 chapter 2에서의 return의 정의입니다.

Return에 대한 식은 위와 같고 이 return의 expectation이 state-value function입니다. expectation은 기대값으로서 평균은 expectation안에 포함되는 개념입니다. 주사위를 던 질 경우 얼마나 나올지에 대한 기대값으로도 expectation을 사용합니다. 아래와 같이 표현됩니다.

즉, 어떤 상태 S의 가치입니다. 그렇다면 어떻게 value function을 구할 수 있을까요? agent가 다음으로 갈 수 있는 state들의 가치를 보고서 높은 가치의 state로 이동하게 되는데 따라서 다음으로 갈 수 있는 state들의 value function이 상당히 중요하고 어떻게 효율적이고 정확한 value function을 구할 지가 중요한 문제가 됩니다.

value function을 구하는 하나의 방법을 예를 들어보겠습니다. Value function은 return(실재 경험을 통해서 받은 reward의 discounted amount)의 expectation이기 때문에 마치 주사위를 던져 보듯이 던져 보면서 expectation 값을 구할 수 있습니다. 계속 그 state로부터 시작되거나 그 state를 지나가는 episode를 try해보면서 얻어진 reward들에 대한 data들로 그 value function에 점점 다가갈 수 있는데 사실 주사위도 무한번 던져야 1/3이라는 true expectation값을 가지듯이 value function 또한 무한히 try를 해봐야 true value function을 찾을 수 있을 것 입니다. 그렇다면 어떻게 적당한 선을 찾아서 "이 정도는 true 값이라고 하자"라고 결정을 내릴까요? 이 또한 생각해봐야 할 점인 것 같습니다.

전에 배웠던 Policy에 대해서도 생각해봅시다. 위 정의와 예시에는 policy에 대한 고려가 되지 않았는데 만약에 agent가 어떤 행동 정책(어떤 경향성을 띄는 행동 방식)을 한다고 가정을 해봅시다. Random으로 움직일 때와 비교를 해보면 각 state들은 완전 다른 경험을 하게 되었을 것 입니다. 음악을 좋아하는 아이와 과학을 좋아하는 아이가 완전 다른 인생을 사는 것과 같습니다.

그렇다면 value function을 계산하는데 있어서(아이가 인생의 가치를 어떻게 판단하냐) agent의 일련의 행동방식은 꼭 고려를 해주어야 합니다. 사실은 위와 같이 계산을 할 경우 저절로 그 경험 안에 policy가 녹아들어가게 됩니다. 또한 각 policy마다 value function이 달라질 수 있으므로 그 value function을 최대로 하는 policy를 찾을 수 있게 되는 것 입니다. pocliy에 대한 value function은 다음과 같습니다.

대부분 강화학습의 알고리즘에서는 value function을 얼마나 잘 계산하냐가 중요한 역할을 하고 있습니다. "잘"이라는 의미에는 bias되지 않고 variance가 낮으며 true값에 가까우며 효율적으로 빠른 시간안에 수렴하는 것을 의미합니다.

Action-value function

MDP에서 action이란 무엇인지에 대해서 정의하였습니다. action이란 어떤 state에서 할 수 있는 행동들을 말하는데 보통 모든 state에서 가능한 행동은 모두 같습니다. 위에서 정의를 내린 value function에 대해서 생각을 해보면 사실 그 state의 가치라는 것은 그 state에서 어떤 action을 했는지에 따라 달라지는 reward들에 대한 정보를 포함하고 있습니다.

또한 agent입장에서 다음 행동을 다음으로 가능한 state들의 value function으로 판단하는데 그러려면 다음 state들에 대한 정보를 다 알아야하고 그 state로 가려면 어떻게 해야하는 지(예를 들면 화살을 쏠 때 바람이 부니까 조금 오른쪽으로 쏜다라던지)도 알아야합니다.

따라서 state에 대한 value function말고 action에 대한 value function을 구할 수 있는데 그것이 바로 action value function입니다. Action value function을 사용하면 value function과는 달리 단지 어떤 행동을 할지 action value function의 값을 보고 판단하면 되기 때문에 다음 state들의 value function을 알고 어떤 행동을 했을 때 거기에 가게 될 확률도 알아야하는 일이 사라집니다. action-value function에 대한 정의는 다음과 같습니다.

어떤 state s에서 action a를 취할 경우의 받을 return에 대한 기대값으로서 어떤 행동을 했을 때 얼마나 좋을 것인가에 대한 값입니다. 위에서 언급했던 이유로 앞으로 Value function이 아닌 action-value function을 사용할 겁니다. Action-value function은 다른 말로 Q-value로서 q-learning이나 deep q-network같은 곳에 사용되는 q라는 것이 이것을 의미합니다.