알파고 해부하기 3부

71
알파고 해부하기 3이동헌 [email protected]

Transcript of 알파고 해부하기 3부

Page 1: 알파고 해부하기 3부

알파고해부하기3부

이동헌

[email protected]

Page 2: 알파고 해부하기 3부

이어서시작하면서

•알파고해부하기 1부, 2부에서이어지는게시물입니다• 예상독자층은알파고의원리를정확히알고싶어하는분들

• 프로그래밍, 딥러닝, 머신러닝연구자분들포함입니다

• “프로그래머를위한알파고”로생각해주세요..

•내용이어렵다면 “쉬운” 알파고게시물도있어요1. 모두의알파고

2. 바둑인들을위한알파고

4/28/2016 알파고해부하기 3부 © 이동헌 2

Page 3: 알파고 해부하기 3부

당부말씀

•정확성을최우선가치로씁니다• 정확하지않은내용을찾으시면꼭! 피드백부탁드립니다

[email protected]

• 내용의한부분만뚝잘라서인용하시면위험합니다• 정확한내용들이보통그렇듯이, 부분을잘라내면뜻이달라질수있어요

4/28/2016 알파고해부하기 3부 © 이동헌 3

Page 4: 알파고 해부하기 3부

2부까지의진행상황

•알파고의구조

•알파고소프트웨어의구성• 알파고 S/W 구성: Deep Learning 유관부분

• 알파고 S/W 구성: Reinforcement Learning 유관부분

• 알파고 S/W 구성: Monte-Carlo Tree Search 유관부분

•알파고 S/W의대국시동작법

•알파고 S/W의대국전트레이닝법

•알파고 S/W의혁신점

•알파고의혁신점

4/28/2016 알파고해부하기 3부 © 이동헌 4

Page 5: 알파고 해부하기 3부

목차

•알파고의구조

•알파고소프트웨어의구성

•알파고 S/W의대국시동작법

•알파고 S/W의대국전트레이닝법

•알파고 S/W의혁신점

•알파고의혁신점

4/28/2016 알파고해부하기 3부 © 이동헌 5

Page 6: 알파고 해부하기 3부

알파고의대국시동작법

•알파고덕분에강화학습(reinforcement learning)의기본프레임워크가많이알려져서설명부담이줄었네요

•알파고입장에서바라본세계• “환경”의상태를확인하고

• 바둑판현재상태

• 게임메타정보

4/28/2016 알파고해부하기 3부 © 이동헌 6

알파고프로그램

바둑게임

바둑판상태

게임메타정보

가능한행동들

Page 7: 알파고 해부하기 3부

알파고의대국시동작법

•알파고덕분에강화학습(reinforcement learning)의기본프레임워크가많이알려져서설명부담이줄었네요

•알파고입장에서바라본세계• “환경”의상태를확인하고

• 바둑판현재상태

• 게임메타정보

• “행동”을선택해수행하면

4/28/2016 알파고해부하기 3부 © 이동헌 7

알파고프로그램

바둑게임

바둑판상태

게임메타정보

가능한행동들

Page 8: 알파고 해부하기 3부

알파고의대국시동작법

•알파고덕분에강화학습(reinforcement learning)의기본프레임워크가많이알려져서설명부담이줄었네요

•알파고입장에서바라본세계• “환경”의상태를확인하고

• 바둑판현재상태

• 게임메타정보

• “행동”을선택해수행하면

• “환경”이변화한다

4/28/2016 알파고해부하기 3부 © 이동헌 8

알파고프로그램

바둑게임

바둑판상태

게임메타정보

가능한행동들

Page 9: 알파고 해부하기 3부

알파고의대국시동작법

•알파고덕분에강화학습(reinforcement learning)의기본프레임워크가많이알려져서설명부담이줄었네요

•알파고입장에서바라본세계• “환경”의상태를확인하고

• 바둑판현재상태

• 게임메타정보

• “행동”을선택해수행하면

• “환경”이변화한다

• 끝날때까지반복한다

4/28/2016 알파고해부하기 3부 © 이동헌 9

알파고프로그램

바둑게임

바둑판상태

게임메타정보

가능한행동들

Page 10: 알파고 해부하기 3부

알파고의대국시동작법

•알파고덕분에강화학습(reinforcement learning)의기본프레임워크가많이알려져서설명부담이줄었네요

•알파고입장에서바라본세계• “환경”의상태를확인하고

• 바둑판현재상태

• 게임메타정보

• “행동”을선택해수행하면

• “환경”이변화한다

• 끝날때까지반복한다• 대국동안에는 “학습”을할수는없습니다..

4/28/2016 알파고해부하기 3부 © 이동헌 10

알파고프로그램

바둑게임

바둑판상태

게임메타정보

가능한행동들

Page 11: 알파고 해부하기 3부

알파고의대국시동작법

•대국시동작법부분의초점• 실제수선택이어떻게일어나는지?

4/28/2016 알파고해부하기 3부 © 이동헌 11

Page 12: 알파고 해부하기 3부

알파고의대국시동작법

•대국시동작법부분의초점• 실제수선택이어떻게일어나는지?

1. 지금바둑판상태에서

2. 미래시뮬레이션을많이해본다

3. 그중가장많이선택된착수를선택한다

4/28/2016 알파고해부하기 3부 © 이동헌 12

Page 13: 알파고 해부하기 3부

알파고의대국시동작법

•대국시동작법부분의초점• 실제수선택이어떻게일어나는지?

1. 지금바둑판상태에서

2. 미래시뮬레이션을많이해본다

3. 그중가장많이선택된착수를선택한다

•가장많이선택된착수를고르는것이므로,

미래시뮬레이션을어떻게 “잘”하는지가성능의관건!• Asynchronous Policy and Value MCTS (APV-MCTS) 알고리즘

