SlideShare a Scribd company logo
1 of 32
Download to read offline
Monte-Carlo Go Overview
ohyecloudy http://ohyecloudy.com
아꿈사 http://cafe.naver.com/architect1.cafe
2010.5.15
• Monte-Carlo method ?
• BadukGo AI
• Monte-Carlo Go
– overview
– simulated annealing
– simulated annealing for tree searches
– Gobble approach
• result
랜덤random
샘플링으로 계산하는
알고리즘
알고리즘
1. 큰 집합에서 여러 원소를 마구잡이로 골
라냄.
2. 원소 하나하나가 어떤 성질을 따르는지
따져본다.
3. 모든 실험 결과를 한데 모아서 정리해 확
률 값을 얻는다.
4. 확률 값을 바탕으로 어떤 결론을 이끌어
낸다.
(define (monte-carlo trials experiment)
(define (iter trials-remaining trials-passed)
(cond ((= trials-remaining 0) ; 종료 조건
(/ trials-passed trials))
((experiment) ; 평가 함수가 통과하면
(iter (- trials-remaining 1) (+ trials-passed 1)))
(else ; 평가 함수가 통과하지 않는다면
(iter (- trials-remaining 1) trials-passed))))
(iter trials 0))
랜덤 입력를 만들어내는 프로시저
어떤 성질을 따르는지 평가하는 프로시저
통과하면 값을 증가 시킨다.결과값.
2
2
trials-passed 카운팅 제외
이 원 안에 들어온 점 개수 만큼
trials-passed에 더해준다.
평가 함수
x2 + y2 ≤ 1
1000개 중에 785개가 통과했다면
2 * 2 * (785 / 1000) = 3.14
응용applications
physical sciences
design and visuals
finance and business
telecommunications
games
• Monte-Carlo method ?
• BadukGo AI
• Monte-Carlo Go
– overview
– simulated annealing
– simulated annealing for tree searches
– Gobble approach
• result
38/365: Game of Go (碁) - Rrrodrigo
Design philosophies
• Minimax tree search
– 전통적인 AI 기술
– 상대에 대한 최소값을 찾음으로써 플레이어 자신에 대한 최대값
을 찾는다.
• Knowledge-based systems
– heuristics, pattern recognition,
pattern matching
• Monte-Carlo methods
• Machine learning
– genetic algorithm, neural network
AI에 있어 바둑이란?
• 놓을 수 있는 위치가 제한되고 완벽한 정보가
있는 게임.
• 체스와 다르게 특정 지역을 제외하곤 아무 곳
에나 말을 놓을 수 있다.
– 게임 트리를 구축하면 체스와 비교도 안 되게 폭
발하는 이유.
• 미칠듯이 방대한 게임 트리
– 트리 서치를 brute force로 하면 답이 없다.
• Monte-Carlo method ?
• BadukGo AI
• Monte-Carlo Go
–overview
– simulated annealing
– simulated annealing for tree searches
– Gobble approach
• result
어떻게 하면
사람이 두는 것처럼
바둑을 둘 수 있을까?
바둑 AI 기본 요소
1. 행마 순서를 예측해서 나열해본다.
2. 말을 놓을 위치에 값을 매긴다.
3. 1과 2를 조합해서 다음 말을 놓는다.
Monte-Carlo Go 기본 요소
1. simulated annealing 방법으로 확률 값을 할당하
고 랜덤하게 행마를 한다.
– 실제 말을 놓는 건 아님. 시뮬레이션.
2. 게임이 끝났을 때를 기준으로 각 위치 값을 구한
다.
3. 1로 선택된 위치를 2번으로 평가하는 걸 여러 번
반복해서 평균 값을 고르고 가장 높은 값에 말을
놓는다.
– 반복횟수로 난이도 조절. 쉽다.
• Monte-Carlo method ?
• BadukGo AI
• Monte-Carlo Go
– overview
–simulated annealing
– simulated annealing for tree searches
– Gobble approach
• result
local minimum
global minimum
각 스텝에서 랜덤으로 주변 위치를 찾는다.
온도 T가 감소하는 방향으로 기본적으로 이동. 올라가는 것도 허용
야금학 담금질에서 따온 것.
결함을 작게 하려고 금속에 열을 가하고 냉각하는 기술
목표
바둑에 사용한다면
• local minimum
– 이번 턴에 말을 놨을 때 얻는 이득
• global minimum
– 이번 턴에 말을 놨을 때 게임이 끝난 시점에서
계산한 이득
• Monte-Carlo method ?
• BadukGo AI
• Monte-Carlo Go
– overview
– simulated annealing
–simulated annealing for tree searches
– Gobble approach
• result
• 가지치기pruning가 필요
– 방대한 트리에서 일부분을 제외해야지 계산할
만하다.
• 어떻게 가지치기를 해야 할까?
– local minimum에 빠지기 십상.
• 발견적 교수법heuristics과 랜덤을 사용.
– 여러 번 랜덤으로 말 놓을 놓고 값을 평가한다.
– 이전에 평가한 값이 높았다면 가중치를 준다.
• 단지 분기할 확률만 높일 뿐.
• 강제하지 않는다.
– 결국 가중치와 랜덤으로 global minimum으로
갈 확률을 높여준다.
그러나
• 트리 Depth가 너무 깊다.
• 평가 함수도 무거움
– 게임이 끝날 때까지 시뮬레이션 해봐야 한다.
• 대전
– 상대방이 어떻게 놓느냐를 정확히 예측할 수
없음.
– 그럼 과연 local minimum이 무엇을 가리키는
것일까?
• Monte-Carlo method ?
• BadukGo AI
• Monte-Carlo Go
– overview
– simulated annealing
– simulated annealing for tree searches
–Gobble approach
• result
simulated annealing 수정
• 제한된 확률을 넣었다.
• greedy strategy도 선택적으로 사용.
랜덤 게임을 시뮬레이션 이득
• 상대편이 어떤 짓거리를 해도 분명 좋은 수가 있다.
– 하나만 돌을 놓으면 상대방 돌을 잡는 수.
• 선수先手가 무척 중요
– 랜덤으로 걸리기도 함.
• “always look for the biggest move on the
board”
– 바둑 초보자가 노쌍 듣는 말.
– 랜덤 게임으로 더 이익이 큰 행마를 할 수 있다.
• Monte-Carlo method ?
• BadukGo AI
• Monte-Carlo Go
– overview
– simulated annealing
– simulated annealing for tree searches
– Gobble approach
• result
Monte-Carlo Go Program
• The Many Faces of Go v12
– 2008 Computer Olympiad
• Leela
• MoGo
– 2007 Computer Olympiad
– Guo Juan(프로 5단) 에게 3판 중 1판 이김. 9X9
• Crazy Stone
• Olga
• Gobble
Reference
• Monte-Carlo Method – Wikipedia
– http://en.wikipedia.org/wiki/Monte_Carlo_method
• Computer Go – Wikipedia
– http://en.wikipedia.org/wiki/Computer_Go
• Monte Carlo Go
– http://www.ideanest.com/vegos/MonteCarloGo.pdf
• Simulated annealing
– http://en.wikipedia.org/wiki/Simulated_annealing
• SICP
• 38/365: Game of Go (碁) - Rrrodrigo
– http://www.flickr.com/photos/rrrodrigo/4339468579/

