PGR21.com
- 자유 주제로 사용할 수 있는 게시판입니다.
- 토론 게시판의 용도를 겸합니다.
Date 2017/12/14 19:35:27
Name 소인배
Subject [일반] 바둑 인공지능 이야기
알파고 이후 바둑 프로그램의 대세는 단연코 인공신경망(ANN)입니다.  ANN과 몬테 카를로 트리 탐색(MCTS)을 병용해 프로를 뛰어넘는 높은 기력을 얻을 수 있으며, 따라서 최근 개발하는 거의 모든 바둑 프로그램은 이 방식을 기반으로 합니다. 제가 이 분야의 권위자나 대단한 전문가는 아니지만서도, 꽤 정확하게 알고 있다고 생각하고 있으므로, 몇 가지 주절주절 써 보도록 하겠습니다.

1. 왜 ANN인가?

알파고 이전의 대부분의 강한 바둑 프로그램은 MCTS를 기반으로 합니다. 아주 단순하고 거칠게 말하자면, 몬테 카를로 방식을 이용해 무작위적으로 둔 다음 그 결과를 이용해 승률을 예측하고, 높은 승률이 나오는 수를 두는 방법입니다. 이론상 무한히 오래 실행하면 최적의 수를 찾을 수 있습니다. 물론 진짜로 무한히 실행할 수는 없는 노릇이고 정말로 완전히 무작위로 두면 너무나 오랜 시간이 걸리므로, ANN을 접목하기 이전에는 사람이 직접 손으로 짜 넣은 요소나 판단을 이용하거나, 초보적인 패턴 인식 방법 등을 사용해서 어느 정도 말이 되는 수만 탐색하는 방식을 사용했습니다.

ANN을 이용하면, 바둑판의 상태를 입력으로 받아서, 후보수나 예상 승률 등을 정교하게 예측할 수 있습니다. 이것을 이용해, 탐색하는 수의 범위를 줄이고, 또 승률 예측에도 ANN을 사용할 수 있기 때문에, MCTS의 정확도가 비약적으로 상승합니다. 

하수와 고수의 수읽기 차이는, 바둑판에 머릿속으로 돌을 놓는 능력보다도, 얼마나 말이 안 되는 수를 생각하지 않고 효율적으로 탐색하냐에 달렸습니다. 이런 맥락에서, ANN은 감각에 해당하고, MCTS는 머릿속에서 수를 놓아 보는 기능을 한다고 보면 대충 맞겠습니다. 감각이 좋을수록(ANN이 잘 훈련되었을수록) 수읽기가 강해집니다.

2. 강화학습(reinforcement learning; RL)

그러면, 후보수나 승률 등을 잘 예측할 수 있는 신경망을 학습시켜야 합니다. 프로 기보 등을 사용해서 지도학습(supervised learning; SL)을 할 수도 있겠습니다만, 그것만으로는 부족합니다. 프로들도 어쨌든 인간이라 실수도 하고, 기분에 따라 다른 수를 두기도 하고, 또 오래된 기보에서는 낡은 수법이 나오기도 합니다. 그리고 결정적으로 프로 기보로 학습을 했으니 한계가 존재합니다. 그래서 강화학습을 통해 신경망을 더 강하게 훈련시키게 되며, 이를 통해 프로를 뛰어넘고 기존에 프로들이 생각하지 못했던 수법도 찾아낼 수 있습니다. 바둑 프로그램에 사용된 강화학습 방법은 크게 두 가지가 있습니다.

1) 일반적인 강화학습

ANN 내부의 파라미터를 직접 바꾸면서, 승률이 높게 나오도록 최적화하는 방법입니다.

2) 자기대국 강화학습(self-play reinforcement learning; SPRL)

이것은 1)과는 좀 다릅니다. 간략화해서 말하자면, 이전 세대의 ANN+MCTS를 이용해 바둑을 두고, 그 결과(후보수, 승률 예측)를 이용해 ANN을 훈련하는 방식입니다. 위에서 ANN은 감각, MCTS는 수읽기에 해당한다고 말씀드렸는데, 이 비유를 사용하자면 이전 세대의 감각으로 열심히 수읽기한 결과를 이번 세대의 신경망으로 감각적으로 떠올릴 수 있게 하는 작업입니다. 그러면 그만큼 신경망이 강해지니까, 이 작업을 반복하다 보면 엄청나게 강해집니다.