4/28/2016 알파고해부하기 3부 © 이동헌 13

Page 14: 알파고 해부하기 3부

알파고의대국시동작법

•대국시동작법부분의초점• 실제수선택이어떻게일어나는지?

• Asynchronous Policy and Value MCTS (APV-MCTS) 알고리즘• 컴퓨터여러대를사용한병렬처리가가능하도록설계

• 기본적으로분산처리의master node에서작동

• 세부연산은 slave node들에비동기분산처리로분배

4/28/2016 알파고해부하기 3부 © 이동헌 14

Page 15: 알파고 해부하기 3부

알파고의대국시동작법

•바둑판상태: s• Policy network와 value network에사용된그 input값 (아래를참조)

• 바둑판의 19x19 각눈(칸)들의상태흑/백/빈칸

• 추가로, 각눈(칸)에대해서

• 그냥상수 1 (“그칸고유의특성”을모델링)

• 돌이있다면, 몇수전에놓였는지 (최소 1, 최대 8) (길이8의 binary array)

• 연결된말의현재활로가몇개인지 (최소 1, 최대 8)

• 상대가돌을놓는다면내가잃을돌의수 (최소 1, 최대 8)

• 내가돌을놓는다면, 스스로내말을단수에놓이게된다면몇개나되는지 (최소 1, 최대 8)

• 내가돌을놓는다면,그돌에연결된말의활로가몇개가될지 (최소 1, 최대 8)

• 내가돌을놓는다면, 내가축을만드는데성공할지

• 내가돌을놓는다면, 내가축을탈출하는데성공할지

• 돌을놓는것이바둑의규칙에어긋나는지

• 내가흑돌인지백돌인지 (이건 Value Network (판세분석) 에만쓰입니다)

4/28/2016 알파고해부하기 3부 © 이동헌 15

Page 16: 알파고 해부하기 3부

알파고의대국시동작법

•바둑판상태 s (19x19x48) tensor를연산한다음,• 알파고가둘차례라고가정합시다

• APV-MCTS를시작합니다• 현재바둑판상태 s를시작 node로간주

4/28/2016 알파고해부하기 3부 © 이동헌 16

Page 17: 알파고 해부하기 3부

알파고의대국시동작법

•바둑판상태 s (19x19x48) tensor를연산한다음,• 알파고가둘차례라고가정합시다

• APV-MCTS를시작합니다• 현재바둑판상태 s를시작 node로간주

•참고사항• 게임트리초기화는 node단위로첫방문시 on-demand로진행

• 처음가본 node 초기화때• 모든가능한착수방법 a를모아서, (s,a)를기본정보로셋팅시킴

• 각 (s,a)에대해서다음정보는기본정보로셋팅 (값들의의미는 2부MCTS 부분참조)• 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎

4/28/2016 알파고해부하기 3부 © 이동헌 17

Page 18: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 1단계: “Search”• 목적: 현재바둑판상태 s에대응하는게임트리 node s에서출발해서, 최대한만들어진게임트리를타고내려가보는것• 게임트리가모두갖춰져있지않다는점에주의

4/28/2016 알파고해부하기 3부 © 이동헌 18

Page 19: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 1단계: “Search”• 목적: 현재바둑판상태 s에대응하는게임트리 node s에서출발해서, 최대한만들어진게임트리를타고내려가보는것• 게임트리가모두갖춰져있지않다는점에주의

• 게임트리 node s에는, 가능한모든착수방법 a들이저장되어있음

• 가능한모든 (s,a)에대해서다음을계산, 최대값을내는착수 a선택:

𝑄 𝑠, 𝑎 + 𝑐𝑝𝑢𝑐𝑡𝑃(𝑠, 𝑎)σ𝑏𝑁𝑟(𝑠, 𝑏)

1 + 𝑁𝑟(𝑠, 𝑎)• 𝑐𝑝𝑢𝑐𝑡 = 𝟓로사용함 (정정: 50 5. 발견해주신고려대학교뇌공학과이상훈님감사드립니다)

• σ𝑏𝑁𝑟(𝑠, 𝑏)는 𝑠에서 “가능한모든착수” 𝑏를 roll-out으로선택해본횟수의합• Roll-out은나중에 search 2단계 “Expansion”에서설명

4/28/2016 알파고해부하기 3부 © 이동헌 19

Page 20: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 1단계: “Search”• 가능한모든 (s,a)에대해서다음을계산, 최대값을내는착수 a선택:

𝑄 𝑠, 𝑎 + 𝑐𝑝𝑢𝑐𝑡𝑃(𝑠, 𝑎)σ𝑏𝑁𝑟(𝑠, 𝑏)

1 + 𝑁𝑟(𝑠, 𝑎)

• 𝑄 𝑠, 𝑎 : 현바둑판상태 s에서, 착수 a를하면, 승리할기대값의예상치

• 𝑃(𝑠, 𝑎)σ𝑏 𝑁𝑟(𝑠,𝑏)

1+𝑁𝑟(𝑠,𝑎): 현바둑판상태 s에서, 좀덜해본착수 a를장려하는가중치

• σ𝑏𝑁𝑟(𝑠, 𝑏)는 𝑠에서 “가능한모든착수” 𝑏를 roll-out으로선택해본횟수의합

• Roll-out이무엇인지는 APV-MCTS 다음단계에서곧설명함

• 𝑐𝑝𝑢𝑐𝑡 = 5로사용함 (덜해본것을장려하는가중치밸런스조정)

4/28/2016 알파고해부하기 3부 © 이동헌 20

Page 21: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 1단계: “Search”• 목적: 현재바둑판상태 s에대응하는게임트리 node s에서출발해서, 최대한만들어진게임트리를타고내려가보는것• 게임트리가모두갖춰져있지않다는점에주의

