SlideShare a Scribd company logo
알파고 해부하기
2부
이동헌
donghun2014@gmail.com
이어서 시작하면서
• 알파고 해부하기 1부에서 이어지는 게시물입니다
• 예상 독자층은 알파고의 원리를 정확히 알고 싶어하는 분들
• 프로그래밍, 딥러닝, 머신러닝 연구자분들 포함입니다
• “프로그래머를 위한 알파고”로 생각해주세요..
• 내용이 어렵다면 “쉬운” 알파고 게시물도 있어요
1. 모두의 알파고
2. 바둑인들을 위한 알파고
3/16/2016 알파고 해부하기 2부 © 이동헌 2
당부말씀
• 정확성을 최우선가치로 씁니다
• 정확하지 않은 내용을 찾으시면 꼭! 피드백 부탁드립니다
• donghun2014@gmail.com
• 내용의 한 부분만 뚝 잘라서 인용하시면 위험합니다
• 정확한 내용들이 보통 그렇듯이, 부분을 잘라내면 뜻이 달라질 수 있어요
3/16/2016 알파고 해부하기 2부 © 이동헌 3
1부까지의 진행상황
• 알파고의 구조
• 알파고 소프트웨어의 구성
• 알파고 S/W 구성: Deep Learning 유관 부분
• 바둑판 인식 프로그램
• 알파고 S/W의 대국시 동작법
• 알파고 S/W의 대국 전 트레이닝법
• 알파고 S/W의 혁신점
• 알파고의 혁신점
3/16/2016 알파고 해부하기 2부 © 이동헌 4
목차
• 알파고의 구조
• 알파고 소프트웨어의 구성
• 알파고 S/W 구성: Deep Learning 유관 부분
• 알파고 S/W 구성: Reinforcement Learning 유관 부분
• 알파고 S/W 구성: Monte-Carlo Tree Search 유관 부분
• 알파고 S/W의 대국시 동작법
• 알파고 S/W의 대국 전 트레이닝법
• 알파고 S/W의 혁신점
• 알파고의 혁신점
3/16/2016 알파고 해부하기 2부 © 이동헌 5
알파고 S/W 구성: Deep Learning
• 먼저 가능한 모든 바둑판 공간을 정의합니다
• 바둑판을 19x19 행렬로 봅시다
• 자연스러운 생각이라면, 행렬에 넣을 수 있는 원소는 {흑, 백, 빈칸}중 하나
• 하지만 컴퓨터는 0/1로 보는게 제일 좋습니다
• 그래서 위의 상황을
• “흑돌” 바둑판 19x19 행렬 (0이면 흑돌이 없고, 1이면 놓인)
• “백돌” 바둑판 19x19 행렬 (0이면 백돌이 없고, 1이면 놓인)
• “빈칸” 바둑판 19x19 행렬 (0이면 뭔가 돌이 있고, 1이면 빈칸인)
• 이렇게 3개 층을 쌓은 19x19x3 텐서 로 만듭니다
• (텐서는 개념상 2차원 이상의 행렬로 생각하면 됩니다)
3/16/2016 알파고 해부하기 2부 © 이동헌 6
알파고 S/W 구성: Deep Learning
• 여기에 추가로 feature를 집어넣습니다
• 기존 흑/백/빈칸에 추가로
• 19x19 행렬 원소별로, 주어진 칸에
3/16/2016 알파고 해부하기 2부 © 이동헌 7
알파고 S/W 구성: Deep Learning
• 여기에 추가로 feature를 집어넣습니다
• 기존 흑/백/빈칸에 추가로
• 19x19 행렬 원소별로, 주어진 칸에
• 그냥 상수 1 (“그 칸 고유의 특성”을 모델링)
• 돌이 있다면, 몇 수 전에 놓였는지 (최소 1, 최대 8) (길이8의 binary array)
• 연결된 말의 현재 활로가 몇개인지 (최소 1, 최대 8)
• 상대가 돌을 놓는다면 내가 잃을 돌의 수 (최소 1, 최대 8)
• 내가 돌을 놓는다면 그 돌에 연결된 말의 활로가 몇 개가 될지 (최소 1, 최대 8)
• 내가 돌을 놓는다면, 내가 축을 만드는데 성공할지
• 내가 돌을 놓는다면, 내가 축을 탈출하는데 성공할지
• 돌을 놓는것이 바둑의 규칙에 어긋나는지
• 내가 흑돌인지 백돌인지 (이건 Value Network (판세분석) 에만 쓰입니다)
(알파고 논문에 나온 Extended Data Table 2 참조)
3/16/2016 알파고 해부하기 2부 © 이동헌 8
알파고 S/W 구성: Deep Learning
• 여기에 추가로 feature를 집어넣습니다
• 기존 흑/백/빈칸에 추가로
• 19x19 행렬 원소별로, 주어진 칸에
• 이것저것, 도합 48개의 binary input
• 바둑판 각 칸별로 길이 48의 binary array로 구성된 feature가 됩니다
• (Policy Network는 48, Value Network는 49)
• 바둑판이 19x19 행렬이니,
• 이렇게 만들어진 Deep Learning input은 19x19x48 텐서.
• Value Network는 19x19x49
3/16/2016 알파고 해부하기 2부 © 이동헌 9
알파고 S/W 구성: Deep Learning
• Input 텐서
• Policy Network (다음 수 예측) 용도와 Value Network (판세예측) 용도에
따라 feature가 조금 다릅니다
3/16/2016 알파고 해부하기 2부 © 이동헌 10
알파고 S/W 구성: Deep Learning
• Input 텐서
• Policy Network (다음 수 예측) 용도와 Value Network (판세예측) 용도에
따라 feature가 조금 다릅니다
• Output
• 당연히 Policy Network와 Value Network가 다릅니다
• Policy Network의 경우, 𝑃(𝑎|𝑠)
• “바둑판 s가 주어질 때, 다음 착수가 a일 확률값”
• Value Network의 경우, 𝐸 𝑧𝑡 𝑠𝑡 = 𝑠, 𝑎 𝑡…𝑇~𝑝]
• “바둑판 s가 주어질 때, 바둑기사 양쪽 모두 착수전략 p를 따라 대국종료까지
두었을때, 게임 기대값 (z가 -1(패)이나 1(승)이므로, 0이면 50:50 비등비등 상황임”
3/16/2016 알파고 해부하기 2부 © 이동헌 11
알파고 S/W 구성: Deep Learning
• 각 모듈별 내부구조를 설명하기 전에…
• 지금까지 설명한 부분을 요약한다면
• Policy Network (다음 수 예측)과 Value Network (판세예측) 양쪽에 공통인
• “바둑판 상황 인식” 프로그램
• 에 해당하는 Deep Learning 부분입니다. Input 부분을 중점으로 다뤘지요.
3/16/2016 알파고 해부하기 2부 © 이동헌 12
알파고 S/W 구성: Deep Learning
• 각 모듈별 내부구조를 설명하기 전에…
• 지금까지 설명한 부분을 요약한다면
• Policy Network (다음 수 예측)과 Value Network (판세예측) 양쪽에 공통인
• “바둑판 상황 인식” 프로그램
• 에 해당하는 Deep Learning 부분입니다. Input 부분을 중점으로 다뤘지요.
• 이제부터
• Policy Network
• Value Network
양쪽에 사용된 CNN (Convolutional Neural Network) 구조를 설명합니다
3/16/2016 알파고 해부하기 2부 © 이동헌 13
알파고 소프트웨어의 구성
• Policy Network
• Deep Learning과
• Reinforcement Learning의
• 적절한 만남!
알파고 바둑 프로그램
바둑판 미래
예측 시도
여러 번 미래예측 후 가장 많이 둔 수로 선택
RL
MCTS RL
MCTS
RL
바둑판 현상황 인식 프로그램DL
3/16/2016 알파고 해부하기 2부 © 이동헌 14
바둑경기
상황
유/불리
분석
프로그램
DL RL
상대 바둑기사
다음 수
예측 프로그램
알파고의
다음 수
결정 프로그램
DL DLRL RL
알파고 S/W 구성: “Policy Network”
• Policy Network: 19x19행렬의 48층짜리 input을…
• 제 1층은 5x5 filter 192종으로, stride 1로 convolution
• 하기 위해서, 상하좌우 언저리로 0으로 채워진 2행 2열씩 추가
• 23x23 행렬로 만들어서 2D convolution
• ReLU 유닛 사용
3/16/2016 알파고 해부하기 2부 © 이동헌 15
알파고 S/W 구성: “Policy Network”
• Policy Network: 19x19행렬의 48층짜리 input을…
• 제 1층은 5x5 filter 192종으로, stride 1로 convolution
• 하기 위해서, 상하좌우 언저리로 0으로 채워진 2행 2열씩 추가
• 23x23 행렬로 만들어서 2D convolution
• ReLU 유닛 사용
• 제 2~12층은 3x3 filter 192종으로, stride 1로 convolution
• 하기 위해서, 상하좌우 언저리로 0으로 채워진 1행 1열씩 추가
• 21x21 행렬로 만들어서 2D convolution
• ReLU 유닛 사용
3/16/2016 알파고 해부하기 2부 © 이동헌 16
알파고 S/W 구성: “Policy Network”
• Policy Network: 19x19행렬의 48층짜리 input을…
• 제 1층은 5x5 filter 192종으로, stride 1로 convolution
• 하기 위해서, 상하좌우 언저리로 0으로 채워진 2행 2열씩 추가
• 23x23 행렬로 만들어서 2D convolution
• ReLU 유닛 사용
• 제 2~12층은 3x3 filter 192종으로, stride 1로 convolution
• 하기 위해서, 상하좌우 언저리로 0으로 채워진 1행 1열씩 추가
• 21x21 행렬로 만들어서 2D convolution
• ReLU 유닛 사용
• 제 13층은 특별한 필터 없이 1:1 대응으로
• 각 위치별 bias를 다르게 해서
• Softmax 유닛 사용
3/16/2016 알파고 해부하기 2부 © 이동헌 17
알파고 S/W 구성: “Policy Network”
• Policy Network: 19x19행렬의 48층짜리 input을…
• 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU
• 제 2~12층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU
• 제 13층은 특별한 필터 없이 1:1대응 softmax
• 위 구조를 선택한 (이론적) 이유를 헤아려보려면?
• 기본적으로 Convolutional Neural Network (CNN) 공부필요
• CNN 설명자료는 인터넷에 많습니다
3/16/2016 알파고 해부하기 2부 © 이동헌 18
알파고 S/W 구성: “Policy Network”
• Policy Network: 19x19행렬의 48층짜리 input을…
• 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU
• 제 2~12층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU
• 제 13층은 특별한 필터 없이 1:1대응 softmax
• ReLU를 사용하는 이유?
• 이론적: Vanishing gradient 문제가 없음
• 종전 neural net에 자주 쓰이던 sigmoid 계열 함수의 경우 이 문제가 있지요
• 실험적: Deep network에서 실험적 효과 좋음 (효율성 측면)
• 실제로 잘 된다고 보고된 바가 많다니 선택의 근거로 인정합니다..
3/16/2016 알파고 해부하기 2부 © 이동헌 19
• Policy Network: 19x19행렬의 48층짜리 input을…
• 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU
• 제 2~12층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU
• 제 13층은 특별한 필터 없이 1:1대응 softmax
• 근데 왜 뜬금없는 softmax 함수 
• State의 가치값Q으로 a를 결정하는 방법 중 하나: softmax함수 사용
• 참고문헌: Humprey 1999. 박사논문 [바로가기] 25페이지
• Policy Network output이 𝑃(𝑎|𝑠) 이므로 이것에 맞춘 형태
• “바둑판 s가 주어질 때, 다음 착수가 a일 확률값”
• Reinforcement Learning의 영향
알파고 S/W 구성: “Policy Network”
3/16/2016 알파고 해부하기 2부 © 이동헌 20
알파고 소프트웨어의 구성
• Value Network
• Deep Learning과
• Reinforcement Learning을
• 살짝 다르게 접합
알파고 바둑 프로그램
상대 바둑기사
다음 수
예측 프로그램
알파고의
다음 수
결정 프로그램
바둑판 미래
예측 시도
여러 번 미래예측 후 가장 많이 둔 수로 선택
DL DLRL RL
RL
MCTS RL
MCTS
RL
바둑판 현상황 인식 프로그램DL
3/16/2016 알파고 해부하기 2부 © 이동헌 21
바둑경기
상황
유/불리
분석
프로그램
DL RL
알파고 S/W 구성: “Value Network”
• Value Network: 19x19행렬의 49층짜리 input을…
• 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU
• 제 2~11층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU
3/16/2016 알파고 해부하기 2부 © 이동헌 22
이 부분은 Policy Network와 동일구조 사용
알파고 S/W 구성: “Value Network”
• Value Network: 19x19행렬의 49층짜리 input을…
• 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU
• 제 2~11층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU
• 제 12층은 “additional convolution layer” (추가정보 없음..)
• 제 13층은 특별한 필터 없이 1:1대응 (사용된 function정보없음)
3/16/2016 알파고 해부하기 2부 © 이동헌 23
논문이 제대로 설명해주지 않는 부분..
알파고 S/W 구성: “Value Network”
• Value Network: 19x19행렬의 49층짜리 input을…
• 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU
• 제 2~11층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU
• 제 12층은 “additional convolution layer” (추가정보 없음..)
• 제 13층은 특별한 필터 없이 1:1대응 (사용된 function정보없음)
• 제 14층은 256개의 ReLU 유닛, fully connected linear
• Output은 1개의 tanh 유닛, fully connected linear
3/16/2016 알파고 해부하기 2부 © 이동헌 24
Value Network에
Deep Learning 적용하기 위해
특화한 구조부분
알파고 S/W 구성: “Value Network”
• Value Network: 19x19행렬의 49층짜리 input을…
• 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU
• 제 2~11층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU
• 제 12층은 “additional convolution layer” (추가정보 없음..)
• 제 13층은 특별한 필터 없이 1:1대응 (사용된 function정보없음)
• 제 14층은 256개의 ReLU 유닛, fully connected linear
• Output은 1개의 tanh 유닛, fully connected linear
3/16/2016 알파고 해부하기 2부 © 이동헌 25
알파고 S/W 구성: “Value Network”
• Value Network: 19x19행렬의 49층짜리 input을…
• 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU
• 제 2~11층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU
• 제 12층은 “additional convolution layer” (추가정보 없음..)
• 제 13층은 특별한 필터 없이 1:1대응 (사용된 function정보없음)
• 제 14층은 256개의 ReLU 유닛, fully connected linear
• Output은 1개의 tanh 유닛, fully connected linear
• 엄청난 최적화공밀레의 현장을 발굴하고 있습니다!!
• 여담이지만.. 엔지니어분들의 노고는 최종 산출물만으로 계산하면 안될 일입니다
• 딥러닝 사용자 및 연구자분들(회사/대학원 불문)의 몸/마음고생 좀 덜어주세요…
3/16/2016 알파고 해부하기 2부 © 이동헌 26
• Value Network: 19x19행렬의 49층짜리 input을…
• 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU
• 제 2~11층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU
• 제 12층은 “additional convolution layer” (추가정보 없음..)
• 제 13층은 특별한 필터 없이 1:1대응 (사용된 function정보없음)
• 제 14층은 256개의 ReLU 유닛, fully connected linear
• Output은 1개의 tanh 유닛, fully connected linear
알파고 S/W 구성: “Value Network”
3/16/2016 알파고 해부하기 2부 © 이동헌 27
• Value Network: 19x19행렬의 49층짜리 input을…
• 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU
• 제 2~11층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU
• 제 12층은 “additional convolution layer” (추가정보 없음..)
• 제 13층은 특별한 필터 없이 1:1대응 (사용된 function정보없음)
• 제 14층은 256개의 ReLU 유닛, fully connected linear
• Output은 1개의 tanh 유닛, fully connected linear
• Value Network에 맞춰주기 위한 선택: 1개의 tanh 유닛 
• Value Network의 경우, 𝐸 𝑧𝑡 𝑠𝑡 = 𝑠, 𝑎 𝑡…𝑇~𝑝]
• “바둑판 s가 주어질 때, 바둑기사 양쪽 모두 착수전략 p를 따라 대국종료까지 두었을때,
게임 기대값 (z가 -1(패)이나 1(승)이므로, 0이면 50:50 비등비등 상황임”
알파고 S/W 구성: “Value Network”
3/16/2016 알파고 해부하기 2부 © 이동헌 28
알파고 S/W 구성: DL, Policy Net, Value Net
• 요약합니다
• Deep Learning (DL) 적용부
• 핵심 적용부분
• 바둑판 상황인식 모듈
• 양쪽에 모듈로 사용
• Policy Network
• 알파고 다음수 결정
• 바둑기사 다음수 결정
• Value Network
• 바둑판세 파악
알파고 바둑 프로그램
바둑판 미래
예측 시도
여러 번 미래예측 후 가장 많이 둔 수로 선택
RL
MCTS RL
MCTS
RL
3/16/2016 알파고 해부하기 2부 © 이동헌 29
상대 바둑기사
다음 수
예측 프로그램
알파고의
다음 수
결정 프로그램
DL DLRL RL
바둑경기
상황
유/불리
분석
프로그램
DL RL
바둑판 현상황 인식 프로그램DL
목차
• 알파고의 구조
• 알파고 소프트웨어의 구성
• 알파고 S/W 구성: Deep Learning 유관 부분
• 알파고 S/W 구성: Reinforcement Learning 유관 부분
• 알파고 S/W 구성: Monte-Carlo Tree Search 유관 부분
• 알파고 S/W의 대국시 동작법
• 알파고 S/W의 대국 전 트레이닝법
• 알파고 S/W의 혁신점
• 알파고의 혁신점
3/16/2016 알파고 해부하기 2부 © 이동헌 30
알파고 S/W 구성: Reinforcement Learning
• Reinforcement Learning (RL)?
• 전반적으로 고루 적용되어 적용부
하나하나 나누기가 힘듭니다
• 지금까지 나온 RL 적용부
• DL을 전체 틀에 접합하는
이론적 근거/토대
• (나름) 합리적인 접합법 제시
• RL 적용부는 계속됩니다
• 나올 때마다 설명예정
알파고 바둑 프로그램
바둑판 미래
예측 시도
여러 번 미래예측 후 가장 많이 둔 수로 선택
RL
MCTS RL
MCTS
RL
3/16/2016 알파고 해부하기 2부 © 이동헌 31
상대 바둑기사
다음 수
예측 프로그램
알파고의
다음 수
결정 프로그램
DL DLRL RL
바둑경기
상황
유/불리
분석
프로그램
DL RL
바둑판 현상황 인식 프로그램DL
알파고 소프트웨어의 구성
• 다음 차례: MCTS 적용부
• 핵심: 바둑판 미래예측
• 여기에도 RL 포함
알파고 바둑 프로그램
RL
3/16/2016 알파고 해부하기 2부 © 이동헌 32
상대 바둑기사
다음 수
예측 프로그램
알파고의
다음 수
결정 프로그램
DL DLRL RL
바둑경기
상황
유/불리
분석
프로그램
DL RL
바둑판 현상황 인식 프로그램DL
바둑판 미래
예측 시도
MCTS RL
여러 번 미래예측 후 가장 많이 둔 수로 선택
RLMCTS
목차
• 알파고의 구조
• 알파고 소프트웨어의 구성
• 알파고 S/W 구성: Deep Learning 유관 부분
• 알파고 S/W 구성: Reinforcement Learning 유관 부분
• 알파고 S/W 구성: Monte-Carlo Tree Search 유관 부분
• 알파고 S/W의 대국시 동작법
• 알파고 S/W의 대국 전 트레이닝법
• 알파고 S/W의 혁신점
• 알파고의 혁신점
3/16/2016 알파고 해부하기 2부 © 이동헌 33
알파고 소프트웨어의 구성
• Monte-Carlo Tree Search
• Tree Search의 개량판
• 전자바둑계의 최신트렌드
• 알파고가 나오기 전까지..
알파고 바둑 프로그램
RL
3/16/2016 알파고 해부하기 2부 © 이동헌 34
상대 바둑기사
다음 수
예측 프로그램
알파고의
다음 수
결정 프로그램
DL DLRL RL
바둑경기
상황
유/불리
분석
프로그램
DL RL
바둑판 현상황 인식 프로그램DL
바둑판 미래
예측 시도
MCTS RL
여러 번 미래예측 후 가장 많이 둔 수로 선택
RLMCTS
알파고 S/W 구성: MCTS
• 게임 전략에서의 Tree Search를 말하자면
• 그냥 가능한 것 다 해보고 제일 좋은걸 골라보자는 겁니다
• 말이 쉽지.. 너무너무 가짓수가 많아서 컴퓨터로도 도저히 불가능한 게 있습니다
• 이것의 대표적인 예가 바둑입니다
• 한 수 한 수 놓을 수 있는게 너무 갯수가 많은데, 게임 끝까지 모든 가능한 기보 숫자는…
• “경우의 수가 우주의 원자수보다 많다” 이런 말이 여기서 나옵니다
3/16/2016 알파고 해부하기 2부 © 이동헌 35
알파고 S/W 구성: MCTS
• 게임 전략에서의 Tree Search를 말하자면
• 그냥 가능한 것 다 해보고 제일 좋은걸 골라보자는 겁니다
• 말이 쉽지.. 너무너무 가짓수가 많아서 컴퓨터로도 도저히 불가능한 게 있습니다
• 이것의 대표적인 예가 바둑입니다
• 한 수 한 수 놓을 수 있는게 너무 갯수가 많은데, 게임 끝까지 모든 가능한 기보 숫자는…
• “경우의 수가 우주의 원자수보다 많다” 이런 말이 여기서 나옵니다
• 그러면, 다 해보기보단, “쓸만한 것부터” 해보자
• “쓸만한 것 …” + “… 부터 해보자”: 이 두 부분이 MCTS의 핵심입니다
• Monte-Carlo Tree Search에 대한 구체적 설명은 이미 많이 되어 있습니다
• MCTS 이론설명은 다른 분들이 수고하신 자료에 맡기고
• 바로 알파고 해부를 하면서, 이론은 그때그때 필요한만큼만 설명하겠습니다
3/16/2016 알파고 해부하기 2부 © 이동헌 36
알파고 S/W 구성: MCTS
• 쓸만한 것 “부터 해보자”
• 모든 걸 닥치고 다 해보는게 하는게 불가능하니
• 조금만 해서 많이 알 수 없을까?
• 무엇부터 해 보는게 좋을까?
• 흔히들 알고있는 Alpha-beta pruning은 “해도 안될건 하지말자” 개량입니다
3/16/2016 알파고 해부하기 2부 © 이동헌 37
알파고 S/W 구성: MCTS
• 쓸만한 것 “부터 해보자”
• 모든 걸 닥치고 다 해보는게 하는게 불가능하니
• 조금만 해서 많이 알 수 없을까?
• 무엇부터 해 보는게 좋을까?
• 흔히들 알고있는 Alpha-beta pruning은 “해도 안될건 하지말자” 개량입니다
• 이렇게 하다보면, 언젠가는 정답이 나올까?
• 이런 이론적 근거가 있으면 더 해볼 만 하겠죠?
• 하지만 이 이야기는 조금 뒤로 미뤄두고
• 일단 Tree Search에서 당장 뭘 해볼지 고르는 부분부터 봅시다.
3/16/2016 알파고 해부하기 2부 © 이동헌 38
알파고 S/W 구성: MCTS
• 알파고의 바둑게임 Search Tree 구성
• 바둑판의 구성 s, 다음 둘 수 a 를 동시에 고려해서
• 첫 차례라면,
• 바둑판 구성 s는 앞에서 설명했듯이 19x19x48 텐서 (binary). 모두 빈칸 셋팅.
• 다음 수는 어디든 둘 수 있으니 19x19 가지의 a 중 하나
3/16/2016 알파고 해부하기 2부 © 이동헌 39
알파고 S/W 구성: MCTS
• 알파고의 바둑게임 Search Tree 구성
• 바둑판의 구성 s, 다음 둘 수 a 를 동시에 고려해서
• 첫 차례라면,
• 바둑판 구성 s는 앞에서 설명했듯이 19x19x48 텐서 (binary). 모두 빈칸 셋팅.
• 다음 수는 어디든 둘 수 있으니 19x19 가지의 a 중 하나
• (s,a)를 정합니다
• 첫 차례라면 s는 정해져 있고, 19x19가지의 a가 있으니, 19x19가지의 (s,a)입니다
3/16/2016 알파고 해부하기 2부 © 이동헌 40
알파고 S/W 구성: MCTS
• 알파고의 바둑게임 Search Tree 구성
• 바둑판의 구성 s, 다음 둘 수 a 를 동시에 고려해서
• 첫 차례라면,
• 바둑판 구성 s는 앞에서 설명했듯이 19x19x48 텐서 (binary). 모두 빈칸 셋팅.
• 다음 수는 어디든 둘 수 있으니 19x19 가지의 a 중 하나
• (s,a)를 정합니다
• 첫 차례라면 s는 정해져 있고, 19x19가지의 a가 있으니, 19x19가지의 (s,a)입니다
• 각각의 (s,a)에 대해서 다음 값들이 저장되어 있습니다
• 𝑃 𝑠, 𝑎
• 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎
• 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎
• 𝑄 𝑠, 𝑎
3/16/2016 알파고 해부하기 2부 © 이동헌 41
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대해 저장된 값 설명
• 𝑃 𝑠, 𝑎
• 착수 a를 해 보지 않고도, 미리 선험적으로 알고 있는 값. (당연히 튜닝값입니다)
• 저 아래에 있는 𝑄 𝑠, 𝑎 와 단위가 같습니다
• (물리 문제 풀때의 그 m/s 맞추는 개념의 그 단위)
• 저 𝑄 𝑠, 𝑎 값과 균형을 맞추는 역할을 나중에 담당합니다
• 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎
• 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎
• 𝑄 𝑠, 𝑎
3/16/2016 알파고 해부하기 2부 © 이동헌 42
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대해 저장된 값 설명
• 𝑃 𝑠, 𝑎
• 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎
• 착수 a를 한다고 결정한 Monte-Carlo 시뮬레이션 횟수
• v가 달린 것은 판세분석 경로가 된 횟수, r이 달린것은 미래예측 경로가 된 횟수
• 이 부분의 자세한 내용은 추후 알파고의 대국시 작동원리 부분에서 다루어집니다
• 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎
• 𝑄 𝑠, 𝑎
3/16/2016 알파고 해부하기 2부 © 이동헌 43
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대해 저장된 값 설명
• 𝑃 𝑠, 𝑎
• 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎
• 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎
• 착수 a를 한다고 하고, Monte-Carlo 시뮬레이션 한 결과 나온 승리/패배 횟수의 합
• v가 달린 것은 판세분석 경로에서 나온 누적 합, r이 달린것은 미래예측 경로쪽 누적 합.
• 이 부분의 자세한 내용은 추후 알파고의 대국시 작동원리 부분에서 다루어집니다
• 𝑄 𝑠, 𝑎
3/16/2016 알파고 해부하기 2부 © 이동헌 44
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대해 저장된 값 설명
• 𝑃 𝑠, 𝑎
• 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎
• 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎
• 𝑄 𝑠, 𝑎
• 이 값의 의미를 어렵게 적으면 (알파고 논문에 이렇게 적어놨죠) 다음과 같습니다
𝑄 𝑠, 𝑎 = 1 − 𝜆
𝑊𝑣(𝑠, 𝑎)
𝑁𝑣(𝑠, 𝑎)
+ 𝜆
𝑊𝑟(𝑠, 𝑎)
𝑁𝑟(𝑠, 𝑎)
• 알파고 논문에서 “𝜆 = 0.5를 쓰니 제일 성능이 좋아서 이걸로 쓰겠다”고 합니다
3/16/2016 알파고 해부하기 2부 © 이동헌 45
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대해 저장된 값 설명
• 𝑃 𝑠, 𝑎
• 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎
• 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎
• 𝑄 𝑠, 𝑎
• 이 값의 의미를 어렵게 적으면 (알파고 논문에 이렇게 적어놨죠) 다음과 같습니다
𝑄 𝑠, 𝑎 = 1 − 𝜆
𝑊𝑣(𝑠, 𝑎)
𝑁𝑣(𝑠, 𝑎)
+ 𝜆
𝑊𝑟(𝑠, 𝑎)
𝑁𝑟(𝑠, 𝑎)
• 알파고 논문에서 “𝜆 = 0.5를 쓰니 제일 성능이 좋아서 이걸로 쓰겠다”고 합니다
• 쉽게 말해, 판세분석과 미래예측 두 모듈의 승/패 시뮬레이션확률의 1:1 선형합
3/16/2016 알파고 해부하기 2부 © 이동헌 46
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대해 저장된 값 설명
• 𝑃 𝑠, 𝑎
• 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎
• 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎
• 𝑄 𝑠, 𝑎
• 이 값의 의미를 어렵게 적으면 (알파고 논문에 이렇게 적어놨죠) 다음과 같습니다
𝑄 𝑠, 𝑎 = 1 − 𝜆
𝑊𝑣(𝑠, 𝑎)
𝑁𝑣(𝑠, 𝑎)
+ 𝜆
𝑊𝑟(𝑠, 𝑎)
𝑁𝑟(𝑠, 𝑎)
• 알파고 논문에서 “𝜆 = 0.5를 쓰니 제일 성능이 좋아서 이걸로 쓰겠다”고 합니다
• 쉽게 말해, 판세분석과 미래예측 두 모듈의 승/패 시뮬레이션확률의 1:1 선형합
• 더 쉽게 말해, 착수 a의 승/패 예측치 두 종류의 평균값
3/16/2016 알파고 해부하기 2부 © 이동헌 47
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대해 저장된 아래 값들이 있다고 합시다
• 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎
• 쓸만한 것 “부터 해보자”
3/16/2016 알파고 해부하기 2부 © 이동헌 48
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대해 저장된 아래 값들이 있다고 합시다
• 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎
• 쓸만한 것 “부터 해보자”
• 지금 현재 바둑판을 𝑠𝑡라 할때
• 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a “부터 해보자”
3/16/2016 알파고 해부하기 2부 © 이동헌 49
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대해 저장된 아래 값들이 있다고 합시다
• 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎
• 쓸만한 것 “부터 해보자”
• 지금 현재 바둑판을 𝑠𝑡라 할때
• 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a “부터 해보자”
• 여기서 새로 튀어나온 u라는 것을 논하기 전에..
• 지금까지 설명한걸 요약해봅시다.
3/16/2016 알파고 해부하기 2부 © 이동헌 50
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대해 저장된 아래 값들이 있다고 합시다
• 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎
• 쓸만한 것 “부터 해보자”
• 지금 현재 바둑판을 𝑠𝑡라 할때
• 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a “부터 해보자”
• 여기서 새로 튀어나온 u라는 것을 논하기 전에..
• 지금까지 설명한걸 요약해봅시다.
• Tree search를 할 때, “무엇부터 해볼까” 부분을 설명했습니다
• 이게 알파고가 다음 수읽기를 할 때 머리를 굴리는 방법입니다
3/16/2016 알파고 해부하기 2부 © 이동헌 51
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대해 저장된 아래 값들이 있다고 합시다
• 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎
• 쓸만한 것 “부터 해보자”
• 지금 현재 바둑판을 𝑠𝑡라 할때
• 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a “부터 해보자”
• 여기서 새로 튀어나온 u라는 것을 논하기 전에..
• 지금까지 설명한걸 요약해봅시다.
• Tree search를 할 때, “무엇부터 해볼까” 부분을 설명했습니다
• 이게 알파고가 다음 수읽기를 할 때 머리를 굴리는 방법입니다
• 이제 u를 논하러 갑니다
3/16/2016 알파고 해부하기 2부 © 이동헌 52
알파고 S/W 구성: MCTS
• “쓸만한 것” 부터 해보자
• 쓸만한 것만 하면 되나요?
• 이론적으로 안됩니다
• 쓸만하다고 생각해보지 않은 것에 정답이 있을 수도 있지요
3/16/2016 알파고 해부하기 2부 © 이동헌 53
알파고 S/W 구성: MCTS
• “쓸만한 것” 부터 해보자
• 쓸만한 것만 하면 되나요?
• 이론적으로 안됩니다
• 쓸만하다고 생각해보지 않은 것에 정답이 있을 수도 있지요
• 쓸만한 것부터 해보되, 다른 것들도 해 봐야 합니다
• 이렇게 하다보면 언젠가는 정답(평균적으로 제일 좋은 답)이 나옵니다
• Monte-Carlo Simulation의 이론적 정당성에서 따라나옵니다
• 더 들어가면, 통계학의 “큰 수의 법칙”에서 나옵니다
• 어차피 approximation만 하면 되므로, (약한) 큰 수의 법칙만으로 충분합니다
3/16/2016 알파고 해부하기 2부 © 이동헌 54
알파고 S/W 구성: MCTS
• “쓸만한 것” 부터 해보자
• 쓸만한 것만 하면 되나요?
• 이론적으로 안됩니다
• 쓸만하다고 생각해보지 않은 것에 정답이 있을 수도 있지요
• 그럼 쓸만한 거 말고 다른 걸 섞어야 되는데.. 어떻게 하나요?
• 이 문제를 다루는 부분이 바로
𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)
• 저 부분 입니다
3/16/2016 알파고 해부하기 2부 © 이동헌 55
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대한 값들이 있다고 합시다
• 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎
• “쓸만한 것” 부터 해보자
• 지금 현재 바둑판을 𝑠𝑡라 할때
• 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a 부터 해보자
• 갑자기 새로 튀어나온 저것은
𝑢 𝑠𝑡, 𝑎 = 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎)
σ 𝑏 𝑁𝑟(𝑠, 𝑏)
1 + 𝑁𝑟(𝑠, 𝑎)
• 선험적으로 알고 있는 바둑판 s에서 착수a에 대한 선호도 𝑃(𝑠, 𝑎) 와,
3/16/2016 알파고 해부하기 2부 © 이동헌 56
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대한 값들이 있다고 합시다
• 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎
• “쓸만한 것” 부터 해보자
• 지금 현재 바둑판을 𝑠𝑡라 할때
• 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a 부터 해보자
• 갑자기 새로 튀어나온 저것은
𝑢 𝑠𝑡, 𝑎 = 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎)
σ 𝑏 𝑁𝑟(𝑠, 𝑏)
1 + 𝑁𝑟(𝑠, 𝑎)
• 선험적으로 알고 있는 바둑판 s에서 착수a에 대한 선호도 𝑃(𝑠, 𝑎) 와,
• 미래예측으로 덜 놓아본 착수에 대해서 더 커지고, 많이 놓아본 착수에 대해서는 더
작아져서, 무한히 많이 미래예측한다면 결국 모두 0으로 수렴하는 복잡한 수식과,
3/16/2016 알파고 해부하기 2부 © 이동헌 57
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대한 값들이 있다고 합시다
• 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎
• “쓸만한 것” 부터 해보자
• 지금 현재 바둑판을 𝑠𝑡라 할때
• 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a 부터 해보자
• 갑자기 새로 튀어나온 저것은
𝑢 𝑠𝑡, 𝑎 = 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎)
σ 𝑏 𝑁𝑟(𝑠, 𝑏)
1 + 𝑁𝑟(𝑠, 𝑎)
• 선험적으로 알고 있는 바둑판 s에서 착수a에 대한 선호도 𝑃(𝑠, 𝑎) 와,
• 미래예측으로 덜 놓아본 착수에 대해서 더 커지고, 많이 놓아본 착수에 대해서는 더
작아져서, 무한히 많이 미래예측한다면 결국 모두 0으로 수렴하는 복잡한 수식과,
3/16/2016 알파고 해부하기 2부 © 이동헌 58
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대한 값들이 있다고 합시다
• 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎
• “쓸만한 것” 부터 해보자
• 지금 현재 바둑판을 𝑠𝑡라 할때
• 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a 부터 해보자
• 갑자기 새로 튀어나온 저것은
𝑢 𝑠𝑡, 𝑎 = 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎)
σ 𝑏 𝑁𝑟(𝑠, 𝑏)
1 + 𝑁𝑟(𝑠, 𝑎)
• 선험적으로 알고 있는 바둑판 s에서 착수a에 대한 선호도 𝑃(𝑠, 𝑎) 와,
• 미래예측으로 덜 놓아본 착수에 대해서 더 커지고, 많이 놓아본 착수에 대해서는 더
작아져서, 무한히 많이 미래예측한다면 결국 모두 0으로 수렴하는 복잡한 수식과,
3/16/2016 알파고 해부하기 2부 © 이동헌 59
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대한 값들이 있다고 합시다
• 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎
• “쓸만한 것” 부터 해보자
• 지금 현재 바둑판을 𝑠𝑡라 할때
• 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a 부터 해보자
• 갑자기 새로 튀어나온 저것은
𝑢 𝑠𝑡, 𝑎 = 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎)
σ 𝑏 𝑁𝑟(𝑠, 𝑏)
1 + 𝑁𝑟(𝑠, 𝑎)
• 선험적으로 알고 있는 바둑판 s에서 착수a에 대한 선호도 𝑃(𝑠, 𝑎) 와,
• 미래예측으로 덜 놓아본 착수에 대해서 더 커지고, 많이 놓아본 착수에 대해서는 더
작아져서, 무한히 많이 미래예측한다면 결국 모두 0으로 수렴하는 복잡한 수식과,
• 튜닝으로 결정되는 상수 계수값의 곱입니다.
3/16/2016 알파고 해부하기 2부 © 이동헌 60
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대한 값들이 있다고 합시다
• 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎
• “쓸만한 것” 부터 해보자
• 지금 현재 바둑판을 𝑠𝑡라 할때
• 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a 부터 해보자
• 즉, 수읽기를 반복하면서 태도가 바뀌는 알파고입니다
• 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만
3/16/2016 알파고 해부하기 2부 © 이동헌 61
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대한 값들이 있다고 합시다
• 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎
• “쓸만한 것” 부터 해보자
• 지금 현재 바둑판을 𝑠𝑡라 할때
• 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a 부터 해보자
• 즉, 수읽기를 반복하면서 태도가 바뀌는 알파고입니다
• 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만
• 계속 하다보면 는 쓸만해 보이는지에 대한 추정치를 점점 더 중시하고
3/16/2016 알파고 해부하기 2부 © 이동헌 62
알파고 S/W 구성: MCTS
• 각각의 (s,a)에 대한 값들이 있다고 합시다
• 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎
• “쓸만한 것” 부터 해보자
• 지금 현재 바둑판을 𝑠𝑡라 할때
• 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a 부터 해보자
• 즉, 수읽기를 반복하면서 태도가 바뀌는 알파고입니다
• 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만
• 계속 하다보면 는 쓸만해 보이는지에 대한 추정치를 점점 더 중시하고
• 무한히 오래 하면 결국에는 쓸만해 보이는지만을 놓고 정하겠다
3/16/2016 알파고 해부하기 2부 © 이동헌 63
알파고 S/W 구성: MCTS
• 수읽기를 반복하면서 태도가 바뀌는 알파고
• 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만
• 계속 하다보면 는 쓸만해 보이는지에 대한 추정치를 점점 더 중시하고
• 무한히 오래 하면 결국에는 쓸만해 보이는지만을 놓고 정하겠다
• 무한히 반복하면 정답이 나오나요?
3/16/2016 알파고 해부하기 2부 © 이동헌 64
알파고 S/W 구성: MCTS
• 수읽기를 반복하면서 태도가 바뀌는 알파고
• 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만
• 계속 하다보면 는 쓸만해 보이는지에 대한 추정치를 점점 더 중시하고
• 무한히 오래 하면 결국에는 쓸만해 보이는지만을 놓고 정하겠다
• 무한히 반복하면 정답이 나오나요?
• 나옵니다
• 주어진 바둑판에서, 모든 가능한 착수에 대해서 승리 기대치의 평균이 나옵니다
• 이 중에 제일 평균이 높은 착수를 고르는 것은 금방입니다
3/16/2016 알파고 해부하기 2부 © 이동헌 65
알파고 S/W 구성: MCTS
• 수읽기를 반복하면서 태도가 바뀌는 알파고
• 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만
• 계속 하다보면 는 쓸만해 보이는지에 대한 추정치를 점점 더 중시하고
• 무한히 오래 하면 결국에는 쓸만해 보이는지만을 놓고 정하겠다
• 무한히 반복하면 정답이 나오나요?
• 나옵니다
• 주어진 바둑판에서, 모든 가능한 착수에 대해서 승리 기대치의 평균이 나옵니다
• 이 중에 제일 평균이 높은 착수를 고르는 것은 금방입니다
• 다만 알파고에서는,
• 가장 많이 골랐던 착수 == 가장 평균이 높은 착수 를 확인하고
• 다음 착수를 고르게 됩니다 (자세한 내용은 “알파고 대국시 동작법”에서)
3/16/2016 알파고 해부하기 2부 © 이동헌 66
알파고 S/W 구성: MCTS
• 수읽기를 반복하면서 태도가 바뀌는 알파고
• 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만
• 계속 하다보면 는 쓸만해 보이는지에 대한 추정치를 점점 더 중시하고
• 무한히 오래 하면 결국에는 쓸만해 보이는지만을 놓고 정하겠다
• 현실은 무한히 못 한다는게 단점
• 어느정도 하다가 끊어줘야됩니다
3/16/2016 알파고 해부하기 2부 © 이동헌 67
알파고 S/W 구성: MCTS
• 수읽기를 반복하면서 태도가 바뀌는 알파고
• 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만
• 계속 하다보면 는 쓸만해 보이는지에 대한 추정치를 점점 더 중시하고
• 무한히 오래 하면 결국에는 쓸만해 보이는지만을 놓고 정하겠다
• 현실은 무한히 못 한다는게 단점
• 어느정도 하다가 끊어줘야됩니다
• 이걸 더 많이 할수록 정확해집니다
• 알파고의 착수 시간제한을 줄이면 실력이 떨어집니다
• 판후이 2단 경기때, 비공식에서는 알파고가 몇번 졌지요 (비공식때 제한시간이 더 짧음)
3/16/2016 알파고 해부하기 2부 © 이동헌 68
알파고 S/W 구성: MCTS
• 수읽기를 반복하면서 태도가 바뀌는 알파고
• 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만
• 계속 하다보면 는 쓸만해 보이는지에 대한 추정치를 점점 더 중시하고
• 무한히 오래 하면 결국에는 쓸만해 보이는지만을 놓고 정하겠다
• 현실은 무한히 못 한다는게 단점
• 어느정도 하다가 끊어줘야됩니다
• 이걸 더 많이 할수록 정확해집니다
• 알파고의 착수 시간제한을 줄이면 실력이 떨어집니다
• 판후이 2단 경기때, 비공식에서는 알파고가 몇번 졌지요 (비공식때 제한시간이 더 짧음)
• 알파고가 더 많은 컴퓨터를 동시에 사용가능하면 실력이 올라갑니다
• 판후이 2단 때 1202 CPU  이세돌 9단때 1920 CPU. 같은 시간에 더 많은 시뮬레이션 가능.
3/16/2016 알파고 해부하기 2부 © 이동헌 69
알파고 S/W 구성: MCTS
• 그런데 Reinforcement Learning은 어디 있나요?
• 순수한 버젼의 MCTS와 비교해보면 정확히 답이 나옵니다
• MCTS사용한 바둑 프로그램 Crazy Stone 논문 [바로가기]
3/16/2016 알파고 해부하기 2부 © 이동헌 70
알파고 S/W 구성: MCTS
• 그런데 Reinforcement Learning은 어디 있나요?
• 순수한 버젼의 MCTS와 비교해보면 정확히 답이 나옵니다
• MCTS사용한 바둑 프로그램 Crazy Stone 논문 [바로가기]
• 여기에 Upper Confidence Bound (UCB) 성분을 추가합니다
𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a를 하자
3/16/2016 알파고 해부하기 2부 © 이동헌 71
알파고 S/W 구성: MCTS
• 그런데 Reinforcement Learning은 어디 있나요?
• 순수한 버젼의 MCTS와 비교해보면 정확히 답이 나옵니다
• MCTS사용한 바둑 프로그램 Crazy Stone 논문 [바로가기]
• 여기에 Upper Confidence Bound (UCB) 성분을 추가합니다
𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a를 하자
• 여기에 Q-learning의 큰 틀에서 바둑 프로그램 제작 (“Q”값이에요)
𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 기반해서 Monte-Carlo적으로 접근하는것으로 바둑을 공략해보자!
3/16/2016 알파고 해부하기 2부 © 이동헌 72
알파고 S/W 구성: MCTS
• 그런데 Reinforcement Learning은 어디 있나요?
• 순수한 버젼의 MCTS와 비교해보면 정확히 답이 나옵니다
• MCTS사용한 바둑 프로그램 Crazy Stone 논문 [바로가기]
• 여기에 Upper Confidence Bound (UCB) 성분을 추가합니다
𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a를 하자
• 여기에 Q-learning의 큰 틀에서 바둑 프로그램 제작 (“Q”값이에요)
𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 기반해서 Monte-Carlo적으로 접근하는것으로 바둑을 공략해보자!
• 더 진지하게 연구하실 분들을 위해 참고문헌을 드리겠습니다
3/16/2016 알파고 해부하기 2부 © 이동헌 73
알파고 S/W 구성: MCTS
• 그런데 Reinforcement Learning은 어디 있나요?
• 알파고 미래예측 = MCTS + PUCT (UCB) 변형 + Q-learning 변형
• PUCT를 살짝 변형하면서 MCTS에 넣어 알파고에 쓰인 바둑 미래예측부분 구조설계
• Upper Confidence Bound (UCB) 계열 참고문헌
• 2002: Multiarmed bandit문제에 UCB적용한 UCB1 알고리즘 등장 [논문 바로가기]
• 2006: MCST에 UCB1을 합쳐버린 UCT 알고리즘 등장 [논문 바로가기]
• 2009: 여기에 “Predictor” 요소를 더해서 PUCT 등장 [논문 바로가기]
• Q-learning 계열 참고문헌
• 1989: 오리지널 Q-learnin은 CJCJ Watkins 박사논문 [축약판 논문 바로가기]
• 1993: Q-learnin의 수학적으로 엄밀한 수렴증명 [논문 바로가기]
• 2013: 알파고에 사용된 Q-learning 변형법과 비슷한 내용 [논문 바로가기]
3/16/2016 알파고 해부하기 2부 © 이동헌 74
알파고 S/W 구성: MCTS
• 그런데 Reinforcement Learning은 어디 있나요?
• 알파고 미래예측 = MCTS + PUCT (UCB) 변형 + Q-learning 변형
• PUCT를 살짝 변형하면서 MCTS에 넣어 알파고에 쓰인 바둑 미래예측부분 구조설계
• Upper Confidence Bound (UCB) 계열 참고문헌
• 2002: Multiarmed bandit문제에 UCB적용한 UCB1 알고리즘 등장 [논문 바로가기]
• 2006: MCST에 UCB1을 합쳐버린 UCT 알고리즘 등장 [논문 바로가기]
• 2009: 여기에 “Predictor” 요소를 더해서 PUCT 등장 [논문 바로가기]
• Q-learning 계열 참고문헌
• 1989: 오리지널 Q-learnin은 CJCJ Watkins 박사논문 [축약판 논문 바로가기]
• 1993: Q-learnin의 수학적으로 엄밀한 수렴증명 [논문 바로가기]
• 2013: 알파고에 사용된 Q-learning 변형법과 비슷한 내용 [논문 바로가기]
3/16/2016 알파고 해부하기 2부 © 이동헌 75
솔직히, 참고문헌 논문들 읽기 힘듭니다.
저도
인공지능 알고리즘 박사과정에 들지 않았으면
아마도 읽을 일 없었겠지요…
여러분들이 참고문헌을 끝까지 읽어보시지 않으시더라도
다만 한 가지 알아주셨으면 하는 것 두가지가 있어요.
알파고의 기반에 놓인 이론들은
알파고 탄생 한참 전에 이미 나왔다는 점*
그리고 알파고의 이론도 알파고의 실체도
결국 사람이 만들었다는 점입니다.
* Jaehyun Park (스탠포드)님의 건의 감사합니다!!
알파고 소프트웨어의 구성
• 요약합니다
• MCTS 적용 부분
• 미래 예측 부분입니다
• Monte-Carlo Tree Search
• Reinforcement Learning
• 다양한 내용이 버무려져
있습니다
알파고 바둑 프로그램
RL
3/16/2016 알파고 해부하기 2부 © 이동헌 76
상대 바둑기사
다음 수
예측 프로그램
알파고의
다음 수
결정 프로그램
DL DLRL RL
바둑경기
상황
유/불리
분석
프로그램
DL RL
바둑판 현상황 인식 프로그램DL
바둑판 미래
예측 시도
MCTS RL
여러 번 미래예측 후 가장 많이 둔 수로 선택
RLMCTS
목차
• 알파고의 구조
• 알파고 소프트웨어의 구성
• 알파고 S/W 구성: Deep Learning 유관 부분
• 알파고 S/W 구성: Reinforcement Learning 유관 부분
• 알파고 S/W 구성: Monte-Carlo Tree Search 유관 부분
• 알파고 S/W의 대국시 동작법
• 알파고 S/W의 대국 전 트레이닝법
• 알파고 S/W의 혁신점
• 알파고의 혁신점
3/16/2016 알파고 해부하기 2부 © 이동헌 77
Time Over
• 이번 감기 오래가네요.. 그래도
• 연차 내고 집에서 쉬느라 시간이 좀 많이 생겼어요
• 덕분에 생각보다 일찍 2부를 내놓습니다
• 벌써 거의 80슬라이드!
• 3부에서 이어서 뵙겠습니다…
• 이세돌 9단 수고하셨습니다!!!
3/16/2016 알파고 해부하기 2부 © 이동헌 78
다음 이야기
• 다음 링크를 따라가시면 됩니다
• 알파고 해부하기 3부
• 피드백/오류 제보 이메일이 필요하시면 여기로 보내주세요
• donghun2014@gmail.com
3/16/2016 알파고 해부하기 2부 © 이동헌 79