이 방법이 1)에 비해 결과물이 더 좋았던 것은 맞는데, 단점이 하나 있습니다. 계산 자원을 무지막지하게 잡아먹습니다. 구글에서 몇 시간이나 며칠 훈련만으로 엄청난 성공을 거둔 것처럼 말하지만, 사실 훈련 자체는 별로 오래 걸리는 작업이 아닙니다. 가장 시간이 오래 걸리는 것은 훈련 그 자체보다는 자가대국으로 많은 기보를 만드는 것인데, 이것이 굉장히 오래 걸립니다. 예를 들어 구글이 알파고 제로 훈련을 하면서 3일만에 돌파고를 뛰어넘었다고 하지만, 자가대국에 동원한 TPU가 2000개입니다. TPU가 하나에 45테라플롭스이고, 2000개 쓰면 90페타플롭스가 나오는데, 이 연산량은 세계 1위 슈퍼컴퓨터인 Sunway TaihuLight에 맞먹는 것이고, 한국에서 제일 빵빵한 기상청 누리 슈퍼컴퓨터의 37.5배에 해당합니다. 

3. 알파고

현재까지 다양한 알파고 버전이 나왔습니다만, 간략하게 어떤 방법을 썼는지 짚고 넘어가겠습니다.

1) AlphaGo Lee - 시작점: 지도학습, 학습 방법: 강화학습

이세돌 9단과 대국할 때 사용한 버전입니다. 우선 프로 및 아마추어 기보로 지도학습을 하고, 2-(1)처럼 평범한 방법으로 강화학습을 합니다.

2) AlphaGo Master - 시작점: 지도학습, 학습 방법: 자기대국 강화학습

커제 9단과의 대국에 쓰였고, 그에 앞서 온라인에서 프로 상대로 60연승을 한 버전입니다. AlphaGo Lee에 비해 신경망 구조를 많이 바꾼 것이 성능 개선의 한 요인이고, 자기대국 강화학습을 사용한 것도 기력 향상에 도움이 되었습니다. AlphaGo Zero와 근본적으로는 같은 방식입니다. 중국의 fuheyuqi도 같은 방식으로 짐작합니다.

3) AlphaGo Zero - 시작점: 무작위 신경망, 학습 방법: 자기대국 강화학습

AlphaGo Master와 같은 방법을 사용하되, 지도학습을 거치지 않고 무작위 상태에서 시작합니다. 오로지 바둑 규칙과 강화학습만을 이용해 높은 기력을 달성했으니, 연구자 입장에서는 가장 깔끔하고 아름다운 방법입니다.

그런데, Zero가 Master에 비해 우월한 이유가 인간의 지식이 들어가지 않아서라고 잘못 알고 계시는 분들이 많습니다만, 아래쪽 글에도 달았듯 이것은 근거가 없습니다. 딥마인드에서 내놓은 논문 및 외부 발표에서는 이런 식의 오해를 일부러 유도하는 듯한 느낌도 받습니다만, Master와 Zero 버전을 동일한 선상에서 비교할 수 있는 근거가 전혀 없습니다.

4) AlphaZero - 시작점: 무작위 신경망, 학습 방법: 자기대국 강화학습

최근 Arxiv에 올라온 논문인데, AlphaGo Zero와 비슷하지만 약간 다른 방법을 바둑뿐만 아니라 체스나 쇼기에도 적용한 버전입니다. 

4. 기타

위에서 말씀드렸듯, 자기대국 인공지능에는 엄청난 계산 자원이 필요합니다. 알파고 제로 결과를 GPU 하나로 재현하려면 1700년이 걸린다는 계산 결과도 있구요. 그래서 개인이나 소규모 단체 수준으로는 알파고 제로처럼 강한 인공지능을 만들 수가 없고, 그나마 자본력이 되는 텐센트의 절예 정도가 약간이라도 근접한 기력을 내고 있습니다.

그래서 자기대국을 분산 컴퓨팅으로 해결하려는 프로젝트가 있습니다. Leela Zero라는 프로젝트인데, 우선 AlphaGo Zero보다 작은 신경망을 이용해서 버그도 잡는 겸해서 테스트로 강화학습을 진행하는 중입니다. 현재 100만 개 정도의 기보를 만들었고, 현재는 KGS에서 12급 정도의 기력을 보유하고 있습니다. 저는 초기부터 이 프로젝트에 조금이나마 관여하고 있습니다만 혹시 관심이 있는 분은 참여해서 계산 자원을 보태는 것도 좋지 않을까요. 관련 페이지는 아래 둘 정도가 있습니다.