More Related Content

More from 종빈 오

Intrusive data structure 소개
Intrusive data structure 소개Intrusive data structure 소개
Intrusive data structure 소개종빈 오
 
2011 아꿈사 오전반 포스트모템
2011 아꿈사 오전반 포스트모템2011 아꿈사 오전반 포스트모템
2011 아꿈사 오전반 포스트모템종빈 오
 
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81종빈 오
 
[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments종빈 오
 
넘쳐나는 정보 소화 노하우
넘쳐나는 정보 소화 노하우넘쳐나는 정보 소화 노하우
넘쳐나는 정보 소화 노하우종빈 오
 
[Domain driven design] 17장 전략의 종합
[Domain driven design] 17장 전략의 종합[Domain driven design] 17장 전략의 종합
[Domain driven design] 17장 전략의 종합종빈 오
 
LevelDB 간단한 소개
LevelDB 간단한 소개LevelDB 간단한 소개
LevelDB 간단한 소개종빈 오
 
[GEG1] 2.the game asset pipeline
[GEG1] 2.the game asset pipeline[GEG1] 2.the game asset pipeline
[GEG1] 2.the game asset pipeline종빈 오
 
[TAOCP] 2.5 동적인 저장소 할당
[TAOCP] 2.5 동적인 저장소 할당[TAOCP] 2.5 동적인 저장소 할당
[TAOCP] 2.5 동적인 저장소 할당종빈 오
 
[GEG1] 24. key value dictionary
[GEG1] 24. key value dictionary[GEG1] 24. key value dictionary
[GEG1] 24. key value dictionary종빈 오
 
[TAOCP] 2.2.3 연결된 할당 - 위상정렬
[TAOCP] 2.2.3 연결된 할당 - 위상정렬[TAOCP] 2.2.3 연결된 할당 - 위상정렬
[TAOCP] 2.2.3 연결된 할당 - 위상정렬종빈 오
 
[TAOCP] 1.3.1 MIX 설명
[TAOCP] 1.3.1 MIX 설명[TAOCP] 1.3.1 MIX 설명
[TAOCP] 1.3.1 MIX 설명종빈 오
 
[GEG1] 10.camera-centric engine design for multithreaded rendering
[GEG1] 10.camera-centric engine design for multithreaded rendering[GEG1] 10.camera-centric engine design for multithreaded rendering
[GEG1] 10.camera-centric engine design for multithreaded rendering종빈 오
 
[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이
[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이
[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이종빈 오
 
[TAOCP] 1.2.1 수학적 귀납법
[TAOCP] 1.2.1 수학적 귀납법[TAOCP] 1.2.1 수학적 귀납법
[TAOCP] 1.2.1 수학적 귀납법종빈 오
 
[shaderx7] 8.1 Cross-Platform Rendering Thread : Design and Implementation
[shaderx7] 8.1 Cross-Platform Rendering Thread : Design and Implementation	[shaderx7] 8.1 Cross-Platform Rendering Thread : Design and Implementation
[shaderx7] 8.1 Cross-Platform Rendering Thread : Design and Implementation 종빈 오
 
2010 아꿈사 오전반 포스트모템
2010 아꿈사 오전반 포스트모템2010 아꿈사 오전반 포스트모템
2010 아꿈사 오전반 포스트모템종빈 오
 
[shaderx6]8.2 3d engine tools with c++cli
[shaderx6]8.2 3d engine tools with c++cli[shaderx6]8.2 3d engine tools with c++cli
[shaderx6]8.2 3d engine tools with c++cli종빈 오
 
ManagingHumans/chap1~6
ManagingHumans/chap1~6ManagingHumans/chap1~6
ManagingHumans/chap1~6종빈 오
 
아꿈사 매니저 인사
아꿈사 매니저 인사아꿈사 매니저 인사
아꿈사 매니저 인사종빈 오
 

More from 종빈 오 (20)

Intrusive data structure 소개
Intrusive data structure 소개Intrusive data structure 소개
Intrusive data structure 소개
 
2011 아꿈사 오전반 포스트모템
2011 아꿈사 오전반 포스트모템2011 아꿈사 오전반 포스트모템
2011 아꿈사 오전반 포스트모템
 
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
[프로젝트가 서쪽으로 간 까닭은] chap 17, 18, 26, 33, 81
 
[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments[GEG1] 3.volumetric representation of virtual environments
[GEG1] 3.volumetric representation of virtual environments
 
넘쳐나는 정보 소화 노하우
넘쳐나는 정보 소화 노하우넘쳐나는 정보 소화 노하우
넘쳐나는 정보 소화 노하우
 
[Domain driven design] 17장 전략의 종합
[Domain driven design] 17장 전략의 종합[Domain driven design] 17장 전략의 종합
[Domain driven design] 17장 전략의 종합
 
LevelDB 간단한 소개
LevelDB 간단한 소개LevelDB 간단한 소개
LevelDB 간단한 소개
 
[GEG1] 2.the game asset pipeline
[GEG1] 2.the game asset pipeline[GEG1] 2.the game asset pipeline
[GEG1] 2.the game asset pipeline
 
[TAOCP] 2.5 동적인 저장소 할당
[TAOCP] 2.5 동적인 저장소 할당[TAOCP] 2.5 동적인 저장소 할당
[TAOCP] 2.5 동적인 저장소 할당
 
[GEG1] 24. key value dictionary
[GEG1] 24. key value dictionary[GEG1] 24. key value dictionary
[GEG1] 24. key value dictionary
 
[TAOCP] 2.2.3 연결된 할당 - 위상정렬
[TAOCP] 2.2.3 연결된 할당 - 위상정렬[TAOCP] 2.2.3 연결된 할당 - 위상정렬
[TAOCP] 2.2.3 연결된 할당 - 위상정렬
 
[TAOCP] 1.3.1 MIX 설명
[TAOCP] 1.3.1 MIX 설명[TAOCP] 1.3.1 MIX 설명
[TAOCP] 1.3.1 MIX 설명
 
[GEG1] 10.camera-centric engine design for multithreaded rendering
[GEG1] 10.camera-centric engine design for multithreaded rendering[GEG1] 10.camera-centric engine design for multithreaded rendering
[GEG1] 10.camera-centric engine design for multithreaded rendering
 
[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이
[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이
[TAOCP] 1.3.1 MIX 설명, 짝수 연습문제 풀이
 
[TAOCP] 1.2.1 수학적 귀납법
[TAOCP] 1.2.1 수학적 귀납법[TAOCP] 1.2.1 수학적 귀납법
[TAOCP] 1.2.1 수학적 귀납법
 
[shaderx7] 8.1 Cross-Platform Rendering Thread : Design and Implementation
[shaderx7] 8.1 Cross-Platform Rendering Thread : Design and Implementation	[shaderx7] 8.1 Cross-Platform Rendering Thread : Design and Implementation
[shaderx7] 8.1 Cross-Platform Rendering Thread : Design and Implementation
 
2010 아꿈사 오전반 포스트모템
2010 아꿈사 오전반 포스트모템2010 아꿈사 오전반 포스트모템
2010 아꿈사 오전반 포스트모템
 
[shaderx6]8.2 3d engine tools with c++cli
[shaderx6]8.2 3d engine tools with c++cli[shaderx6]8.2 3d engine tools with c++cli
[shaderx6]8.2 3d engine tools with c++cli
 
ManagingHumans/chap1~6
ManagingHumans/chap1~6ManagingHumans/chap1~6
ManagingHumans/chap1~6
 
아꿈사 매니저 인사
아꿈사 매니저 인사아꿈사 매니저 인사
아꿈사 매니저 인사
 

Monte-Carlo Go Overview

  • 1. Monte-Carlo Go Overview ohyecloudy http://ohyecloudy.com 아꿈사 http://cafe.naver.com/architect1.cafe 2010.5.15
  • 2. • Monte-Carlo method ? • BadukGo AI • Monte-Carlo Go – overview – simulated annealing – simulated annealing for tree searches – Gobble approach • result
  • 4. 알고리즘 1. 큰 집합에서 여러 원소를 마구잡이로 골 라냄. 2. 원소 하나하나가 어떤 성질을 따르는지 따져본다. 3. 모든 실험 결과를 한데 모아서 정리해 확 률 값을 얻는다. 4. 확률 값을 바탕으로 어떤 결론을 이끌어 낸다.
  • 5. (define (monte-carlo trials experiment) (define (iter trials-remaining trials-passed) (cond ((= trials-remaining 0) ; 종료 조건 (/ trials-passed trials)) ((experiment) ; 평가 함수가 통과하면 (iter (- trials-remaining 1) (+ trials-passed 1))) (else ; 평가 함수가 통과하지 않는다면 (iter (- trials-remaining 1) trials-passed)))) (iter trials 0)) 랜덤 입력를 만들어내는 프로시저 어떤 성질을 따르는지 평가하는 프로시저 통과하면 값을 증가 시킨다.결과값.
  • 6. 2 2 trials-passed 카운팅 제외 이 원 안에 들어온 점 개수 만큼 trials-passed에 더해준다. 평가 함수 x2 + y2 ≤ 1 1000개 중에 785개가 통과했다면 2 * 2 * (785 / 1000) = 3.14
  • 7. 응용applications physical sciences design and visuals finance and business telecommunications games
  • 8. • Monte-Carlo method ? • BadukGo AI • Monte-Carlo Go – overview – simulated annealing – simulated annealing for tree searches – Gobble approach • result
  • 9. 38/365: Game of Go (碁) - Rrrodrigo
  • 10. Design philosophies • Minimax tree search – 전통적인 AI 기술 – 상대에 대한 최소값을 찾음으로써 플레이어 자신에 대한 최대값 을 찾는다. • Knowledge-based systems – heuristics, pattern recognition, pattern matching • Monte-Carlo methods • Machine learning – genetic algorithm, neural network
  • 11. AI에 있어 바둑이란? • 놓을 수 있는 위치가 제한되고 완벽한 정보가 있는 게임. • 체스와 다르게 특정 지역을 제외하곤 아무 곳 에나 말을 놓을 수 있다. – 게임 트리를 구축하면 체스와 비교도 안 되게 폭 발하는 이유. • 미칠듯이 방대한 게임 트리 – 트리 서치를 brute force로 하면 답이 없다.
  • 12. • Monte-Carlo method ? • BadukGo AI • Monte-Carlo Go –overview – simulated annealing – simulated annealing for tree searches – Gobble approach • result
  • 13. 어떻게 하면 사람이 두는 것처럼 바둑을 둘 수 있을까?
  • 14. 바둑 AI 기본 요소 1. 행마 순서를 예측해서 나열해본다. 2. 말을 놓을 위치에 값을 매긴다. 3. 1과 2를 조합해서 다음 말을 놓는다.
  • 15. Monte-Carlo Go 기본 요소 1. simulated annealing 방법으로 확률 값을 할당하 고 랜덤하게 행마를 한다. – 실제 말을 놓는 건 아님. 시뮬레이션. 2. 게임이 끝났을 때를 기준으로 각 위치 값을 구한 다. 3. 1로 선택된 위치를 2번으로 평가하는 걸 여러 번 반복해서 평균 값을 고르고 가장 높은 값에 말을 놓는다. – 반복횟수로 난이도 조절. 쉽다.
  • 16. • Monte-Carlo method ? • BadukGo AI • Monte-Carlo Go – overview –simulated annealing – simulated annealing for tree searches – Gobble approach • result
  • 17. local minimum global minimum 각 스텝에서 랜덤으로 주변 위치를 찾는다. 온도 T가 감소하는 방향으로 기본적으로 이동. 올라가는 것도 허용 야금학 담금질에서 따온 것. 결함을 작게 하려고 금속에 열을 가하고 냉각하는 기술 목표
  • 18. 바둑에 사용한다면 • local minimum – 이번 턴에 말을 놨을 때 얻는 이득 • global minimum – 이번 턴에 말을 놨을 때 게임이 끝난 시점에서 계산한 이득
  • 19. • Monte-Carlo method ? • BadukGo AI • Monte-Carlo Go – overview – simulated annealing –simulated annealing for tree searches – Gobble approach • result
  • 20. • 가지치기pruning가 필요 – 방대한 트리에서 일부분을 제외해야지 계산할 만하다. • 어떻게 가지치기를 해야 할까? – local minimum에 빠지기 십상.
  • 21. • 발견적 교수법heuristics과 랜덤을 사용. – 여러 번 랜덤으로 말 놓을 놓고 값을 평가한다. – 이전에 평가한 값이 높았다면 가중치를 준다. • 단지 분기할 확률만 높일 뿐. • 강제하지 않는다. – 결국 가중치와 랜덤으로 global minimum으로 갈 확률을 높여준다.
  • 23. • 트리 Depth가 너무 깊다. • 평가 함수도 무거움 – 게임이 끝날 때까지 시뮬레이션 해봐야 한다. • 대전 – 상대방이 어떻게 놓느냐를 정확히 예측할 수 없음. – 그럼 과연 local minimum이 무엇을 가리키는 것일까?
  • 24. • Monte-Carlo method ? • BadukGo AI • Monte-Carlo Go – overview – simulated annealing – simulated annealing for tree searches –Gobble approach • result
  • 25. simulated annealing 수정 • 제한된 확률을 넣었다. • greedy strategy도 선택적으로 사용.
  • 26. 랜덤 게임을 시뮬레이션 이득 • 상대편이 어떤 짓거리를 해도 분명 좋은 수가 있다. – 하나만 돌을 놓으면 상대방 돌을 잡는 수. • 선수先手가 무척 중요 – 랜덤으로 걸리기도 함. • “always look for the biggest move on the board” – 바둑 초보자가 노쌍 듣는 말. – 랜덤 게임으로 더 이익이 큰 행마를 할 수 있다.
  • 27. • Monte-Carlo method ? • BadukGo AI • Monte-Carlo Go – overview – simulated annealing – simulated annealing for tree searches – Gobble approach • result
  • 28.
  • 29.
  • 30. Monte-Carlo Go Program • The Many Faces of Go v12 – 2008 Computer Olympiad • Leela • MoGo – 2007 Computer Olympiad – Guo Juan(프로 5단) 에게 3판 중 1판 이김. 9X9 • Crazy Stone • Olga • Gobble
  • 31.
  • 32. Reference • Monte-Carlo Method – Wikipedia – http://en.wikipedia.org/wiki/Monte_Carlo_method • Computer Go – Wikipedia – http://en.wikipedia.org/wiki/Computer_Go • Monte Carlo Go – http://www.ideanest.com/vegos/MonteCarloGo.pdf • Simulated annealing – http://en.wikipedia.org/wiki/Simulated_annealing • SICP • 38/365: Game of Go (碁) - Rrrodrigo – http://www.flickr.com/photos/rrrodrigo/4339468579/