Example

어떠한 학문을 공부하는데 있어서 기초부터 차근차근 배워나가는 것도 좋지만 그렇게 공부하다 보면 지금 무엇을 하고 있는지 모를 때가 많습니다. 따라서 중간중간에 실습이나 어떠한 예제를 들어서 생각을 해보거나 때로는 단계를 껑충 뛰어서 진짜 문제에 어떻게 적용되는지 맛만 보는 것 또한 도움이 되기도 합니다.

Playing atari with deep reinforcement learning 이라는 논문이 있습니다. 강화학습 + 딥러닝으로 atari라는 고전 게임을 학습시킨 것 입니다.

Atari게임 중에서도 Breakout 이라는 벽돌깨기 게임을 컴퓨터가 플레이하는 것이 상당히 인상적이었습니다. 아래는 그 동영상입니다. 잘 보시면 단순히 벽돌만 깨는 것이 아니고 한 쪽을 터널로 뚫어서 여러개의 벽돌을 한 꺼번에 깨버리는 전략을 쓰는 것도 볼 수 있습니다. https://youtu.be/iqXKQf2BOSE

위 그림이 어떻게 학습을 하는지에 대해서 간략하게 보여주는 그림입니다. 강화학습의 "학습"대상은 agent입니다. 위에서 나오는 state, reward, action은 다음 챕터에서 자세히 다루도록 하겠습니다. 사람의 뇌에 해당하는 이 agent는 처음에 랜덤하게 움직이게 됩니다. 랜덤하게 움직이다가 우연히 공을 치게 되고 게임 점수가 올라가게 되면 이 agent는 "아! 이 행동을 하면 점수가 올라가는구나!!"라는 식으로 판단을 해서 점수를 올라가게 했던 행동을 더 하려고 자신을 학습시킵니다.

하지만 agent는 단순히 즉각적인 점수만을 높이려는 것이 아니고 시간이 지날수록 한 episode 동안 받는 점수를 최대화시키려고 합니다. 따라서 agent는 일련의 연속된 행동 즉 "정책(Policy)"이 필요하게 됩니다. 사실은 높은 점수라는 것은 어떠한 한 행동의 결과라기보다는 각 상황에 맞는 적절한 행동들의 좋은 조합이라고 할 수 있습니다. 따라서 높은 점수를 얻는 것이 목표인 agent는 이러한 자신의 일련의 행동들의 정책 혹은 전략을 좀 더 높은 점수를 받는 쪽으로 변화시킵니다.

어떤 행동이 좋은 행동이고 어떤 조합이 좋은 조합인지는 Trial and error로서 이것저것 시도해보면서 차츰차츰 알아가게 됩니다. 이렇게 경험을 통해 학습이 되는 방식도 여러 가지가 있습니다. 상황에 맞는 적절한 방법을 선택하는 것 또한 중요한데 그건 실재로 학습을 시켜보면서 경험을 하면서 얻어지는 것 같습니다. 그렇게 이것 저것 시도해보다가 어느 순간 터널이 뚫려서 한 번에 엄청난 점수를 얻는 사건이 발생합니다. 이제 agent는 알게 되는 것입니다. "터널을 뚫어서 점수를 얻는 것이 더 많은 점수를 얻을 수 있다"라는 것을 말입니다.

https://www.nervanasys.com/demystifying-deep-reinforcement-learning/

이 논문의 주목할 점은 다음과 같습니다.

  1. input data로 raw pixel를 받아온 점 --> CNN과의 연결

  2. 같은 agent로 여러 개의 게임에 적용되어서 학습이 된다는 점

  3. Deep neural network를 function approximator로 사용

  4. Experience Replay

  5. Target networks

최근에 Deep Reinforcement Learning이 대세가 되었는데 위에서처럼 Reinforcement Learning에 Deep Learning을 합한 것을 말합니다. 처음에 강화학습을 배우기 시작할 때는 gridworld같은 작은 환경에서 이것저것 해보겠지만 위와 같이 실재 게임을 학습하거나 할 때에는 데이터의 숫자가 너무 많기 때문에 제대로 학습이 되지 않습니다. 따라서 그 데이터의 숫자를 다 일일이 저장해서 그것으로 행동을 하는 것이 아니고 함수의 형태로 만들어서 정확하지 않더라도 효율적으로 학습을 할 수 있게 하는 방법을 사용합니다. 많은 공학의 문제에서 사용하는 "approximation"입니다. 이 Approximation 툴 중에서 Deep Neural Network는 최근에 엄청난 성능을 자랑하는 툴입니다.

이렇게 유명한 Breakout 게임 학습에 대해서 간단히 설명하였습니다. 중간에 여러 가지 모르는 개념들이 많이 나왔을 텐데 앞으로 자세히 하나하나 다루도록 하겠습니다. 이 예제를 통해 강화학습이 게임에서 어떻게 학습시키는지 적절히 이해를 하면 됩니다.