SlideShare a Scribd company logo
1 of 79
Download to read offline
알파고 해부하기
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

猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoderSho Tatsuno
 
Direct Sparse Odometryの解説
Direct Sparse Odometryの解説Direct Sparse Odometryの解説
Direct Sparse Odometryの解説Masaya Kaneko
 
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)Shota Imai
 
強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験克海 納谷
 
SDL2の紹介
SDL2の紹介SDL2の紹介
SDL2の紹介nyaocat
 
バンディット問題について
バンディット問題についてバンディット問題について
バンディット問題についてjkomiyama
 
DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜Jun Okumura
 
強化学習その2
強化学習その2強化学習その2
強化学習その2nishio
 
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...Deep Learning JP
 
統計的学習の基礎6章前半 #カステラ本
統計的学習の基礎6章前半 #カステラ本統計的学習の基礎6章前半 #カステラ本
統計的学習の基礎6章前半 #カステラ本Akifumi Eguchi
 
Generative Adversarial Imitation Learningの紹介(RLアーキテクチャ勉強会)
Generative Adversarial Imitation Learningの紹介(RLアーキテクチャ勉強会)Generative Adversarial Imitation Learningの紹介(RLアーキテクチャ勉強会)
Generative Adversarial Imitation Learningの紹介(RLアーキテクチャ勉強会)Yusuke Nakata
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界Preferred Networks
 
探索と活用の戦略 ベイズ最適化と多腕バンディット
探索と活用の戦略 ベイズ最適化と多腕バンディット探索と活用の戦略 ベイズ最適化と多腕バンディット
探索と活用の戦略 ベイズ最適化と多腕バンディットH Okazaki
 
DSIRNLP#1 ランキング学習ことはじめ
DSIRNLP#1 ランキング学習ことはじめDSIRNLP#1 ランキング学習ことはじめ
DSIRNLP#1 ランキング学習ことはじめsleepy_yoshi
 
Reinforcement Learning: An Introduction 輪読会第1回資料
Reinforcement Learning: An Introduction 輪読会第1回資料Reinforcement Learning: An Introduction 輪読会第1回資料
Reinforcement Learning: An Introduction 輪読会第1回資料Yasunori Ozaki
 
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜SSII
 
強化学習の分散アーキテクチャ変遷
強化学習の分散アーキテクチャ変遷強化学習の分散アーキテクチャ変遷
強化学習の分散アーキテクチャ変遷Eiji Sekiya
 
20180527 ORB SLAM Code Reading
20180527 ORB SLAM Code Reading20180527 ORB SLAM Code Reading
20180527 ORB SLAM Code ReadingTakuya Minagawa
 
[DL輪読会]Shaping Belief States with Generative Environment Models for RL
[DL輪読会]Shaping Belief States with Generative Environment Models for RL[DL輪読会]Shaping Belief States with Generative Environment Models for RL
[DL輪読会]Shaping Belief States with Generative Environment Models for RLDeep Learning JP
 

What's hot (20)

猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder猫でも分かるVariational AutoEncoder
猫でも分かるVariational AutoEncoder
 
Direct Sparse Odometryの解説
Direct Sparse Odometryの解説Direct Sparse Odometryの解説
Direct Sparse Odometryの解説
 
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
 
強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験強化学習アルゴリズムPPOの解説と実験
強化学習アルゴリズムPPOの解説と実験
 
SDL2の紹介
SDL2の紹介SDL2の紹介
SDL2の紹介
 
バンディット問題について
バンディット問題についてバンディット問題について
バンディット問題について
 
DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜DQNからRainbowまで 〜深層強化学習の最新動向〜
DQNからRainbowまで 〜深層強化学習の最新動向〜
 
強化学習その2
強化学習その2強化学習その2
強化学習その2
 
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
[DL輪読会]近年のオフライン強化学習のまとめ —Offline Reinforcement Learning: Tutorial, Review, an...
 
統計的学習の基礎6章前半 #カステラ本
統計的学習の基礎6章前半 #カステラ本統計的学習の基礎6章前半 #カステラ本
統計的学習の基礎6章前半 #カステラ本
 
Generative Adversarial Imitation Learningの紹介(RLアーキテクチャ勉強会)
Generative Adversarial Imitation Learningの紹介(RLアーキテクチャ勉強会)Generative Adversarial Imitation Learningの紹介(RLアーキテクチャ勉強会)
Generative Adversarial Imitation Learningの紹介(RLアーキテクチャ勉強会)
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
探索と活用の戦略 ベイズ最適化と多腕バンディット
探索と活用の戦略 ベイズ最適化と多腕バンディット探索と活用の戦略 ベイズ最適化と多腕バンディット
探索と活用の戦略 ベイズ最適化と多腕バンディット
 
DSIRNLP#1 ランキング学習ことはじめ
DSIRNLP#1 ランキング学習ことはじめDSIRNLP#1 ランキング学習ことはじめ
DSIRNLP#1 ランキング学習ことはじめ
 
Reinforcement Learning: An Introduction 輪読会第1回資料
Reinforcement Learning: An Introduction 輪読会第1回資料Reinforcement Learning: An Introduction 輪読会第1回資料
Reinforcement Learning: An Introduction 輪読会第1回資料
 
