PGR21에 올릴라고 썼다가 공들인게 아까워서 블로그에도 씀.
어제자(10-30)로 따끈따끈한 알파고 관련 소식입니다. 딥마인드가 직접 결과를 정리하는 포스팅을 했습니다.
출처 : https://deepmind.com/blog/article/AlphaStar-Grandmaster-level-in-StarCraft-II-using-multi-agent-reinforcement-learning?fbclid=IwAR0GiuNw-1w9StMGUIaE02NijJdjoSffNHg7guh_W0KE5LR-kI_MHrUpvNw
요약
고맙게도 4가지로 요약을 해줬는데 영알못이지만 구글번역기의 도움을 받아 옮겨봅니다.
1. 알파스타는 이제 인간과 같은 플레이 제약조건을 받습니다. 카메라를 통해서 세상을 봄 (아마 사람 화면과 같은 범위를 본다는것 같습니다.), 훨씬 심한 EAPM 제약조건 (5초당 22번의 최대 명령)
2. 알파스타는 이제 1대1 매치에서 모든종족을 플레이 하고 모든 종족을 상대할 수 있습니다. 각 프로토스, 저그, 테란 플레이는 각각 하나의 단일 신경망으로 되어있습니다.
3. 리그에서의 훈련은 완전 자동화 되어있으며, 이전 실험에서 trained-모델로 훈련을 시작했던것과 다르게, supervised learning (지도학습) 으로만 훈련을 시작합니다. (요 부분이 뭔소린지 잘 모르겠네요)
4. AlphaStar는 공식 게임 서버 Battle.net 에서 인간 플레이어와 동일한 맵과 조건을 사용하여 플레이 했습니다. 모든 게임 리플레이는 여기 (https://deepmind.com/research/open-source/alphastar-resources) 에서 확인가능 합니다
“AlphaStar의 게임 플레이가 엄청나게 인상적이라는 것을 알았습니다.이 시스템은 전략적 위치를 평가하는 데 능숙하며 상대방과 언제 교전하거나 이탈해야하는지 정확히 알고 있습니다. AlphaStar는 훌륭하고 정밀한 제어 기능을 제공하지만, 인간이 이론적으로 달성 할 수없는 수준이 아닌 초 인간적인 느낌은 없습니다. 전반적으로 스타 크래프트의 '실제'게임을하는 것처럼 매우 공평합니다.” - DARIO “TLO” WÜNSCH, 스타2 프로게이머 (구글번역)
어떻게 했나?
관련 논문을 네이처에 (https://www.nature.com/articles/s41586-019-1724-z.epdf?author_access_token=lZH3nqPYtWJXfDA10W0CNNRgN0jAjWel9jnR3ZoTv0PSZcPzJFGNAZhOlk4deBCKzKm70KfinloafEF1bCCXL6IIHHgKaDkaTkBcTEv7aT-wqDoG1VeO9-wO3GEoAMF9bAOt7mJ0RWQnRVMbyfgH9A%3D%3D) 발표하였네요. 아직 저도 못읽어봤지만 ㅠㅠ 시간이 나면 천천히 해설하는글도 한번 적어보면 좋겠습니다…
팀별 훈련!
블로그 글에 의하면, 처음에는 지도학습으로 훈련을 시작해서 대강의 전략을 익힌뒤에, 알파고처럼 자기 스스로 하는 대결(self-play)를 계속 반복하여, 많은 실력을 향상시켰다고 하네요. 원래 자기플레이를 하다보면 올챙이적 플레이를 잊어버림으로써 옛날전략에 당해버리는 결과를 가져올 수 있는데, 이러면 옛날전략을 이기는 전략으로 다시 학습 되는 바람에 실력은 향상되지 않고 전략만 가위-바위-보 로 돌고도는 문제에 빠진다고 합니다. 딥마인드가 이야기 하는 알파스타의 발달한 점은, “fictitious self-play” 라는 옛날 전략을 완전 없애지 않고 섞어두고, 더 나아가서, 이런 알파스타들을 그룹으로 묶어서 그룹전체의 실력이 향상되도록, 파트너의 결점을 부각시켜서 그 결점을 해결할 수 있도록 돕는 방식을 구현했다고 하는데, 프로팀들이 팀내 연습을 하면서 장단점을 발견하는걸 떠올리게 하네요.
지도학습 이후에 self-play
또 재밌는 점은 첫 모델에 스스로 학습한것을 쓰지 않고, 사람의 플레이를 이용해서 배우게 하고 어느정도 실력이 올라간 이후에 자기학습을 사용한 점입니다. 스타크래프트의 경우에는 경우의 수 가 너무 많아서 (1 time step 당 10^26 가지 가능한 행동), 경우의 수를 각 단계별로 수천가지 정도로 줄여주는 과정이 필요했다고 합니다. 그래서 알파고 (Alpha zero) 처럼 무에서 출발하지 않고, 사람이 플레이하는 과정을 어느정도 흉내내서 다이아 티어정도의 실력을 만든 뒤에 self-play를 적용했다고 합니다.
얍삽이 (exploiter) 대처는?
공개한 동영상중에 재밌는게 있는데, 일명 exploiter (얍삽이? 사기전략?) 를 알파스타가 어떻게 해결하는가 입니다.
초반에 캐논러시에 겁나게 당하다가, 다른 알파스타 중에 하나가 캐논러시를 일꾼을 동원해서 막으면 된다는걸 학습합니다(!). 또 하나는 컨+조합이 합쳐진 짜내기 한방같은 사기빌드가 중간에 나왔는데, 이 전략이 다크에 약하다는것을 하나의 알파스타가 발견해서 막게됩니다. 프로팀마다 알파스타 하나씩 있으면 코치들이 알파스타 훈련하는것 보면서 꿀빌드 찾아내는 장면이 떠오르네요.
“AlphaStar는 흥미롭고 정통적인 플레이어입니다. 최고의 프로의 리플렉스와 속도는 있지만 전략과 스타일은 전적으로 고유합니다. 에이전트가 리그에서 서로 경쟁하는 AlphaStar의 훈련 방식은 상상할 수 없을 정도로 특이한 게임 플레이로 이어졌습니다. 스타 크래프트의 다양한 가능성을 프로 선수들이 실제로 얼마나 탐구했는지에 대한 의문을 갖게합니다.” - DIEGO "KELAZHUR"SCHWIMER, 스타2 프로게이머(구글 번역)
실버부터 그마까지!
아래 동영상에 전체적으로 알파스타의 실력이 향상되는 과정이 나옵니다. 처음 부터 실버를 달성했다는… 그럼 브론즈는 뭐가되냐는…
프로들이 보기에 아직 좀 결점이 있어보인다고는 하는데, 또 붙어보면 모를일 아니겠습니까, 또 향상속도를 보면 왠지 더 올라갈 가능성도 있어보이고… 어쨌든 인간의 손속도로, 인간 화면기준으로 이정도 능력을 달성했다는게 정말 놀랍네요.
'Programming > Python' 카테고리의 다른 글
Google HashCode 나갔던 이야기 - 1 (0) | 2020.02.26 |
---|---|
웹서버를 시작하기 위해 어떤 프레임 워크를 고를 것인가? 2탄 (0) | 2015.07.05 |
웹서버를 사용하기 위해 어떤 프레임워크를 고를 것인가? (0) | 2015.06.29 |