기타 바둑 인공지능에 관해 궁금한 점이 있는 분들께서는 질문해 주시면 가급적 정확히 답변해 드리겠습니다.

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
아리아
17/12/14 19:51
수정 아이콘
좋은 글 감사합니다
17/12/14 19:53
수정 아이콘
Leela도 이미 아마추어 유단자급아닌가요..?
소인배
17/12/14 19:55
수정 아이콘
Leela와 Leela Zero는 별개의 프로그램입니다. 제작자는 같지만요.
도라귀염
17/12/17 10:18
수정 아이콘
leela가 시피유버전이 타이젬 약9단급이고 그래픽카드 쓸만한거 다는 gpu버전은 타이젬 중9단급입니다
bemanner
17/12/14 20:00
수정 아이콘
비전문가의 입장에서 관심 주제에 대해 읽을 만한 글이 안올라와서 나름대로 글을 써보려 했으나
오류를 감수할 수밖에 없었는데 정확한 설명해주셔서 감사합니다.

질문드릴게 있는데 딥마인드에서 예전에 네이쳐에 발표했던 논문을 보면
알파고가 cpu개수나 쓰레드 수를 적게 했을 때랑 많이 했을 때의 성능 차이가 분명 나기는 나지만
단일 cpu로도 일정 수준의 기력은 보장이 되던데

