오늘 https://arxiv.org 에 DeepMind에서 Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm 이라는 paper가 올라왔습니다.
paper는 참고자료에 있습니다.
저도 오늘 저녁에 우리 체스카페 (마법사의 제자) 에서 소식을 듣고 부리나케 찾아서 읽어보았습니다. 요즘 학교에서 머신런닝을 배우며 예전부터 체스 엔진에도 관심이 많아 매우 흥미로웠습니다.
우선 paper를 간단하게 정리해 보았습니다.
Abstract
바둑에서 기존 알파고제로의 경우 인간을 초월한 퍼포먼스를 보여줬으며 추가적인 인간 지식이나 기보 없이 오직 바둑 룰만을 알려주고 스스로 훈련하였습니다. 이 paper에서 말하길 다른 분야에서도 이 러닝을 적용하기 위해 AlphaZero 알고리즘을 만들었다고 합니다. 이 AlphaZero도 마찬가지로 오직 게임 규칙만을 알려주고 스스로 훈련하게 하였는데요. 24시간 내에 체스와 쇼기에 있어 인간을 넘어서는 단계에 올라섰다고 하네요.
AlphaZero란?
AlphaZero는 기존의 바둑의 AlphaGoZero와 유사하지만 완전히 일반적인 알고리즘을 적용해서 보다 일반적인 버전으로 체스와 쇼기에도 적용이 가능하게 만들었다고 합니다.
AlphaZero는 alpha-beta search with domain-specific enhancement 대신에 범용의 Monte-Carlo tree search algorithm(MCTS)을 사용한다고 합니다.
AlphaZero는 generic reingorcement learning algorithm을 사용하였으며 체스 규칙만 알려주었음에도 불구하고 learning time이 한시간도 채 안되고 단지 1000개도 안되는 포지션을 가지고도 우수한 결과를 얻었다고 합니다.
AlphaZero와 AlphaGoZero의 차이
1. 알파고제로는 오직 승리와 패배 둘중 하나의 결과만을 가정하여 승리가능성을 추정하고 최적화하는 반면에 알파 제로는 무승부의 경우도고려합니다.
2. 바둑 규칙의 경우 포지션을 회전하거나 반전하여도 변함없기에 이를 고려하여 포지션을 변형하여 알고리즘이 MCTS에서 평가할 수 있습니다. 하지만 체스나 쇼기의 규칙은 비대칭적이여서 대칭이라고 가정할 수가 없습니다. 그래서 알파제로는 MCTS에서 평가할 때 포지션을 변형하지 않습니다.
3. 알파고 제로는 이전의 모든 반복과정에서 베스트 플레이어를 뽑는 식으로 발전합니다. 각 훈련의 반복마다 베스트 플레이어와 새로운 플레이어의 퍼포먼스를 비교하여 55% 차로 이긴다면 새로운 플레이어가 베스트 플레이어가 되는 식입니다. 하지만 알파 제로는 간단하게 single neural network를 유지하면서 한 반복이 끝나기를 기다리지 않고 연속해서 업데이트 합니다.
레이팅 변화
위 Figure는 레이팅 변화이며 한 수마다 1초가 주어졌을 때의 다른 플레이어들의 게임을 평가하여 계산 했다고 합니다.
체스에서 AlphaZero는 룰밖에 모르는 상태에서 단지 4시간(300k steps) 훈련한 뒤에 Stockfish(매우 강한 기존의 체스엔진) 뛰어 넘었다고 합니다. 쇼기는 Elmo를 뛰어넘는데 2시간 (110k steps), AlphaZero는 AlphaGo Lee를 뛰어 넘는데 8시간 (165k steps)이 걸렸다고 합니다.
게임 전적
위 Table 1은 AlphaZero를 완벽하게 훈련시킨 뒤 대전했을 때의 기록입니다. 시간은 한 수당 1분 주어졌습니다. 바둑같은 경우는 상대는 기존의 AlphaGo Zero를 3일 훈련했을 때 입니다.
체스에서 눈여겨볼 점은 AlphaZero가 백을 잡았을 때에는 Stockfish에게 한판도 내주지 않으며 25승 25무를 했지만 흑을 잡았을 때에는 똑같이 한판도 지지 않았지만 3승 47무를 했네요.
일반적 체스 오프닝과의 통계
Table 2는 사람들 사이에서 자주 쓰이는 체스 오프닝들인데요. AlphaZero가 스스로 학습하면서 사용하게된 분포를 나타내며 아래 승률 같은 경우 해당 포지션에서 스톡피쉬와 100경기를 한 결과라고 하네요.
효율적인 thinking time 사용
위표는 한 수당 0.04초의 시간을 준 Stockfish와 비교하였을 때 AlphaZero의 상대적 Elo라고 합니다.
포지션 평가 속도
AlphaZero는 다른 엔진에 비해 상당히 적은 포지션을 평가한다는 것을 알 수 있습니다. 7천만 포지션을 초당 평가하는 Stockfish에 비해 AlphaZero는 불과 8만 포지션입니다.
AlphaZero와 Stockfish간의 게임 기보
시간은 1minute per move로 Stockfish와 플레이한 100게임 중 paper에 10게임을 제시했습니다. 정말 고맙게도 누군가 인터넷에 기보를 정리하여 간단히 볼 수 있게 해주었는데요. https://lichess.org/study/EOddRjJ8 에서 보실 수 있습니다.