More Related Content

What's hot

강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction
Taehoon Kim
 

What's hot (20)

CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料CTF for ビギナーズ ネットワーク講習資料
CTF for ビギナーズ ネットワーク講習資料
 
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
 
강화학습 기초_2(Deep sarsa, Deep Q-learning, DQN)
강화학습 기초_2(Deep sarsa, Deep Q-learning, DQN)강화학습 기초_2(Deep sarsa, Deep Q-learning, DQN)
강화학습 기초_2(Deep sarsa, Deep Q-learning, DQN)
 
Data Structures- Part4 basic sorting algorithms
Data Structures- Part4 basic sorting algorithmsData Structures- Part4 basic sorting algorithms
Data Structures- Part4 basic sorting algorithms
 
개발자를 위한 (블로그) 글쓰기 intro
개발자를 위한 (블로그) 글쓰기 intro개발자를 위한 (블로그) 글쓰기 intro
개발자를 위한 (블로그) 글쓰기 intro
 
AlphaZero: A General Reinforcement Learning Algorithm that Masters Chess, Sho...
AlphaZero: A General Reinforcement Learning Algorithm that Masters Chess, Sho...AlphaZero: A General Reinforcement Learning Algorithm that Masters Chess, Sho...
AlphaZero: A General Reinforcement Learning Algorithm that Masters Chess, Sho...
 
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
딥러닝과 강화 학습으로 나보다 잘하는 쿠키런 AI 구현하기 DEVIEW 2016
 
