SlideShare une entreprise Scribd logo
1  sur  71
Télécharger pour lire hors ligne
알파고 해부하기
3부
이동헌
donghun2014@gmail.com
이어서 시작하면서
• 알파고 해부하기 1부, 2부에서 이어지는 게시물입니다
• 예상 독자층은 알파고의 원리를 정확히 알고 싶어하는 분들
• 프로그래밍, 딥러닝, 머신러닝 연구자분들 포함입니다
• “프로그래머를 위한 알파고”로 생각해주세요..
• 내용이 어렵다면 “쉬운” 알파고 게시물도 있어요
1. 모두의 알파고
2. 바둑인들을 위한 알파고
4/28/2016 알파고 해부하기 3부 © 이동헌 2
당부말씀
• 정확성을 최우선가치로 씁니다
• 정확하지 않은 내용을 찾으시면 꼭! 피드백 부탁드립니다
• donghun2014@gmail.com
• 내용의 한 부분만 뚝 잘라서 인용하시면 위험합니다
• 정확한 내용들이 보통 그렇듯이, 부분을 잘라내면 뜻이 달라질 수 있어요
4/28/2016 알파고 해부하기 3부 © 이동헌 3
2부까지의 진행상황
• 알파고의 구조
• 알파고 소프트웨어의 구성
• 알파고 S/W 구성: Deep Learning 유관 부분
• 알파고 S/W 구성: Reinforcement Learning 유관 부분
• 알파고 S/W 구성: Monte-Carlo Tree Search 유관 부분
• 알파고 S/W의 대국시 동작법
• 알파고 S/W의 대국 전 트레이닝법
• 알파고 S/W의 혁신점
• 알파고의 혁신점
4/28/2016 알파고 해부하기 3부 © 이동헌 4
목차
• 알파고의 구조
• 알파고 소프트웨어의 구성
• 알파고 S/W의 대국시 동작법
• 알파고 S/W의 대국 전 트레이닝법
• 알파고 S/W의 혁신점
• 알파고의 혁신점
4/28/2016 알파고 해부하기 3부 © 이동헌 5
알파고의 대국시 동작법
• 알파고 덕분에 강화학습(reinforcement learning)의 기본
프레임워크가 많이 알려져서 설명 부담이 줄었네요
• 알파고 입장에서 바라본 세계
• “환경”의 상태를 확인하고
• 바둑판 현재 상태
• 게임 메타정보
4/28/2016 알파고 해부하기 3부 © 이동헌 6
알파고
프로그램
바둑게임
바둑판 상태
게임 메타정보
가능한 행동들
알파고의 대국시 동작법
• 알파고 덕분에 강화학습(reinforcement learning)의 기본
프레임워크가 많이 알려져서 설명 부담이 줄었네요
• 알파고 입장에서 바라본 세계
• “환경”의 상태를 확인하고
• 바둑판 현재 상태
• 게임 메타정보
• “행동”을 선택해 수행하면
4/28/2016 알파고 해부하기 3부 © 이동헌 7
알파고
프로그램
바둑게임
바둑판 상태
게임 메타정보
가능한 행동들
알파고의 대국시 동작법
• 알파고 덕분에 강화학습(reinforcement learning)의 기본
프레임워크가 많이 알려져서 설명 부담이 줄었네요
• 알파고 입장에서 바라본 세계
• “환경”의 상태를 확인하고
• 바둑판 현재 상태
• 게임 메타정보
• “행동”을 선택해 수행하면
• “환경”이 변화한다
4/28/2016 알파고 해부하기 3부 © 이동헌 8
알파고
프로그램
바둑게임
바둑판 상태
게임 메타정보
가능한 행동들
알파고의 대국시 동작법
• 알파고 덕분에 강화학습(reinforcement learning)의 기본
프레임워크가 많이 알려져서 설명 부담이 줄었네요
• 알파고 입장에서 바라본 세계
• “환경”의 상태를 확인하고
• 바둑판 현재 상태
• 게임 메타정보
• “행동”을 선택해 수행하면
• “환경”이 변화한다
• 끝날때까지 반복한다
4/28/2016 알파고 해부하기 3부 © 이동헌 9
알파고
프로그램
바둑게임
바둑판 상태
게임 메타정보
가능한 행동들
알파고의 대국시 동작법
• 알파고 덕분에 강화학습(reinforcement learning)의 기본
프레임워크가 많이 알려져서 설명 부담이 줄었네요
• 알파고 입장에서 바라본 세계
• “환경”의 상태를 확인하고
• 바둑판 현재 상태
• 게임 메타정보
• “행동”을 선택해 수행하면
• “환경”이 변화한다
• 끝날때까지 반복한다
• 대국 동안에는 “학습”을 할 수는 없습니다..
4/28/2016 알파고 해부하기 3부 © 이동헌 10
알파고
프로그램
바둑게임
바둑판 상태
게임 메타정보
가능한 행동들
알파고의 대국시 동작법
• 대국시 동작법 부분의 초점
• 실제 수 선택이 어떻게 일어나는지?
4/28/2016 알파고 해부하기 3부 © 이동헌 11
알파고의 대국시 동작법
• 대국시 동작법 부분의 초점
• 실제 수 선택이 어떻게 일어나는지?
1. 지금 바둑판 상태에서
2. 미래 시뮬레이션을 많이 해본다
3. 그 중 가장 많이 선택된 착수를 선택한다
4/28/2016 알파고 해부하기 3부 © 이동헌 12
알파고의 대국시 동작법
• 대국시 동작법 부분의 초점
• 실제 수 선택이 어떻게 일어나는지?
1. 지금 바둑판 상태에서
2. 미래 시뮬레이션을 많이 해본다
3. 그 중 가장 많이 선택된 착수를 선택한다
• 가장 많이 선택된 착수를 고르는 것이므로,
미래 시뮬레이션을 어떻게 “잘”하는지가 성능의 관건!
• Asynchronous Policy and Value MCTS (APV-MCTS) 알고리즘
4/28/2016 알파고 해부하기 3부 © 이동헌 13
알파고의 대국시 동작법
• 대국시 동작법 부분의 초점
• 실제 수 선택이 어떻게 일어나는지?
• Asynchronous Policy and Value MCTS (APV-MCTS) 알고리즘
• 컴퓨터 여러 대를 사용한 병렬처리가 가능하도록 설계
• 기본적으로 분산처리의 master node에서 작동
• 세부연산은 slave node들에 비동기 분산처리로 분배
4/28/2016 알파고 해부하기 3부 © 이동헌 14
알파고의 대국시 동작법
• 바둑판 상태: s
• Policy network와 value network에 사용된 그 input값 (아래를 참조)
• 바둑판의 19x19 각 눈(칸)들의 상태 흑/백/빈칸
• 추가로, 각 눈(칸)에 대해서
• 그냥 상수 1 (“그 칸 고유의 특성”을 모델링)
• 돌이 있다면, 몇 수 전에 놓였는지 (최소 1, 최대 8) (길이8의 binary array)
• 연결된 말의 현재 활로가 몇개인지 (최소 1, 최대 8)
• 상대가 돌을 놓는다면 내가 잃을 돌의 수 (최소 1, 최대 8)
• 내가 돌을 놓는다면, 스스로 내 말을 단수에 놓이게 된다면 몇 개나 되는지 (최소 1, 최대 8)
• 내가 돌을 놓는다면, 그 돌에 연결된 말의 활로가 몇 개가 될지 (최소 1, 최대 8)
• 내가 돌을 놓는다면, 내가 축을 만드는데 성공할지
• 내가 돌을 놓는다면, 내가 축을 탈출하는데 성공할지
• 돌을 놓는것이 바둑의 규칙에 어긋나는지
• 내가 흑돌인지 백돌인지 (이건 Value Network (판세분석) 에만 쓰입니다)
4/28/2016 알파고 해부하기 3부 © 이동헌 15
알파고의 대국시 동작법
• 바둑판 상태 s (19x19x48) tensor를 연산한 다음,
• 알파고가 둘 차례라고 가정합시다
• APV-MCTS를 시작합니다
• 현재 바둑판 상태 s를 시작 node로 간주
4/28/2016 알파고 해부하기 3부 © 이동헌 16
알파고의 대국시 동작법
• 바둑판 상태 s (19x19x48) tensor를 연산한 다음,
• 알파고가 둘 차례라고 가정합시다
• APV-MCTS를 시작합니다
• 현재 바둑판 상태 s를 시작 node로 간주
• 참고사항
• 게임 트리 초기화는 node단위로 첫 방문시 on-demand로 진행
• 처음 가 본 node 초기화 때
• 모든 가능한 착수방법 a를 모아서, (s,a)를 기본정보로 셋팅시킴
• 각 (s,a)에 대해서 다음 정보는 기본정보로 셋팅 (값들의 의미는 2부 MCTS 부분 참조)
• 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎
4/28/2016 알파고 해부하기 3부 © 이동헌 17
알파고의 대국시 동작법
• APV-MCTS 1단계: “Search”
• 목적: 현재 바둑판상태 s에 대응하는 게임트리 node s에서 출발해서,
최대한 만들어진 게임트리를 타고 내려가 보는 것
• 게임트리가 모두 갖춰져 있지 않다는 점에 주의
4/28/2016 알파고 해부하기 3부 © 이동헌 18
알파고의 대국시 동작법
• APV-MCTS 1단계: “Search”
• 목적: 현재 바둑판상태 s에 대응하는 게임트리 node s에서 출발해서,
최대한 만들어진 게임트리를 타고 내려가 보는 것
• 게임트리가 모두 갖춰져 있지 않다는 점에 주의
• 게임트리 node s에는, 가능한 모든 착수방법 a들이 저장되어 있음
• 가능한 모든 (s,a)에 대해서 다음을 계산, 최대값을 내는 착수 a선택:
𝑄 𝑠, 𝑎 + 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎)
σ 𝑏 𝑁𝑟(𝑠, 𝑏)
1 + 𝑁𝑟(𝑠, 𝑎)
• 𝑐 𝑝𝑢𝑐𝑡 = 𝟓 로 사용함 (정정: 50  5. 발견해주신 고려대학교 뇌공학과 이상훈님 감사드립니다)
• σ 𝑏 𝑁𝑟(𝑠, 𝑏) 는 𝑠에서 “가능한 모든 착수” 𝑏를 roll-out으로 선택해본 횟수의 합
• Roll-out은 나중에 search 2단계 “Expansion”에서 설명
4/28/2016 알파고 해부하기 3부 © 이동헌 19
알파고의 대국시 동작법
• APV-MCTS 1단계: “Search”
• 가능한 모든 (s,a)에 대해서 다음을 계산, 최대값을 내는 착수 a선택:
𝑄 𝑠, 𝑎 + 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎)
σ 𝑏 𝑁𝑟(𝑠, 𝑏)
1 + 𝑁𝑟(𝑠, 𝑎)
• 𝑄 𝑠, 𝑎 : 현 바둑판 상태 s에서, 착수 a를 하면, 승리할 기대값의 예상치
• 𝑃(𝑠, 𝑎)
σ 𝑏 𝑁 𝑟(𝑠,𝑏)
1+𝑁 𝑟(𝑠,𝑎)
: 현 바둑판 상태 s에서, 좀 덜 해본 착수 a를 장려하는 가중치
• σ 𝑏 𝑁𝑟(𝑠, 𝑏) 는 𝑠에서 “가능한 모든 착수” 𝑏를 roll-out으로 선택해본 횟수의 합
• Roll-out이 무엇인지는 APV-MCTS 다음 단계에서 곧 설명함
• 𝑐 𝑝𝑢𝑐𝑡 = 5 로 사용함 (덜 해본것을 장려하는 가중치 밸런스 조정)
4/28/2016 알파고 해부하기 3부 © 이동헌 20
알파고의 대국시 동작법
• APV-MCTS 1단계: “Search”
• 목적: 현재 바둑판상태 s에 대응하는 게임트리 node s에서 출발해서,
최대한 만들어진 게임트리를 타고 내려가 보는 것
• 게임트리가 모두 갖춰져 있지 않다는 점에 주의
• s에서 착수 a를 선택하면, 다음 바둑판 상태가 정해짐
• 선택된 (𝑠, 𝑎)에 대한 시뮬레이션 승패 결과가 나오기 전, 다음과 같이 임시 업데이트:
𝑁𝑟 𝑠, 𝑎 = 𝑁𝑟 𝑠, 𝑎 + 𝑛 𝑣𝑙
𝑊𝑟 𝑠, 𝑎 = 𝑊𝑟 𝑠, 𝑎 − 𝑛 𝑣𝑙
• 𝑛 𝑣𝑙 = 3으로 셋팅
• 시뮬레이션 결과가 나오기 전에, “이 선택은 마치 3번 해 봤는데 3판 다 진 것처럼
기분나쁘다”로 착각하도록 셋팅한것
• 분산처리시스템의 특성상, 이미 시뮬레이션 의뢰해둔 것은 피하도록 장려한 것임
4/28/2016 알파고 해부하기 3부 © 이동헌 21
알파고의 대국시 동작법
• APV-MCTS 1단계: “Search”
• 목적: 현재 바둑판상태 s에 대응하는 게임트리 node s에서 출발해서,
최대한 만들어진 게임트리를 타고 내려가 보는 것
• 게임트리가 모두 갖춰져 있지 않다는 점에 주의
• s에서 착수 a를 선택하면, 다음 바둑판 상태가 정해짐
• 그러면 다음 상태를 다시 새로운 s로 생각하고, 반복함
• 반복하다 보면, 처음 와 보는 s에 도착함
• 여기까지 내려온 것이 만들어진 게임트리를 최대한 타고 내려온 결과
• 더이상 타고 내려갈 곳이 없다.
4/28/2016 알파고 해부하기 3부 © 이동헌 22
알파고의 대국시 동작법
• APV-MCTS 2단계: “Evaluation”
• 목적: 지금 갖고있는 게임트리를 타고 내려가다 도달한 node 𝑠 𝐿에서, 그에
상응하는 바둑판 상태𝑠 𝐿의 예상가치를 파악하는 것
• 예상가치 파악을 2가지 방법으로 함
1. 가치망 사용
2. Roll-out 시뮬레이션 사용
4/28/2016 알파고 해부하기 3부 © 이동헌 23
알파고의 대국시 동작법
• APV-MCTS 2단계: “Evaluation”
• Value network (가치망: 이미 대국 전에 트레이닝 완료된 상태) 사용시:
• 바둑판 상태𝑠 𝐿 (노드𝑠 𝐿) 의 예상가치 (승/패 평균치) 를 계산함
• 단, 계산을 바로 하는 것이 아니라, 대기열을 queue로 만들어서 함
• 또한, 한 번 계산한 𝑠 𝐿의 값은 가치망 사용하지 않고 바로 조회할 수 있게 memoize
• 가치망 사용하는 방법 및 시기?
• 노드𝑠 𝐿이 생성될때 (4단계: “Expansion”에서 설명) 바로 call
• Call하면 대기열에 장착. 중복 call이 들어오면 대기열 단계에서 걸러냄
• 인공신경망 사용하는 evaluation이므로 GPU 사용해서 실제 계산
4/28/2016 알파고 해부하기 3부 © 이동헌 24
알파고의 대국시 동작법
• APV-MCTS 2단계: “Evaluation”
• Roll-out 시뮬레이션 방식 사용시
• Roll-out policy라고 명명된 축약판 다음 수 예측 모듈을 사용해서 시뮬레이션
• 이 축약판 모듈은 강화학습으로 만들어진 Policy network (정책망)보다 약 1000배 빠르게
다음 수 예측값을 내놓음 (정책망: 평균 0.003초 vs Roll-out: 평균 0.000002초)
• Roll-out은 트리 탐색이 종료된 node인 𝑠 𝐿에서부터 시작
• Roll-out policy를 사용해서 계속 다음 수를 예측하면서 진행
• 해당 바둑게임이 종료될때까지 계속 진행
• 바둑게임 종료시, 집 계산을 하고, 승리시 +1, 패배시 -1의 결과값을 생성
• 즉, 𝑠 𝐿에서 이어지는 미래가 승리냐 패배냐 시뮬레이션을 끝장날때까지 진행
• 실제 게임트리에 반영하는 것은 다음 단계인 “Backup”단계에서 진행
4/28/2016 알파고 해부하기 3부 © 이동헌 25
알파고의 대국시 동작법
• APV-MCTS 3단계: “Backup”
• 목적: 비동기 계산된 Roll-out 승패값과 비동기 계산된 Value network 판세
예측값을 게임 트리를 거꾸로 타고 올라가면서 반영하기
4/28/2016 알파고 해부하기 3부 © 이동헌 26
알파고의 대국시 동작법
• APV-MCTS 3단계: “Backup”
• “Search”단계에서 한 것을 되돌아보면::
• 선택된 (𝑠, 𝑎)에 대한 시뮬레이션 승패 결과가 나오기 전, 다음과 같이 임시 업데이트:
𝑁𝑟 𝑠, 𝑎 = 𝑁𝑟 𝑠, 𝑎 + 𝑛 𝑣𝑙
𝑊𝑟 𝑠, 𝑎 = 𝑊𝑟 𝑠, 𝑎 − 𝑛 𝑣𝑙
• 𝑛 𝑣𝑙 = 3으로 셋팅
• 시뮬레이션 결과가 나오기 전에, “이 선택은 마치 3번 해 봤는데 3판 다 진 것처럼
기분나쁘다”로 착각하도록 셋팅한것
• 분산처리시스템의 특성상, 이미 시뮬레이션 의뢰해둔 것은 피하도록 장려한 것임
4/28/2016 알파고 해부하기 3부 © 이동헌 27
알파고의 대국시 동작법
• APV-MCTS 3단계: “Backup”
• “Search”단계에서 한 것을 되돌아보면::
• 선택된 (𝑠, 𝑎)에 대한 시뮬레이션 승패 결과가 나오기 전, 다음과 같이 임시 업데이트:
𝑁𝑟 𝑠, 𝑎 = 𝑁𝑟 𝑠, 𝑎 + 𝑛 𝑣𝑙
𝑊𝑟 𝑠, 𝑎 = 𝑊𝑟 𝑠, 𝑎 − 𝑛 𝑣𝑙
• 𝑛 𝑣𝑙 = 3으로 셋팅
• 시뮬레이션 결과가 나오기 전에, “이 선택은 마치 3번 해 봤는데 3판 다 진 것처럼
기분나쁘다”로 착각하도록 셋팅한것
• 분산처리시스템의 특성상, 이미 시뮬레이션 의뢰해둔 것은 피하도록 장려한 것임
• 이제 비동기적으로 Evaluation이 끝난 뒤이므로,
제대로 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑟(𝑠, 𝑎)를 업데이트할 차례
4/28/2016 알파고 해부하기 3부 © 이동헌 28
알파고의 대국시 동작법
• APV-MCTS 3단계: “Backup”
• 제대로 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑟(𝑠, 𝑎)를 업데이트할 차례
• 방문 횟수 +1, 그리고 승패 결과값 𝑧𝑡을 반영해야 함
4/28/2016 알파고 해부하기 3부 © 이동헌 29
알파고의 대국시 동작법
• APV-MCTS 3단계: “Backup”
• 제대로 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑟(𝑠, 𝑎)를 업데이트할 차례
• 방문 횟수 +1, 그리고 승패 결과값 𝑧𝑡을 반영해야 함
• 게임 트리를 거꾸로 따라올라가며 나오는 엣지 𝑠, 𝑎 들을 업데이트함
• 예전 Search에서 다음과 같이 업데이트했으므로,
𝑁𝑟 𝑠, 𝑎 = 𝑁𝑟 𝑠, 𝑎 + 𝑛 𝑣𝑙
𝑊𝑟 𝑠, 𝑎 = 𝑊𝑟 𝑠, 𝑎 − 𝑛 𝑣𝑙
• 위의 변화를 거꾸로 돌리고, 제대로 된 값으로 다음과 같이 업데이트한다
𝑁𝑟 𝑠, 𝑎 = 𝑁𝑟 𝑠, 𝑎 − 𝑛 𝑣𝑙 + 1
𝑊𝑟 𝑠, 𝑎 = 𝑊𝑟 𝑠, 𝑎 + 𝑛 𝑣𝑙 + 𝑧𝑡
4/28/2016 알파고 해부하기 3부 © 이동헌 30
알파고의 대국시 동작법
• APV-MCTS 3단계: “Backup”
• 제대로 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑟(𝑠, 𝑎)를 업데이트할 차례
• 방문 횟수 +1, 그리고 승패 결과값 𝑧𝑡을 반영해야 함
• 게임 트리를 거꾸로 따라올라가며 나오는 엣지 𝑠, 𝑎 들을 업데이트함
• 𝑁𝑣 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 값도 Evaluation단계의 가치망 결과값으로 업데이트해줌.
4/28/2016 알파고 해부하기 3부 © 이동헌 31
알파고의 대국시 동작법
• APV-MCTS 3단계: “Backup”
• 제대로 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑟(𝑠, 𝑎)를 업데이트할 차례
• 방문 횟수 +1, 그리고 승패 결과값 𝑧𝑡을 반영해야 함
• 게임 트리를 거꾸로 따라올라가며 나오는 엣지 𝑠, 𝑎 들을 업데이트함
• 𝑁𝑣 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 값도 Evaluation단계의 가치망 결과값으로 업데이트해줌.
• 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 에 의존하는 𝑄(𝑠, 𝑎) 값도 업데이트한다
𝑄 𝑠, 𝑎 = 1 − 𝜆
𝑊𝑣 𝑠, 𝑎
𝑁𝑣 𝑠, 𝑎
+ 𝜆
𝑊𝑟 𝑠, 𝑎
𝑁𝑟 𝑠, 𝑎
4/28/2016 알파고 해부하기 3부 © 이동헌 32
알파고의 대국시 동작법
• APV-MCTS 3단계: “Backup”
• 제대로 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑟(𝑠, 𝑎)를 업데이트할 차례
• 방문 횟수 +1, 그리고 승패 결과값 𝑧𝑡을 반영해야 함
• 게임 트리를 거꾸로 따라올라가며 나오는 엣지 𝑠, 𝑎 들을 업데이트함
• 모든 업데이트는 비동기적으로
• Lock-free update: 트리 노드 memory space를 동적으로 할당후 트리에 붙임
• 오버헤드 당연히 있고, 완벽하지 않지만, 경험적으로 효과있는 방법론임 [링크]
4/28/2016 알파고 해부하기 3부 © 이동헌 33
알파고의 대국시 동작법
• APV-MCTS 4단계: “Expansion”
• 노드의 엣지 (𝑠, 𝑎)가 충분히 많이 선택되면, 그 엣지로 이어지는 새로운
노드 𝑠′를 확장해서 게임트리를 키워나가는 단계
• 실행조건: 𝑁𝑟 𝑠, 𝑎 > 𝑛 𝑡ℎ𝑟
• 𝑛 𝑡ℎ𝑟은 대기열에 대기목록상태와 GPU 자원의 운용상황에 맞춰서 동적으로 조절
4/28/2016 알파고 해부하기 3부 © 이동헌 34
알파고의 대국시 동작법
• APV-MCTS 4단계: “Expansion”
• 노드의 엣지 (𝑠, 𝑎)가 충분히 많이 선택되면, 그 엣지로 이어지는 새로운
노드 𝑠′를 확장해서 게임트리를 키워나가는 단계
• 실행조건: 𝑁𝑟 𝑠, 𝑎 > 𝑛 𝑡ℎ𝑟
• 𝑛 𝑡ℎ𝑟은 대기열에 대기목록상태와 GPU 자원의 운용상황에 맞춰서 동적으로 조절
• 노드 𝑠′의 initialization은 다음과 같다.
𝑁𝑟 𝑠′, 𝑎 = 0, 𝑁𝑣 𝑠′, 𝑎 = 0
𝑊𝑟 𝑠′, 𝑎 = 0, 𝑊𝑣 𝑠′, 𝑎 = 0
𝑃 𝑠′
, 𝑎 = 𝑝𝜏 𝑎 𝑠′
• 𝑝𝜏 𝑎 𝑠′ 는 tree policy. Roll-out policy보다 조금 더 복잡하지만 쉽게 계산됨.
• 𝑄(𝑠′, 𝑎)은 자연스럽게 0으로 init됨.
4/28/2016 알파고 해부하기 3부 © 이동헌 35
알파고의 대국시 동작법
• APV-MCTS 4단계: “Expansion”
• 노드 𝑠′의 initialization후에 하는 일들
• 가치망 사용해서 𝑁𝑣 𝑠′, 𝑎 , 𝑊𝑣 𝑠′, 𝑎 계산하기
• 𝑃 𝑠′
, 𝑎 값을 정책망 사용해서 제대로 계산하기
• Init단계에서 둔 값이 𝑃 𝑠′, 𝑎 = 𝑝𝜏 𝑎 𝑠′ 은 임시값
• 이것을 𝑃 𝑠′, 𝑎 = 𝑝 𝜎 𝑎 𝑠′ 로 업데이트하는것이 필요
4/28/2016 알파고 해부하기 3부 © 이동헌 36
알파고의 대국시 동작법
• APV-MCTS 4단계: “Expansion”
• 노드 𝑠′의 initialization후에 하는 일들
• 가치망 사용해서 𝑁𝑣 𝑠′, 𝑎 , 𝑊𝑣 𝑠′, 𝑎 계산하기
• 𝑃 𝑠′
, 𝑎 값을 정책망 사용해서 제대로 계산하기
• Init단계에서 둔 값이 𝑃 𝑠′, 𝑎 = 𝑝𝜏 𝑎 𝑠′ 은 임시값
• 이것을 𝑃 𝑠′, 𝑎 = 𝑝 𝜎 𝑎 𝑠′ 로 업데이트하는것이 필요
• 위 업데이트들은 비동기적으로 일어남
• 가치망은 전에 설명했듯이. 정책망도 마찬가지로 queue사용
• Init이 일어난 직후의 노드 값들은 정확하지 않지만, 비동기적으로 점차 정확도 향상됨
4/28/2016 알파고 해부하기 3부 © 이동헌 37
알파고의 대국시 동작법
• APV-MCTS 4단계: “Expansion”
• 병목 지점: GPU자원 (가치망, 정책망 모두 사용함)
• Init이 된 직후에는 임시값들이 많은데, 이를 올바르게 최대한 빨리 업데이트 필요
• 비동기진행이므로, 이 업데이트가 빨리 이루어질수록 알파고 성능이 좋아짐
4/28/2016 알파고 해부하기 3부 © 이동헌 38
알파고의 대국시 동작법
• APV-MCTS 4단계: “Expansion”
• 병목 지점: GPU자원 (가치망, 정책망 모두 사용함)
• Init이 된 직후에는 임시값들이 많은데, 이를 올바르게 최대한 빨리 업데이트 필요
• 비동기진행이므로, 이 업데이트가 빨리 이루어질수록 알파고 성능이 좋아짐
• 병목 완화 / latency향상 기법
• GPU자원 배분율과 queue상황 고려해서 expansion 속도를 조절
• 𝑛 𝑡ℎ𝑟값 동적 조정
• Mini-batch를 1로 사용
• 모아두었다가 실행하면 예측이 좀 더 안정적이겠지만, 일단 latency향상을 위한 선택
• 안정성에 대한 고려는 별도로 수 선택하는 단계에서 해결하도록 설계함
4/28/2016 알파고 해부하기 3부 © 이동헌 39
알파고의 대국시 동작법
• APV-MCTS 알고리즘 요약
1. Search: 게임 트리의 끝까지 적절하게 타고 내려오기
2. Evaluation: 트리 끝의 노드와 엣지(바둑판 상태와 착수)의 가치 계산
3. Backup: 계산된 값을 게임 트리에 반영
4. Expansion: 필요하다면 게임 트리를 확장
• 기본적으로 비동기 분산형 알고리즘
• 여러 컴퓨터를 사용하는 병렬처리 버전으로 자연스럽게 구현 가능
• 이세돌 9단과 대국한 알파고 역시 병렬처리 버전
4/28/2016 알파고 해부하기 3부 © 이동헌 40
알파고의 대국시 동작법
• 대국시 동작법 부분의 초점
• 실제 수 선택이 어떻게 일어나는지?
1. 지금 바둑판 상태에서
2. 미래 시뮬레이션을 많이 해본다 (APV-MCTS)
3. 그 중 가장 많이 선택된 착수를 선택한다
4/28/2016 알파고 해부하기 3부 © 이동헌 41
알파고의 대국시 동작법
• 대국시 동작법 부분의 초점
• 실제 수 선택이 어떻게 일어나는지?
1. 지금 바둑판 상태에서
2. 미래 시뮬레이션을 많이 해본다 (APV-MCTS)
3. 그 중 가장 많이 선택된 착수를 선택한다
• 시뮬레이션시 “가장 많이” 선택된 착수를 선택해도 되는 이유?
4/28/2016 알파고 해부하기 3부 © 이동헌 42
알파고의 대국시 동작법
• 대국시 동작법 부분의 초점
• 실제 수 선택이 어떻게? APV-MCTS동안 가장 많이 고른 착수 선택.
• 시뮬레이션시 “가장 많이” 선택된 착수를 선택해도 되는 이유?
• Search단계에서, 다음 값을 최대화하는 착수를 했기 때문
𝑄 𝑠, 𝑎 + 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎)
σ 𝑏 𝑁𝑟(𝑠, 𝑏)
1 + 𝑁𝑟(𝑠, 𝑎)
• 많이 시뮬레이션하면 앞부분만 남고 뒷부분은 0으로 수렴
• 앞부분은 승리/패배 평균치. 클수록 승리할 확률이 높음
4/28/2016 알파고 해부하기 3부 © 이동헌 43
알파고의 대국시 동작법
• 대국시 동작법 부분의 초점
• 실제 수 선택이 어떻게? APV-MCTS동안 가장 많이 고른 착수 선택.
• 시뮬레이션시 “가장 많이” 선택된 착수를 선택해도 되는 이유?
• Search단계에서, 다음 값을 최대화하는 착수를 했기 때문
𝑄 𝑠, 𝑎 + 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎)
σ 𝑏 𝑁𝑟(𝑠, 𝑏)
1 + 𝑁𝑟(𝑠, 𝑎)
• 많이 시뮬레이션하면 앞부분만 남고 뒷부분은 0으로 수렴
• 앞부분은 승리/패배 평균치. 클수록 승리할 확률이 높음
• 승리할 확신이 높은 선택을 점차 많이 하도록 APV-MCTS가 작동하기 때문.
4/28/2016 알파고 해부하기 3부 © 이동헌 44
알파고의 대국시 동작법
• 대국시 동작법 부분의 초점
• 실제 수 선택이 어떻게? APV-MCTS동안 가장 많이 고른 착수 선택.
• 시뮬레이션시 “가장 많이” 선택된 착수를 선택하는게 안된다면??
• 𝑄 𝑠, 𝑎 + 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎)
σ 𝑏 𝑁 𝑟(𝑠,𝑏)
1+𝑁 𝑟(𝑠,𝑎)
를 최대화하는 선택과
• 𝑄 𝑠, 𝑎 를 최대화하는 선택이 다른 경우임!
• 이러한 불일치가 일어난 경우, 알파고는 추가로 시간을 들여서 APV-MCTS를
계속해보아 불일치가 해소되는 것을 유도하도록 설계되어 있음
4/28/2016 알파고 해부하기 3부 © 이동헌 45
알파고의 대국시 동작법
• 대국시 동작법 부분의 초점
• 실제 수 선택이 어떻게? APV-MCTS동안 가장 많이 고른 착수 선택.
• “기권”은 언제?
• 현재 바둑판 노드 𝑠 𝐿에서 가능한 모든 착수 𝑏들 중에서
• 가장 승리할 가능성이 높은 착수 𝑎의 승리가능성이 10% 미만일때
• AlphaGo resigns
• 즉, 현재 바둑판 𝑠 𝐿에서 다음을 만족할때 기권하게 됩니다.
max
𝑏
𝑄 𝑠 𝐿, 𝑏 = 𝑄 𝑠 𝐿, 𝑎 < −0.8
4/28/2016 알파고 해부하기 3부 © 이동헌 46
목차
• 알파고의 구조
• 알파고 소프트웨어의 구성
• 알파고 S/W의 대국시 동작법
• 알파고 S/W의 대국 전 트레이닝법
• 알파고 S/W의 혁신점
• 알파고의 혁신점
4/28/2016 알파고 해부하기 3부 © 이동헌 47
알파고의 대국 전 트레이닝법
• 지금까지 알파고의 대국시 동작법을 살펴보았습니다
4/28/2016 알파고 해부하기 3부 © 이동헌 48
알파고의 대국 전 트레이닝법
• 지금까지 알파고의 대국시 동작법을 살펴보았습니다
• 이번 “대국 전 트레이닝법” 섹션의 핵심 질문:
• 저렇게 동작하기 위해서 필요한 핵심 요소들을 어떻게 만들것인가?
• 즉, 구조가 아니라 (딥러닝 구조는 1-2부에서 이미 다루었습니다),
그 핵심요소들을 사용 가능하게 셋팅하기 위한 절차는 무엇인가?
4/28/2016 알파고 해부하기 3부 © 이동헌 49
알파고의 대국 전 트레이닝법
• 지금까지 알파고의 대국시 동작법을 살펴보았습니다
• 이번 “대국 전 트레이닝법” 섹션의 핵심 질문:
• 저렇게 동작하기 위해서 필요한 핵심 요소들을 어떻게 만들것인가?
• 즉, 구조가 아니라 (딥러닝 구조는 1-2부에서 이미 다루었습니다),
그 핵심요소들을 사용 가능하게 셋팅하기 위한 절차는 무엇인가?
• 다음 세가지에 초점을 맞춥니다
1. 정책망 𝑝 𝜎(𝑎|𝑠)의 𝜎를 어떻게 찾았나?
2. 정책망 𝑝 𝜌(𝑎|𝑠)의 𝜌를 어떻게 찾았나?
3. 가치망 𝑣 𝜃(𝑠)의 𝜃를 어떻게 찾았나?
4/28/2016 알파고 해부하기 3부 © 이동헌 50
알파고의 대국 전 트레이닝법
1. 정책망 𝑝 𝜎(𝑎|𝑠)의 𝜎를 어떻게 찾았나?
• 데이터
• KGS 기보
• 160,000 경기 기보에서 약 3천만 개 (2940만개) 의 “바둑상황”
• KGS 6-9단 레벨의 인간 플레이어간의 경기만 사용
• 위 경기들 중 35.4%는 접바둑
• “바둑상황”이란, 바둑판 상황 𝑠 그리고 그 때 인간의 착수 𝑎를 같이 고려한 (𝑠, 𝑎)
4/28/2016 알파고 해부하기 3부 © 이동헌 51
알파고의 대국 전 트레이닝법
1. 정책망 𝑝 𝜎(𝑎|𝑠)의 𝜎를 어떻게 찾았나?
• 데이터 구성하기
• KGS 기보
• 2940만개 의 “바둑상황” (𝑠, 𝑎)
• 위 “바둑상황”에 추가로
• 면대칭, 점대칭 바둑판 구성을 만들어 넣음: 예시 
• 1개의 상황이 8개로 늘어남
• 위 “바둑상황” 각각에 feature를 미리 계산
• 47가지 binary feature
4/28/2016 알파고 해부하기 3부 © 이동헌 52
알파고의 대국 전 트레이닝법
1. 정책망 𝑝 𝜎(𝑎|𝑠)의 𝜎를 어떻게 찾았나?
• 머신러닝 단계
• 구성해놓은 데이터 셋에서 첫 100만개를 test set, 나머지를 training set
• Training set에서
• 랜덤으로 𝑚 개의 바둑 상황을 선택해서, minibatch 제작: 𝑠 𝑘, 𝑎 𝑘
𝑘=1
𝑚
• Minibatch 별로, 다음 값을 계산해서 𝜎에 반영
Δ𝜎 =
𝛼
𝑚
෍
𝑘=1
𝑚
𝜕 log 𝑝 𝜎 𝑎 𝑘
|𝑠 𝑘
𝜕𝜎
4/28/2016 알파고 해부하기 3부 © 이동헌 53
알파고의 대국 전 트레이닝법
1. 정책망 𝑝 𝜎(𝑎|𝑠)의 𝜎를 어떻게 찾았나?
• 머신러닝 단계
Δ𝜎 =
𝛼
𝑚
෍
𝑘=1
𝑚
𝜕 log 𝑝 𝜎 𝑎 𝑘
|𝑠 𝑘
𝜕𝜎
• 𝛼 = 0.003으로 시작, 매 8천만번 Δ𝜎 업데이트마다 절반으로 줄여나감
• 𝑚 = 16
• 현재에서 100회보다 더 이전의 업데이트에서 나온 gradient값(Δ𝜎)은 무시
• Deep Q Network에 적용되었던 기법임. 참고자료: [링크]
4/28/2016 알파고 해부하기 3부 © 이동헌 54
알파고의 대국 전 트레이닝법
1. 정책망 𝑝 𝜎(𝑎|𝑠)의 𝜎를 어떻게 찾았나?
• 머신러닝 단계
Δ𝜎 =
𝛼
𝑚
෍
𝑘=1
𝑚
𝜕 log 𝑝 𝜎 𝑎 𝑘
|𝑠 𝑘
𝜕𝜎
• GPU 50개 동원, 3주간 통산 3억4천만 업데이트 연산, 반영.
• 최종적으로 나온 𝜎값으로 𝑝 𝜎 𝑎 𝑠 셋업 완료
4/28/2016 알파고 해부하기 3부 © 이동헌 55
알파고의 대국 전 트레이닝법
2. 정책망 𝑝 𝜌(𝑎|𝑠)의 𝜌를 어떻게 찾았나?
• 강화학습 구성
• 총합 10000 회차, 각 회차별로 𝑛 대국 (𝑛 = 128)
• 각 회차별로, 𝑖번째 대국을 𝑇 𝑖
수까지 진행해 나온 승패 결과 𝑧𝑡
𝑖
와 함께
해당 대국기보 전체 (𝑠1
𝑖
, 𝑎1
𝑖
, 𝑠2
𝑖
, … , 𝑎 𝑇 𝑖
𝑖
)를 데이터화
• 위 데이터를 사용하여 𝜌를 다음과 같이 업데이트
Δ𝜌 =
𝛼
𝑛
෍
𝑖=1
𝑛
෍
𝑡=1
𝑇 𝑖
𝜕 log 𝑝 𝜌 𝑎 𝑡
𝑖
|𝑠𝑡
𝑖
𝜕𝜌
𝑧𝑡
𝑖
− 𝑣(𝑠𝑡
𝑖
)
4/28/2016 알파고 해부하기 3부 © 이동헌 56
알파고의 대국 전 트레이닝법
2. 정책망 𝑝 𝜌(𝑎|𝑠)의 𝜌를 어떻게 찾았나?
• 강화학습 구성
Δ𝜌 =
𝛼
𝑛
෍
𝑖=1
𝑛
෍
𝑡=1
𝑇 𝑖
𝜕 log 𝑝 𝜌 𝑎 𝑡
𝑖
|𝑠𝑡
𝑖
𝜕𝜌
𝑧𝑡
𝑖
− 𝑣(𝑠𝑡
𝑖
)
• 1st pass에는 𝑣 𝑠 = 0 사용. 2nd pass에는 𝑣 𝑠 = 𝑣 𝜃 𝑠 사용.
• 𝛼는 특별한 설명 없음 (𝑝 𝜎때와 동일할수도 있음)
4/28/2016 알파고 해부하기 3부 © 이동헌 57
알파고의 대국 전 트레이닝법
2. 정책망 𝑝 𝜌(𝑎|𝑠)의 𝜌를 어떻게 찾았나?
• 강화학습 진행
• 제 1회차 대국시에는 정책망 𝑝 𝜎끼리만 대국
• 2회차 이후부터는 가장 최근 정책망 𝑝 𝜌와 다음 상대방들이 대국
• 원래 정책망 𝑝 𝜎
• 이전 회차까지 존재하던 정책망 𝑝 𝜌들
• 10000회차까지 진행해서 최종적으로 업데이트되는 𝑝 𝜌(𝑎|𝑠)로 셋팅 완료
• 50개의 GPU를 사용, 1일간 진행함
4/28/2016 알파고 해부하기 3부 © 이동헌 58
알파고의 대국 전 트레이닝법
3. 가치망 𝑣 𝜃(𝑠)의 𝜃를 어떻게 찾았나?
• 데이터 구성하기
• 목표: 3천만개의 바둑판 상황 𝑠 와 대국의 최종결과 𝑧 데이터 𝑠, 𝑧 구성
• 구성 방법 요약
• 𝑝 𝜌끼리 3천만 대국 진행, 결과 𝑧 얻어냄
• 각 대국별로 딱 한 바둑판 상황 𝑠 를 얻어냄
4/28/2016 알파고 해부하기 3부 © 이동헌 59
알파고의 대국 전 트레이닝법
3. 가치망 𝑣 𝜃(𝑠)의 𝜃를 어떻게 찾았나?
• 데이터 구성하기
• 3천만 대국 각각
• 대국 시작전 1~480 사이의 수 하나 𝑛′을 무작위로 선택
• 이 수 직전까지 𝑝 𝜎로 진행
• 이 수의 바둑판 상황𝑠를 사용하게 됨
• 대국 시작전 1~391 사이의 수 하나 𝑛′′을 무작위로 선택
• 위 단계가 끝난 뒤, 𝑛′′ 수 만큼 무작위 착수 정책으로 바둑을 진행
• 그 뒤에는 𝑝 𝜌로 진행하여 대국 종료까지 진행
• 대국 종료되면 승패를 판별해서 승리/패배 결과값 𝑧를 계산
4/28/2016 알파고 해부하기 3부 © 이동헌 60
알파고의 대국 전 트레이닝법
3. 가치망 𝑣 𝜃(𝑠)의 𝜃를 어떻게 찾았나?
• 머신러닝 단계
• 3천만개의 바둑판 상황 𝑠 와 대국의 최종결과 𝑧 데이터 𝑠, 𝑧 구성
• 𝑝 𝜌끼리 3천만 대국 진행, 결과 𝑧 얻어냄
• 각 대국별로 딱 한 바둑판 상황 𝑠 를 얻어냄
• 첫 100만개를 test set으로, 나머지 2900만개를 training set으로 설정
4/28/2016 알파고 해부하기 3부 © 이동헌 61
알파고의 대국 전 트레이닝법
3. 가치망 𝑣 𝜃(𝑠)의 𝜃를 어떻게 찾았나?
• 머신러닝 단계
• 3천만개의 데이터 𝑠, 𝑧 를 데이터로 사용
• 첫 100만개를 test set으로, 나머지 2900만개를 training set으로 설정
• 다음과 같이 𝜃를 업데이트
Δ𝜃 =
𝛼
𝑚
෍
𝑘=1
𝑚
𝑧 𝑘 − 𝑣 𝜃 𝑠 𝑘
𝜕𝑣 𝜃 𝑠 𝑘
𝜕𝜃
4/28/2016 알파고 해부하기 3부 © 이동헌 62
알파고의 대국 전 트레이닝법
3. 가치망 𝑣 𝜃(𝑠)의 𝜃를 어떻게 찾았나?
• 머신러닝 단계
Δ𝜃 =
𝛼
𝑚
෍
𝑘=1
𝑚
𝑧 𝑘 − 𝑣 𝜃 𝑠 𝑘
𝜕𝑣 𝜃 𝑠 𝑘
𝜕𝜃
• 𝛼 = 0.003으로 시작, 매 8천만번 Δ𝜃 업데이트마다 절반으로 줄여나감
• 𝑚 = 32
• 현재에서 100회보다 더 이전의 업데이트에서 나온 gradient값(Δ𝜃)은 무시
4/28/2016 알파고 해부하기 3부 © 이동헌 63
알파고의 대국 전 트레이닝법
3. 가치망 𝑣 𝜃(𝑠)의 𝜃를 어떻게 찾았나?
• 머신러닝 단계
Δ𝜃 =
𝛼
𝑚
෍
𝑘=1
𝑚
𝑧 𝑘 − 𝑣 𝜃 𝑠 𝑘
𝜕𝑣 𝜃 𝑠 𝑘
𝜕𝜃
• GPU 50개 동원, 1주간 통산 5천만 업데이트 연산, 반영.
• 최종적으로 나온 𝜃값으로 𝑣 𝜃(𝑠)셋업 완료
4/28/2016 알파고 해부하기 3부 © 이동헌 64
알파고의 대국 전 트레이닝법
• 지금까지 알파고 대국 프로그램 작동에 필요한
다음 핵심요소들의 구체적인 셋팅법을 다루었습니다
1. 정책망 𝑝 𝜎(𝑎|𝑠)의 𝜎를 어떻게 찾았나?
2. 정책망 𝑝 𝜌(𝑎|𝑠)의 𝜌를 어떻게 찾았나?
3. 가치망 𝑣 𝜃(𝑠)의 𝜃를 어떻게 찾았나?
• 각 셋팅법들의 세부적 의의 및 해석은 생략합니다
• 여기선 알파고 작동 및 구성법을 명확히 제시하는 것이 목표!
• 더 깊이 알고 싶으시다면 요청해주세요
• donghun2014@gmail.com
4/28/2016 알파고 해부하기 3부 © 이동헌 65
목차
• 알파고의 구조
• 알파고 소프트웨어의 구성
• 알파고 S/W의 대국시 동작법
• 알파고 S/W의 대국 전 트레이닝법
• 알파고 S/W의 혁신점
• 알파고의 혁신점
4/28/2016 알파고 해부하기 3부 © 이동헌 66
알파고의 혁신점
4/28/2016 알파고 해부하기 3부 © 이동헌 67
알파고의 혁신점 (집단지성으로!)
• 독자 여러분들의 의견을 수렴하고 싶습니다
4/28/2016 알파고 해부하기 3부 © 이동헌 68
알파고의 혁신점 (집단지성으로!)
• 독자 여러분들의 의견을 수렴하고 싶습니다
• 하나의 관점만으로 알파고의 혁신점을 모두 다룰 수 없다고 봅니다..
• 다양한 관점에서 바라본 알파고의 혁신점에 대해서 모으고 싶습니다
• 피드백 수렴 후 에필로그 슬라이드로 정리해 공유하겠습니다
• 피드백은 donghun2014@gmail.com 으로 부탁드립니다!
4/28/2016 알파고 해부하기 3부 © 이동헌 69
끝맺으며
• “알파고 해부하기” 1, 2, 3부에서 살펴본 내용은 다음과 같습니다
• 1부 [링크]
• 알파고의 구조
• 알파고 소프트웨어의 구성 (바둑판 인식부 까지)
• 2부 [링크]
• 알파고 소프트웨어의 구성 (나머지 내용)
• 3부
• 알파고 S/W의 대국시 동작법
• 알파고 S/W의 대국 전 트레이닝법
• 이것으로 “알파고 해부하기”를 3부작으로 마무리합니다
• 알파고 논문을 보다 많은 분들이 이해하는데 도움이 될 수 있기를 바랍니다
4/28/2016 알파고 해부하기 3부 © 이동헌 70
끝맺으며
• 읽으시느라 수고하셨습니다!
• 추가설명 요청이나 내용오류 지적 등의 피드백은 마음껏
다음 주소로 부탁드립니다
• donghun2014@gmail.com
4/28/2016 알파고 해부하기 3부 © 이동헌 71