이런 거도 강화학습 자체는 수많은 슈퍼컴퓨터로 하고, 강화학습이 완료된 알파고를 cpu하나로 구동할 때 그정도 파워가 나오는 거라고 보면 되나요?
소인배
17/12/14 20:07
수정 아이콘
AlphaGo Lee의 경우는 알고리즘상 Master나 Zero만큼의 자원을 요구하진 않습니다만, 그래도 강화학습 자체가 자원이 좀 필요하긴 하죠. GPU 50개를 썼다고 되어 있네요. 일단 학습이 완료되면 ANN 자체는 아무 걸로나 돌려도 됩니다. 병렬로 돌리는 것은 MCTS를 더 깊게 하기 위해서구요.
자유의영혼
17/12/14 20:53
수정 아이콘
TPU를 2000개나 썼다구요..? 그렇다면 아직 일반인이 쉽게 따라하기는 어렵겠네요 흐흐흐.
학습된 결과라도 구글에서 공개해준다면 좋을텐데..
소인배
17/12/14 21:02
수정 아이콘
아마 당분간은 절대 공개할 생각 없을걸요... 디테일한 부분도 논문에 안 실었고, 아자 황이 다른 사람 질문에 답변하는 것도 내부에서 매니저 허락을 받고 해야 하는 구조인 걸 보면요.
기세파
17/12/14 22:25
수정 아이콘
강화학습 과정에서 바둑의 학습에 대한 보상은 어떤 식으로 주어지나요? 가령 예전에 유명했던 벽돌깨기 게임 자가학습이나 갤러그 게임 자가학습의 경우에는 비교적 명확한 보상을 제시할 수 있는 반면에(점수나 남은 벽돌 개수 등) 바둑은 그런 보상을 제시하기가(오직 승리 패배로만?) 쉽지 않을것 같아서요. 특히 아예 처음부터 자가학습을 시키는 경우에는 더더욱 그럴 가능성이 높아보이구요.
소인배
17/12/14 23:19
수정 아이콘
2-(1)의 경우는 승패로 주어집니다. 2-(2)는 별도의 보상이 있다기보다는, MCTS 자체가 ANN을 강화하는 역할을 하므로, 본문에 설명했듯 ANN+MCTS 결과를 다음 세대 ANN으로 예측할 수 있도록 훈련하는 방식입니다. AlphaGo Zero에서는 이렇게 업데이트된 ANN을 이전 세대와 매칭을 시켜 성능 비교를 한 후 우수하다고 판단되면 ANN을 갱신하고, 아니면 이전 세대를 계속 사용하는 방식을 썼구요, AlphaZero에서는 이런 성능 평가 과정 없이 계속 자기대국을 늘리면서 동시에 학습시키는 방식이었습니다.
세종머앟괴꺼솟
17/12/15 17:36
수정 아이콘
오 정리 잘하셨네요 크
helloman
17/12/16 11:25
수정 아이콘
이제 인간이 인공지능을 바둑으로 이기긴 힘들 것 같기는 한데
만약에 바둑에 특화된 서번트 증후군에 걸린 사람이 있다면 인공지능을 이길 수 있을까요?
서번트 증후군으로 뇌의 연산 능력을 100% 바둑에만 집중시킨다면 그래도 인공지능에게는
안될지 궁금합니다.
소인배
17/12/16 14:01
수정 아이콘
서번트 증후군이 뇌의 연산 능력을 100% 바둑에 쓸 수 있게 하냐는 생리학적 질문이 우선인 것 같은데, 일단 제가 대답할 수 없으니(회의적이긴 합니다만) 넘어가기로 하고... 일단 지금은 인간이 바둑을 배우는 방식이 상당히 원시적이라 근본적 한계가 있습니다. 인공지능 바둑만을 보고 배우며 자라는 세대가 나오고, 좀더 효율적인 학습법이 개발되면 모르겠지만요.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회 추천
76889 [일반] 이름만 [구글크롬] 악성코드 소탕기 [21] 달걀먹고빵구빵12035 18/05/06 12035 4
76525 [일반] [7] 인문사회 신간 위주로 둘러본 서점 나들이 (사진 多) [9] 위버멘쉬10266 18/04/07 10266 29
76206 [일반] AI로 만든 음악. [7] 뀨뀨8969 18/03/19 8969 4
76063 [일반] 여자랑 1:1로 술이랑 밥도 먹고 무고죄 고소도 안 당하는 희대의 꿀팁공개 [80] VrynsProgidy14711 18/03/09 14711 19
75642 [일반] 돌바람도 커제를 꺾음 [55] 퀀텀리프15273 18/01/30 15273 0
75621 댓글잠금 [일반] 세계 최초 실시간 인공지능 생성기 KihwanNet을 소개합니다 [210] 이기준(연역론)26044 18/01/29 26044 11
75541 [일반] [모난 조각] 활동 내역 및 신규 회원 모집 [7] 마스터충달7500 18/01/22 7500 16
75132 [일반] 먹어야 싼다 (언론 비스무리한 이야기) [9] 좋아요7920 17/12/25 7920 21
75053 [일반] 유튜브 교양 채널 소개 - 당신의 시간을 뺏겠습니다 [21] buon16283 17/12/20 16283 55
74982 [일반] 바둑 인공지능 이야기 [13] 소인배7484 17/12/14 7484 9
74977 [일반] [바둑] 알파고의 근황 [75] bemanner15190 17/12/14 15190 18
74465 [일반] 김어준의 블랙하우스 어떻게 보셨나요? [45] 영원한초보13607 17/11/05 13607 8
74360 [일반] 생소하고 비 도덕적이고 비 상식적인 이야기 [39] 욕망의진화10617 17/10/28 10617 0
74260 [일반] 신고리 원전 5,6호기 공론조사 발표에 대한 짧은 단상 [56] StayAway9827 17/10/20 9827 18
74253 [일반] 혼자서 신의 경지에 다라른 알파고 제로 등장 [214] 삭제됨23692 17/10/19 23692 23
74238 [일반] [독후감] 테드 창, 「인류과학의 진화」: 알파고와 인간의 일. 그리고 SF문학 [16] 두괴즐9856 17/10/17 9856 22
73457 [일반] 도요타 자동차의 신기한 투명 필러 기술 [30] 홍승식16911 17/08/26 16911 8
73116 [일반] 나를 리마스터 해줘요 [5] 시간6943 17/08/01 6943 17
72919 [일반] 인공지능이 너무 무서운 앨런 머스크... [137] Neanderthal15276 17/07/18 15276 7
72711 [일반] [영화공간] 마블에 질리다 [101] Eternity12042 17/07/07 12042 14
72615 [일반] 태양의 무서움...(움짤 2개 포함) [32] Neanderthal13668 17/06/29 13668 36
72590 [일반] 21세기가 불안하다. [46] 고통은없나7506 17/06/28 7506 7
72571 [일반] 구글에서 자사의 화성(Mars) 기지와 화성 데이터 센터 내부를 공개했습니다. [15] 유리한12318 17/06/27 12318 0
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로