• s에서착수 a를선택하면, 다음바둑판상태가정해짐• 선택된 (𝑠, 𝑎)에대한시뮬레이션승패결과가나오기전, 다음과같이임시업데이트:

𝑁𝑟 𝑠, 𝑎 = 𝑁𝑟 𝑠, 𝑎 + 𝑛𝑣𝑙𝑊𝑟 𝑠, 𝑎 = 𝑊𝑟 𝑠, 𝑎 − 𝑛𝑣𝑙

• 𝑛𝑣𝑙 = 3으로셋팅• 시뮬레이션결과가나오기전에, “이선택은마치 3번해봤는데 3판다진것처럼기분나쁘다”로착각하도록셋팅한것

• 분산처리시스템의특성상, 이미시뮬레이션의뢰해둔것은피하도록장려한것임

4/28/2016 알파고해부하기 3부 © 이동헌 21

Page 22: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 1단계: “Search”• 목적: 현재바둑판상태 s에대응하는게임트리 node s에서출발해서, 최대한만들어진게임트리를타고내려가보는것• 게임트리가모두갖춰져있지않다는점에주의

• s에서착수 a를선택하면, 다음바둑판상태가정해짐

• 그러면다음상태를다시새로운 s로생각하고, 반복함

• 반복하다보면, 처음와보는 s에도착함• 여기까지내려온것이만들어진게임트리를최대한타고내려온결과

• 더이상타고내려갈곳이없다.

4/28/2016 알파고해부하기 3부 © 이동헌 22

Page 23: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 2단계: “Evaluation”• 목적: 지금갖고있는게임트리를타고내려가다도달한 node 𝑠𝐿에서, 그에상응하는바둑판상태𝑠𝐿의예상가치를파악하는것• 예상가치파악을 2가지방법으로함

1. 가치망사용

2. Roll-out 시뮬레이션사용

4/28/2016 알파고해부하기 3부 © 이동헌 23

Page 24: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 2단계: “Evaluation”• Value network (가치망: 이미대국전에트레이닝완료된상태) 사용시:

• 바둑판상태𝑠𝐿 (노드𝑠𝐿) 의예상가치 (승/패평균치) 를계산함

• 단, 계산을바로하는것이아니라, 대기열을 queue로만들어서함

• 또한, 한번계산한 𝑠𝐿의값은가치망사용하지않고바로조회할수있게memoize

• 가치망사용하는방법및시기?• 노드𝑠𝐿이생성될때 (4단계: “Expansion”에서설명) 바로 call

• Call하면대기열에장착. 중복 call이들어오면대기열단계에서걸러냄

• 인공신경망사용하는 evaluation이므로 GPU 사용해서실제계산

4/28/2016 알파고해부하기 3부 © 이동헌 24

Page 25: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 2단계: “Evaluation”• Roll-out 시뮬레이션방식사용시

• Roll-out policy라고명명된축약판다음수예측모듈을사용해서시뮬레이션• 이축약판모듈은강화학습으로만들어진 Policy network (정책망)보다약 1000배빠르게다음수예측값을내놓음 (정책망: 평균 0.003초 vs Roll-out: 평균 0.000002초)

• Roll-out은트리탐색이종료된 node인 𝑠𝐿에서부터시작• Roll-out policy를사용해서계속다음수를예측하면서진행

• 해당바둑게임이종료될때까지계속진행

• 바둑게임종료시, 집계산을하고, 승리시 +1, 패배시 -1의결과값을생성

• 즉, 𝑠𝐿에서이어지는미래가승리냐패배냐시뮬레이션을끝장날때까지진행

• 실제게임트리에반영하는것은다음단계인 “Backup”단계에서진행

4/28/2016 알파고해부하기 3부 © 이동헌 25

Page 26: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 3단계: “Backup”• 목적: 비동기계산된 Roll-out 승패값과비동기계산된 Value network판세예측값을게임트리를거꾸로타고올라가면서반영하기

4/28/2016 알파고해부하기 3부 © 이동헌 26

Page 27: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 3단계: “Backup”• “Search”단계에서한것을되돌아보면::

• 선택된 (𝑠, 𝑎)에대한시뮬레이션승패결과가나오기전, 다음과같이임시업데이트:𝑁𝑟 𝑠, 𝑎 = 𝑁𝑟 𝑠, 𝑎 + 𝑛𝑣𝑙𝑊𝑟 𝑠, 𝑎 = 𝑊𝑟 𝑠, 𝑎 − 𝑛𝑣𝑙

• 𝑛𝑣𝑙 = 3으로셋팅• 시뮬레이션결과가나오기전에, “이선택은마치 3번해봤는데 3판다진것처럼기분나쁘다”로착각하도록셋팅한것

• 분산처리시스템의특성상, 이미시뮬레이션의뢰해둔것은피하도록장려한것임

4/28/2016 알파고해부하기 3부 © 이동헌 27

Page 28: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 3단계: “Backup”• “Search”단계에서한것을되돌아보면::

• 선택된 (𝑠, 𝑎)에대한시뮬레이션승패결과가나오기전, 다음과같이임시업데이트:𝑁𝑟 𝑠, 𝑎 = 𝑁𝑟 𝑠, 𝑎 + 𝑛𝑣𝑙𝑊𝑟 𝑠, 𝑎 = 𝑊𝑟 𝑠, 𝑎 − 𝑛𝑣𝑙

• 𝑛𝑣𝑙 = 3으로셋팅• 시뮬레이션결과가나오기전에, “이선택은마치 3번해봤는데 3판다진것처럼기분나쁘다”로착각하도록셋팅한것

• 분산처리시스템의특성상, 이미시뮬레이션의뢰해둔것은피하도록장려한것임