Contenu connexe

Tendances

강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introductionTaehoon Kim
 
[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기Chris Ohk
 
強化学習その2
強化学習その2強化学習その2
強化学習その2nishio
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -MITSUNARI Shigeo
 
方策勾配型強化学習の基礎と応用
方策勾配型強化学習の基礎と応用方策勾配型強化学習の基礎と応用
方策勾配型強化学習の基礎と応用Ryo Iwaki
 
[DL輪読会]AlphaStarとその関連技術
[DL輪読会]AlphaStarとその関連技術[DL輪読会]AlphaStarとその関連技術
[DL輪読会]AlphaStarとその関連技術Deep Learning JP
 
알파고 (바둑 인공지능)의 작동 원리
알파고 (바둑 인공지능)의 작동 원리알파고 (바둑 인공지능)의 작동 원리
알파고 (바둑 인공지능)의 작동 원리Shane (Seungwhan) Moon
 
AlphaGo Zero 解説
AlphaGo Zero 解説AlphaGo Zero 解説
AlphaGo Zero 解説suckgeun lee
 
強化学習の分散アーキテクチャ変遷
強化学習の分散アーキテクチャ変遷強化学習の分散アーキテクチャ変遷
強化学習の分散アーキテクチャ変遷Eiji Sekiya
 
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence ModelingDeep Learning JP
 
딥러닝 기본 원리의 이해
딥러닝 기본 원리의 이해딥러닝 기본 원리의 이해
딥러닝 기본 원리의 이해Hee Won Park
 
2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)
2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)
2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)智啓 出川
 
