강화 학습 (Reinforcement Learning) 개념 정리
학위를 마무리하기 시작하면서, 내가 application 으로 사용했던 기술들에 대한 개념 정리를 함께 진행하고 있다. 그러면서 내가 대학원 1, 2년차 때 정리를 했던 cloud/edge computing, SDN/NFV, network slicing 에 대한 블로그 포스팅도 다시 읽어보고 있는데... 이런 말 하긴 뭐하지만, 지금의 나보다 더 똑똑한 것 같다. 내가 보기에는 개념 위주로 정리를 참 잘 해놨고, 올해 공부를 한 강화학습에 대해서도 정리를 하려고 하는데 정리를 할 수록 과거의 나의 포스팅과 비교가 되는 기분이다(...) 퀄리티에 대한 자신은 없지만, 그래도 내가 이해한 바를 나만의 언어로 표현해서 정리해두는 것은 역시나 의미가 있다고 생각한다.
서론이 길었고, 강화학습에 대해서 간단하게 정리를 해보고자 한다.
흔히 기계학습을 1. 비지도 학습(Unsupervised Learning), 2. 지도 학습(Supervised Learning), 3. 강화 학습(Reinforcement Learning) 으로 분류를 한다. 이렇게 분류를 한다고 해서, 이 세가지의 학습 방법론이 각각 dis-joint하게 전혀 다른 특징을 가지는 것은 아니고, 어느 정도 서로간의 공통점도 가지고 있게 된다.
중요한 부분인 강화학습이 기계학습을 위한 알고리즘이 아니라 "방법론"으로 분류가 된다는 것이다. 우리가 흔히 기계학습이라고 하면 생각하는 인공신경망 구조를 설계하는 알고리즘의 영역이 아니라, 강화학습의 경우는 그러한 알고리즘이나 신경망들을 활용하여 어떻게 agent를 학습시킬 수 있을지에 대한 학습 방법론에 초점을 두고 있다.
그렇다면, 다른 기계학습 방법론들과 차별되는 강화학습만의 특징에는 무엇이 있을까?
첫번째, 강화학습에는 supervisor(지도자)가 없으며, 오직 reward(보상)만 존재한다. 사실 이 문장만 놓고 보면 뭐가 다르다는 것인지 잘 이해가 안 간다. 다르게 이야기하면, 지도학습과의 차이점은 지도자가 직접 답을 알려주는 것이 아니라 보상이라는 목적만 알려주면서 구체적인 행동은 안 알려주게 된다. 즉, 문제에서 달성하고자하는 목적만 알려주고 이를 위해 최대치를 달성하기 위해 구체적으로 무엇을 해야할지는 안 알려주며, agent는 직접 학습을 하면서 찾아가게 된다.
이러한 학습 방법의 장점으로는 real global optimal을 찾을 수 있다는 이야기를 많이 한다. 지도학습에서는 사람의 직관으로 정답을 알려주기 때문에 그 학습모델이 사람의 직관을 뛰어넘기가 힘들며, 이는 조금 더 명확하게 말하면 인간 수준의 sub-optimal을 찾아주는 방법론이 된다. 하지만, 강화학습은 목표만 제시하고 그에 대한 달성 방법은 직접 학습을 하게 되어서 사람의 직관으로 발견하기 힘든 결정을 학습시킬 수도 있게 되며, 진정한 의미의 global optimal을 찾을 수 있게 된다.
두번째 강화학습의 특징은 피드백이 즉각적이지 않을 수 있다는 점이다. action 후에 바로 피드백을 받는 것이 아니라 시간이 지난 후에 reward 가 주어질 수 있다. 이 부분은 다음 특징과도 연관이 있게 된다.
다음 특징은, 강화학습에서는 시간이 중요하다. 강화학습을 위한 데이터는 순서가 있는 dequential 데이터로, 보통 많이 사용되는 independent identically distributed (i.i.d) data 가 아니다. 이는 다른 말로 agent 의 action 이 그 agent 가 받는 다음 data 들에도 영향을 미치게 된다는 특징을 갖게 되기도 한다. 즉, 강화학습에서는 agent 가 받는 데이터가 시간에 따라 서로 correlation 이 있게 되며, 이에 대한 보상 역시 꼭 즉각적으로 들어올 필요는 없게 된다. 더 나아가서는, 강화학습을 위해서는 state data 가 markov decision process (MDP) 를 따라야 된다.
정리하자면 강화학습은 학습의 목표만 제안을 해주고, 구체적인 정답은 직접 학습을 하는 방법론이며, 데이터가 시간 순서의 데이터로 이전의 action 으로 인해 그 이후의 데이터들이 변할 수 있다는 특징이 있다. 이러한 강화학습 문제를 구성해주기 위해서는 크게 environment 와 agent 가 정의되어야한다.
environment는 이 학습이 이루어지는, 데이터가 만들어지는 환경이며 일반적으로는 agent 가 이 environment 의 모든 정보를 알지는 못한다. environemnt의 역할은 주어진 state 에 대해서 agent 가 어떠한 action 을 했을 때 이에 대한 보상 (reward) 를 계산해서, agent 에게 보상과 다음 state 를 제공해주는 역할을 한다.
agent는 학습을 하는 주체로, 주어진 state 에 대해서 자신이 선택 가능한 action 들 중에 action 하나를 선택하는 역할을 한다. 결국 강화학습 문제를 푼다는 것은 long-term의 reward 의 합을 최대화하는 것이 목적이며, 이를 위해서 state 들에 대해 agent 가 어떤 action 을 하는 것이 최적인지 찾아주거나 (policy), 또는 현재 state 에서 취한 action 보상에 대한 quality (Q) 의 최적값을 찾아주는 방향으로 문제를 풀게 된다.
즉, 강화학습으로 문제를 풀어주기 위해서는 MDP 특징을 가지는 데이터를 만들어주는 environement 와 그 중에서 agent 의 의사결정을 위해 제공해줄 데이터인 state, 그리고 agent 가 선택 가능한 action들과 그 action에 대한 reward 가 정의가 되어야 한다. 이를 위해 agent의 Q-table 또는 policy 를 반복되는 action 들을 통해서 학습을 시키게 되는데, 이를 deep neural network 로 비선형 근사를 시켜서 인공 신경망 기반으로 학습 중에 방문하지 않았던 state 에 대해서도 좋은 action 을 취할 수 있도록 학습이 진행된다.
Q를 DNN로 근사를 시켜서 강화학습을 적용한 방법이 DQN 이며, Policy 기반의 가장 기초적인 방법으로는 DDPG 가 있다. 다음 포스팅에서는 이 DQN 과 DDPG 의 특징, 장/단점을 비교해서 정리해보고자 한다.
https://openloopgain.tistory.com/124