• 이제비동기적으로 Evaluation이끝난뒤이므로,

제대로 𝑁𝑟 𝑠, 𝑎 ,𝑊𝑟(𝑠, 𝑎)를업데이트할차례

4/28/2016 알파고해부하기 3부 © 이동헌 28

Page 29: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 3단계: “Backup”• 제대로 𝑁𝑟 𝑠, 𝑎 ,𝑊𝑟(𝑠, 𝑎)를업데이트할차례

• 방문횟수+1, 그리고승패결과값 𝑧𝑡을반영해야함

4/28/2016 알파고해부하기 3부 © 이동헌 29

Page 30: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 3단계: “Backup”• 제대로 𝑁𝑟 𝑠, 𝑎 ,𝑊𝑟(𝑠, 𝑎)를업데이트할차례

• 방문횟수+1, 그리고승패결과값 𝑧𝑡을반영해야함

• 게임트리를거꾸로따라올라가며나오는엣지 𝑠, 𝑎 들을업데이트함• 예전 Search에서다음과같이업데이트했으므로,

𝑁𝑟 𝑠, 𝑎 = 𝑁𝑟 𝑠, 𝑎 + 𝑛𝑣𝑙𝑊𝑟 𝑠, 𝑎 = 𝑊𝑟 𝑠, 𝑎 − 𝑛𝑣𝑙

• 위의변화를거꾸로돌리고, 제대로된값으로다음과같이업데이트한다

𝑁𝑟 𝑠, 𝑎 = 𝑁𝑟 𝑠, 𝑎 − 𝑛𝑣𝑙 + 1𝑊𝑟 𝑠, 𝑎 = 𝑊𝑟 𝑠, 𝑎 + 𝑛𝑣𝑙 + 𝑧𝑡

4/28/2016 알파고해부하기 3부 © 이동헌 30

Page 31: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 3단계: “Backup”• 제대로 𝑁𝑟 𝑠, 𝑎 ,𝑊𝑟(𝑠, 𝑎)를업데이트할차례

• 방문횟수+1, 그리고승패결과값 𝑧𝑡을반영해야함

• 게임트리를거꾸로따라올라가며나오는엣지 𝑠, 𝑎 들을업데이트함• 𝑁𝑣 𝑠, 𝑎 ,𝑊𝑣 𝑠, 𝑎 값도 Evaluation단계의가치망결과값으로업데이트해줌.

4/28/2016 알파고해부하기 3부 © 이동헌 31

Page 32: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 3단계: “Backup”• 제대로 𝑁𝑟 𝑠, 𝑎 ,𝑊𝑟(𝑠, 𝑎)를업데이트할차례

• 방문횟수+1, 그리고승패결과값 𝑧𝑡을반영해야함

• 게임트리를거꾸로따라올라가며나오는엣지 𝑠, 𝑎 들을업데이트함• 𝑁𝑣 𝑠, 𝑎 ,𝑊𝑣 𝑠, 𝑎 값도 Evaluation단계의가치망결과값으로업데이트해줌.

• 𝑁𝑟 𝑠, 𝑎 ,𝑊𝑟 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 ,𝑊𝑣 𝑠, 𝑎 에의존하는 𝑄(𝑠, 𝑎)값도업데이트한다

𝑄 𝑠, 𝑎 = 1 − 𝜆𝑊𝑣 𝑠, 𝑎

𝑁𝑣 𝑠, 𝑎+ 𝜆

𝑊𝑟 𝑠, 𝑎

𝑁𝑟 𝑠, 𝑎

4/28/2016 알파고해부하기 3부 © 이동헌 32

Page 33: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 3단계: “Backup”• 제대로 𝑁𝑟 𝑠, 𝑎 ,𝑊𝑟(𝑠, 𝑎)를업데이트할차례

• 방문횟수+1, 그리고승패결과값 𝑧𝑡을반영해야함

• 게임트리를거꾸로따라올라가며나오는엣지 𝑠, 𝑎 들을업데이트함

• 모든업데이트는비동기적으로• Lock-free update: 트리노드memory space를동적으로할당후트리에붙임

• 오버헤드당연히있고, 완벽하지않지만, 경험적으로효과있는방법론임 [링크]

4/28/2016 알파고해부하기 3부 © 이동헌 33

Page 34: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 4단계: “Expansion”• 노드의엣지 (𝑠, 𝑎)가충분히많이선택되면, 그엣지로이어지는새로운노드 𝑠′를확장해서게임트리를키워나가는단계

• 실행조건: 𝑁𝑟 𝑠, 𝑎 > 𝑛𝑡ℎ𝑟• 𝑛𝑡ℎ𝑟은대기열에대기목록상태와 GPU 자원의운용상황에맞춰서동적으로조절

4/28/2016 알파고해부하기 3부 © 이동헌 34

Page 35: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 4단계: “Expansion”• 노드의엣지 (𝑠, 𝑎)가충분히많이선택되면, 그엣지로이어지는새로운노드 𝑠′를확장해서게임트리를키워나가는단계

• 실행조건: 𝑁𝑟 𝑠, 𝑎 > 𝑛𝑡ℎ𝑟• 𝑛𝑡ℎ𝑟은대기열에대기목록상태와 GPU 자원의운용상황에맞춰서동적으로조절

• 노드 𝑠′의 initialization은다음과같다.𝑁𝑟 𝑠′, 𝑎 = 0, 𝑁𝑣 𝑠′, 𝑎 = 0𝑊𝑟 𝑠′, 𝑎 = 0, 𝑊𝑣 𝑠′, 𝑎 = 0

𝑃 𝑠′, 𝑎 = 𝑝𝜏 𝑎 𝑠′