강화학습 알고리즘의 흐름도 Part 2
강화학습 알고리즘의 흐름도 Part 2강화학습 알고리즘의 흐름도 Part 2
강화학습 알고리즘의 흐름도 Part 2Dongmin Lee
 
Trust Region Policy Optimization
Trust Region Policy OptimizationTrust Region Policy Optimization
Trust Region Policy Optimizationmooopan
 
인공지능과 딥러닝에 대한 소개
인공지능과 딥러닝에 대한 소개인공지능과 딥러닝에 대한 소개
인공지능과 딥러닝에 대한 소개Young-Min kang
 
RLCode와 A3C 쉽고 깊게 이해하기
RLCode와 A3C 쉽고 깊게 이해하기RLCode와 A3C 쉽고 깊게 이해하기
RLCode와 A3C 쉽고 깊게 이해하기Woong won Lee
 
머신러닝(딥러닝 요약)
머신러닝(딥러닝 요약)머신러닝(딥러닝 요약)
머신러닝(딥러닝 요약)Byung-han Lee
 
분산 강화학습 논문(DeepMind IMPALA) 구현
분산 강화학습 논문(DeepMind IMPALA) 구현분산 강화학습 논문(DeepMind IMPALA) 구현
분산 강화학습 논문(DeepMind IMPALA) 구현정주 김
 
