어떻게 동작할까요?
@Tech, 2016. 3. 31 Machine Intelligence Lab., 박준영
세계 바둑계의 흐름
이창호 이세돌
커제
박정환
http://www.goratings.org/history/
구리
스웨
AlphaGo
ELO rating (일종의 ranking point)
내맘대로 해석해본 대국별 하이라이트
1국 - 만만치 않은 알파고
• 이세돌 - 불리하면, 승부수를 날릴 줄도 아네
• 알파고 - 이긴 듯
흑 이세돌 백 알파고
2, 3국 - 절대고수 알파고
이세돌 - 이런 수를? 잘 보니 좋은 수네
알파고 - 여기가 승리 확률이 제일 높군
흑 알파고 백 이세돌 흑 이세돌 백 알파고
4국 - 이세돌 신의 한수?
• 이세돌 - 이 수 밖에 없네
• 알파고 - 여기 둘 확률 만분의 일에, 설령 둬도 별거없는 것 같아서, 생각 안해봤는데 희한하네.. (8수 후…) 망했다!!
흑 알파고 백 이세돌
5국 - 알파고의 넘사벽 계산력
• 이세돌 - 불리한 것 같으니 변화를 일으켜보자
• 알파고 - 아무리 발버둥쳐봤자 어차피 이길 듯.
흑 이세돌 백 알파고
AlphaGo는 어떻게 동작할까요?
다 해보면 됩니다
Mini-max algorithm
http://snipd.net/minimax-algorithm-with-alpha-beta-pruning-in-c
Monte Carlo Tree Search
• 바둑 AI 에서 최근 10년간 주류인 접근법
• Monte Carlo?
• 많이 해본 후,
• 의미있는 수치를 얻어냄
• Tree Search?
• 아까 그 Tree
http://www.mathmisery.com/
AlphaGo 역시 MCTS 기반
MCTS의 기본 동작
https://en.wikipedia.org/wiki/Monte_Carlo_tree_search
Repeat
현재 판의 상태
1수 진행된 상태
2수 진행된 상태
3수 진행된 상태
MCTS in AlphaGo
https://en.wikipedia.org/wiki/Monte_Carlo_tree_search
Repeat
현재 판의 상태
1수 진행된 상태
2수 진행된 상태
3수 진행된 상태
• 아무 길이나 가보기엔 너무 경우의 수가 많다
• 누가 이길지 예측하기가 힘들다
• 어느 길로 가 볼지 알려주는 Policy net.을 만들자
• 누가 이길지 한방에 예측하는 Value net.을 만들자
• 빠르고 그럴듯하게 끝까지 둬볼수있는 Rollout policy 도 만들자
어떻게 만들었나
Training 과정
From AlphaGo Nature paper
(SL : Supervised Learning)
끝까지 둬봄 어느 길로 가볼지
결정 누가 이길지 판단
Value net.의 학습데이터 생성
: 각 모델의 역할
(RL : Reinforcement Learning)
Self Play
하나씩 좀더 자세히
Rollout policy
• 끝까지 둬봐서 누가 이길지 판단에 사용됨
• 다음 수를 어디 둘지 확률로 표시됨
• 끝까지 둬보려면 속도가 빨라야함
• 최근 2수 근처 정보만 입력하는 모델 사용
• 학습 데이터 : 인간의 기보 5만판
• 1 CPU 에서 초당 1000판 시뮬레이션 가능
• 24% 정확도 (사람이 둔 수에 대해)
From AlphaGo Nature paper
SL policy network
• 어떤 수를 생각해볼지 결정하는 데 사용됨
• 다음 수가 어디일지 확률로 출력됨
• 사용한 모델 : Convolutional Neural Network
• 영상 분야에 주로 사용되는 딥러닝 모델
• 인간의 기보 16만판 학습
• 입력 데이터의 형태
• 현재 판의 raw 상태 (각 위치에 흑백이 있는지)
• 수동으로 추가한 특성 (축 여부, 최근 수순 등)
• 57% 정확도 (사람이 둔 수에 대해)
From AlphaGo Nature paper
RL policy network
• Value net.의 학습데이터 생성에 사용됨
• SL Policy net.과 동일 형태의 모델
• Self-Play를 통해 학습
• 승자의 수는 장려 / 패자의 수는 억제
• 128만 판 학습
Self Play
SL vs RL
둘이 대결하면? RL 승률 > 80%
SL policy net. RL policy net.
입력 현재 판의 상태
출력 다음 수에 대한 확률
뭘 학습했나 사람이라면 어디 두었을까 어디 두어야 이길 확률이 높을까
어디다 쓰나 어떤 수를 생각해볼지 결정 Value net의 학습 데이터 생성
Self Play
Value network
• 현재 판의 승리 확률을 예측하는 데 사용
• SL/RL Policy net.와 유사한 딥러닝 모델
• 승리 확률이 [-1, 1] 사이 값으로 출력됨
• 학습 데이터의 형태
• 입력 - N수 째의 상황, 출력 - 승/패
• 인간의 기보는 부적절
• Self-play로 학습 데이터 생성
• 승패 예측 오차율 : 0.23 in MSE
From AlphaGo Nature paper
AlphaGo 알고리즘 요약
• MCTS Framework 에서
• 어느 길로 가볼지 : SL Policy network (사실은 다른 요소도 함께 고려하지만 생략)
• 그 길이 좋은 길인지 : Rollout policy + Value network
• 승리 확률을 최대화하는 수를 선택함 (사실은 가장 많이 방문한 노드를 선택하지만 생략)
• 몇 집을 이기느냐에는 관심이 없음
AlphaGo의 약점은?
• 사람이 두는 수를 학습한 SL Policy Network의 약점
• 현재 판 상태로만 유불리를 판단하는 Value Network의 약점
• 최근 2수 근처만 입력으로 받는 Rollout Policy의 약점
• 잘 떠오르지 않는 묘수가 필요한 장면 (복잡한 싸움)
• 현재 상태만으로는 판단이 힘든 상황 (초반, 복잡한 싸움)
• 멀리 떨어진 곳을 연달아 둬야하는 상황 (초반, 패)
불리할 때의 대처
• 사람이라면 어떤 수를 생각하나
• 최대한 따라붙어서 후일을 도모할 수 있는 수
• 서로 어려워지는 수
• AlphaGo는 어떤 수를 생각하나
• 서로 그럴듯하게 둘 때, 승리확률이 높은 수
그래봤자 바둑. 그래도 바둑. - 조치훈 -
감사합니다