티스토리 뷰

Study/AI

[RL] Reinforcement Learning

생각많은 소심남 2018. 5. 20. 22:50

 보통 아기들이 처음 태어나서 무엇을 할까? 잘 살펴보면 뒤집기, 앉기, 기어가기, 일어서기 까지 일련의 과정을 거친다. 옆에서 지켜보면 그 과정들이 조금 힘겨워 보일 때가 있다. 그런 동작 자체가 아기가 처음 세상 나오면서 처음 경험하는 행동이기 때문에 아기는 주변 사람들이 하는 동작을 보고 따라하려고 노력한다. 

 우선 아기가 그 동작을 보는 순간 우선 시도를 해볼 것이다. 당연히 처음 해보는 동작인만큼, 그 동작이 정답이 아닐 것이고, 뭔가 잘못된 자세가 나오게 된다. 이때 반복적으로 잘못된 동작을 고치기 위해서 노력할 것이고, 계속 연습을 하게 된다. 결국 동작을 하게 될 것이고, 그때부터는 다양한 주변환경에 대해서도 적응하는 과정도 포함이 될 것이다. 가령 일어서기 과정에서도 '뭔가를 짚고' 일어서는 과정이 있을 것이고, '앉은 상태에서' 일어서는 과정도 배우게 된다. 이 모든 과정이 아기가 어떤 동작에 대해서 '학습' 이라는 것을 하는 단계가 된다. 

 왜 뜬금없이 아기의 학습과정에 대해서 소개를 했냐면 이 포스트에서 소개할 강화학습의 목표가 아기가 처음 학습하는 과정과 비슷하기 때문이다. 강화학습(Reinforcement Learning)이란 보통 이상적인 학습 과정을 통해 환경에 대한 반응으로부터 목표를 찾아가는 것을 말한다. 여기서 이상적인 학습 과정이란, Q-learning이나, DQN 같이 사람이 만든 알고리즘을 의미하고, 이걸 통해서 목표에 얼마나 빠르게 효율적으로 찾아가느냐가 주요 관건이 된다. 보통 강화학습의 구조는 다음과 같다.

 보통 행동을 하는 주체인 Agent와 그 행동에 대한 반응을 나타내는 환경(Environment)가 있다. 초기에 Agent는 Environment에 대한 정보가 없기 때문에 현재의 Environment에 대한 주어진 정보인 State만을 받고 이에 대한 Action을 취하게 된다. Environment 입장에서도 Agent의 내부 구조에 대해서 아는 것은 아무 것도 없고, 단순히 Agent가 취한 Action에 대해서 잘했다, 못했다를 판단하고 이에 대한 보상(Reward)를 준다. (물론 Reward를 주는 과정에서도 Environment도 Agent가 취한 Action에 대해서 새롭게 변화된 정보를 다시 Agent에게 알려준다.) 이런식으로 반복적인 과정을 취하게 되면, 최종적으로 Agent가 취한 Action에 대해서 그 Action에 대한 총 Reward 값이 나오게 될 것이고, 당연히 총 Reward가 가장 높은 action이 가장 이상적인 Action이 된다. 

 아마 위의 과정을 놓고보면 맨 앞에서 소개했던 아기가 무언가를 학습하는 과정과 매우 유사하다는 것을 알 수 있다. 그런데 잘 보면 알겠지만, 결국 Reward를 주는 조건 자체가 중요하게 된다. 당연히 잘못된 조건에 의해서 Reward를 주게 된다면, Agent도 역시 잘못된 조건에 학습되어 우리가 의도치 않은 방향으로 학습하게 된다. 그렇기 때문에 사용자는 부모(!)의 입장에서 Agent가 잘 학습할 수 있도록 Reward에 대한 Criteria를 명확히 해줘야 한다.

 사실 이런식의 접근 방법은 1900년대 진행된 동물 학습의 심리(Psychology of Animal Learning)에서 발전된 것이었다. Edward Thorndike라는 사람이 반복적인 동물실험을 통해서 알아낸 사실은 동물도 필요에 의해서 학습을 할 때 뭔가 직관에 의해서가 아닌, 뭔가 시도를 해보고 시도에 대한 오차를 보정하는 방향으로 나아간다는 것이다. 보통 이걸 trial-and-Error learning이라고 한다. 

 또 다른 시도는 Control Theory에서도 보인다.

 위의 그림은 Wikipedia에서 가져온 이상적인 Control System을 표현한 그림이다. 보통 Negative Feedback Control System이라고 하는데 System이 내부에 장착된 Sensor등을 통해서 Controller에게 State를 알려주면 Controller가 이를 계산해서 보정된 결과를 다시 System에게 알려주고 이에 대한 행동을 취하게 한다. 당연히 사용자가 원하는 방향을 Controller에게 알려주면 반복적인 과정을 통해 Sensor로부터 받아온 값과의 오차를 계산해 이를 통한 이상적인 Action을 취하게 구성된 System이다. Richard Bellman이라는 사람이 이런 현상을 바탕으로 현재의 상태와 특정 변수를 입력으로 받는 일종의 방정식을 정의했는데, 이게 바로 Bellman Equation이다. 또, Markov Decision Process(MDP) 라는 것도 정의해서 이런 학습에 대한 전체적인 과정을 하나의 Stochastic한 확률적인 방법으로 접근하고 했다.

 여기까지 딱 듣다보면 기존에 제시되었던 Machine Learning 기법과 강화학습과 어떤 부분이 다른 건지 궁금해할 수 있다. 대충 Machine Learning에 대해서 찾아본 사람이라면 크게 지도학습(Supervised Learning)비지도학습(Unsupervised Learning)으로 나눠지는 것을 알 수 있을텐데 지도학습이란 말그대로 학습시키는 주체가 지도하는 학습, 즉 옆에서 정답인 데이터를 주고 이를 바탕으로 학습을 시키는 방법이다. 반대로 비지도학습은 무언가 정확한 답을 요구하는 것이 아닌, 데이터들간의 상관관계나 패턴을 학습시키는 방법이다. 이에 비해 강화학습은 학습을 배우는 주체가 특정 시점에 어떤 상태이며, 이에 대한 행동(Action)을 학습하는 방법이다. 물론 이 역시 정확한 답을 요구하는 학습이 아니기 때문에 어떻게 보면 비지도학습이라 생각할 수 있지만, 비지도 학습과의 차이는 feedback의 유무에 있다. 비지도학습은 단순히 주어진 데이터에 대해서만 이해하고, 이 과정 사이에 외부의 개입이 없지만, 강화학습은 행동의 옳고 그름을 reward라는 개념을 통해서 feedback하는데 비지도학습과 차이가 있다. 참고로 강화학습의 reward는 stochastic하기 때문에 같은 상태에서 똑같은 입력이 들어와도 다른 결과를 보일 수 있다. 이 역시 확률적으로 볼 부분이다.

 강화학습에서 재미있게 볼 부분 중 하나가 Exploration-Exploitation Dilemma이다. 다음 예제를 잠깐 살펴보자.

 만약 위와 같이 3개의 박스가 있다. 첫번째 박스를 선택하면 만원을 주고, 두번째 박스는 5천원을 준다. 그리고 마지막 박스는 얼마를 줄지 모르지만 뭔가를 준다. 백원을 줄수도 있지만, 혹은 10만원을 줄 수 있다. 어떤 박스를 선택해야 할까? 딱 답을 내리기 어렵다. 만약 현재의 상태에서 가장 좋은 선택을 하자면 첫번째 박스를 선택해야 하겠지만, 확률적으로 따졌을 때는 세번째 박스를 선택하는 게 좋을 수도 있기 때문이다. 

 강화학습도 마찬가지다. 뭔가 현재의 상태를 놓고 볼때는 최선의 선택이 될 수도 있겠지만(Exploitation), 장기적으로 봤을 때는 미지의 행동도 reward가 축적되면서 좋은 결과를 낳을 수 있기 때문에(Exploration) 이에 대한 딜레마가 생기게 된다. 이때문에 어떤 정책을 선택하냐가 강화학습의 성능을 좌우하는 요인이 되기도 한다. 

 간단히 강화학습이란 무엇인지에 대해서 언급해보았다. 내용에서도 보이는 것처럼, 처음 보는 현상에 대해서도 뭔가의 학습이라는 과정을 통해 행동주체에게 어떤게 좋고 나쁜지를 판단하는 것을 알려주면, 행동주체도 그 판단에 따라 좋은 방향으로 학습해나가는 과정을 말한다. 과거에는 자연현상에 국한되었던 내용이 이제는 인공지능이라는 주제의 기반이 되고 있다.

- 참고 : 
 Microsoft - Reinforcement Learning Explained
 Wikipedia : Control Theory

댓글