기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가Yongha Kim
 
강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)
강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)
강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)Curt Park
 

Tendances (20)

강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction강화 학습 기초 Reinforcement Learning an introduction
강화 학습 기초 Reinforcement Learning an introduction
 
[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기[RLKorea] <하스스톤> 강화학습 환경 개발기
[RLKorea] <하스스톤> 강화학습 환경 개발기
 
強化学習その2
強化学習その2強化学習その2
強化学習その2
 
暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -暗号文のままで計算しよう - 準同型暗号入門 -
暗号文のままで計算しよう - 準同型暗号入門 -
 
方策勾配型強化学習の基礎と応用
方策勾配型強化学習の基礎と応用方策勾配型強化学習の基礎と応用
方策勾配型強化学習の基礎と応用
 
[DL輪読会]AlphaStarとその関連技術
[DL輪読会]AlphaStarとその関連技術[DL輪読会]AlphaStarとその関連技術
[DL輪読会]AlphaStarとその関連技術
 
알파고 (바둑 인공지능)의 작동 원리
알파고 (바둑 인공지능)의 작동 원리알파고 (바둑 인공지능)의 작동 원리
알파고 (바둑 인공지능)의 작동 원리
 
AlphaGo Zero 解説
AlphaGo Zero 解説AlphaGo Zero 解説
AlphaGo Zero 解説
 
強化学習の分散アーキテクチャ変遷
強化学習の分散アーキテクチャ変遷強化学習の分散アーキテクチャ変遷
強化学習の分散アーキテクチャ変遷
 
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
[DL輪読会]Decision Transformer: Reinforcement Learning via Sequence Modeling
 
딥러닝 기본 원리의 이해
딥러닝 기본 원리의 이해딥러닝 기본 원리의 이해
딥러닝 기본 원리의 이해
 
2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)
2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)
2015年度GPGPU実践プログラミング 第9回 行列計算(行列-行列積)
 
강화학습 알고리즘의 흐름도 Part 2
강화학습 알고리즘의 흐름도 Part 2강화학습 알고리즘의 흐름도 Part 2
강화학습 알고리즘의 흐름도 Part 2
 
Trust Region Policy Optimization
Trust Region Policy OptimizationTrust Region Policy Optimization
Trust Region Policy Optimization
 
인공지능과 딥러닝에 대한 소개
인공지능과 딥러닝에 대한 소개인공지능과 딥러닝에 대한 소개
인공지능과 딥러닝에 대한 소개
 
RLCode와 A3C 쉽고 깊게 이해하기
RLCode와 A3C 쉽고 깊게 이해하기RLCode와 A3C 쉽고 깊게 이해하기
RLCode와 A3C 쉽고 깊게 이해하기
 
머신러닝(딥러닝 요약)
머신러닝(딥러닝 요약)머신러닝(딥러닝 요약)
머신러닝(딥러닝 요약)
 
분산 강화학습 논문(DeepMind IMPALA) 구현
분산 강화학습 논문(DeepMind IMPALA) 구현분산 강화학습 논문(DeepMind IMPALA) 구현
분산 강화학습 논문(DeepMind IMPALA) 구현
 
기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가기계학습 / 딥러닝이란 무엇인가
기계학습 / 딥러닝이란 무엇인가
 
강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)
강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)
강화학습 기초부터 DQN까지 (Reinforcement Learning from Basics to DQN)
 

En vedette

Concurrent Programming (Java thread 다루기)
Concurrent Programming (Java thread 다루기)Concurrent Programming (Java thread 다루기)
Concurrent Programming (Java thread 다루기)JungGeun Lee
 
STRONG KOREA 20130609
STRONG KOREA 20130609STRONG KOREA 20130609
STRONG KOREA 20130609Leo Kim
 
기계 학습의 현재와 미래
기계 학습의 현재와 미래기계 학습의 현재와 미래
기계 학습의 현재와 미래Joon Kim
 
20160409 microsoft 세미나 머신러닝관련 발표자료
20160409 microsoft 세미나 머신러닝관련 발표자료20160409 microsoft 세미나 머신러닝관련 발표자료
20160409 microsoft 세미나 머신러닝관련 발표자료JungGeun Lee
 
주식 기술적 분석#3 (추세선)
주식 기술적 분석#3 (추세선)주식 기술적 분석#3 (추세선)
주식 기술적 분석#3 (추세선)Ant House
 
1차시 smart education
1차시 smart education1차시 smart education
1차시 smart educationJaechoon Jo
 
기술적분석 16 trix
기술적분석 16 trix기술적분석 16 trix
기술적분석 16 trixAnt House
 
[BIZ+005 스타트업 투자/법률 기초편] 첫 투자를 위한 스타트업 기초상식 | 비즈업 조가연님
[BIZ+005 스타트업 투자/법률 기초편] 첫 투자를 위한 스타트업 기초상식 | 비즈업 조가연님 [BIZ+005 스타트업 투자/법률 기초편] 첫 투자를 위한 스타트업 기초상식 | 비즈업 조가연님
[BIZ+005 스타트업 투자/법률 기초편] 첫 투자를 위한 스타트업 기초상식 | 비즈업 조가연님 BIZ+
 
[한국어] Neural Architecture Search with Reinforcement Learning
[한국어] Neural Architecture Search with Reinforcement Learning[한국어] Neural Architecture Search with Reinforcement Learning
[한국어] Neural Architecture Search with Reinforcement LearningKiho Suh
 
Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리SANG WON PARK
 
머피의 머신러닝: Undirencted Graphical Model
머피의 머신러닝: Undirencted Graphical Model머피의 머신러닝: Undirencted Graphical Model
머피의 머신러닝: Undirencted Graphical ModelJungkyu Lee
 
Reinforcement learning v0.5
Reinforcement learning v0.5Reinforcement learning v0.5
Reinforcement learning v0.5SANG WON PARK
 
[한국어] Multiagent Bidirectional- Coordinated Nets for Learning to Play StarCra...
[한국어] Multiagent Bidirectional- Coordinated Nets for Learning to Play StarCra...[한국어] Multiagent Bidirectional- Coordinated Nets for Learning to Play StarCra...
[한국어] Multiagent Bidirectional- Coordinated Nets for Learning to Play StarCra...Kiho Suh
 
파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기정주 김
 
알파고 학습 이해하기
알파고 학습 이해하기알파고 학습 이해하기
알파고 학습 이해하기도형 임
 
기술적분석16 sonar
기술적분석16 sonar기술적분석16 sonar
기술적분석16 sonarAnt House
 
[비즈클래스 3기] IP를 활용한 해외진출사례 | 핑크퐁 이승규 CFO
[비즈클래스 3기]  IP를 활용한 해외진출사례 | 핑크퐁 이승규 CFO[비즈클래스 3기]  IP를 활용한 해외진출사례 | 핑크퐁 이승규 CFO
[비즈클래스 3기] IP를 활용한 해외진출사례 | 핑크퐁 이승규 CFOBIZ+
 

En vedette (20)

Concurrent Programming (Java thread 다루기)
Concurrent Programming (Java thread 다루기)Concurrent Programming (Java thread 다루기)
Concurrent Programming (Java thread 다루기)
 
STRONG KOREA 20130609
STRONG KOREA 20130609STRONG KOREA 20130609
STRONG KOREA 20130609
 
기계 학습의 현재와 미래
기계 학습의 현재와 미래기계 학습의 현재와 미래
기계 학습의 현재와 미래
 