• 𝑝𝜏 𝑎 𝑠′ 는 tree policy. Roll-out policy보다조금더복잡하지만쉽게계산됨.

• 𝑄(𝑠′, 𝑎)은자연스럽게 0으로 init됨.

4/28/2016 알파고해부하기 3부 © 이동헌 35

Page 36: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 4단계: “Expansion”• 노드 𝑠′의 initialization후에하는일들

• 가치망사용해서 𝑁𝑣 𝑠′, 𝑎 ,𝑊𝑣 𝑠′, 𝑎 계산하기

• 𝑃 𝑠′, 𝑎 값을정책망사용해서제대로계산하기• Init단계에서둔값이 𝑃 𝑠′, 𝑎 = 𝑝𝜏 𝑎 𝑠′ 은임시값

• 이것을 𝑃 𝑠′, 𝑎 = 𝑝𝜎 𝑎 𝑠′ 로업데이트하는것이필요

4/28/2016 알파고해부하기 3부 © 이동헌 36

Page 37: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 4단계: “Expansion”• 노드 𝑠′의 initialization후에하는일들

• 가치망사용해서 𝑁𝑣 𝑠′, 𝑎 ,𝑊𝑣 𝑠′, 𝑎 계산하기

• 𝑃 𝑠′, 𝑎 값을정책망사용해서제대로계산하기• Init단계에서둔값이 𝑃 𝑠′, 𝑎 = 𝑝𝜏 𝑎 𝑠′ 은임시값

• 이것을 𝑃 𝑠′, 𝑎 = 𝑝𝜎 𝑎 𝑠′ 로업데이트하는것이필요

• 위업데이트들은비동기적으로일어남• 가치망은전에설명했듯이. 정책망도마찬가지로 queue사용

• Init이일어난직후의노드값들은정확하지않지만, 비동기적으로점차정확도향상됨

4/28/2016 알파고해부하기 3부 © 이동헌 37

Page 38: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 4단계: “Expansion”• 병목지점: GPU자원 (가치망, 정책망모두사용함)

• Init이된직후에는임시값들이많은데, 이를올바르게최대한빨리업데이트필요

• 비동기진행이므로, 이업데이트가빨리이루어질수록알파고성능이좋아짐

4/28/2016 알파고해부하기 3부 © 이동헌 38

Page 39: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 4단계: “Expansion”• 병목지점: GPU자원 (가치망, 정책망모두사용함)

• Init이된직후에는임시값들이많은데, 이를올바르게최대한빨리업데이트필요

• 비동기진행이므로, 이업데이트가빨리이루어질수록알파고성능이좋아짐

• 병목완화 / latency향상기법• GPU자원배분율과 queue상황고려해서 expansion 속도를조절

• 𝑛𝑡ℎ𝑟값동적조정

• Mini-batch를 1로사용• 모아두었다가실행하면예측이좀더안정적이겠지만, 일단 latency향상을위한선택

• 안정성에대한고려는별도로수선택하는단계에서해결하도록설계함

4/28/2016 알파고해부하기 3부 © 이동헌 39

Page 40: 알파고 해부하기 3부

알파고의대국시동작법

• APV-MCTS 알고리즘요약1. Search: 게임트리의끝까지적절하게타고내려오기

2. Evaluation: 트리끝의노드와엣지(바둑판상태와착수)의가치계산

3. Backup: 계산된값을게임트리에반영

4. Expansion: 필요하다면게임트리를확장

•기본적으로비동기분산형알고리즘• 여러컴퓨터를사용하는병렬처리버전으로자연스럽게구현가능

• 이세돌 9단과대국한알파고역시병렬처리버전

4/28/2016 알파고해부하기 3부 © 이동헌 40

Page 41: 알파고 해부하기 3부

알파고의대국시동작법

•대국시동작법부분의초점• 실제수선택이어떻게일어나는지?

1. 지금바둑판상태에서

2. 미래시뮬레이션을많이해본다 (APV-MCTS)

3. 그중가장많이선택된착수를선택한다

4/28/2016 알파고해부하기 3부 © 이동헌 41

Page 42: 알파고 해부하기 3부

알파고의대국시동작법

•대국시동작법부분의초점• 실제수선택이어떻게일어나는지?

1. 지금바둑판상태에서

2. 미래시뮬레이션을많이해본다 (APV-MCTS)

3. 그중가장많이선택된착수를선택한다

•시뮬레이션시 “가장많이” 선택된착수를선택해도되는이유?

4/28/2016 알파고해부하기 3부 © 이동헌 42

Page 43: 알파고 해부하기 3부

알파고의대국시동작법

•대국시동작법부분의초점• 실제수선택이어떻게? APV-MCTS동안가장많이고른착수선택.

•시뮬레이션시 “가장많이” 선택된착수를선택해도되는이유?• Search단계에서, 다음값을최대화하는착수를했기때문

𝑄 𝑠, 𝑎 + 𝑐𝑝𝑢𝑐𝑡𝑃(𝑠, 𝑎)σ𝑏𝑁𝑟(𝑠, 𝑏)

1 + 𝑁𝑟(𝑠, 𝑎)• 많이시뮬레이션하면앞부분만남고뒷부분은 0으로수렴

• 앞부분은승리/패배평균치. 클수록승리할확률이높음

4/28/2016 알파고해부하기 3부 © 이동헌 43

Page 44: 알파고 해부하기 3부

알파고의대국시동작법

•대국시동작법부분의초점• 실제수선택이어떻게? APV-MCTS동안가장많이고른착수선택.

•시뮬레이션시 “가장많이” 선택된착수를선택해도되는이유?• Search단계에서, 다음값을최대화하는착수를했기때문

𝑄 𝑠, 𝑎 + 𝑐𝑝𝑢𝑐𝑡𝑃(𝑠, 𝑎)σ𝑏𝑁𝑟(𝑠, 𝑏)

