RL(Reinforcement Learning)도 reward를 주기 위해서 당연히 data가 필요합니다.
즉 그 reward 를 얻기 위하여 어떤 state에서 어떤 action을 수행했는지에 대한 Q(s_t, a_t) 정보를 학습해 나가는 겁니다.
예를 들어, clash royal 이란 게임을 학습하여 AI-powered player를 하나 만든다고 가정한다면 user-to-user 게임 데이터를 수집해야 합니다.
만일 user A가 skeleton army를 특정 position에 투입했을때,
user B는 가능한 fighter 중 wizard 난 baby dragon을 근처에 투입해야 reward를 받을 수 있습니다.
만일 user B가 pekka 나 prince 를 투입하면 망하는 겁니다. 즉 penalty 를 받게 됩니다.
결국 (state, action) -> reward or penalty 라는 policy를 만들어야 하는데
이걸 하나 하나 rule 을 만들면 바보겠죠.
이걸 어떻게 AI 가 스스로 만들 수 있을까요?
RL은 user A와 user B가 random 또는 어느정도의 logic에 의해 가능한 모든 (state, action) 케이스를 자동으로 만들어서 스스로 게임을 해 보는 겁니다.
reward나 penalty는 게임 진행과정에서 최종 승리했느냐 패배했느냐로 결정되기 때문에, 중간 과정의 모든 Q(s_t, a_t)는 학습을 하면 할수록 reward를 많이 받기 위한 방향으로 진행되게 됩니다.
결국 user A가 skeleton army를 투입하면, random하게 pekka, prince 등을 투입해 보다가 penalty 받고 나면, 점차 그런 state에는 baby dragon, wizard 를 투입하면 reward를 받을 수 있다는 것을 알아가게 되는 거죠.
self-learning을 해 나가기 위해서는 reward, penalty에 대한 policy network 설계가 젤로 중요하게 되는 겁니다.