20160409 microsoft 세미나 머신러닝관련 발표자료
20160409 microsoft 세미나 머신러닝관련 발표자료20160409 microsoft 세미나 머신러닝관련 발표자료
20160409 microsoft 세미나 머신러닝관련 발표자료
 
4차산업혁명
4차산업혁명4차산업혁명
4차산업혁명
 
주식 기술적 분석#3 (추세선)
주식 기술적 분석#3 (추세선)주식 기술적 분석#3 (추세선)
주식 기술적 분석#3 (추세선)
 
1차시 smart education
1차시 smart education1차시 smart education
1차시 smart education
 
기술적분석 16 trix
기술적분석 16 trix기술적분석 16 trix
기술적분석 16 trix
 
[BIZ+005 스타트업 투자/법률 기초편] 첫 투자를 위한 스타트업 기초상식 | 비즈업 조가연님
[BIZ+005 스타트업 투자/법률 기초편] 첫 투자를 위한 스타트업 기초상식 | 비즈업 조가연님 [BIZ+005 스타트업 투자/법률 기초편] 첫 투자를 위한 스타트업 기초상식 | 비즈업 조가연님
[BIZ+005 스타트업 투자/법률 기초편] 첫 투자를 위한 스타트업 기초상식 | 비즈업 조가연님
 
파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝
 
[한국어] Neural Architecture Search with Reinforcement Learning
[한국어] Neural Architecture Search with Reinforcement Learning[한국어] Neural Architecture Search with Reinforcement Learning
[한국어] Neural Architecture Search with Reinforcement Learning
 
Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리
 
머피의 머신러닝: Undirencted Graphical Model
머피의 머신러닝: Undirencted Graphical Model머피의 머신러닝: Undirencted Graphical Model
머피의 머신러닝: Undirencted Graphical Model
 
Reinforcement learning v0.5
Reinforcement learning v0.5Reinforcement learning v0.5
Reinforcement learning v0.5
 
인공지능을 위한 뇌과학
인공지능을 위한 뇌과학인공지능을 위한 뇌과학
인공지능을 위한 뇌과학
 
[한국어] Multiagent Bidirectional- Coordinated Nets for Learning to Play StarCra...
[한국어] Multiagent Bidirectional- Coordinated Nets for Learning to Play StarCra...[한국어] Multiagent Bidirectional- Coordinated Nets for Learning to Play StarCra...
[한국어] Multiagent Bidirectional- Coordinated Nets for Learning to Play StarCra...
 
파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기파이썬으로 나만의 강화학습 환경 만들기
파이썬으로 나만의 강화학습 환경 만들기
 
알파고 학습 이해하기
알파고 학습 이해하기알파고 학습 이해하기
알파고 학습 이해하기
 
기술적분석16 sonar
기술적분석16 sonar기술적분석16 sonar
기술적분석16 sonar
 
[비즈클래스 3기] IP를 활용한 해외진출사례 | 핑크퐁 이승규 CFO
[비즈클래스 3기]  IP를 활용한 해외진출사례 | 핑크퐁 이승규 CFO[비즈클래스 3기]  IP를 활용한 해외진출사례 | 핑크퐁 이승규 CFO
[비즈클래스 3기] IP를 활용한 해외진출사례 | 핑크퐁 이승규 CFO
 

Similaire à 알파고 해부하기 3부

파이썬과 케라스로 배우는 강화학습 저자특강
파이썬과 케라스로 배우는 강화학습 저자특강파이썬과 케라스로 배우는 강화학습 저자특강
파이썬과 케라스로 배우는 강화학습 저자특강Woong won Lee
 
Early stopping as nonparametric variational inference
Early stopping as nonparametric variational inferenceEarly stopping as nonparametric variational inference
Early stopping as nonparametric variational inferencetaeseon ryu
 
Google AlphaGo, 어떻게 동작할까요?
Google AlphaGo, 어떻게 동작할까요?Google AlphaGo, 어떻게 동작할까요?
Google AlphaGo, 어떻게 동작할까요?Lee Ji Eun
 
한국인공지능연구소 강화학습랩 결과보고서
한국인공지능연구소 강화학습랩 결과보고서한국인공지능연구소 강화학습랩 결과보고서
한국인공지능연구소 강화학습랩 결과보고서Euijin Jeong
 
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)Jaikwang Lee
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기흥래 김
 
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것NAVER D2
 
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅Kiyoung Moon
 
Chapter 11 Practical Methodology
Chapter 11 Practical MethodologyChapter 11 Practical Methodology
Chapter 11 Practical MethodologyKyeongUkJang
 
모두의 알파고
모두의 알파고모두의 알파고
모두의 알파고Donghun Lee
 
Imagination-Augmented Agents for Deep Reinforcement Learning
Imagination-Augmented Agents for Deep Reinforcement LearningImagination-Augmented Agents for Deep Reinforcement Learning
Imagination-Augmented Agents for Deep Reinforcement Learning성재 최
 
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기OpenStack Korea Community
 
퀵 정렬 알고리즘 기초
퀵 정렬 알고리즘 기초퀵 정렬 알고리즘 기초
퀵 정렬 알고리즘 기초Dongyi Kim
 
NDC 2018 억! 소리나는 게임 서비스 플랫폼을 지탱하는 알고리즘 - 해시, 불변데이터, 확률적 자료구조
NDC 2018 억! 소리나는 게임 서비스 플랫폼을 지탱하는 알고리즘 - 해시, 불변데이터, 확률적 자료구조NDC 2018 억! 소리나는 게임 서비스 플랫폼을 지탱하는 알고리즘 - 해시, 불변데이터, 확률적 자료구조
NDC 2018 억! 소리나는 게임 서비스 플랫폼을 지탱하는 알고리즘 - 해시, 불변데이터, 확률적 자료구조Isaac Jeon
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영NAVER D2
 
JVM Memory And GC Tuning Test
JVM Memory And GC Tuning Test JVM Memory And GC Tuning Test
JVM Memory And GC Tuning Test 승린 이
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유Hyojun Jeon
 
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) 파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) Tae Young Lee
 
Pose Graph based SLAM
Pose Graph based SLAMPose Graph based SLAM
Pose Graph based SLAMEdwardIm1
 

Similaire à 알파고 해부하기 3부 (20)

파이썬과 케라스로 배우는 강화학습 저자특강
파이썬과 케라스로 배우는 강화학습 저자특강파이썬과 케라스로 배우는 강화학습 저자특강
파이썬과 케라스로 배우는 강화학습 저자특강
 
Early stopping as nonparametric variational inference
Early stopping as nonparametric variational inferenceEarly stopping as nonparametric variational inference
Early stopping as nonparametric variational inference
 
Google AlphaGo, 어떻게 동작할까요?
Google AlphaGo, 어떻게 동작할까요?Google AlphaGo, 어떻게 동작할까요?
Google AlphaGo, 어떻게 동작할까요?
 
한국인공지능연구소 강화학습랩 결과보고서
한국인공지능연구소 강화학습랩 결과보고서한국인공지능연구소 강화학습랩 결과보고서
한국인공지능연구소 강화학습랩 결과보고서
 
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
대용량 로그분석 Bigquery로 간단히 사용하기 (20170215 T아카데미)
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
 
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
 
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
Debugging with visual studio. 비주얼 스튜디오를 활용한 디버깅
 
Chapter 11 Practical Methodology
Chapter 11 Practical MethodologyChapter 11 Practical Methodology
Chapter 11 Practical Methodology
 
모두의 알파고
모두의 알파고모두의 알파고
모두의 알파고
 
Imagination-Augmented Agents for Deep Reinforcement Learning
Imagination-Augmented Agents for Deep Reinforcement LearningImagination-Augmented Agents for Deep Reinforcement Learning
Imagination-Augmented Agents for Deep Reinforcement Learning
 
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
[OpenInfra Days Korea 2018] Day 2 - E1: 딥다이브 - OpenStack 생존기
 
퀵 정렬 알고리즘 기초
퀵 정렬 알고리즘 기초퀵 정렬 알고리즘 기초
퀵 정렬 알고리즘 기초
 
NDC 2018 억! 소리나는 게임 서비스 플랫폼을 지탱하는 알고리즘 - 해시, 불변데이터, 확률적 자료구조
NDC 2018 억! 소리나는 게임 서비스 플랫폼을 지탱하는 알고리즘 - 해시, 불변데이터, 확률적 자료구조NDC 2018 억! 소리나는 게임 서비스 플랫폼을 지탱하는 알고리즘 - 해시, 불변데이터, 확률적 자료구조
NDC 2018 억! 소리나는 게임 서비스 플랫폼을 지탱하는 알고리즘 - 해시, 불변데이터, 확률적 자료구조
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영
 
JVM Memory And GC Tuning Test
JVM Memory And GC Tuning Test JVM Memory And GC Tuning Test
JVM Memory And GC Tuning Test
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
 
DL from scratch(6)
DL from scratch(6)DL from scratch(6)
DL from scratch(6)
 
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영) 파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
파이썬 데이터과학 레벨1 - 초보자를 위한 데이터분석, 데이터시각화 (2020년 이태영)
 
Pose Graph based SLAM
Pose Graph based SLAMPose Graph based SLAM
Pose Graph based SLAM
 