1 + 𝑁𝑟(𝑠, 𝑎)• 많이시뮬레이션하면앞부분만남고뒷부분은 0으로수렴

• 앞부분은승리/패배평균치. 클수록승리할확률이높음

• 승리할확신이높은선택을점차많이하도록 APV-MCTS가작동하기때문.

4/28/2016 알파고해부하기 3부 © 이동헌 44

Page 45: 알파고 해부하기 3부

알파고의대국시동작법

•대국시동작법부분의초점• 실제수선택이어떻게? APV-MCTS동안가장많이고른착수선택.

•시뮬레이션시 “가장많이” 선택된착수를선택하는게안된다면??

• 𝑄 𝑠, 𝑎 + 𝑐𝑝𝑢𝑐𝑡𝑃(𝑠, 𝑎)σ𝑏 𝑁𝑟(𝑠,𝑏)

1+𝑁𝑟(𝑠,𝑎)를최대화하는선택과

• 𝑄 𝑠, 𝑎 를최대화하는선택이다른경우임!

• 이러한불일치가일어난경우, 알파고는추가로시간을들여서 APV-MCTS를계속해보아불일치가해소되는것을유도하도록설계되어있음

4/28/2016 알파고해부하기 3부 © 이동헌 45

Page 46: 알파고 해부하기 3부

알파고의대국시동작법

•대국시동작법부분의초점• 실제수선택이어떻게? APV-MCTS동안가장많이고른착수선택.

• “기권”은언제?• 현재바둑판노드 𝑠𝐿에서가능한모든착수 𝑏들중에서

• 가장승리할가능성이높은착수 𝑎의승리가능성이 10% 미만일때

• AlphaGo resigns

• 즉, 현재바둑판 𝑠𝐿에서다음을만족할때기권하게됩니다.

max𝑏

𝑄 𝑠𝐿 , 𝑏 = 𝑄 𝑠𝐿 , 𝑎 < −0.8

4/28/2016 알파고해부하기 3부 © 이동헌 46

Page 47: 알파고 해부하기 3부

목차

•알파고의구조

•알파고소프트웨어의구성

•알파고 S/W의대국시동작법

•알파고 S/W의대국전트레이닝법

•알파고 S/W의혁신점

•알파고의혁신점

4/28/2016 알파고해부하기 3부 © 이동헌 47

Page 48: 알파고 해부하기 3부

알파고의대국전트레이닝법

•지금까지알파고의대국시동작법을살펴보았습니다

4/28/2016 알파고해부하기 3부 © 이동헌 48

Page 49: 알파고 해부하기 3부

알파고의대국전트레이닝법

•지금까지알파고의대국시동작법을살펴보았습니다

•이번 “대국전트레이닝법” 섹션의핵심질문:• 저렇게동작하기위해서필요한핵심요소들을어떻게만들것인가?

• 즉, 구조가아니라 (딥러닝구조는 1-2부에서이미다루었습니다), 그핵심요소들을사용가능하게셋팅하기위한절차는무엇인가?

4/28/2016 알파고해부하기 3부 © 이동헌 49

Page 50: 알파고 해부하기 3부

알파고의대국전트레이닝법

•지금까지알파고의대국시동작법을살펴보았습니다

•이번 “대국전트레이닝법” 섹션의핵심질문:• 저렇게동작하기위해서필요한핵심요소들을어떻게만들것인가?

• 즉, 구조가아니라 (딥러닝구조는 1-2부에서이미다루었습니다), 그핵심요소들을사용가능하게셋팅하기위한절차는무엇인가?

•다음세가지에초점을맞춥니다1. 정책망 𝑝𝜎(𝑎|𝑠)의 𝜎를어떻게찾았나?

2. 정책망 𝑝𝜌(𝑎|𝑠)의 𝜌를어떻게찾았나?

3. 가치망 𝑣𝜃(𝑠)의 𝜃를어떻게찾았나?

4/28/2016 알파고해부하기 3부 © 이동헌 50

Page 51: 알파고 해부하기 3부

알파고의대국전트레이닝법

1. 정책망 𝑝𝜎(𝑎|𝑠)의 𝜎를어떻게찾았나?

•데이터• KGS 기보

• 160,000 경기기보에서약 3천만개 (2940만개) 의 “바둑상황”

• KGS 6-9단레벨의인간플레이어간의경기만사용• 위경기들중 35.4%는접바둑

• “바둑상황”이란, 바둑판상황 𝑠그리고그때인간의착수 𝑎를같이고려한 (𝑠, 𝑎)

4/28/2016 알파고해부하기 3부 © 이동헌 51

Page 52: 알파고 해부하기 3부

알파고의대국전트레이닝법

1. 정책망 𝑝𝜎(𝑎|𝑠)의 𝜎를어떻게찾았나?

•데이터구성하기• KGS 기보

• 2940만개의 “바둑상황” (𝑠, 𝑎)

• 위 “바둑상황”에추가로• 면대칭, 점대칭바둑판구성을만들어넣음: 예시

• 1개의상황이 8개로늘어남

• 위 “바둑상황” 각각에 feature를미리계산• 47가지 binary feature

4/28/2016 알파고해부하기 3부 © 이동헌 52

Page 53: 알파고 해부하기 3부

알파고의대국전트레이닝법

1. 정책망 𝑝𝜎(𝑎|𝑠)의 𝜎를어떻게찾았나?

•머신러닝단계• 구성해놓은데이터셋에서첫 100만개를 test set, 나머지를 training set

• Training set에서

• 랜덤으로𝑚개의바둑상황을선택해서, minibatch 제작: 𝑠𝑘 , 𝑎𝑘𝑘=1