Alpha zero - London 2018
Alpha zero  - London 2018 Alpha zero  - London 2018
Alpha zero - London 2018
 
강화학습의 개요
강화학습의 개요강화학습의 개요
강화학습의 개요
 
강화학습의 흐름도 Part 1
강화학습의 흐름도 Part 1강화학습의 흐름도 Part 1
강화학습의 흐름도 Part 1
 
강화학습 알고리즘의 흐름도 Part 2
강화학습 알고리즘의 흐름도 Part 2강화학습 알고리즘의 흐름도 Part 2
강화학습 알고리즘의 흐름도 Part 2
 
From REINFORCE to PPO
From REINFORCE to PPOFrom REINFORCE to PPO
From REINFORCE to PPO
 
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
 
분산 강화학습 논문(DeepMind IMPALA) 구현
분산 강화학습 논문(DeepMind IMPALA) 구현분산 강화학습 논문(DeepMind IMPALA) 구현
분산 강화학습 논문(DeepMind IMPALA) 구현
 
[Paper review] contrastive language image pre-training, open ai, 2020
[Paper review] contrastive language image pre-training, open ai, 2020[Paper review] contrastive language image pre-training, open ai, 2020
[Paper review] contrastive language image pre-training, open ai, 2020
 
Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러
 
ML + 주식 phase 2
ML + 주식  phase 2ML + 주식  phase 2
ML + 주식 phase 2
 
