알파고 강화학습 원리


강화학습은 인공지능이 사용할 수 있는 최고의 정책을 찾아내는 방법입니다.

어떻게 행동하는게 가장 좋은 것인지 사람이 컴퓨터에게 직접 알려주지 않아도, 컴퓨터가 직접 시행착오를 겪으며 가장 좋은 정책을 찾아내는 것입니다.

강화학습에는 Agent(에이전트), State(상태), Action(행동), Reward(보상), Environment(환경), policy(정책)와 같은 개념들이 존재합니다.

알파고에 이러한 개념들을 연결지어보면,

  • Agent(에이전트)는 알파고
  • State(상태)는 바둑판 상황
  • Action(행동)은 수를 두는 것
  • Reward(보상)은 경기의 승/패 결과
  • Environment(환경)는 바둑의 규칙
  • Policy(정책)는 알파고의 정책 네트워크
에 해당합니다.

인공지능이 행동을 할 때는 정책의 도움을 받습니다. 정책은 인공지능이 다음 행동을 선택할 때 어떤 행동이 좋을 지 추천을 해주는 역할을 합니다.

알파고의 정책 네트워크는 다음에 둘 수 있는 수들의 확률을 추천해줍니다. 높은 확률을 가진 수일수록 알파고는 판단과정에 더 큰 비중을 둡니다.
정책 네트워크
(바둑판을 입력으로 넣으면 어디가 좋을지 확률을 알려준다)

알파고에서 강화학습을 진행할 때, 수많은 경기를 하며 시행착오를 겪습니다. 강화학습 알고리즘은 경기에서 얻은 시행착오를 기반으로 정책 네트워크가 알려주는 확률을 조정합니다. 조정된 확률은 다음 번 경기에 알파고가 더 똑똑하게 움직일 수 있게 해 줍니다.

REINFORCE 알고리즘

알파고에서는 REINFORCE 알고리즘에 기반하여 시행착오와 정책 네트워크의 확률을 조정하는 과정을 진행합니다.

먼저 policy network(정책 네트워크)의 추천에 기반하여 승패가 확정되는 State인 Terminal State까지 자가대전을 진행합니다.
자가대전의 결과로 각 수를 두는 시점 time step t에 해당하는 State, Action, Reward를 얻게 됩니다.

이제 위에서 얻어낸 State, Action, Reward 정보를 바탕으로 정책 네트워크(policy)를 수정할 차례입니다. policy가 뉴럴 네트워크로 만들어져 있어 직관적으로 policy를 업데이트 할 수 없기에, 어떤 방식으로 업데이트를 해야 하는지에 대한 이론이 REINFORCE알고리즘입니다.

해당 알고리즘에서는 policy의 가치를 expectation하는 objective function을 정의하고 objective function의 gradient를 계산하는 수식을 전개하여 정리합니다. (참고자료)

그 결과로 각 time step t에 해당하는 State, Action, Reward만 있다면 objective function의 gradient를 간단하게 구할 수 있는 수식이 구성되며, 이를 기반으로 policy network를 업데이트하는 것입니다.
(a,s,z는 각각 action, state, reward에 해당한다)
(알파고에 적용된 수식이며 학습을 용이하게 하기 위한 최적화 기법이 적용되어 있음.)

위처럼 자가대전 진행과 REINFORCE알고리즘 실행을 통해 policy network를 강화하고, 강화된 policy network로 자가대전을 하는 구조를 계속 반복합니다.
계속 반복하면 policy network의 능력이 점진적으로 향상되며 결국 강력한 policy network로 수렴하게 됩니다. 이렇게 알파고는 강력한 바둑 실력을 가질 수 있게 됩니다.

글을 마치며

실제로 이런 기법을 구현할 때에는 이상적으로 동작하지 않는 경우가 많기 때문에 여러 가지 추가적인 기법들이 적용되는 편입니다. 알파고에서 자가대전을 할때는 온전히 자기 자신과 대결하는 것이 아니라, 이전 단계의 좀 더 약한 정책 네트워크들과 대결하는 전략을 사용하기도 했습니다. 

알파고는 이세돌 선수에게 4승을 거둘 만큼 강력했지만, 100% 완벽하지 않았습니다. 이세돌 선수와의 4국에서 패배하면서 완전하지 않음을 보여주었습니다.

알파고 제로에서는 알파고의 REINFORCE알고리즘이 아니라 다른 알고리즘이 적용되었습니다. 그 때문에 더욱 강력해졌으며, 알파고가 가지고 있는 몇가지 문제점들을 해결할 수 있게 되었습니다.

참고자료:
https://talkingaboutme.tistory.com/entry/RL-Policy-Gradient-Algorithms
https://dnddnjs.gitbooks.io/rl/content/monte-carlo_policy_gradient__reinforce.html
https://www.slideshare.net/WoongwonLee/rlcode-a3c
Simple Statistical Gradient-Following Algorithms for Connectionist Reinforcement Learning (REINFORCE)
Policy Gradient Methods for Reinforcement Learning with Function Approximation


글 목록


댓글

가장 많이 본 글

구글 람다(LaMDA)란? - 구글의 언어 모델

카타고와 바둑 두어보기

버텍스 AI란? - 구글 인공지능 플랫폼

뉴럴 네트워크란?

블로그 글 목록

뉴럴 네트워크를 학습시키는 방법