𝑚

• Minibatch 별로, 다음값을계산해서 𝜎에반영

Δ𝜎 =𝛼

𝑚

𝑘=1

𝑚𝜕 log 𝑝𝜎 𝑎𝑘|𝑠𝑘

𝜕𝜎

4/28/2016 알파고해부하기 3부 © 이동헌 53

Page 54: 알파고 해부하기 3부

알파고의대국전트레이닝법

1. 정책망 𝑝𝜎(𝑎|𝑠)의 𝜎를어떻게찾았나?

•머신러닝단계

Δ𝜎 =𝛼

𝑚

𝑘=1

𝑚𝜕 log 𝑝𝜎 𝑎𝑘|𝑠𝑘

𝜕𝜎

• 𝛼 = 0.003으로시작, 매 8천만번 Δ𝜎업데이트마다절반으로줄여나감

• 𝑚 = 16

• 현재에서 100회보다더이전의업데이트에서나온 gradient값(Δ𝜎)은무시• Deep Q Network에적용되었던기법임. 참고자료: [링크]

4/28/2016 알파고해부하기 3부 © 이동헌 54

Page 55: 알파고 해부하기 3부

알파고의대국전트레이닝법

1. 정책망 𝑝𝜎(𝑎|𝑠)의 𝜎를어떻게찾았나?

•머신러닝단계

Δ𝜎 =𝛼

𝑚

𝑘=1

𝑚𝜕 log 𝑝𝜎 𝑎𝑘|𝑠𝑘

𝜕𝜎

• GPU 50개동원, 3주간통산 3억4천만업데이트연산, 반영.

• 최종적으로나온 𝜎값으로 𝑝𝜎 𝑎 𝑠 셋업완료

4/28/2016 알파고해부하기 3부 © 이동헌 55

Page 56: 알파고 해부하기 3부

알파고의대국전트레이닝법

2. 정책망 𝑝𝜌(𝑎|𝑠)의 𝜌를어떻게찾았나?

•강화학습구성• 총합 10000 회차, 각회차별로 𝑛대국 (𝑛 = 128)

• 각회차별로, 𝑖번째대국을 𝑇𝑖수까지진행해나온승패결과 𝑧𝑡𝑖와함께

해당대국기보전체 (𝑠1𝑖 , 𝑎1

𝑖 , 𝑠2𝑖 , … , 𝑎

𝑇𝑖𝑖 )를데이터화

• 위데이터를사용하여 𝜌를다음과같이업데이트

Δ𝜌 =𝛼

𝑛

𝑖=1

𝑛

𝑡=1

𝑇𝑖

𝜕 log 𝑝𝜌 𝑎𝑡𝑖 |𝑠𝑡

𝑖

𝜕𝜌𝑧𝑡𝑖 − 𝑣(𝑠𝑡

𝑖)

4/28/2016 알파고해부하기 3부 © 이동헌 56

Page 57: 알파고 해부하기 3부

알파고의대국전트레이닝법

2. 정책망 𝑝𝜌(𝑎|𝑠)의 𝜌를어떻게찾았나?

•강화학습구성

Δ𝜌 =𝛼

𝑛

𝑖=1

𝑛

𝑡=1

𝑇𝑖

𝜕 log 𝑝𝜌 𝑎𝑡𝑖 |𝑠𝑡

𝑖

𝜕𝜌𝑧𝑡𝑖 − 𝑣(𝑠𝑡

𝑖)

• 1st pass에는 𝑣 𝑠 = 0사용. 2nd pass에는 𝑣 𝑠 = 𝑣𝜃 𝑠 사용.

• 𝛼는특별한설명없음 (𝑝𝜎때와동일할수도있음)

4/28/2016 알파고해부하기 3부 © 이동헌 57

Page 58: 알파고 해부하기 3부

알파고의대국전트레이닝법

2. 정책망 𝑝𝜌(𝑎|𝑠)의 𝜌를어떻게찾았나?

•강화학습진행• 제 1회차대국시에는정책망 𝑝𝜎끼리만대국

• 2회차이후부터는가장최근정책망 𝑝𝜌와다음상대방들이대국• 원래정책망 𝑝𝜎• 이전회차까지존재하던정책망 𝑝𝜌들

• 10000회차까지진행해서최종적으로업데이트되는 𝑝𝜌(𝑎|𝑠)로셋팅완료

• 50개의 GPU를사용, 1일간진행함

4/28/2016 알파고해부하기 3부 © 이동헌 58

Page 59: 알파고 해부하기 3부

알파고의대국전트레이닝법

3. 가치망 𝑣𝜃(𝑠)의 𝜃를어떻게찾았나?

•데이터구성하기• 목표: 3천만개의바둑판상황 𝑠와대국의최종결과 𝑧데이터 𝑠, 𝑧 구성

• 구성방법요약• 𝑝𝜌끼리 3천만대국진행, 결과 𝑧얻어냄

• 각대국별로딱한바둑판상황 𝑠를얻어냄

4/28/2016 알파고해부하기 3부 © 이동헌 59

Page 60: 알파고 해부하기 3부

알파고의대국전트레이닝법

3. 가치망 𝑣𝜃(𝑠)의 𝜃를어떻게찾았나?

•데이터구성하기• 3천만대국각각

• 대국시작전 1~480 사이의수하나 𝑛′을무작위로선택• 이수직전까지 𝑝𝜎로진행

• 이수의바둑판상황𝑠를사용하게됨

• 대국시작전 1~391 사이의수하나 𝑛′′을무작위로선택• 위단계가끝난뒤, 𝑛′′수만큼무작위착수정책으로바둑을진행

• 그뒤에는 𝑝𝜌로진행하여대국종료까지진행

• 대국종료되면승패를판별해서승리/패배결과값 𝑧를계산