강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction
 
파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기
 
AlphaGo in Depth
AlphaGo in Depth AlphaGo in Depth
AlphaGo in Depth
 

Viewers also liked

Deview deep learning-김정희
Deview deep learning-김정희Deview deep learning-김정희
Deview deep learning-김정희
NAVER D2
 

Viewers also liked (20)

모두의 알파고
모두의 알파고모두의 알파고
모두의 알파고
 
기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가
 
바둑인을 위한 알파고
바둑인을 위한 알파고바둑인을 위한 알파고
바둑인을 위한 알파고
 
쫄지말자딥러닝2 - CNN RNN 포함버전
쫄지말자딥러닝2 - CNN RNN 포함버전쫄지말자딥러닝2 - CNN RNN 포함버전
쫄지말자딥러닝2 - CNN RNN 포함버전
 
20160409 microsoft 세미나 머신러닝관련 발표자료
20160409 microsoft 세미나 머신러닝관련 발표자료20160409 microsoft 세미나 머신러닝관련 발표자료
20160409 microsoft 세미나 머신러닝관련 발표자료
 
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
 
[모두의연구소] 쫄지말자딥러닝
[모두의연구소] 쫄지말자딥러닝[모두의연구소] 쫄지말자딥러닝
[모두의연구소] 쫄지말자딥러닝
 
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
 