強化学習2章
強化学習2章強化学習2章
強化学習2章
 
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
SSII2021 [TS2] 深層強化学習 〜 強化学習の基礎から応用まで 〜
 
強化学習の分散アーキテクチャ変遷
強化学習の分散アーキテクチャ変遷強化学習の分散アーキテクチャ変遷
強化学習の分散アーキテクチャ変遷
 
20180527 ORB SLAM Code Reading
20180527 ORB SLAM Code Reading20180527 ORB SLAM Code Reading
20180527 ORB SLAM Code Reading
 
[DL輪読会]Shaping Belief States with Generative Environment Models for RL
[DL輪読会]Shaping Belief States with Generative Environment Models for RL[DL輪読会]Shaping Belief States with Generative Environment Models for RL
[DL輪読会]Shaping Belief States with Generative Environment Models for RL
 

Viewers also liked

알파고 해부하기 1부
알파고 해부하기 1부알파고 해부하기 1부
알파고 해부하기 1부Donghun Lee
 
AlphaGo 알고리즘 요약
AlphaGo 알고리즘 요약AlphaGo 알고리즘 요약
AlphaGo 알고리즘 요약Jooyoul Lee
 
모두의 알파고
모두의 알파고모두의 알파고
모두의 알파고Donghun Lee
 
기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가Yongha Kim
 
바둑인을 위한 알파고
바둑인을 위한 알파고바둑인을 위한 알파고
바둑인을 위한 알파고Donghun Lee
 
쫄지말자딥러닝2 - CNN RNN 포함버전
쫄지말자딥러닝2 - CNN RNN 포함버전쫄지말자딥러닝2 - CNN RNN 포함버전
쫄지말자딥러닝2 - CNN RNN 포함버전Modulabs
 
20160409 microsoft 세미나 머신러닝관련 발표자료
20160409 microsoft 세미나 머신러닝관련 발표자료20160409 microsoft 세미나 머신러닝관련 발표자료
20160409 microsoft 세미나 머신러닝관련 발표자료JungGeun Lee
 
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016Taehoon Kim
 
알파고 풀어보기 / Alpha Technical Review
알파고 풀어보기 / Alpha Technical Review알파고 풀어보기 / Alpha Technical Review
알파고 풀어보기 / Alpha Technical Review상은 박
 
[모두의연구소] 쫄지말자딥러닝
[모두의연구소] 쫄지말자딥러닝[모두의연구소] 쫄지말자딥러닝
[모두의연구소] 쫄지말자딥러닝Modulabs
 
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개Terry Cho
 
Introduce Deep learning & A.I. Applications
Introduce Deep learning & A.I. ApplicationsIntroduce Deep learning & A.I. Applications
Introduce Deep learning & A.I. ApplicationsMario Cho
 
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016Taehoon Kim
 
강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introductionTaehoon Kim
 
인공지능 발전이 가져올 2030년의 삶
인공지능 발전이 가져올 2030년의 삶인공지능 발전이 가져올 2030년의 삶
인공지능 발전이 가져올 2030년의 삶봉조 김
 
2016 kcd 세미나 발표자료. 구글포토로 바라본 인공지능과 머신러닝
2016 kcd 세미나 발표자료. 구글포토로 바라본 인공지능과 머신러닝2016 kcd 세미나 발표자료. 구글포토로 바라본 인공지능과 머신러닝
2016 kcd 세미나 발표자료. 구글포토로 바라본 인공지능과 머신러닝JungGeun Lee
 
인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝Jinwon Lee
 
딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향홍배 김
 
Deview deep learning-김정희
Deview deep learning-김정희Deview deep learning-김정희
Deview deep learning-김정희NAVER D2
 
기계학습(Machine learning) 입문하기
기계학습(Machine learning) 입문하기기계학습(Machine learning) 입문하기
기계학습(Machine learning) 입문하기Terry Taewoong Um
 

Viewers also liked (20)

알파고 해부하기 1부
알파고 해부하기 1부알파고 해부하기 1부
알파고 해부하기 1부
 
AlphaGo 알고리즘 요약
AlphaGo 알고리즘 요약AlphaGo 알고리즘 요약
AlphaGo 알고리즘 요약
 
모두의 알파고
모두의 알파고모두의 알파고
모두의 알파고
 
기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가
 
바둑인을 위한 알파고
바둑인을 위한 알파고바둑인을 위한 알파고
바둑인을 위한 알파고
 
쫄지말자딥러닝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
 
알파고 풀어보기 / Alpha Technical Review
알파고 풀어보기 / Alpha Technical Review알파고 풀어보기 / Alpha Technical Review
알파고 풀어보기 / Alpha Technical Review
 
[모두의연구소] 쫄지말자딥러닝
[모두의연구소] 쫄지말자딥러닝[모두의연구소] 쫄지말자딥러닝
[모두의연구소] 쫄지말자딥러닝
 
머신 러닝 입문 #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
 
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
 
강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction
 
인공지능 발전이 가져올 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) 입문하기
 

Recently uploaded

Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 

Recently uploaded (6)

Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 

알파고 해부하기 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