4/28/2016 알파고해부하기 3부 © 이동헌 60

Page 61: 알파고 해부하기 3부

알파고의대국전트레이닝법

3. 가치망 𝑣𝜃(𝑠)의 𝜃를어떻게찾았나?

•머신러닝단계• 3천만개의바둑판상황 𝑠와대국의최종결과 𝑧데이터 𝑠, 𝑧 구성

• 𝑝𝜌끼리 3천만대국진행, 결과 𝑧얻어냄

• 각대국별로딱한바둑판상황 𝑠를얻어냄

• 첫 100만개를 test set으로, 나머지 2900만개를 training set으로설정

4/28/2016 알파고해부하기 3부 © 이동헌 61

Page 62: 알파고 해부하기 3부

알파고의대국전트레이닝법

3. 가치망 𝑣𝜃(𝑠)의 𝜃를어떻게찾았나?

•머신러닝단계• 3천만개의데이터 𝑠, 𝑧 를데이터로사용

• 첫 100만개를 test set으로, 나머지 2900만개를 training set으로설정

• 다음과같이 𝜃를업데이트

Δ𝜃 =𝛼

𝑚

𝑘=1

𝑚

𝑧𝑘 − 𝑣𝜃 𝑠𝑘𝜕𝑣𝜃 𝑠𝑘

𝜕𝜃

4/28/2016 알파고해부하기 3부 © 이동헌 62

Page 63: 알파고 해부하기 3부

알파고의대국전트레이닝법

3. 가치망 𝑣𝜃(𝑠)의 𝜃를어떻게찾았나?

•머신러닝단계

Δ𝜃 =𝛼

𝑚

𝑘=1

𝑚

𝑧𝑘 − 𝑣𝜃 𝑠𝑘𝜕𝑣𝜃 𝑠𝑘

𝜕𝜃

• 𝛼 = 0.003으로시작, 매 8천만번 Δ𝜃업데이트마다절반으로줄여나감

• 𝑚 = 32

• 현재에서 100회보다더이전의업데이트에서나온 gradient값(Δ𝜃)은무시

4/28/2016 알파고해부하기 3부 © 이동헌 63

Page 64: 알파고 해부하기 3부

알파고의대국전트레이닝법

3. 가치망 𝑣𝜃(𝑠)의 𝜃를어떻게찾았나?

•머신러닝단계

Δ𝜃 =𝛼

𝑚

𝑘=1

𝑚

𝑧𝑘 − 𝑣𝜃 𝑠𝑘𝜕𝑣𝜃 𝑠𝑘

𝜕𝜃

• GPU 50개동원, 1주간통산 5천만업데이트연산, 반영.

• 최종적으로나온 𝜃값으로 𝑣𝜃(𝑠)셋업완료

4/28/2016 알파고해부하기 3부 © 이동헌 64

Page 65: 알파고 해부하기 3부

알파고의대국전트레이닝법

•지금까지알파고대국프로그램작동에필요한다음핵심요소들의구체적인셋팅법을다루었습니다

1. 정책망 𝑝𝜎(𝑎|𝑠)의 𝜎를어떻게찾았나?

2. 정책망 𝑝𝜌(𝑎|𝑠)의 𝜌를어떻게찾았나?

3. 가치망 𝑣𝜃(𝑠)의 𝜃를어떻게찾았나?

•각셋팅법들의세부적의의및해석은생략합니다• 여기선알파고작동및구성법을명확히제시하는것이목표!

• 더깊이알고싶으시다면요청해주세요• [email protected]

4/28/2016 알파고해부하기 3부 © 이동헌 65

Page 66: 알파고 해부하기 3부

목차

•알파고의구조

•알파고소프트웨어의구성

•알파고 S/W의대국시동작법

•알파고 S/W의대국전트레이닝법

•알파고 S/W의혁신점

•알파고의혁신점

4/28/2016 알파고해부하기 3부 © 이동헌 66

Page 67: 알파고 해부하기 3부

알파고의혁신점

4/28/2016 알파고해부하기 3부 © 이동헌 67

Page 68: 알파고 해부하기 3부

알파고의혁신점 (집단지성으로!)

•독자여러분들의의견을수렴하고싶습니다

4/28/2016 알파고해부하기 3부 © 이동헌 68

Page 69: 알파고 해부하기 3부

알파고의혁신점 (집단지성으로!)

•독자여러분들의의견을수렴하고싶습니다

• 하나의관점만으로알파고의혁신점을모두다룰수없다고봅니다..

• 다양한관점에서바라본알파고의혁신점에대해서모으고싶습니다

• 피드백수렴후에필로그슬라이드로정리해공유하겠습니다

•피드백은 [email protected] 으로부탁드립니다!

4/28/2016 알파고해부하기 3부 © 이동헌 69

Page 70: 알파고 해부하기 3부

끝맺으며

• “알파고해부하기” 1, 2, 3부에서살펴본내용은다음과같습니다• 1부 [링크]

• 알파고의구조• 알파고소프트웨어의구성 (바둑판인식부까지)

• 2부 [링크]• 알파고소프트웨어의구성 (나머지내용)

• 3부• 알파고 S/W의대국시동작법• 알파고 S/W의대국전트레이닝법

• 이것으로 “알파고해부하기”를 3부작으로마무리합니다• 알파고논문을보다많은분들이이해하는데도움이될수있기를바랍니다

4/28/2016 알파고해부하기 3부 © 이동헌 70

Page 71: 알파고 해부하기 3부

끝맺으며

•읽으시느라수고하셨습니다!

•추가설명요청이나내용오류지적등의피드백은마음껏다음주소로부탁드립니다• [email protected]

4/28/2016 알파고해부하기 3부 © 이동헌 71