Introduce Deep learning & A.I. Applications
Introduce Deep learning & A.I. ApplicationsIntroduce Deep learning & A.I. Applications
Introduce Deep learning & A.I. Applications
 
인공지능 발전이 가져올 2030년의 삶
인공지능 발전이 가져올 2030년의 삶인공지능 발전이 가져올 2030년의 삶
인공지능 발전이 가져올 2030년의 삶
 
2016 kcd 세미나 발표자료. 구글포토로 바라본 인공지능과 머신러닝
2016 kcd 세미나 발표자료. 구글포토로 바라본 인공지능과 머신러닝2016 kcd 세미나 발표자료. 구글포토로 바라본 인공지능과 머신러닝
2016 kcd 세미나 발표자료. 구글포토로 바라본 인공지능과 머신러닝
 
인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝
 
딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향
 
Deview deep learning-김정희
Deview deep learning-김정희Deview deep learning-김정희
Deview deep learning-김정희
 
기계학습(Machine learning) 입문하기
기계학습(Machine learning) 입문하기기계학습(Machine learning) 입문하기
기계학습(Machine learning) 입문하기
 
마인즈랩 유태준 투이Y세미나_20150622
마인즈랩 유태준 투이Y세미나_20150622마인즈랩 유태준 투이Y세미나_20150622
마인즈랩 유태준 투이Y세미나_20150622
 
알파고는 어떤 컴퓨터를 썼을까?
알파고는 어떤 컴퓨터를 썼을까?알파고는 어떤 컴퓨터를 썼을까?
알파고는 어떤 컴퓨터를 썼을까?
 
스탠퍼드 대학의 2030년 인공지능 전망, 천천히 확실하게 도래
스탠퍼드 대학의 2030년 인공지능 전망, 천천히 확실하게 도래스탠퍼드 대학의 2030년 인공지능 전망, 천천히 확실하게 도래
스탠퍼드 대학의 2030년 인공지능 전망, 천천히 확실하게 도래
 
[Pycon 2015] 오늘 당장 딥러닝 실험하기 제출용
[Pycon 2015] 오늘 당장 딥러닝 실험하기 제출용[Pycon 2015] 오늘 당장 딥러닝 실험하기 제출용
[Pycon 2015] 오늘 당장 딥러닝 실험하기 제출용
 
20160203_마인즈랩_딥러닝세미나_05 딥러닝 자연어처리와 분류엔진 황이규박사
20160203_마인즈랩_딥러닝세미나_05 딥러닝 자연어처리와 분류엔진 황이규박사20160203_마인즈랩_딥러닝세미나_05 딥러닝 자연어처리와 분류엔진 황이규박사
20160203_마인즈랩_딥러닝세미나_05 딥러닝 자연어처리와 분류엔진 황이규박사
 