알파고 해부하기 3부

  • 2. 이어서 시작하면서 • 알파고 해부하기 1부, 2부에서 이어지는 게시물입니다 • 예상 독자층은 알파고의 원리를 정확히 알고 싶어하는 분들 • 프로그래밍, 딥러닝, 머신러닝 연구자분들 포함입니다 • “프로그래머를 위한 알파고”로 생각해주세요.. • 내용이 어렵다면 “쉬운” 알파고 게시물도 있어요 1. 모두의 알파고 2. 바둑인들을 위한 알파고 4/28/2016 알파고 해부하기 3부 © 이동헌 2
  • 3. 당부말씀 • 정확성을 최우선가치로 씁니다 • 정확하지 않은 내용을 찾으시면 꼭! 피드백 부탁드립니다 • donghun2014@gmail.com • 내용의 한 부분만 뚝 잘라서 인용하시면 위험합니다 • 정확한 내용들이 보통 그렇듯이, 부분을 잘라내면 뜻이 달라질 수 있어요 4/28/2016 알파고 해부하기 3부 © 이동헌 3
  • 4. 2부까지의 진행상황 • 알파고의 구조 • 알파고 소프트웨어의 구성 • 알파고 S/W 구성: Deep Learning 유관 부분 • 알파고 S/W 구성: Reinforcement Learning 유관 부분 • 알파고 S/W 구성: Monte-Carlo Tree Search 유관 부분 • 알파고 S/W의 대국시 동작법 • 알파고 S/W의 대국 전 트레이닝법 • 알파고 S/W의 혁신점 • 알파고의 혁신점 4/28/2016 알파고 해부하기 3부 © 이동헌 4
  • 5. 목차 • 알파고의 구조 • 알파고 소프트웨어의 구성 • 알파고 S/W의 대국시 동작법 • 알파고 S/W의 대국 전 트레이닝법 • 알파고 S/W의 혁신점 • 알파고의 혁신점 4/28/2016 알파고 해부하기 3부 © 이동헌 5
  • 6. 알파고의 대국시 동작법 • 알파고 덕분에 강화학습(reinforcement learning)의 기본 프레임워크가 많이 알려져서 설명 부담이 줄었네요 • 알파고 입장에서 바라본 세계 • “환경”의 상태를 확인하고 • 바둑판 현재 상태 • 게임 메타정보 4/28/2016 알파고 해부하기 3부 © 이동헌 6 알파고 프로그램 바둑게임 바둑판 상태 게임 메타정보 가능한 행동들
  • 7. 알파고의 대국시 동작법 • 알파고 덕분에 강화학습(reinforcement learning)의 기본 프레임워크가 많이 알려져서 설명 부담이 줄었네요 • 알파고 입장에서 바라본 세계 • “환경”의 상태를 확인하고 • 바둑판 현재 상태 • 게임 메타정보 • “행동”을 선택해 수행하면 4/28/2016 알파고 해부하기 3부 © 이동헌 7 알파고 프로그램 바둑게임 바둑판 상태 게임 메타정보 가능한 행동들
  • 8. 알파고의 대국시 동작법 • 알파고 덕분에 강화학습(reinforcement learning)의 기본 프레임워크가 많이 알려져서 설명 부담이 줄었네요 • 알파고 입장에서 바라본 세계 • “환경”의 상태를 확인하고 • 바둑판 현재 상태 • 게임 메타정보 • “행동”을 선택해 수행하면 • “환경”이 변화한다 4/28/2016 알파고 해부하기 3부 © 이동헌 8 알파고 프로그램 바둑게임 바둑판 상태 게임 메타정보 가능한 행동들
  • 9. 알파고의 대국시 동작법 • 알파고 덕분에 강화학습(reinforcement learning)의 기본 프레임워크가 많이 알려져서 설명 부담이 줄었네요 • 알파고 입장에서 바라본 세계 • “환경”의 상태를 확인하고 • 바둑판 현재 상태 • 게임 메타정보 • “행동”을 선택해 수행하면 • “환경”이 변화한다 • 끝날때까지 반복한다 4/28/2016 알파고 해부하기 3부 © 이동헌 9 알파고 프로그램 바둑게임 바둑판 상태 게임 메타정보 가능한 행동들
  • 10. 알파고의 대국시 동작법 • 알파고 덕분에 강화학습(reinforcement learning)의 기본 프레임워크가 많이 알려져서 설명 부담이 줄었네요 • 알파고 입장에서 바라본 세계 • “환경”의 상태를 확인하고 • 바둑판 현재 상태 • 게임 메타정보 • “행동”을 선택해 수행하면 • “환경”이 변화한다 • 끝날때까지 반복한다 • 대국 동안에는 “학습”을 할 수는 없습니다.. 4/28/2016 알파고 해부하기 3부 © 이동헌 10 알파고 프로그램 바둑게임 바둑판 상태 게임 메타정보 가능한 행동들
  • 11. 알파고의 대국시 동작법 • 대국시 동작법 부분의 초점 • 실제 수 선택이 어떻게 일어나는지? 4/28/2016 알파고 해부하기 3부 © 이동헌 11
  • 12. 알파고의 대국시 동작법 • 대국시 동작법 부분의 초점 • 실제 수 선택이 어떻게 일어나는지? 1. 지금 바둑판 상태에서 2. 미래 시뮬레이션을 많이 해본다 3. 그 중 가장 많이 선택된 착수를 선택한다 4/28/2016 알파고 해부하기 3부 © 이동헌 12
  • 13. 알파고의 대국시 동작법 • 대국시 동작법 부분의 초점 • 실제 수 선택이 어떻게 일어나는지? 1. 지금 바둑판 상태에서 2. 미래 시뮬레이션을 많이 해본다 3. 그 중 가장 많이 선택된 착수를 선택한다 • 가장 많이 선택된 착수를 고르는 것이므로, 미래 시뮬레이션을 어떻게 “잘”하는지가 성능의 관건! • Asynchronous Policy and Value MCTS (APV-MCTS) 알고리즘 4/28/2016 알파고 해부하기 3부 © 이동헌 13
  • 14. 알파고의 대국시 동작법 • 대국시 동작법 부분의 초점 • 실제 수 선택이 어떻게 일어나는지? • Asynchronous Policy and Value MCTS (APV-MCTS) 알고리즘 • 컴퓨터 여러 대를 사용한 병렬처리가 가능하도록 설계 • 기본적으로 분산처리의 master node에서 작동 • 세부연산은 slave node들에 비동기 분산처리로 분배 4/28/2016 알파고 해부하기 3부 © 이동헌 14
  • 15. 알파고의 대국시 동작법 • 바둑판 상태: s • Policy network와 value network에 사용된 그 input값 (아래를 참조) • 바둑판의 19x19 각 눈(칸)들의 상태 흑/백/빈칸 • 추가로, 각 눈(칸)에 대해서 • 그냥 상수 1 (“그 칸 고유의 특성”을 모델링) • 돌이 있다면, 몇 수 전에 놓였는지 (최소 1, 최대 8) (길이8의 binary array) • 연결된 말의 현재 활로가 몇개인지 (최소 1, 최대 8) • 상대가 돌을 놓는다면 내가 잃을 돌의 수 (최소 1, 최대 8) • 내가 돌을 놓는다면, 스스로 내 말을 단수에 놓이게 된다면 몇 개나 되는지 (최소 1, 최대 8) • 내가 돌을 놓는다면, 그 돌에 연결된 말의 활로가 몇 개가 될지 (최소 1, 최대 8) • 내가 돌을 놓는다면, 내가 축을 만드는데 성공할지 • 내가 돌을 놓는다면, 내가 축을 탈출하는데 성공할지 • 돌을 놓는것이 바둑의 규칙에 어긋나는지 • 내가 흑돌인지 백돌인지 (이건 Value Network (판세분석) 에만 쓰입니다) 4/28/2016 알파고 해부하기 3부 © 이동헌 15
  • 16. 알파고의 대국시 동작법 • 바둑판 상태 s (19x19x48) tensor를 연산한 다음, • 알파고가 둘 차례라고 가정합시다 • APV-MCTS를 시작합니다 • 현재 바둑판 상태 s를 시작 node로 간주 4/28/2016 알파고 해부하기 3부 © 이동헌 16
  • 17. 알파고의 대국시 동작법 • 바둑판 상태 s (19x19x48) tensor를 연산한 다음, • 알파고가 둘 차례라고 가정합시다 • APV-MCTS를 시작합니다 • 현재 바둑판 상태 s를 시작 node로 간주 • 참고사항 • 게임 트리 초기화는 node단위로 첫 방문시 on-demand로 진행 • 처음 가 본 node 초기화 때 • 모든 가능한 착수방법 a를 모아서, (s,a)를 기본정보로 셋팅시킴 • 각 (s,a)에 대해서 다음 정보는 기본정보로 셋팅 (값들의 의미는 2부 MCTS 부분 참조) • 𝑃 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑄 𝑠, 𝑎 4/28/2016 알파고 해부하기 3부 © 이동헌 17
  • 18. 알파고의 대국시 동작법 • APV-MCTS 1단계: “Search” • 목적: 현재 바둑판상태 s에 대응하는 게임트리 node s에서 출발해서, 최대한 만들어진 게임트리를 타고 내려가 보는 것 • 게임트리가 모두 갖춰져 있지 않다는 점에 주의 4/28/2016 알파고 해부하기 3부 © 이동헌 18
  • 19. 알파고의 대국시 동작법 • APV-MCTS 1단계: “Search” • 목적: 현재 바둑판상태 s에 대응하는 게임트리 node s에서 출발해서, 최대한 만들어진 게임트리를 타고 내려가 보는 것 • 게임트리가 모두 갖춰져 있지 않다는 점에 주의 • 게임트리 node s에는, 가능한 모든 착수방법 a들이 저장되어 있음 • 가능한 모든 (s,a)에 대해서 다음을 계산, 최대값을 내는 착수 a선택: 𝑄 𝑠, 𝑎 + 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎) σ 𝑏 𝑁𝑟(𝑠, 𝑏) 1 + 𝑁𝑟(𝑠, 𝑎) • 𝑐 𝑝𝑢𝑐𝑡 = 𝟓 로 사용함 (정정: 50  5. 발견해주신 고려대학교 뇌공학과 이상훈님 감사드립니다) • σ 𝑏 𝑁𝑟(𝑠, 𝑏) 는 𝑠에서 “가능한 모든 착수” 𝑏를 roll-out으로 선택해본 횟수의 합 • Roll-out은 나중에 search 2단계 “Expansion”에서 설명 4/28/2016 알파고 해부하기 3부 © 이동헌 19
  • 20. 알파고의 대국시 동작법 • APV-MCTS 1단계: “Search” • 가능한 모든 (s,a)에 대해서 다음을 계산, 최대값을 내는 착수 a선택: 𝑄 𝑠, 𝑎 + 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎) σ 𝑏 𝑁𝑟(𝑠, 𝑏) 1 + 𝑁𝑟(𝑠, 𝑎) • 𝑄 𝑠, 𝑎 : 현 바둑판 상태 s에서, 착수 a를 하면, 승리할 기대값의 예상치 • 𝑃(𝑠, 𝑎) σ 𝑏 𝑁 𝑟(𝑠,𝑏) 1+𝑁 𝑟(𝑠,𝑎) : 현 바둑판 상태 s에서, 좀 덜 해본 착수 a를 장려하는 가중치 • σ 𝑏 𝑁𝑟(𝑠, 𝑏) 는 𝑠에서 “가능한 모든 착수” 𝑏를 roll-out으로 선택해본 횟수의 합 • Roll-out이 무엇인지는 APV-MCTS 다음 단계에서 곧 설명함 • 𝑐 𝑝𝑢𝑐𝑡 = 5 로 사용함 (덜 해본것을 장려하는 가중치 밸런스 조정) 4/28/2016 알파고 해부하기 3부 © 이동헌 20
  • 21. 알파고의 대국시 동작법 • APV-MCTS 1단계: “Search” • 목적: 현재 바둑판상태 s에 대응하는 게임트리 node s에서 출발해서, 최대한 만들어진 게임트리를 타고 내려가 보는 것 • 게임트리가 모두 갖춰져 있지 않다는 점에 주의 • s에서 착수 a를 선택하면, 다음 바둑판 상태가 정해짐 • 선택된 (𝑠, 𝑎)에 대한 시뮬레이션 승패 결과가 나오기 전, 다음과 같이 임시 업데이트: 𝑁𝑟 𝑠, 𝑎 = 𝑁𝑟 𝑠, 𝑎 + 𝑛 𝑣𝑙 𝑊𝑟 𝑠, 𝑎 = 𝑊𝑟 𝑠, 𝑎 − 𝑛 𝑣𝑙 • 𝑛 𝑣𝑙 = 3으로 셋팅 • 시뮬레이션 결과가 나오기 전에, “이 선택은 마치 3번 해 봤는데 3판 다 진 것처럼 기분나쁘다”로 착각하도록 셋팅한것 • 분산처리시스템의 특성상, 이미 시뮬레이션 의뢰해둔 것은 피하도록 장려한 것임 4/28/2016 알파고 해부하기 3부 © 이동헌 21
  • 22. 알파고의 대국시 동작법 • APV-MCTS 1단계: “Search” • 목적: 현재 바둑판상태 s에 대응하는 게임트리 node s에서 출발해서, 최대한 만들어진 게임트리를 타고 내려가 보는 것 • 게임트리가 모두 갖춰져 있지 않다는 점에 주의 • s에서 착수 a를 선택하면, 다음 바둑판 상태가 정해짐 • 그러면 다음 상태를 다시 새로운 s로 생각하고, 반복함 • 반복하다 보면, 처음 와 보는 s에 도착함 • 여기까지 내려온 것이 만들어진 게임트리를 최대한 타고 내려온 결과 • 더이상 타고 내려갈 곳이 없다. 4/28/2016 알파고 해부하기 3부 © 이동헌 22
  • 23. 알파고의 대국시 동작법 • APV-MCTS 2단계: “Evaluation” • 목적: 지금 갖고있는 게임트리를 타고 내려가다 도달한 node 𝑠 𝐿에서, 그에 상응하는 바둑판 상태𝑠 𝐿의 예상가치를 파악하는 것 • 예상가치 파악을 2가지 방법으로 함 1. 가치망 사용 2. Roll-out 시뮬레이션 사용 4/28/2016 알파고 해부하기 3부 © 이동헌 23
  • 24. 알파고의 대국시 동작법 • APV-MCTS 2단계: “Evaluation” • Value network (가치망: 이미 대국 전에 트레이닝 완료된 상태) 사용시: • 바둑판 상태𝑠 𝐿 (노드𝑠 𝐿) 의 예상가치 (승/패 평균치) 를 계산함 • 단, 계산을 바로 하는 것이 아니라, 대기열을 queue로 만들어서 함 • 또한, 한 번 계산한 𝑠 𝐿의 값은 가치망 사용하지 않고 바로 조회할 수 있게 memoize • 가치망 사용하는 방법 및 시기? • 노드𝑠 𝐿이 생성될때 (4단계: “Expansion”에서 설명) 바로 call • Call하면 대기열에 장착. 중복 call이 들어오면 대기열 단계에서 걸러냄 • 인공신경망 사용하는 evaluation이므로 GPU 사용해서 실제 계산 4/28/2016 알파고 해부하기 3부 © 이동헌 24
  • 25. 알파고의 대국시 동작법 • APV-MCTS 2단계: “Evaluation” • Roll-out 시뮬레이션 방식 사용시 • Roll-out policy라고 명명된 축약판 다음 수 예측 모듈을 사용해서 시뮬레이션 • 이 축약판 모듈은 강화학습으로 만들어진 Policy network (정책망)보다 약 1000배 빠르게 다음 수 예측값을 내놓음 (정책망: 평균 0.003초 vs Roll-out: 평균 0.000002초) • Roll-out은 트리 탐색이 종료된 node인 𝑠 𝐿에서부터 시작 • Roll-out policy를 사용해서 계속 다음 수를 예측하면서 진행 • 해당 바둑게임이 종료될때까지 계속 진행 • 바둑게임 종료시, 집 계산을 하고, 승리시 +1, 패배시 -1의 결과값을 생성 • 즉, 𝑠 𝐿에서 이어지는 미래가 승리냐 패배냐 시뮬레이션을 끝장날때까지 진행 • 실제 게임트리에 반영하는 것은 다음 단계인 “Backup”단계에서 진행 4/28/2016 알파고 해부하기 3부 © 이동헌 25
  • 26. 알파고의 대국시 동작법 • APV-MCTS 3단계: “Backup” • 목적: 비동기 계산된 Roll-out 승패값과 비동기 계산된 Value network 판세 예측값을 게임 트리를 거꾸로 타고 올라가면서 반영하기 4/28/2016 알파고 해부하기 3부 © 이동헌 26
  • 27. 알파고의 대국시 동작법 • APV-MCTS 3단계: “Backup” • “Search”단계에서 한 것을 되돌아보면:: • 선택된 (𝑠, 𝑎)에 대한 시뮬레이션 승패 결과가 나오기 전, 다음과 같이 임시 업데이트: 𝑁𝑟 𝑠, 𝑎 = 𝑁𝑟 𝑠, 𝑎 + 𝑛 𝑣𝑙 𝑊𝑟 𝑠, 𝑎 = 𝑊𝑟 𝑠, 𝑎 − 𝑛 𝑣𝑙 • 𝑛 𝑣𝑙 = 3으로 셋팅 • 시뮬레이션 결과가 나오기 전에, “이 선택은 마치 3번 해 봤는데 3판 다 진 것처럼 기분나쁘다”로 착각하도록 셋팅한것 • 분산처리시스템의 특성상, 이미 시뮬레이션 의뢰해둔 것은 피하도록 장려한 것임 4/28/2016 알파고 해부하기 3부 © 이동헌 27
  • 28. 알파고의 대국시 동작법 • APV-MCTS 3단계: “Backup” • “Search”단계에서 한 것을 되돌아보면:: • 선택된 (𝑠, 𝑎)에 대한 시뮬레이션 승패 결과가 나오기 전, 다음과 같이 임시 업데이트: 𝑁𝑟 𝑠, 𝑎 = 𝑁𝑟 𝑠, 𝑎 + 𝑛 𝑣𝑙 𝑊𝑟 𝑠, 𝑎 = 𝑊𝑟 𝑠, 𝑎 − 𝑛 𝑣𝑙 • 𝑛 𝑣𝑙 = 3으로 셋팅 • 시뮬레이션 결과가 나오기 전에, “이 선택은 마치 3번 해 봤는데 3판 다 진 것처럼 기분나쁘다”로 착각하도록 셋팅한것 • 분산처리시스템의 특성상, 이미 시뮬레이션 의뢰해둔 것은 피하도록 장려한 것임 • 이제 비동기적으로 Evaluation이 끝난 뒤이므로, 제대로 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑟(𝑠, 𝑎)를 업데이트할 차례 4/28/2016 알파고 해부하기 3부 © 이동헌 28
  • 29. 알파고의 대국시 동작법 • APV-MCTS 3단계: “Backup” • 제대로 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑟(𝑠, 𝑎)를 업데이트할 차례 • 방문 횟수 +1, 그리고 승패 결과값 𝑧𝑡을 반영해야 함 4/28/2016 알파고 해부하기 3부 © 이동헌 29
  • 30. 알파고의 대국시 동작법 • APV-MCTS 3단계: “Backup” • 제대로 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑟(𝑠, 𝑎)를 업데이트할 차례 • 방문 횟수 +1, 그리고 승패 결과값 𝑧𝑡을 반영해야 함 • 게임 트리를 거꾸로 따라올라가며 나오는 엣지 𝑠, 𝑎 들을 업데이트함 • 예전 Search에서 다음과 같이 업데이트했으므로, 𝑁𝑟 𝑠, 𝑎 = 𝑁𝑟 𝑠, 𝑎 + 𝑛 𝑣𝑙 𝑊𝑟 𝑠, 𝑎 = 𝑊𝑟 𝑠, 𝑎 − 𝑛 𝑣𝑙 • 위의 변화를 거꾸로 돌리고, 제대로 된 값으로 다음과 같이 업데이트한다 𝑁𝑟 𝑠, 𝑎 = 𝑁𝑟 𝑠, 𝑎 − 𝑛 𝑣𝑙 + 1 𝑊𝑟 𝑠, 𝑎 = 𝑊𝑟 𝑠, 𝑎 + 𝑛 𝑣𝑙 + 𝑧𝑡 4/28/2016 알파고 해부하기 3부 © 이동헌 30
  • 31. 알파고의 대국시 동작법 • APV-MCTS 3단계: “Backup” • 제대로 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑟(𝑠, 𝑎)를 업데이트할 차례 • 방문 횟수 +1, 그리고 승패 결과값 𝑧𝑡을 반영해야 함 • 게임 트리를 거꾸로 따라올라가며 나오는 엣지 𝑠, 𝑎 들을 업데이트함 • 𝑁𝑣 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 값도 Evaluation단계의 가치망 결과값으로 업데이트해줌. 4/28/2016 알파고 해부하기 3부 © 이동헌 31
  • 32. 알파고의 대국시 동작법 • APV-MCTS 3단계: “Backup” • 제대로 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑟(𝑠, 𝑎)를 업데이트할 차례 • 방문 횟수 +1, 그리고 승패 결과값 𝑧𝑡을 반영해야 함 • 게임 트리를 거꾸로 따라올라가며 나오는 엣지 𝑠, 𝑎 들을 업데이트함 • 𝑁𝑣 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 값도 Evaluation단계의 가치망 결과값으로 업데이트해줌. • 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑟 𝑠, 𝑎 , 𝑁𝑣 𝑠, 𝑎 , 𝑊𝑣 𝑠, 𝑎 에 의존하는 𝑄(𝑠, 𝑎) 값도 업데이트한다 𝑄 𝑠, 𝑎 = 1 − 𝜆 𝑊𝑣 𝑠, 𝑎 𝑁𝑣 𝑠, 𝑎 + 𝜆 𝑊𝑟 𝑠, 𝑎 𝑁𝑟 𝑠, 𝑎 4/28/2016 알파고 해부하기 3부 © 이동헌 32
  • 33. 알파고의 대국시 동작법 • APV-MCTS 3단계: “Backup” • 제대로 𝑁𝑟 𝑠, 𝑎 , 𝑊𝑟(𝑠, 𝑎)를 업데이트할 차례 • 방문 횟수 +1, 그리고 승패 결과값 𝑧𝑡을 반영해야 함 • 게임 트리를 거꾸로 따라올라가며 나오는 엣지 𝑠, 𝑎 들을 업데이트함 • 모든 업데이트는 비동기적으로 • Lock-free update: 트리 노드 memory space를 동적으로 할당후 트리에 붙임 • 오버헤드 당연히 있고, 완벽하지 않지만, 경험적으로 효과있는 방법론임 [링크] 4/28/2016 알파고 해부하기 3부 © 이동헌 33
  • 34. 알파고의 대국시 동작법 • APV-MCTS 4단계: “Expansion” • 노드의 엣지 (𝑠, 𝑎)가 충분히 많이 선택되면, 그 엣지로 이어지는 새로운 노드 𝑠′를 확장해서 게임트리를 키워나가는 단계 • 실행조건: 𝑁𝑟 𝑠, 𝑎 > 𝑛 𝑡ℎ𝑟 • 𝑛 𝑡ℎ𝑟은 대기열에 대기목록상태와 GPU 자원의 운용상황에 맞춰서 동적으로 조절 4/28/2016 알파고 해부하기 3부 © 이동헌 34
  • 35. 알파고의 대국시 동작법 • APV-MCTS 4단계: “Expansion” • 노드의 엣지 (𝑠, 𝑎)가 충분히 많이 선택되면, 그 엣지로 이어지는 새로운 노드 𝑠′를 확장해서 게임트리를 키워나가는 단계 • 실행조건: 𝑁𝑟 𝑠, 𝑎 > 𝑛 𝑡ℎ𝑟 • 𝑛 𝑡ℎ𝑟은 대기열에 대기목록상태와 GPU 자원의 운용상황에 맞춰서 동적으로 조절 • 노드 𝑠′의 initialization은 다음과 같다. 𝑁𝑟 𝑠′, 𝑎 = 0, 𝑁𝑣 𝑠′, 𝑎 = 0 𝑊𝑟 𝑠′, 𝑎 = 0, 𝑊𝑣 𝑠′, 𝑎 = 0 𝑃 𝑠′ , 𝑎 = 𝑝𝜏 𝑎 𝑠′ • 𝑝𝜏 𝑎 𝑠′ 는 tree policy. Roll-out policy보다 조금 더 복잡하지만 쉽게 계산됨. • 𝑄(𝑠′, 𝑎)은 자연스럽게 0으로 init됨. 4/28/2016 알파고 해부하기 3부 © 이동헌 35
  • 36. 알파고의 대국시 동작법 • APV-MCTS 4단계: “Expansion” • 노드 𝑠′의 initialization후에 하는 일들 • 가치망 사용해서 𝑁𝑣 𝑠′, 𝑎 , 𝑊𝑣 𝑠′, 𝑎 계산하기 • 𝑃 𝑠′ , 𝑎 값을 정책망 사용해서 제대로 계산하기 • Init단계에서 둔 값이 𝑃 𝑠′, 𝑎 = 𝑝𝜏 𝑎 𝑠′ 은 임시값 • 이것을 𝑃 𝑠′, 𝑎 = 𝑝 𝜎 𝑎 𝑠′ 로 업데이트하는것이 필요 4/28/2016 알파고 해부하기 3부 © 이동헌 36
  • 37. 알파고의 대국시 동작법 • APV-MCTS 4단계: “Expansion” • 노드 𝑠′의 initialization후에 하는 일들 • 가치망 사용해서 𝑁𝑣 𝑠′, 𝑎 , 𝑊𝑣 𝑠′, 𝑎 계산하기 • 𝑃 𝑠′ , 𝑎 값을 정책망 사용해서 제대로 계산하기 • Init단계에서 둔 값이 𝑃 𝑠′, 𝑎 = 𝑝𝜏 𝑎 𝑠′ 은 임시값 • 이것을 𝑃 𝑠′, 𝑎 = 𝑝 𝜎 𝑎 𝑠′ 로 업데이트하는것이 필요 • 위 업데이트들은 비동기적으로 일어남 • 가치망은 전에 설명했듯이. 정책망도 마찬가지로 queue사용 • Init이 일어난 직후의 노드 값들은 정확하지 않지만, 비동기적으로 점차 정확도 향상됨 4/28/2016 알파고 해부하기 3부 © 이동헌 37
  • 38. 알파고의 대국시 동작법 • APV-MCTS 4단계: “Expansion” • 병목 지점: GPU자원 (가치망, 정책망 모두 사용함) • Init이 된 직후에는 임시값들이 많은데, 이를 올바르게 최대한 빨리 업데이트 필요 • 비동기진행이므로, 이 업데이트가 빨리 이루어질수록 알파고 성능이 좋아짐 4/28/2016 알파고 해부하기 3부 © 이동헌 38
  • 39. 알파고의 대국시 동작법 • APV-MCTS 4단계: “Expansion” • 병목 지점: GPU자원 (가치망, 정책망 모두 사용함) • Init이 된 직후에는 임시값들이 많은데, 이를 올바르게 최대한 빨리 업데이트 필요 • 비동기진행이므로, 이 업데이트가 빨리 이루어질수록 알파고 성능이 좋아짐 • 병목 완화 / latency향상 기법 • GPU자원 배분율과 queue상황 고려해서 expansion 속도를 조절 • 𝑛 𝑡ℎ𝑟값 동적 조정 • Mini-batch를 1로 사용 • 모아두었다가 실행하면 예측이 좀 더 안정적이겠지만, 일단 latency향상을 위한 선택 • 안정성에 대한 고려는 별도로 수 선택하는 단계에서 해결하도록 설계함 4/28/2016 알파고 해부하기 3부 © 이동헌 39
  • 40. 알파고의 대국시 동작법 • APV-MCTS 알고리즘 요약 1. Search: 게임 트리의 끝까지 적절하게 타고 내려오기 2. Evaluation: 트리 끝의 노드와 엣지(바둑판 상태와 착수)의 가치 계산 3. Backup: 계산된 값을 게임 트리에 반영 4. Expansion: 필요하다면 게임 트리를 확장 • 기본적으로 비동기 분산형 알고리즘 • 여러 컴퓨터를 사용하는 병렬처리 버전으로 자연스럽게 구현 가능 • 이세돌 9단과 대국한 알파고 역시 병렬처리 버전 4/28/2016 알파고 해부하기 3부 © 이동헌 40
  • 41. 알파고의 대국시 동작법 • 대국시 동작법 부분의 초점 • 실제 수 선택이 어떻게 일어나는지? 1. 지금 바둑판 상태에서 2. 미래 시뮬레이션을 많이 해본다 (APV-MCTS) 3. 그 중 가장 많이 선택된 착수를 선택한다 4/28/2016 알파고 해부하기 3부 © 이동헌 41
  • 42. 알파고의 대국시 동작법 • 대국시 동작법 부분의 초점 • 실제 수 선택이 어떻게 일어나는지? 1. 지금 바둑판 상태에서 2. 미래 시뮬레이션을 많이 해본다 (APV-MCTS) 3. 그 중 가장 많이 선택된 착수를 선택한다 • 시뮬레이션시 “가장 많이” 선택된 착수를 선택해도 되는 이유? 4/28/2016 알파고 해부하기 3부 © 이동헌 42
  • 43. 알파고의 대국시 동작법 • 대국시 동작법 부분의 초점 • 실제 수 선택이 어떻게? APV-MCTS동안 가장 많이 고른 착수 선택. • 시뮬레이션시 “가장 많이” 선택된 착수를 선택해도 되는 이유? • Search단계에서, 다음 값을 최대화하는 착수를 했기 때문 𝑄 𝑠, 𝑎 + 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎) σ 𝑏 𝑁𝑟(𝑠, 𝑏) 1 + 𝑁𝑟(𝑠, 𝑎) • 많이 시뮬레이션하면 앞부분만 남고 뒷부분은 0으로 수렴 • 앞부분은 승리/패배 평균치. 클수록 승리할 확률이 높음 4/28/2016 알파고 해부하기 3부 © 이동헌 43
  • 44. 알파고의 대국시 동작법 • 대국시 동작법 부분의 초점 • 실제 수 선택이 어떻게? APV-MCTS동안 가장 많이 고른 착수 선택. • 시뮬레이션시 “가장 많이” 선택된 착수를 선택해도 되는 이유? • Search단계에서, 다음 값을 최대화하는 착수를 했기 때문 𝑄 𝑠, 𝑎 + 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎) σ 𝑏 𝑁𝑟(𝑠, 𝑏) 1 + 𝑁𝑟(𝑠, 𝑎) • 많이 시뮬레이션하면 앞부분만 남고 뒷부분은 0으로 수렴 • 앞부분은 승리/패배 평균치. 클수록 승리할 확률이 높음 • 승리할 확신이 높은 선택을 점차 많이 하도록 APV-MCTS가 작동하기 때문. 4/28/2016 알파고 해부하기 3부 © 이동헌 44
  • 45. 알파고의 대국시 동작법 • 대국시 동작법 부분의 초점 • 실제 수 선택이 어떻게? APV-MCTS동안 가장 많이 고른 착수 선택. • 시뮬레이션시 “가장 많이” 선택된 착수를 선택하는게 안된다면?? • 𝑄 𝑠, 𝑎 + 𝑐 𝑝𝑢𝑐𝑡 𝑃(𝑠, 𝑎) σ 𝑏 𝑁 𝑟(𝑠,𝑏) 1+𝑁 𝑟(𝑠,𝑎) 를 최대화하는 선택과 • 𝑄 𝑠, 𝑎 를 최대화하는 선택이 다른 경우임! • 이러한 불일치가 일어난 경우, 알파고는 추가로 시간을 들여서 APV-MCTS를 계속해보아 불일치가 해소되는 것을 유도하도록 설계되어 있음 4/28/2016 알파고 해부하기 3부 © 이동헌 45
  • 46. 알파고의 대국시 동작법 • 대국시 동작법 부분의 초점 • 실제 수 선택이 어떻게? APV-MCTS동안 가장 많이 고른 착수 선택. • “기권”은 언제? • 현재 바둑판 노드 𝑠 𝐿에서 가능한 모든 착수 𝑏들 중에서 • 가장 승리할 가능성이 높은 착수 𝑎의 승리가능성이 10% 미만일때 • AlphaGo resigns • 즉, 현재 바둑판 𝑠 𝐿에서 다음을 만족할때 기권하게 됩니다. max 𝑏 𝑄 𝑠 𝐿, 𝑏 = 𝑄 𝑠 𝐿, 𝑎 < −0.8 4/28/2016 알파고 해부하기 3부 © 이동헌 46
  • 47. 목차 • 알파고의 구조 • 알파고 소프트웨어의 구성 • 알파고 S/W의 대국시 동작법 • 알파고 S/W의 대국 전 트레이닝법 • 알파고 S/W의 혁신점 • 알파고의 혁신점 4/28/2016 알파고 해부하기 3부 © 이동헌 47
  • 48. 알파고의 대국 전 트레이닝법 • 지금까지 알파고의 대국시 동작법을 살펴보았습니다 4/28/2016 알파고 해부하기 3부 © 이동헌 48
  • 49. 알파고의 대국 전 트레이닝법 • 지금까지 알파고의 대국시 동작법을 살펴보았습니다 • 이번 “대국 전 트레이닝법” 섹션의 핵심 질문: • 저렇게 동작하기 위해서 필요한 핵심 요소들을 어떻게 만들것인가? • 즉, 구조가 아니라 (딥러닝 구조는 1-2부에서 이미 다루었습니다), 그 핵심요소들을 사용 가능하게 셋팅하기 위한 절차는 무엇인가? 4/28/2016 알파고 해부하기 3부 © 이동헌 49
  • 50. 알파고의 대국 전 트레이닝법 • 지금까지 알파고의 대국시 동작법을 살펴보았습니다 • 이번 “대국 전 트레이닝법” 섹션의 핵심 질문: • 저렇게 동작하기 위해서 필요한 핵심 요소들을 어떻게 만들것인가? • 즉, 구조가 아니라 (딥러닝 구조는 1-2부에서 이미 다루었습니다), 그 핵심요소들을 사용 가능하게 셋팅하기 위한 절차는 무엇인가? • 다음 세가지에 초점을 맞춥니다 1. 정책망 𝑝 𝜎(𝑎|𝑠)의 𝜎를 어떻게 찾았나? 2. 정책망 𝑝 𝜌(𝑎|𝑠)의 𝜌를 어떻게 찾았나? 3. 가치망 𝑣 𝜃(𝑠)의 𝜃를 어떻게 찾았나? 4/28/2016 알파고 해부하기 3부 © 이동헌 50
  • 51. 알파고의 대국 전 트레이닝법 1. 정책망 𝑝 𝜎(𝑎|𝑠)의 𝜎를 어떻게 찾았나? • 데이터 • KGS 기보 • 160,000 경기 기보에서 약 3천만 개 (2940만개) 의 “바둑상황” • KGS 6-9단 레벨의 인간 플레이어간의 경기만 사용 • 위 경기들 중 35.4%는 접바둑 • “바둑상황”이란, 바둑판 상황 𝑠 그리고 그 때 인간의 착수 𝑎를 같이 고려한 (𝑠, 𝑎) 4/28/2016 알파고 해부하기 3부 © 이동헌 51
  • 52. 알파고의 대국 전 트레이닝법 1. 정책망 𝑝 𝜎(𝑎|𝑠)의 𝜎를 어떻게 찾았나? • 데이터 구성하기 • KGS 기보 • 2940만개 의 “바둑상황” (𝑠, 𝑎) • 위 “바둑상황”에 추가로 • 면대칭, 점대칭 바둑판 구성을 만들어 넣음: 예시  • 1개의 상황이 8개로 늘어남 • 위 “바둑상황” 각각에 feature를 미리 계산 • 47가지 binary feature 4/28/2016 알파고 해부하기 3부 © 이동헌 52
  • 53. 알파고의 대국 전 트레이닝법 1. 정책망 𝑝 𝜎(𝑎|𝑠)의 𝜎를 어떻게 찾았나? • 머신러닝 단계 • 구성해놓은 데이터 셋에서 첫 100만개를 test set, 나머지를 training set • Training set에서 • 랜덤으로 𝑚 개의 바둑 상황을 선택해서, minibatch 제작: 𝑠 𝑘, 𝑎 𝑘 𝑘=1 𝑚 • Minibatch 별로, 다음 값을 계산해서 𝜎에 반영 Δ𝜎 = 𝛼 𝑚 ෍ 𝑘=1 𝑚 𝜕 log 𝑝 𝜎 𝑎 𝑘 |𝑠 𝑘 𝜕𝜎 4/28/2016 알파고 해부하기 3부 © 이동헌 53
  • 54. 알파고의 대국 전 트레이닝법 1. 정책망 𝑝 𝜎(𝑎|𝑠)의 𝜎를 어떻게 찾았나? • 머신러닝 단계 Δ𝜎 = 𝛼 𝑚 ෍ 𝑘=1 𝑚 𝜕 log 𝑝 𝜎 𝑎 𝑘 |𝑠 𝑘 𝜕𝜎 • 𝛼 = 0.003으로 시작, 매 8천만번 Δ𝜎 업데이트마다 절반으로 줄여나감 • 𝑚 = 16 • 현재에서 100회보다 더 이전의 업데이트에서 나온 gradient값(Δ𝜎)은 무시 • Deep Q Network에 적용되었던 기법임. 참고자료: [링크] 4/28/2016 알파고 해부하기 3부 © 이동헌 54
  • 55. 알파고의 대국 전 트레이닝법 1. 정책망 𝑝 𝜎(𝑎|𝑠)의 𝜎를 어떻게 찾았나? • 머신러닝 단계 Δ𝜎 = 𝛼 𝑚 ෍ 𝑘=1 𝑚 𝜕 log 𝑝 𝜎 𝑎 𝑘 |𝑠 𝑘 𝜕𝜎 • GPU 50개 동원, 3주간 통산 3억4천만 업데이트 연산, 반영. • 최종적으로 나온 𝜎값으로 𝑝 𝜎 𝑎 𝑠 셋업 완료 4/28/2016 알파고 해부하기 3부 © 이동헌 55
  • 56. 알파고의 대국 전 트레이닝법 2. 정책망 𝑝 𝜌(𝑎|𝑠)의 𝜌를 어떻게 찾았나? • 강화학습 구성 • 총합 10000 회차, 각 회차별로 𝑛 대국 (𝑛 = 128) • 각 회차별로, 𝑖번째 대국을 𝑇 𝑖 수까지 진행해 나온 승패 결과 𝑧𝑡 𝑖 와 함께 해당 대국기보 전체 (𝑠1 𝑖 , 𝑎1 𝑖 , 𝑠2 𝑖 , … , 𝑎 𝑇 𝑖 𝑖 )를 데이터화 • 위 데이터를 사용하여 𝜌를 다음과 같이 업데이트 Δ𝜌 = 𝛼 𝑛 ෍ 𝑖=1 𝑛 ෍ 𝑡=1 𝑇 𝑖 𝜕 log 𝑝 𝜌 𝑎 𝑡 𝑖 |𝑠𝑡 𝑖 𝜕𝜌 𝑧𝑡 𝑖 − 𝑣(𝑠𝑡 𝑖 ) 4/28/2016 알파고 해부하기 3부 © 이동헌 56
  • 57. 알파고의 대국 전 트레이닝법 2. 정책망 𝑝 𝜌(𝑎|𝑠)의 𝜌를 어떻게 찾았나? • 강화학습 구성 Δ𝜌 = 𝛼 𝑛 ෍ 𝑖=1 𝑛 ෍ 𝑡=1 𝑇 𝑖 𝜕 log 𝑝 𝜌 𝑎 𝑡 𝑖 |𝑠𝑡 𝑖 𝜕𝜌 𝑧𝑡 𝑖 − 𝑣(𝑠𝑡 𝑖 ) • 1st pass에는 𝑣 𝑠 = 0 사용. 2nd pass에는 𝑣 𝑠 = 𝑣 𝜃 𝑠 사용. • 𝛼는 특별한 설명 없음 (𝑝 𝜎때와 동일할수도 있음) 4/28/2016 알파고 해부하기 3부 © 이동헌 57
  • 58. 알파고의 대국 전 트레이닝법 2. 정책망 𝑝 𝜌(𝑎|𝑠)의 𝜌를 어떻게 찾았나? • 강화학습 진행 • 제 1회차 대국시에는 정책망 𝑝 𝜎끼리만 대국 • 2회차 이후부터는 가장 최근 정책망 𝑝 𝜌와 다음 상대방들이 대국 • 원래 정책망 𝑝 𝜎 • 이전 회차까지 존재하던 정책망 𝑝 𝜌들 • 10000회차까지 진행해서 최종적으로 업데이트되는 𝑝 𝜌(𝑎|𝑠)로 셋팅 완료 • 50개의 GPU를 사용, 1일간 진행함 4/28/2016 알파고 해부하기 3부 © 이동헌 58
  • 59. 알파고의 대국 전 트레이닝법 3. 가치망 𝑣 𝜃(𝑠)의 𝜃를 어떻게 찾았나? • 데이터 구성하기 • 목표: 3천만개의 바둑판 상황 𝑠 와 대국의 최종결과 𝑧 데이터 𝑠, 𝑧 구성 • 구성 방법 요약 • 𝑝 𝜌끼리 3천만 대국 진행, 결과 𝑧 얻어냄 • 각 대국별로 딱 한 바둑판 상황 𝑠 를 얻어냄 4/28/2016 알파고 해부하기 3부 © 이동헌 59
  • 60. 알파고의 대국 전 트레이닝법 3. 가치망 𝑣 𝜃(𝑠)의 𝜃를 어떻게 찾았나? • 데이터 구성하기 • 3천만 대국 각각 • 대국 시작전 1~480 사이의 수 하나 𝑛′을 무작위로 선택 • 이 수 직전까지 𝑝 𝜎로 진행 • 이 수의 바둑판 상황𝑠를 사용하게 됨 • 대국 시작전 1~391 사이의 수 하나 𝑛′′을 무작위로 선택 • 위 단계가 끝난 뒤, 𝑛′′ 수 만큼 무작위 착수 정책으로 바둑을 진행 • 그 뒤에는 𝑝 𝜌로 진행하여 대국 종료까지 진행 • 대국 종료되면 승패를 판별해서 승리/패배 결과값 𝑧를 계산 4/28/2016 알파고 해부하기 3부 © 이동헌 60
  • 61. 알파고의 대국 전 트레이닝법 3. 가치망 𝑣 𝜃(𝑠)의 𝜃를 어떻게 찾았나? • 머신러닝 단계 • 3천만개의 바둑판 상황 𝑠 와 대국의 최종결과 𝑧 데이터 𝑠, 𝑧 구성 • 𝑝 𝜌끼리 3천만 대국 진행, 결과 𝑧 얻어냄 • 각 대국별로 딱 한 바둑판 상황 𝑠 를 얻어냄 • 첫 100만개를 test set으로, 나머지 2900만개를 training set으로 설정 4/28/2016 알파고 해부하기 3부 © 이동헌 61
  • 62. 알파고의 대국 전 트레이닝법 3. 가치망 𝑣 𝜃(𝑠)의 𝜃를 어떻게 찾았나? • 머신러닝 단계 • 3천만개의 데이터 𝑠, 𝑧 를 데이터로 사용 • 첫 100만개를 test set으로, 나머지 2900만개를 training set으로 설정 • 다음과 같이 𝜃를 업데이트 Δ𝜃 = 𝛼 𝑚 ෍ 𝑘=1 𝑚 𝑧 𝑘 − 𝑣 𝜃 𝑠 𝑘 𝜕𝑣 𝜃 𝑠 𝑘 𝜕𝜃 4/28/2016 알파고 해부하기 3부 © 이동헌 62
  • 63. 알파고의 대국 전 트레이닝법 3. 가치망 𝑣 𝜃(𝑠)의 𝜃를 어떻게 찾았나? • 머신러닝 단계 Δ𝜃 = 𝛼 𝑚 ෍ 𝑘=1 𝑚 𝑧 𝑘 − 𝑣 𝜃 𝑠 𝑘 𝜕𝑣 𝜃 𝑠 𝑘 𝜕𝜃 • 𝛼 = 0.003으로 시작, 매 8천만번 Δ𝜃 업데이트마다 절반으로 줄여나감 • 𝑚 = 32 • 현재에서 100회보다 더 이전의 업데이트에서 나온 gradient값(Δ𝜃)은 무시 4/28/2016 알파고 해부하기 3부 © 이동헌 63
  • 64. 알파고의 대국 전 트레이닝법 3. 가치망 𝑣 𝜃(𝑠)의 𝜃를 어떻게 찾았나? • 머신러닝 단계 Δ𝜃 = 𝛼 𝑚 ෍ 𝑘=1 𝑚 𝑧 𝑘 − 𝑣 𝜃 𝑠 𝑘 𝜕𝑣 𝜃 𝑠 𝑘 𝜕𝜃 • GPU 50개 동원, 1주간 통산 5천만 업데이트 연산, 반영. • 최종적으로 나온 𝜃값으로 𝑣 𝜃(𝑠)셋업 완료 4/28/2016 알파고 해부하기 3부 © 이동헌 64
  • 65. 알파고의 대국 전 트레이닝법 • 지금까지 알파고 대국 프로그램 작동에 필요한 다음 핵심요소들의 구체적인 셋팅법을 다루었습니다 1. 정책망 𝑝 𝜎(𝑎|𝑠)의 𝜎를 어떻게 찾았나? 2. 정책망 𝑝 𝜌(𝑎|𝑠)의 𝜌를 어떻게 찾았나? 3. 가치망 𝑣 𝜃(𝑠)의 𝜃를 어떻게 찾았나? • 각 셋팅법들의 세부적 의의 및 해석은 생략합니다 • 여기선 알파고 작동 및 구성법을 명확히 제시하는 것이 목표! • 더 깊이 알고 싶으시다면 요청해주세요 • donghun2014@gmail.com 4/28/2016 알파고 해부하기 3부 © 이동헌 65
  • 66. 목차 • 알파고의 구조 • 알파고 소프트웨어의 구성 • 알파고 S/W의 대국시 동작법 • 알파고 S/W의 대국 전 트레이닝법 • 알파고 S/W의 혁신점 • 알파고의 혁신점 4/28/2016 알파고 해부하기 3부 © 이동헌 66
  • 67. 알파고의 혁신점 4/28/2016 알파고 해부하기 3부 © 이동헌 67
  • 68. 알파고의 혁신점 (집단지성으로!) • 독자 여러분들의 의견을 수렴하고 싶습니다 4/28/2016 알파고 해부하기 3부 © 이동헌 68
  • 69. 알파고의 혁신점 (집단지성으로!) • 독자 여러분들의 의견을 수렴하고 싶습니다 • 하나의 관점만으로 알파고의 혁신점을 모두 다룰 수 없다고 봅니다.. • 다양한 관점에서 바라본 알파고의 혁신점에 대해서 모으고 싶습니다 • 피드백 수렴 후 에필로그 슬라이드로 정리해 공유하겠습니다 • 피드백은 donghun2014@gmail.com 으로 부탁드립니다! 4/28/2016 알파고 해부하기 3부 © 이동헌 69
  • 70. 끝맺으며 • “알파고 해부하기” 1, 2, 3부에서 살펴본 내용은 다음과 같습니다 • 1부 [링크] • 알파고의 구조 • 알파고 소프트웨어의 구성 (바둑판 인식부 까지) • 2부 [링크] • 알파고 소프트웨어의 구성 (나머지 내용) • 3부 • 알파고 S/W의 대국시 동작법 • 알파고 S/W의 대국 전 트레이닝법 • 이것으로 “알파고 해부하기”를 3부작으로 마무리합니다 • 알파고 논문을 보다 많은 분들이 이해하는데 도움이 될 수 있기를 바랍니다 4/28/2016 알파고 해부하기 3부 © 이동헌 70
  • 71. 끝맺으며 • 읽으시느라 수고하셨습니다! • 추가설명 요청이나 내용오류 지적 등의 피드백은 마음껏 다음 주소로 부탁드립니다 • donghun2014@gmail.com 4/28/2016 알파고 해부하기 3부 © 이동헌 71