알파고 해부하기 2부

  • 2. 이어서 시작하면서 • 알파고 해부하기 1부에서 이어지는 게시물입니다 • 예상 독자층은 알파고의 원리를 정확히 알고 싶어하는 분들 • 프로그래밍, 딥러닝, 머신러닝 연구자분들 포함입니다 • “프로그래머를 위한 알파고”로 생각해주세요.. • 내용이 어렵다면 “쉬운” 알파고 게시물도 있어요 1. 모두의 알파고 2. 바둑인들을 위한 알파고 3/16/2016 알파고 해부하기 2부 © 이동헌 2
  • 3. 당부말씀 • 정확성을 최우선가치로 씁니다 • 정확하지 않은 내용을 찾으시면 꼭! 피드백 부탁드립니다 • donghun2014@gmail.com • 내용의 한 부분만 뚝 잘라서 인용하시면 위험합니다 • 정확한 내용들이 보통 그렇듯이, 부분을 잘라내면 뜻이 달라질 수 있어요 3/16/2016 알파고 해부하기 2부 © 이동헌 3
  • 4. 1부까지의 진행상황 • 알파고의 구조 • 알파고 소프트웨어의 구성 • 알파고 S/W 구성: Deep Learning 유관 부분 • 바둑판 인식 프로그램 • 알파고 S/W의 대국시 동작법 • 알파고 S/W의 대국 전 트레이닝법 • 알파고 S/W의 혁신점 • 알파고의 혁신점 3/16/2016 알파고 해부하기 2부 © 이동헌 4
  • 5. 목차 • 알파고의 구조 • 알파고 소프트웨어의 구성 • 알파고 S/W 구성: Deep Learning 유관 부분 • 알파고 S/W 구성: Reinforcement Learning 유관 부분 • 알파고 S/W 구성: Monte-Carlo Tree Search 유관 부분 • 알파고 S/W의 대국시 동작법 • 알파고 S/W의 대국 전 트레이닝법 • 알파고 S/W의 혁신점 • 알파고의 혁신점 3/16/2016 알파고 해부하기 2부 © 이동헌 5
  • 6. 알파고 S/W 구성: Deep Learning • 먼저 가능한 모든 바둑판 공간을 정의합니다 • 바둑판을 19x19 행렬로 봅시다 • 자연스러운 생각이라면, 행렬에 넣을 수 있는 원소는 {흑, 백, 빈칸}중 하나 • 하지만 컴퓨터는 0/1로 보는게 제일 좋습니다 • 그래서 위의 상황을 • “흑돌” 바둑판 19x19 행렬 (0이면 흑돌이 없고, 1이면 놓인) • “백돌” 바둑판 19x19 행렬 (0이면 백돌이 없고, 1이면 놓인) • “빈칸” 바둑판 19x19 행렬 (0이면 뭔가 돌이 있고, 1이면 빈칸인) • 이렇게 3개 층을 쌓은 19x19x3 텐서 로 만듭니다 • (텐서는 개념상 2차원 이상의 행렬로 생각하면 됩니다) 3/16/2016 알파고 해부하기 2부 © 이동헌 6
  • 7. 알파고 S/W 구성: Deep Learning • 여기에 추가로 feature를 집어넣습니다 • 기존 흑/백/빈칸에 추가로 • 19x19 행렬 원소별로, 주어진 칸에 3/16/2016 알파고 해부하기 2부 © 이동헌 7
  • 8. 알파고 S/W 구성: Deep Learning • 여기에 추가로 feature를 집어넣습니다 • 기존 흑/백/빈칸에 추가로 • 19x19 행렬 원소별로, 주어진 칸에 • 그냥 상수 1 (“그 칸 고유의 특성”을 모델링) • 돌이 있다면, 몇 수 전에 놓였는지 (최소 1, 최대 8) (길이8의 binary array) • 연결된 말의 현재 활로가 몇개인지 (최소 1, 최대 8) • 상대가 돌을 놓는다면 내가 잃을 돌의 수 (최소 1, 최대 8) • 내가 돌을 놓는다면 그 돌에 연결된 말의 활로가 몇 개가 될지 (최소 1, 최대 8) • 내가 돌을 놓는다면, 내가 축을 만드는데 성공할지 • 내가 돌을 놓는다면, 내가 축을 탈출하는데 성공할지 • 돌을 놓는것이 바둑의 규칙에 어긋나는지 • 내가 흑돌인지 백돌인지 (이건 Value Network (판세분석) 에만 쓰입니다) (알파고 논문에 나온 Extended Data Table 2 참조) 3/16/2016 알파고 해부하기 2부 © 이동헌 8
  • 9. 알파고 S/W 구성: Deep Learning • 여기에 추가로 feature를 집어넣습니다 • 기존 흑/백/빈칸에 추가로 • 19x19 행렬 원소별로, 주어진 칸에 • 이것저것, 도합 48개의 binary input • 바둑판 각 칸별로 길이 48의 binary array로 구성된 feature가 됩니다 • (Policy Network는 48, Value Network는 49) • 바둑판이 19x19 행렬이니, • 이렇게 만들어진 Deep Learning input은 19x19x48 텐서. • Value Network는 19x19x49 3/16/2016 알파고 해부하기 2부 © 이동헌 9
  • 10. 알파고 S/W 구성: Deep Learning • Input 텐서 • Policy Network (다음 수 예측) 용도와 Value Network (판세예측) 용도에 따라 feature가 조금 다릅니다 3/16/2016 알파고 해부하기 2부 © 이동헌 10
  • 11. 알파고 S/W 구성: Deep Learning • Input 텐서 • Policy Network (다음 수 예측) 용도와 Value Network (판세예측) 용도에 따라 feature가 조금 다릅니다 • Output • 당연히 Policy Network와 Value Network가 다릅니다 • Policy Network의 경우, 𝑃(𝑎|𝑠) • “바둑판 s가 주어질 때, 다음 착수가 a일 확률값” • Value Network의 경우, 𝐸 𝑧𝑡 𝑠𝑡 = 𝑠, 𝑎 𝑡…𝑇~𝑝] • “바둑판 s가 주어질 때, 바둑기사 양쪽 모두 착수전략 p를 따라 대국종료까지 두었을때, 게임 기대값 (z가 -1(패)이나 1(승)이므로, 0이면 50:50 비등비등 상황임” 3/16/2016 알파고 해부하기 2부 © 이동헌 11
  • 12. 알파고 S/W 구성: Deep Learning • 각 모듈별 내부구조를 설명하기 전에… • 지금까지 설명한 부분을 요약한다면 • Policy Network (다음 수 예측)과 Value Network (판세예측) 양쪽에 공통인 • “바둑판 상황 인식” 프로그램 • 에 해당하는 Deep Learning 부분입니다. Input 부분을 중점으로 다뤘지요. 3/16/2016 알파고 해부하기 2부 © 이동헌 12
  • 13. 알파고 S/W 구성: Deep Learning • 각 모듈별 내부구조를 설명하기 전에… • 지금까지 설명한 부분을 요약한다면 • Policy Network (다음 수 예측)과 Value Network (판세예측) 양쪽에 공통인 • “바둑판 상황 인식” 프로그램 • 에 해당하는 Deep Learning 부분입니다. Input 부분을 중점으로 다뤘지요. • 이제부터 • Policy Network • Value Network 양쪽에 사용된 CNN (Convolutional Neural Network) 구조를 설명합니다 3/16/2016 알파고 해부하기 2부 © 이동헌 13
  • 14. 알파고 소프트웨어의 구성 • Policy Network • Deep Learning과 • Reinforcement Learning의 • 적절한 만남! 알파고 바둑 프로그램 바둑판 미래 예측 시도 여러 번 미래예측 후 가장 많이 둔 수로 선택 RL MCTS RL MCTS RL 바둑판 현상황 인식 프로그램DL 3/16/2016 알파고 해부하기 2부 © 이동헌 14 바둑경기 상황 유/불리 분석 프로그램 DL RL 상대 바둑기사 다음 수 예측 프로그램 알파고의 다음 수 결정 프로그램 DL DLRL RL
  • 15. 알파고 S/W 구성: “Policy Network” • Policy Network: 19x19행렬의 48층짜리 input을… • 제 1층은 5x5 filter 192종으로, stride 1로 convolution • 하기 위해서, 상하좌우 언저리로 0으로 채워진 2행 2열씩 추가 • 23x23 행렬로 만들어서 2D convolution • ReLU 유닛 사용 3/16/2016 알파고 해부하기 2부 © 이동헌 15
  • 16. 알파고 S/W 구성: “Policy Network” • Policy Network: 19x19행렬의 48층짜리 input을… • 제 1층은 5x5 filter 192종으로, stride 1로 convolution • 하기 위해서, 상하좌우 언저리로 0으로 채워진 2행 2열씩 추가 • 23x23 행렬로 만들어서 2D convolution • ReLU 유닛 사용 • 제 2~12층은 3x3 filter 192종으로, stride 1로 convolution • 하기 위해서, 상하좌우 언저리로 0으로 채워진 1행 1열씩 추가 • 21x21 행렬로 만들어서 2D convolution • ReLU 유닛 사용 3/16/2016 알파고 해부하기 2부 © 이동헌 16
  • 17. 알파고 S/W 구성: “Policy Network” • Policy Network: 19x19행렬의 48층짜리 input을… • 제 1층은 5x5 filter 192종으로, stride 1로 convolution • 하기 위해서, 상하좌우 언저리로 0으로 채워진 2행 2열씩 추가 • 23x23 행렬로 만들어서 2D convolution • ReLU 유닛 사용 • 제 2~12층은 3x3 filter 192종으로, stride 1로 convolution • 하기 위해서, 상하좌우 언저리로 0으로 채워진 1행 1열씩 추가 • 21x21 행렬로 만들어서 2D convolution • ReLU 유닛 사용 • 제 13층은 특별한 필터 없이 1:1 대응으로 • 각 위치별 bias를 다르게 해서 • Softmax 유닛 사용 3/16/2016 알파고 해부하기 2부 © 이동헌 17
  • 18. 알파고 S/W 구성: “Policy Network” • Policy Network: 19x19행렬의 48층짜리 input을… • 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU • 제 2~12층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU • 제 13층은 특별한 필터 없이 1:1대응 softmax • 위 구조를 선택한 (이론적) 이유를 헤아려보려면? • 기본적으로 Convolutional Neural Network (CNN) 공부필요 • CNN 설명자료는 인터넷에 많습니다 3/16/2016 알파고 해부하기 2부 © 이동헌 18
  • 19. 알파고 S/W 구성: “Policy Network” • Policy Network: 19x19행렬의 48층짜리 input을… • 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU • 제 2~12층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU • 제 13층은 특별한 필터 없이 1:1대응 softmax • ReLU를 사용하는 이유? • 이론적: Vanishing gradient 문제가 없음 • 종전 neural net에 자주 쓰이던 sigmoid 계열 함수의 경우 이 문제가 있지요 • 실험적: Deep network에서 실험적 효과 좋음 (효율성 측면) • 실제로 잘 된다고 보고된 바가 많다니 선택의 근거로 인정합니다.. 3/16/2016 알파고 해부하기 2부 © 이동헌 19
  • 20. • Policy Network: 19x19행렬의 48층짜리 input을… • 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU • 제 2~12층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU • 제 13층은 특별한 필터 없이 1:1대응 softmax • 근데 왜 뜬금없는 softmax 함수  • State의 가치값Q으로 a를 결정하는 방법 중 하나: softmax함수 사용 • 참고문헌: Humprey 1999. 박사논문 [바로가기] 25페이지 • Policy Network output이 𝑃(𝑎|𝑠) 이므로 이것에 맞춘 형태 • “바둑판 s가 주어질 때, 다음 착수가 a일 확률값” • Reinforcement Learning의 영향 알파고 S/W 구성: “Policy Network” 3/16/2016 알파고 해부하기 2부 © 이동헌 20
  • 21. 알파고 소프트웨어의 구성 • Value Network • Deep Learning과 • Reinforcement Learning을 • 살짝 다르게 접합 알파고 바둑 프로그램 상대 바둑기사 다음 수 예측 프로그램 알파고의 다음 수 결정 프로그램 바둑판 미래 예측 시도 여러 번 미래예측 후 가장 많이 둔 수로 선택 DL DLRL RL RL MCTS RL MCTS RL 바둑판 현상황 인식 프로그램DL 3/16/2016 알파고 해부하기 2부 © 이동헌 21 바둑경기 상황 유/불리 분석 프로그램 DL RL
  • 22. 알파고 S/W 구성: “Value Network” • Value Network: 19x19행렬의 49층짜리 input을… • 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU • 제 2~11층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU 3/16/2016 알파고 해부하기 2부 © 이동헌 22 이 부분은 Policy Network와 동일구조 사용
  • 23. 알파고 S/W 구성: “Value Network” • Value Network: 19x19행렬의 49층짜리 input을… • 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU • 제 2~11층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU • 제 12층은 “additional convolution layer” (추가정보 없음..) • 제 13층은 특별한 필터 없이 1:1대응 (사용된 function정보없음) 3/16/2016 알파고 해부하기 2부 © 이동헌 23 논문이 제대로 설명해주지 않는 부분..
  • 24. 알파고 S/W 구성: “Value Network” • Value Network: 19x19행렬의 49층짜리 input을… • 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU • 제 2~11층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU • 제 12층은 “additional convolution layer” (추가정보 없음..) • 제 13층은 특별한 필터 없이 1:1대응 (사용된 function정보없음) • 제 14층은 256개의 ReLU 유닛, fully connected linear • Output은 1개의 tanh 유닛, fully connected linear 3/16/2016 알파고 해부하기 2부 © 이동헌 24 Value Network에 Deep Learning 적용하기 위해 특화한 구조부분
  • 25. 알파고 S/W 구성: “Value Network” • Value Network: 19x19행렬의 49층짜리 input을… • 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU • 제 2~11층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU • 제 12층은 “additional convolution layer” (추가정보 없음..) • 제 13층은 특별한 필터 없이 1:1대응 (사용된 function정보없음) • 제 14층은 256개의 ReLU 유닛, fully connected linear • Output은 1개의 tanh 유닛, fully connected linear 3/16/2016 알파고 해부하기 2부 © 이동헌 25
  • 26. 알파고 S/W 구성: “Value Network” • Value Network: 19x19행렬의 49층짜리 input을… • 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU • 제 2~11층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU • 제 12층은 “additional convolution layer” (추가정보 없음..) • 제 13층은 특별한 필터 없이 1:1대응 (사용된 function정보없음) • 제 14층은 256개의 ReLU 유닛, fully connected linear • Output은 1개의 tanh 유닛, fully connected linear • 엄청난 최적화공밀레의 현장을 발굴하고 있습니다!! • 여담이지만.. 엔지니어분들의 노고는 최종 산출물만으로 계산하면 안될 일입니다 • 딥러닝 사용자 및 연구자분들(회사/대학원 불문)의 몸/마음고생 좀 덜어주세요… 3/16/2016 알파고 해부하기 2부 © 이동헌 26
  • 27. • Value Network: 19x19행렬의 49층짜리 input을… • 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU • 제 2~11층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU • 제 12층은 “additional convolution layer” (추가정보 없음..) • 제 13층은 특별한 필터 없이 1:1대응 (사용된 function정보없음) • 제 14층은 256개의 ReLU 유닛, fully connected linear • Output은 1개의 tanh 유닛, fully connected linear 알파고 S/W 구성: “Value Network” 3/16/2016 알파고 해부하기 2부 © 이동헌 27
  • 28. • Value Network: 19x19행렬의 49층짜리 input을… • 제 1층은 5x5 filter 192종으로, stride 1로 convolution후 ReLU • 제 2~11층은 3x3 filter 192종으로, stride 1로 convolution후 ReLU • 제 12층은 “additional convolution layer” (추가정보 없음..) • 제 13층은 특별한 필터 없이 1:1대응 (사용된 function정보없음) • 제 14층은 256개의 ReLU 유닛, fully connected linear • Output은 1개의 tanh 유닛, fully connected linear • Value Network에 맞춰주기 위한 선택: 1개의 tanh 유닛  • Value Network의 경우, 𝐸 𝑧𝑡 𝑠𝑡 = 𝑠, 𝑎 𝑡…𝑇~𝑝] • “바둑판 s가 주어질 때, 바둑기사 양쪽 모두 착수전략 p를 따라 대국종료까지 두었을때, 게임 기대값 (z가 -1(패)이나 1(승)이므로, 0이면 50:50 비등비등 상황임” 알파고 S/W 구성: “Value Network” 3/16/2016 알파고 해부하기 2부 © 이동헌 28
  • 29. 알파고 S/W 구성: DL, Policy Net, Value Net • 요약합니다 • Deep Learning (DL) 적용부 • 핵심 적용부분 • 바둑판 상황인식 모듈 • 양쪽에 모듈로 사용 • Policy Network • 알파고 다음수 결정 • 바둑기사 다음수 결정 • Value Network • 바둑판세 파악 알파고 바둑 프로그램 바둑판 미래 예측 시도 여러 번 미래예측 후 가장 많이 둔 수로 선택 RL MCTS RL MCTS RL 3/16/2016 알파고 해부하기 2부 © 이동헌 29 상대 바둑기사 다음 수 예측 프로그램 알파고의 다음 수 결정 프로그램 DL DLRL RL 바둑경기 상황 유/불리 분석 프로그램 DL RL 바둑판 현상황 인식 프로그램DL
  • 30. 목차 • 알파고의 구조 • 알파고 소프트웨어의 구성 • 알파고 S/W 구성: Deep Learning 유관 부분 • 알파고 S/W 구성: Reinforcement Learning 유관 부분 • 알파고 S/W 구성: Monte-Carlo Tree Search 유관 부분 • 알파고 S/W의 대국시 동작법 • 알파고 S/W의 대국 전 트레이닝법 • 알파고 S/W의 혁신점 • 알파고의 혁신점 3/16/2016 알파고 해부하기 2부 © 이동헌 30
  • 31. 알파고 S/W 구성: Reinforcement Learning • Reinforcement Learning (RL)? • 전반적으로 고루 적용되어 적용부 하나하나 나누기가 힘듭니다 • 지금까지 나온 RL 적용부 • DL을 전체 틀에 접합하는 이론적 근거/토대 • (나름) 합리적인 접합법 제시 • RL 적용부는 계속됩니다 • 나올 때마다 설명예정 알파고 바둑 프로그램 바둑판 미래 예측 시도 여러 번 미래예측 후 가장 많이 둔 수로 선택 RL MCTS RL MCTS RL 3/16/2016 알파고 해부하기 2부 © 이동헌 31 상대 바둑기사 다음 수 예측 프로그램 알파고의 다음 수 결정 프로그램 DL DLRL RL 바둑경기 상황 유/불리 분석 프로그램 DL RL 바둑판 현상황 인식 프로그램DL
  • 32. 알파고 소프트웨어의 구성 • 다음 차례: MCTS 적용부 • 핵심: 바둑판 미래예측 • 여기에도 RL 포함 알파고 바둑 프로그램 RL 3/16/2016 알파고 해부하기 2부 © 이동헌 32 상대 바둑기사 다음 수 예측 프로그램 알파고의 다음 수 결정 프로그램 DL DLRL RL 바둑경기 상황 유/불리 분석 프로그램 DL RL 바둑판 현상황 인식 프로그램DL 바둑판 미래 예측 시도 MCTS RL 여러 번 미래예측 후 가장 많이 둔 수로 선택 RLMCTS
  • 33. 목차 • 알파고의 구조 • 알파고 소프트웨어의 구성 • 알파고 S/W 구성: Deep Learning 유관 부분 • 알파고 S/W 구성: Reinforcement Learning 유관 부분 • 알파고 S/W 구성: Monte-Carlo Tree Search 유관 부분 • 알파고 S/W의 대국시 동작법 • 알파고 S/W의 대국 전 트레이닝법 • 알파고 S/W의 혁신점 • 알파고의 혁신점 3/16/2016 알파고 해부하기 2부 © 이동헌 33
  • 34. 알파고 소프트웨어의 구성 • Monte-Carlo Tree Search • Tree Search의 개량판 • 전자바둑계의 최신트렌드 • 알파고가 나오기 전까지.. 알파고 바둑 프로그램 RL 3/16/2016 알파고 해부하기 2부 © 이동헌 34 상대 바둑기사 다음 수 예측 프로그램 알파고의 다음 수 결정 프로그램 DL DLRL RL 바둑경기 상황 유/불리 분석 프로그램 DL RL 바둑판 현상황 인식 프로그램DL 바둑판 미래 예측 시도 MCTS RL 여러 번 미래예측 후 가장 많이 둔 수로 선택 RLMCTS
  • 35. 알파고 S/W 구성: MCTS • 게임 전략에서의 Tree Search를 말하자면 • 그냥 가능한 것 다 해보고 제일 좋은걸 골라보자는 겁니다 • 말이 쉽지.. 너무너무 가짓수가 많아서 컴퓨터로도 도저히 불가능한 게 있습니다 • 이것의 대표적인 예가 바둑입니다 • 한 수 한 수 놓을 수 있는게 너무 갯수가 많은데, 게임 끝까지 모든 가능한 기보 숫자는… • “경우의 수가 우주의 원자수보다 많다” 이런 말이 여기서 나옵니다 3/16/2016 알파고 해부하기 2부 © 이동헌 35
  • 36. 알파고 S/W 구성: MCTS • 게임 전략에서의 Tree Search를 말하자면 • 그냥 가능한 것 다 해보고 제일 좋은걸 골라보자는 겁니다 • 말이 쉽지.. 너무너무 가짓수가 많아서 컴퓨터로도 도저히 불가능한 게 있습니다 • 이것의 대표적인 예가 바둑입니다 • 한 수 한 수 놓을 수 있는게 너무 갯수가 많은데, 게임 끝까지 모든 가능한 기보 숫자는… • “경우의 수가 우주의 원자수보다 많다” 이런 말이 여기서 나옵니다 • 그러면, 다 해보기보단, “쓸만한 것부터” 해보자 • “쓸만한 것 …” + “… 부터 해보자”: 이 두 부분이 MCTS의 핵심입니다 • Monte-Carlo Tree Search에 대한 구체적 설명은 이미 많이 되어 있습니다 • MCTS 이론설명은 다른 분들이 수고하신 자료에 맡기고 • 바로 알파고 해부를 하면서, 이론은 그때그때 필요한만큼만 설명하겠습니다 3/16/2016 알파고 해부하기 2부 © 이동헌 36
  • 37. 알파고 S/W 구성: MCTS • 쓸만한 것 “부터 해보자” • 모든 걸 닥치고 다 해보는게 하는게 불가능하니 • 조금만 해서 많이 알 수 없을까? • 무엇부터 해 보는게 좋을까? • 흔히들 알고있는 Alpha-beta pruning은 “해도 안될건 하지말자” 개량입니다 3/16/2016 알파고 해부하기 2부 © 이동헌 37
  • 38. 알파고 S/W 구성: MCTS • 쓸만한 것 “부터 해보자” • 모든 걸 닥치고 다 해보는게 하는게 불가능하니 • 조금만 해서 많이 알 수 없을까? • 무엇부터 해 보는게 좋을까? • 흔히들 알고있는 Alpha-beta pruning은 “해도 안될건 하지말자” 개량입니다 • 이렇게 하다보면, 언젠가는 정답이 나올까? • 이런 이론적 근거가 있으면 더 해볼 만 하겠죠? • 하지만 이 이야기는 조금 뒤로 미뤄두고 • 일단 Tree Search에서 당장 뭘 해볼지 고르는 부분부터 봅시다. 3/16/2016 알파고 해부하기 2부 © 이동헌 38
  • 39. 알파고 S/W 구성: MCTS • 알파고의 바둑게임 Search Tree 구성 • 바둑판의 구성 s, 다음 둘 수 a 를 동시에 고려해서 • 첫 차례라면, • 바둑판 구성 s는 앞에서 설명했듯이 19x19x48 텐서 (binary). 모두 빈칸 셋팅. • 다음 수는 어디든 둘 수 있으니 19x19 가지의 a 중 하나 3/16/2016 알파고 해부하기 2부 © 이동헌 39
  • 40. 알파고 S/W 구성: MCTS • 알파고의 바둑게임 Search Tree 구성 • 바둑판의 구성 s, 다음 둘 수 a 를 동시에 고려해서 • 첫 차례라면, • 바둑판 구성 s는 앞에서 설명했듯이 19x19x48 텐서 (binary). 모두 빈칸 셋팅. • 다음 수는 어디든 둘 수 있으니 19x19 가지의 a 중 하나 • (s,a)를 정합니다 • 첫 차례라면 s는 정해져 있고, 19x19가지의 a가 있으니, 19x19가지의 (s,a)입니다 3/16/2016 알파고 해부하기 2부 © 이동헌 40
  • 41. 알파고 S/W 구성: MCTS • 알파고의 바둑게임 Search Tree 구성 • 바둑판의 구성 s, 다음 둘 수 a 를 동시에 고려해서 • 첫 차례라면, • 바둑판 구성 s는 앞에서 설명했듯이 19x19x48 텐서 (binary). 모두 빈칸 셋팅. • 다음 수는 어디든 둘 수 있으니 19x19 가지의 a 중 하나 • (s,a)를 정합니다 • 첫 차례라면 s는 정해져 있고, 19x19가지의 a가 있으니, 19x19가지의 (s,a)입니다 • 각각의 (s,a)에 대해서 다음 값들이 저장되어 있습니다 • 𝑃 𝑠, 𝑎 • 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 • 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 • 𝑄 𝑠, 𝑎 3/16/2016 알파고 해부하기 2부 © 이동헌 41
  • 42. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대해 저장된 값 설명 • 𝑃 𝑠, 𝑎 • 착수 a를 해 보지 않고도, 미리 선험적으로 알고 있는 값. (당연히 튜닝값입니다) • 저 아래에 있는 𝑄 𝑠, 𝑎 와 단위가 같습니다 • (물리 문제 풀때의 그 m/s 맞추는 개념의 그 단위) • 저 𝑄 𝑠, 𝑎 값과 균형을 맞추는 역할을 나중에 담당합니다 • 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 • 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 • 𝑄 𝑠, 𝑎 3/16/2016 알파고 해부하기 2부 © 이동헌 42
  • 43. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대해 저장된 값 설명 • 𝑃 𝑠, 𝑎 • 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 • 착수 a를 한다고 결정한 Monte-Carlo 시뮬레이션 횟수 • v가 달린 것은 판세분석 경로가 된 횟수, r이 달린것은 미래예측 경로가 된 횟수 • 이 부분의 자세한 내용은 추후 알파고의 대국시 작동원리 부분에서 다루어집니다 • 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 • 𝑄 𝑠, 𝑎 3/16/2016 알파고 해부하기 2부 © 이동헌 43
  • 44. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대해 저장된 값 설명 • 𝑃 𝑠, 𝑎 • 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 • 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 • 착수 a를 한다고 하고, Monte-Carlo 시뮬레이션 한 결과 나온 승리/패배 횟수의 합 • v가 달린 것은 판세분석 경로에서 나온 누적 합, r이 달린것은 미래예측 경로쪽 누적 합. • 이 부분의 자세한 내용은 추후 알파고의 대국시 작동원리 부분에서 다루어집니다 • 𝑄 𝑠, 𝑎 3/16/2016 알파고 해부하기 2부 © 이동헌 44
  • 45. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대해 저장된 값 설명 • 𝑃 𝑠, 𝑎 • 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 • 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 • 𝑄 𝑠, 𝑎 • 이 값의 의미를 어렵게 적으면 (알파고 논문에 이렇게 적어놨죠) 다음과 같습니다 𝑄 𝑠, 𝑎 = 1 − 𝜆 𝑊𝑣(𝑠, 𝑎) 𝑁𝑣(𝑠, 𝑎) + 𝜆 𝑊𝑟(𝑠, 𝑎) 𝑁𝑟(𝑠, 𝑎) • 알파고 논문에서 “𝜆 = 0.5를 쓰니 제일 성능이 좋아서 이걸로 쓰겠다”고 합니다 3/16/2016 알파고 해부하기 2부 © 이동헌 45
  • 46. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대해 저장된 값 설명 • 𝑃 𝑠, 𝑎 • 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 • 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 • 𝑄 𝑠, 𝑎 • 이 값의 의미를 어렵게 적으면 (알파고 논문에 이렇게 적어놨죠) 다음과 같습니다 𝑄 𝑠, 𝑎 = 1 − 𝜆 𝑊𝑣(𝑠, 𝑎) 𝑁𝑣(𝑠, 𝑎) + 𝜆 𝑊𝑟(𝑠, 𝑎) 𝑁𝑟(𝑠, 𝑎) • 알파고 논문에서 “𝜆 = 0.5를 쓰니 제일 성능이 좋아서 이걸로 쓰겠다”고 합니다 • 쉽게 말해, 판세분석과 미래예측 두 모듈의 승/패 시뮬레이션확률의 1:1 선형합 3/16/2016 알파고 해부하기 2부 © 이동헌 46
  • 47. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대해 저장된 값 설명 • 𝑃 𝑠, 𝑎 • 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 • 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 • 𝑄 𝑠, 𝑎 • 이 값의 의미를 어렵게 적으면 (알파고 논문에 이렇게 적어놨죠) 다음과 같습니다 𝑄 𝑠, 𝑎 = 1 − 𝜆 𝑊𝑣(𝑠, 𝑎) 𝑁𝑣(𝑠, 𝑎) + 𝜆 𝑊𝑟(𝑠, 𝑎) 𝑁𝑟(𝑠, 𝑎) • 알파고 논문에서 “𝜆 = 0.5를 쓰니 제일 성능이 좋아서 이걸로 쓰겠다”고 합니다 • 쉽게 말해, 판세분석과 미래예측 두 모듈의 승/패 시뮬레이션확률의 1:1 선형합 • 더 쉽게 말해, 착수 a의 승/패 예측치 두 종류의 평균값 3/16/2016 알파고 해부하기 2부 © 이동헌 47
  • 48. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대해 저장된 아래 값들이 있다고 합시다 • 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎 • 쓸만한 것 “부터 해보자” 3/16/2016 알파고 해부하기 2부 © 이동헌 48
  • 49. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대해 저장된 아래 값들이 있다고 합시다 • 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎 • 쓸만한 것 “부터 해보자” • 지금 현재 바둑판을 𝑠𝑡라 할때 • 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a “부터 해보자” 3/16/2016 알파고 해부하기 2부 © 이동헌 49
  • 50. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대해 저장된 아래 값들이 있다고 합시다 • 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎 • 쓸만한 것 “부터 해보자” • 지금 현재 바둑판을 𝑠𝑡라 할때 • 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a “부터 해보자” • 여기서 새로 튀어나온 u라는 것을 논하기 전에.. • 지금까지 설명한걸 요약해봅시다. 3/16/2016 알파고 해부하기 2부 © 이동헌 50
  • 51. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대해 저장된 아래 값들이 있다고 합시다 • 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎 • 쓸만한 것 “부터 해보자” • 지금 현재 바둑판을 𝑠𝑡라 할때 • 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a “부터 해보자” • 여기서 새로 튀어나온 u라는 것을 논하기 전에.. • 지금까지 설명한걸 요약해봅시다. • Tree search를 할 때, “무엇부터 해볼까” 부분을 설명했습니다 • 이게 알파고가 다음 수읽기를 할 때 머리를 굴리는 방법입니다 3/16/2016 알파고 해부하기 2부 © 이동헌 51
  • 52. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대해 저장된 아래 값들이 있다고 합시다 • 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎 • 쓸만한 것 “부터 해보자” • 지금 현재 바둑판을 𝑠𝑡라 할때 • 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a “부터 해보자” • 여기서 새로 튀어나온 u라는 것을 논하기 전에.. • 지금까지 설명한걸 요약해봅시다. • Tree search를 할 때, “무엇부터 해볼까” 부분을 설명했습니다 • 이게 알파고가 다음 수읽기를 할 때 머리를 굴리는 방법입니다 • 이제 u를 논하러 갑니다 3/16/2016 알파고 해부하기 2부 © 이동헌 52
  • 53. 알파고 S/W 구성: MCTS • “쓸만한 것” 부터 해보자 • 쓸만한 것만 하면 되나요? • 이론적으로 안됩니다 • 쓸만하다고 생각해보지 않은 것에 정답이 있을 수도 있지요 3/16/2016 알파고 해부하기 2부 © 이동헌 53
  • 54. 알파고 S/W 구성: MCTS • “쓸만한 것” 부터 해보자 • 쓸만한 것만 하면 되나요? • 이론적으로 안됩니다 • 쓸만하다고 생각해보지 않은 것에 정답이 있을 수도 있지요 • 쓸만한 것부터 해보되, 다른 것들도 해 봐야 합니다 • 이렇게 하다보면 언젠가는 정답(평균적으로 제일 좋은 답)이 나옵니다 • Monte-Carlo Simulation의 이론적 정당성에서 따라나옵니다 • 더 들어가면, 통계학의 “큰 수의 법칙”에서 나옵니다 • 어차피 approximation만 하면 되므로, (약한) 큰 수의 법칙만으로 충분합니다 3/16/2016 알파고 해부하기 2부 © 이동헌 54
  • 55. 알파고 S/W 구성: MCTS • “쓸만한 것” 부터 해보자 • 쓸만한 것만 하면 되나요? • 이론적으로 안됩니다 • 쓸만하다고 생각해보지 않은 것에 정답이 있을 수도 있지요 • 그럼 쓸만한 거 말고 다른 걸 섞어야 되는데.. 어떻게 하나요? • 이 문제를 다루는 부분이 바로 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎) • 저 부분 입니다 3/16/2016 알파고 해부하기 2부 © 이동헌 55
  • 56. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대한 값들이 있다고 합시다 • 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎 • “쓸만한 것” 부터 해보자 • 지금 현재 바둑판을 𝑠𝑡라 할때 • 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a 부터 해보자 • 갑자기 새로 튀어나온 저것은 𝑢 𝑠𝑡, 𝑎 = 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎) σ 𝑏 𝑁𝑟(𝑠, 𝑏) 1 + 𝑁𝑟(𝑠, 𝑎) • 선험적으로 알고 있는 바둑판 s에서 착수a에 대한 선호도 𝑃(𝑠, 𝑎) 와, 3/16/2016 알파고 해부하기 2부 © 이동헌 56
  • 57. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대한 값들이 있다고 합시다 • 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎 • “쓸만한 것” 부터 해보자 • 지금 현재 바둑판을 𝑠𝑡라 할때 • 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a 부터 해보자 • 갑자기 새로 튀어나온 저것은 𝑢 𝑠𝑡, 𝑎 = 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎) σ 𝑏 𝑁𝑟(𝑠, 𝑏) 1 + 𝑁𝑟(𝑠, 𝑎) • 선험적으로 알고 있는 바둑판 s에서 착수a에 대한 선호도 𝑃(𝑠, 𝑎) 와, • 미래예측으로 덜 놓아본 착수에 대해서 더 커지고, 많이 놓아본 착수에 대해서는 더 작아져서, 무한히 많이 미래예측한다면 결국 모두 0으로 수렴하는 복잡한 수식과, 3/16/2016 알파고 해부하기 2부 © 이동헌 57
  • 58. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대한 값들이 있다고 합시다 • 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎 • “쓸만한 것” 부터 해보자 • 지금 현재 바둑판을 𝑠𝑡라 할때 • 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a 부터 해보자 • 갑자기 새로 튀어나온 저것은 𝑢 𝑠𝑡, 𝑎 = 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎) σ 𝑏 𝑁𝑟(𝑠, 𝑏) 1 + 𝑁𝑟(𝑠, 𝑎) • 선험적으로 알고 있는 바둑판 s에서 착수a에 대한 선호도 𝑃(𝑠, 𝑎) 와, • 미래예측으로 덜 놓아본 착수에 대해서 더 커지고, 많이 놓아본 착수에 대해서는 더 작아져서, 무한히 많이 미래예측한다면 결국 모두 0으로 수렴하는 복잡한 수식과, 3/16/2016 알파고 해부하기 2부 © 이동헌 58
  • 59. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대한 값들이 있다고 합시다 • 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎 • “쓸만한 것” 부터 해보자 • 지금 현재 바둑판을 𝑠𝑡라 할때 • 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a 부터 해보자 • 갑자기 새로 튀어나온 저것은 𝑢 𝑠𝑡, 𝑎 = 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎) σ 𝑏 𝑁𝑟(𝑠, 𝑏) 1 + 𝑁𝑟(𝑠, 𝑎) • 선험적으로 알고 있는 바둑판 s에서 착수a에 대한 선호도 𝑃(𝑠, 𝑎) 와, • 미래예측으로 덜 놓아본 착수에 대해서 더 커지고, 많이 놓아본 착수에 대해서는 더 작아져서, 무한히 많이 미래예측한다면 결국 모두 0으로 수렴하는 복잡한 수식과, 3/16/2016 알파고 해부하기 2부 © 이동헌 59
  • 60. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대한 값들이 있다고 합시다 • 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎 • “쓸만한 것” 부터 해보자 • 지금 현재 바둑판을 𝑠𝑡라 할때 • 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a 부터 해보자 • 갑자기 새로 튀어나온 저것은 𝑢 𝑠𝑡, 𝑎 = 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎) σ 𝑏 𝑁𝑟(𝑠, 𝑏) 1 + 𝑁𝑟(𝑠, 𝑎) • 선험적으로 알고 있는 바둑판 s에서 착수a에 대한 선호도 𝑃(𝑠, 𝑎) 와, • 미래예측으로 덜 놓아본 착수에 대해서 더 커지고, 많이 놓아본 착수에 대해서는 더 작아져서, 무한히 많이 미래예측한다면 결국 모두 0으로 수렴하는 복잡한 수식과, • 튜닝으로 결정되는 상수 계수값의 곱입니다. 3/16/2016 알파고 해부하기 2부 © 이동헌 60
  • 61. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대한 값들이 있다고 합시다 • 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎 • “쓸만한 것” 부터 해보자 • 지금 현재 바둑판을 𝑠𝑡라 할때 • 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a 부터 해보자 • 즉, 수읽기를 반복하면서 태도가 바뀌는 알파고입니다 • 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만 3/16/2016 알파고 해부하기 2부 © 이동헌 61
  • 62. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대한 값들이 있다고 합시다 • 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎 • “쓸만한 것” 부터 해보자 • 지금 현재 바둑판을 𝑠𝑡라 할때 • 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a 부터 해보자 • 즉, 수읽기를 반복하면서 태도가 바뀌는 알파고입니다 • 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만 • 계속 하다보면 는 쓸만해 보이는지에 대한 추정치를 점점 더 중시하고 3/16/2016 알파고 해부하기 2부 © 이동헌 62
  • 63. 알파고 S/W 구성: MCTS • 각각의 (s,a)에 대한 값들이 있다고 합시다 • 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎 • “쓸만한 것” 부터 해보자 • 지금 현재 바둑판을 𝑠𝑡라 할때 • 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a 부터 해보자 • 즉, 수읽기를 반복하면서 태도가 바뀌는 알파고입니다 • 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만 • 계속 하다보면 는 쓸만해 보이는지에 대한 추정치를 점점 더 중시하고 • 무한히 오래 하면 결국에는 쓸만해 보이는지만을 놓고 정하겠다 3/16/2016 알파고 해부하기 2부 © 이동헌 63
  • 64. 알파고 S/W 구성: MCTS • 수읽기를 반복하면서 태도가 바뀌는 알파고 • 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만 • 계속 하다보면 는 쓸만해 보이는지에 대한 추정치를 점점 더 중시하고 • 무한히 오래 하면 결국에는 쓸만해 보이는지만을 놓고 정하겠다 • 무한히 반복하면 정답이 나오나요? 3/16/2016 알파고 해부하기 2부 © 이동헌 64
  • 65. 알파고 S/W 구성: MCTS • 수읽기를 반복하면서 태도가 바뀌는 알파고 • 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만 • 계속 하다보면 는 쓸만해 보이는지에 대한 추정치를 점점 더 중시하고 • 무한히 오래 하면 결국에는 쓸만해 보이는지만을 놓고 정하겠다 • 무한히 반복하면 정답이 나오나요? • 나옵니다 • 주어진 바둑판에서, 모든 가능한 착수에 대해서 승리 기대치의 평균이 나옵니다 • 이 중에 제일 평균이 높은 착수를 고르는 것은 금방입니다 3/16/2016 알파고 해부하기 2부 © 이동헌 65
  • 66. 알파고 S/W 구성: MCTS • 수읽기를 반복하면서 태도가 바뀌는 알파고 • 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만 • 계속 하다보면 는 쓸만해 보이는지에 대한 추정치를 점점 더 중시하고 • 무한히 오래 하면 결국에는 쓸만해 보이는지만을 놓고 정하겠다 • 무한히 반복하면 정답이 나오나요? • 나옵니다 • 주어진 바둑판에서, 모든 가능한 착수에 대해서 승리 기대치의 평균이 나옵니다 • 이 중에 제일 평균이 높은 착수를 고르는 것은 금방입니다 • 다만 알파고에서는, • 가장 많이 골랐던 착수 == 가장 평균이 높은 착수 를 확인하고 • 다음 착수를 고르게 됩니다 (자세한 내용은 “알파고 대국시 동작법”에서) 3/16/2016 알파고 해부하기 2부 © 이동헌 66
  • 67. 알파고 S/W 구성: MCTS • 수읽기를 반복하면서 태도가 바뀌는 알파고 • 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만 • 계속 하다보면 는 쓸만해 보이는지에 대한 추정치를 점점 더 중시하고 • 무한히 오래 하면 결국에는 쓸만해 보이는지만을 놓고 정하겠다 • 현실은 무한히 못 한다는게 단점 • 어느정도 하다가 끊어줘야됩니다 3/16/2016 알파고 해부하기 2부 © 이동헌 67
  • 68. 알파고 S/W 구성: MCTS • 수읽기를 반복하면서 태도가 바뀌는 알파고 • 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만 • 계속 하다보면 는 쓸만해 보이는지에 대한 추정치를 점점 더 중시하고 • 무한히 오래 하면 결국에는 쓸만해 보이는지만을 놓고 정하겠다 • 현실은 무한히 못 한다는게 단점 • 어느정도 하다가 끊어줘야됩니다 • 이걸 더 많이 할수록 정확해집니다 • 알파고의 착수 시간제한을 줄이면 실력이 떨어집니다 • 판후이 2단 경기때, 비공식에서는 알파고가 몇번 졌지요 (비공식때 제한시간이 더 짧음) 3/16/2016 알파고 해부하기 2부 © 이동헌 68
  • 69. 알파고 S/W 구성: MCTS • 수읽기를 반복하면서 태도가 바뀌는 알파고 • 시뮬레이션 반복 초기에는 덜 쓸만해 보이는 것도 해보지만 • 계속 하다보면 는 쓸만해 보이는지에 대한 추정치를 점점 더 중시하고 • 무한히 오래 하면 결국에는 쓸만해 보이는지만을 놓고 정하겠다 • 현실은 무한히 못 한다는게 단점 • 어느정도 하다가 끊어줘야됩니다 • 이걸 더 많이 할수록 정확해집니다 • 알파고의 착수 시간제한을 줄이면 실력이 떨어집니다 • 판후이 2단 경기때, 비공식에서는 알파고가 몇번 졌지요 (비공식때 제한시간이 더 짧음) • 알파고가 더 많은 컴퓨터를 동시에 사용가능하면 실력이 올라갑니다 • 판후이 2단 때 1202 CPU  이세돌 9단때 1920 CPU. 같은 시간에 더 많은 시뮬레이션 가능. 3/16/2016 알파고 해부하기 2부 © 이동헌 69
  • 70. 알파고 S/W 구성: MCTS • 그런데 Reinforcement Learning은 어디 있나요? • 순수한 버젼의 MCTS와 비교해보면 정확히 답이 나옵니다 • MCTS사용한 바둑 프로그램 Crazy Stone 논문 [바로가기] 3/16/2016 알파고 해부하기 2부 © 이동헌 70
  • 71. 알파고 S/W 구성: MCTS • 그런데 Reinforcement Learning은 어디 있나요? • 순수한 버젼의 MCTS와 비교해보면 정확히 답이 나옵니다 • MCTS사용한 바둑 프로그램 Crazy Stone 논문 [바로가기] • 여기에 Upper Confidence Bound (UCB) 성분을 추가합니다 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a를 하자 3/16/2016 알파고 해부하기 2부 © 이동헌 71
  • 72. 알파고 S/W 구성: MCTS • 그런데 Reinforcement Learning은 어디 있나요? • 순수한 버젼의 MCTS와 비교해보면 정확히 답이 나옵니다 • MCTS사용한 바둑 프로그램 Crazy Stone 논문 [바로가기] • 여기에 Upper Confidence Bound (UCB) 성분을 추가합니다 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a를 하자 • 여기에 Q-learning의 큰 틀에서 바둑 프로그램 제작 (“Q”값이에요) 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 기반해서 Monte-Carlo적으로 접근하는것으로 바둑을 공략해보자! 3/16/2016 알파고 해부하기 2부 © 이동헌 72
  • 73. 알파고 S/W 구성: MCTS • 그런데 Reinforcement Learning은 어디 있나요? • 순수한 버젼의 MCTS와 비교해보면 정확히 답이 나옵니다 • MCTS사용한 바둑 프로그램 Crazy Stone 논문 [바로가기] • 여기에 Upper Confidence Bound (UCB) 성분을 추가합니다 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 가장 크게 만드는 착수 a를 하자 • 여기에 Q-learning의 큰 틀에서 바둑 프로그램 제작 (“Q”값이에요) 𝑄 𝑠𝑡, 𝑎 + 𝑢(𝑠𝑡, 𝑎)값을 기반해서 Monte-Carlo적으로 접근하는것으로 바둑을 공략해보자! • 더 진지하게 연구하실 분들을 위해 참고문헌을 드리겠습니다 3/16/2016 알파고 해부하기 2부 © 이동헌 73
  • 74. 알파고 S/W 구성: MCTS • 그런데 Reinforcement Learning은 어디 있나요? • 알파고 미래예측 = MCTS + PUCT (UCB) 변형 + Q-learning 변형 • PUCT를 살짝 변형하면서 MCTS에 넣어 알파고에 쓰인 바둑 미래예측부분 구조설계 • Upper Confidence Bound (UCB) 계열 참고문헌 • 2002: Multiarmed bandit문제에 UCB적용한 UCB1 알고리즘 등장 [논문 바로가기] • 2006: MCST에 UCB1을 합쳐버린 UCT 알고리즘 등장 [논문 바로가기] • 2009: 여기에 “Predictor” 요소를 더해서 PUCT 등장 [논문 바로가기] • Q-learning 계열 참고문헌 • 1989: 오리지널 Q-learnin은 CJCJ Watkins 박사논문 [축약판 논문 바로가기] • 1993: Q-learnin의 수학적으로 엄밀한 수렴증명 [논문 바로가기] • 2013: 알파고에 사용된 Q-learning 변형법과 비슷한 내용 [논문 바로가기] 3/16/2016 알파고 해부하기 2부 © 이동헌 74
  • 75. 알파고 S/W 구성: MCTS • 그런데 Reinforcement Learning은 어디 있나요? • 알파고 미래예측 = MCTS + PUCT (UCB) 변형 + Q-learning 변형 • PUCT를 살짝 변형하면서 MCTS에 넣어 알파고에 쓰인 바둑 미래예측부분 구조설계 • Upper Confidence Bound (UCB) 계열 참고문헌 • 2002: Multiarmed bandit문제에 UCB적용한 UCB1 알고리즘 등장 [논문 바로가기] • 2006: MCST에 UCB1을 합쳐버린 UCT 알고리즘 등장 [논문 바로가기] • 2009: 여기에 “Predictor” 요소를 더해서 PUCT 등장 [논문 바로가기] • Q-learning 계열 참고문헌 • 1989: 오리지널 Q-learnin은 CJCJ Watkins 박사논문 [축약판 논문 바로가기] • 1993: Q-learnin의 수학적으로 엄밀한 수렴증명 [논문 바로가기] • 2013: 알파고에 사용된 Q-learning 변형법과 비슷한 내용 [논문 바로가기] 3/16/2016 알파고 해부하기 2부 © 이동헌 75 솔직히, 참고문헌 논문들 읽기 힘듭니다. 저도 인공지능 알고리즘 박사과정에 들지 않았으면 아마도 읽을 일 없었겠지요… 여러분들이 참고문헌을 끝까지 읽어보시지 않으시더라도 다만 한 가지 알아주셨으면 하는 것 두가지가 있어요. 알파고의 기반에 놓인 이론들은 알파고 탄생 한참 전에 이미 나왔다는 점* 그리고 알파고의 이론도 알파고의 실체도 결국 사람이 만들었다는 점입니다. * Jaehyun Park (스탠포드)님의 건의 감사합니다!!
  • 76. 알파고 소프트웨어의 구성 • 요약합니다 • MCTS 적용 부분 • 미래 예측 부분입니다 • Monte-Carlo Tree Search • Reinforcement Learning • 다양한 내용이 버무려져 있습니다 알파고 바둑 프로그램 RL 3/16/2016 알파고 해부하기 2부 © 이동헌 76 상대 바둑기사 다음 수 예측 프로그램 알파고의 다음 수 결정 프로그램 DL DLRL RL 바둑경기 상황 유/불리 분석 프로그램 DL RL 바둑판 현상황 인식 프로그램DL 바둑판 미래 예측 시도 MCTS RL 여러 번 미래예측 후 가장 많이 둔 수로 선택 RLMCTS
  • 77. 목차 • 알파고의 구조 • 알파고 소프트웨어의 구성 • 알파고 S/W 구성: Deep Learning 유관 부분 • 알파고 S/W 구성: Reinforcement Learning 유관 부분 • 알파고 S/W 구성: Monte-Carlo Tree Search 유관 부분 • 알파고 S/W의 대국시 동작법 • 알파고 S/W의 대국 전 트레이닝법 • 알파고 S/W의 혁신점 • 알파고의 혁신점 3/16/2016 알파고 해부하기 2부 © 이동헌 77
  • 78. Time Over • 이번 감기 오래가네요.. 그래도 • 연차 내고 집에서 쉬느라 시간이 좀 많이 생겼어요 • 덕분에 생각보다 일찍 2부를 내놓습니다 • 벌써 거의 80슬라이드! • 3부에서 이어서 뵙겠습니다… • 이세돌 9단 수고하셨습니다!!! 3/16/2016 알파고 해부하기 2부 © 이동헌 78
  • 79. 다음 이야기 • 다음 링크를 따라가시면 됩니다 • 알파고 해부하기 3부 • 피드백/오류 제보 이메일이 필요하시면 여기로 보내주세요 • donghun2014@gmail.com 3/16/2016 알파고 해부하기 2부 © 이동헌 79