Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

알파고 (바둑 인공지능)의 작동 원리

118,961 views

Published on

알파고의 작동 원리를 설명한 슬라이드입니다.
English version: http://www.slideshare.net/ShaneSeungwhanMoon/how-alphago-works

- 비전공자 분들을 위한 티저: 바둑 인공지능은 과연 어떻게 만들까요? 딥러닝 딥러닝 하는데 그게 뭘까요? 바둑 인공지능은 또 어디에 쓰일 수 있을까요?

- 전공자 분들을 위한 티저: 알파고의 main components는 재밌게도 CNN (Convolutional Neural Network), 그리고 30년 전부터 유행하던 Reinforcement learning framework와 MCTS (Monte Carlo Tree Search) 정도입니다. 새로울 게 없는 재료들이지만 적절히 활용하는 방법이 신선하네요.

Published in: Technology

알파고 (바둑 인공지능)의 작동 원리

  1. 1. 발표자: 문승환 PhD  student Language  Technologies  Institute,  School  of  Computer  Science Carnegie  Mellon  University 3/2/2016 작동원리
  2. 2. 알파고 vs  유럽챔피언 (판 후이 2단) 2015년 10월 5일 – 9일 <공식경기> -­‐ 제한시간 1시간, 30초 초읽기 3회 -­‐ 5:0  알파고 승리 (불계승 4번)
  3. 3. 알파고 vs  세계챔피언 (이세돌 9단) 2016년 3월 9일 – 15일 <공식경기> -­‐ 제한시간 2시간, 1분 초읽기 3회 서울 광화문 포시즌스 호텔 이미지 출처: 조선일보 1월 28일자 인간과 컴퓨터의 자존심을 건 '세기의 대결'
  4. 4. 이세돌 사진 출처: 매일경제 2013/04
  5. 5. “자신이 없어요. 질 자신이요” 사진 출처: 바둑 TV
  6. 6. "아,  싸울만 해서 싸워요.  수가 보이는데 어쩌란 말이에요." 사진 출처
  7. 7. "불리하다보니 이기자는 생각없이 대충 뒀는데 이겼네요.” -­‐ 구리 九단에게 대역전승을 거둔 직후의 인터뷰 사진 출처
  8. 8. 바둑 인공지능?
  9. 9. 바둑 인공지능? 정의하자면: s (state) d  =  1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 = (예를 들면 이런 식으로 행렬로 표현) *  실재론 board  position  외 다른 feature들도 포함
  10. 10. 바둑 인공지능? 정의하자면: s (state) d  =  1 d  =  2 a (action) Given  s,  pick  the  best  a 바둑 인공지능s a s'
  11. 11. 바둑 인공지능?  이렇게 만들어 보면? d  =  1 d  =  2 … 모든 경우의 수를 시뮬레이션
  12. 12. 바둑 인공지능?  이렇게 만들어 보면? d  =  1 d  =  2 … d  =  3 … … … …
  13. 13. 바둑 인공지능?  이렇게 만들어 보면? d  =  1 d  =  2 … d  =  3 … … … … … d  =  maxD 끝까지 시뮬레이션 해서 Win? Lose?  결과 리포트
  14. 14. 바둑 인공지능?  이렇게 만들어 보면? d  =  1 d  =  2 … d  =  3 … … … … … d  =  maxD Win? Lose?  결과 리포트 여기에 두면 13번 이기더라 37,839번 431,320번 끝까지 시뮬레이션 해봤을 때 제일 많이 이긴 “다음 수”를 고름
  15. 15. Maximum  depth  search:   이 방법은 경우의 수가 우주의 원자 수보다 많아 불가능
  16. 16. 핵심: 경우의 수 (Search  Space) 줄이기
  17. 17. 경우의 수 (Search  Space) 줄이기 1.  “action”  후보군 줄이기 (Breadth  Reduction) d  =  1 d  =  2 … d  =  3 … … … … d  =  maxD Win? Lose? “이런 수는 사람이 두지 않는다”고 판단하는 모델이 있다면 …
  18. 18. 경우의 수 (Search  Space) 줄이기 1.  “action”  후보군 줄이기 (Breadth  Reduction) d  =  1 d  =  2 … d  =  3 … … d  =  maxD Win? Lose? Search  후보군에서 미리 제외 (breadth  reduction)
  19. 19. 경우의 수 (Search  Space) 줄이기 2.  결과 더 빨리 예측하기 (Depth  Reduction) d  =  1 d  =  2 … d  =  3 … … d  =  maxD Win? Lose? Maximum  depth까지 시뮬레이션 하지 않고 ..
  20. 20. 경우의 수 (Search  Space) 줄이기 2.  결과 더 빨리 예측하기 (Depth  Reduction) d  =  1 d  =  2 … d  =  3 … V  =  1 V  =  2 V  =  10 V(s):  “state  s의 판세” 로 요약
  21. 21. 경우의 수 (Search  Space) 줄이기 1. “action”  후보군 줄이기 (Breadth  Reduction) 2. 결과 더 빨리 예측하기 / 판세 평가하기 (Depth  Reduction)
  22. 22. 1.  “action”  후보군 줄이기 Learning:  P  (  next  action  |  current  state  ) =  P  (  a  |  s  )
  23. 23. 1.  “action”  후보군 줄이기 (1) 프로 바둑기사 따라하기 (supervised  learning) 현재 판 예측 모델 다음 판 s1 s2 s2 s3 s3 s4 Data:  온라인 바둑 고수 (5~9단) 기보 16만 개, 착점 3000만 개
  24. 24. 1.  “action”  후보군 줄이기 (1) 프로 바둑기사 따라하기 (supervised  learning) 예측 모델 현재 판 다음 판
  25. 25. 1.  “action”  후보군 줄이기 (1) 프로 바둑기사 따라하기 (supervised  learning) 예측 모델 현재 판 다음 액션
  26. 26. 1.  “action”  후보군 줄이기 (1) 프로 바둑기사 따라하기 (supervised  learning) 예측 모델 현재 판 다음 액션 0 0   0 0 0   0 0 0 0 0 0   0 0 0 1 0 0 0 0 -­‐1 0 0 1 -­‐1 1 0 0 0 1 0 0 1 -­‐1 0 0 0 0 0   0 0 -­‐1 0 0 0 0 0 0   0 0 0   0 0 0 0 0 -­‐1 0 0 0   0 0 0 0 0 0   0 0 0   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 s af:  s à a *  실재론 board  position  외 다른 feature들도 포함
  27. 27. 1.  “action”  후보군 줄이기 (1) 프로 바둑기사 따라하기 (supervised  learning) 예측 모델 현재 판 다음 액션 0 0   0 0 0   0 0 0 0 0 0   0 0 0 1 0 0 0 0 -­‐1 0 0 1 -­‐1 1 0 0 0 1 0 0 1 -­‐1 0 0 0 0 0   0 0 -­‐1 0 0 0 0 0 0   0 0 0   0 0 0 0 0 -­‐1 0 0 0   0 0 0 0 0 0   0 0 0   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 s g:  s à p(a|s) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0             0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0.1 0 0 0 0 0 0 0 0.4  0.2 0 0 0 0 0 0 0 0.1       0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 p(a|s) aargmax
  28. 28. 1.  “action”  후보군 줄이기 (1) 프로 바둑기사 따라하기 (supervised  learning) 예측 모델 현재 판 다음 액션 0 0   0 0 0   0 0 0 0 0 0   0 0 0 1 0 0 0 0 -­‐1 0 0 1 -­‐1 1 0 0 0 1 0 0 1 -­‐1 0 0 0 0 0   0 0 -­‐1 0 0 0 0 0 0   0 0 0   0 0 0 0 0 -­‐1 0 0 0   0 0 0 0 0 0   0 0 0   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 s g:  s à p(a|s) p(a|s) aargmax
  29. 29. 1.  “action”  후보군 줄이기 (1) 프로 바둑기사 따라하기 (supervised  learning) Deep  Learning (13  Layer  CNN) 현재 판 다음 액션 0 0   0 0 0   0 0 0 0 0 0   0 0 0 1 0 0 0 0 -­‐1 0 0 1 -­‐1 1 0 0 0 1 0 0 1 -­‐1 0 0 0 0 0   0 0 -­‐1 0 0 0 0 0 0   0 0 0   0 0 0 0 0 -­‐1 0 0 0   0 0 0 0 0 0   0 0 0   0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 s g:  s à p(a|s) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0             0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.2 0.1 0 0 0 0 0 0 0 0.4  0.2 0 0 0 0 0 0 0 0.1       0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 p(a|s) aargmax
  30. 30. Convolutional  Neural  Network  (CNN) CNN은 레이어별로 input  image를 추상화 시켜 Image  Recognition을 굉장히 잘함이미치  출처
  31. 31. Convolutional  Neural  Network  (CNN) 이걸 바둑의 판세를 읽는 데에 사용
  32. 32. 바둑: 추상화하는 능력이 중요 CNN:  추상화하는 능력이 뛰어난 모델 바둑 두는 Task와 CNN의 장점이 맞물린 경우
  33. 33. Deep  Learning ~=  Representation  Learning à 단을 쌓아 올라갈수록 추상화된 feature를 익힘
  34. 34. 1.  “action”  후보군 줄이기 (1) 프로 바둑기사 따라하기 (supervised  learning) 프로기사 흉내내는 모델 (w/  CNN) 현재 판 다음 액션 Training:
  35. 35. 1.  “action”  후보군 줄이기 (2) 스스로 발전하기 (reinforcement  learning) 프로기사 흉내내는 모델 (w/  CNN) 프로기사 흉내내는 모델 (w/  CNN) VS
  36. 36. 1.  “action”  후보군 줄이기 (2) 스스로 발전하기 (reinforcement  learning) 프로기사 흉내내는 모델 (w/  CNN) 프로기사 흉내내는 모델 (w/  CNN) VS Return:  대국 기보, 승/패자 정보
  37. 37. 1.  “action”  후보군 줄이기 (2) 스스로 발전하기 (reinforcement  learning) 프로기사 흉내내는 모델 (w/  CNN) 어느 판 승/패 Training: 패 z  =  -­‐1
  38. 38. 1.  “action”  후보군 줄이기 (2) 스스로 발전하기 (reinforcement  learning) 프로기사 흉내내는 모델 (w/  CNN) 어느 판 승/패 Training: 승 z  =  +1
  39. 39. 1.  “action”  후보군 줄이기 (2) 스스로 발전하기 (reinforcement  learning) 업데이트 모델 ver 1.1 업데이트 모델 ver 1.3VS Return:  대국 기보, 승/패자 정보 프로기사 흉내내는 모델과 똑같은 topology,  업데이트 된 parameters를 사용
  40. 40. 1.  “action”  후보군 줄이기 (2) 스스로 발전하기 (reinforcement  learning) 업데이트 모델 ver 1.3 업데이트 모델 ver 1.7VS Return:  대국 기보, 승/패자 정보
  41. 41. 1.  “action”  후보군 줄이기 (2) 스스로 발전하기 (reinforcement  learning) 업데이트 모델 ver 1.5 업데이트 모델 ver 2.0VS Return:  대국 기보, 승/패자 정보
  42. 42. 1.  “action”  후보군 줄이기 (2) 스스로 발전하기 (reinforcement  learning) 업데이트 모델 ver 3204.1 업데이트 모델 ver 46235.2VS Return:  대국 기보, 승/패자 정보
  43. 43. 1.  “action”  후보군 줄이기 (2) 스스로 발전하기 (reinforcement  learning)  트레이닝 결과 업데이트 모델 ver 1,000,000VS 최종 모델이 80% 승리 프로기사 흉내내는 모델
  44. 44. 2.  판세 평가하기
  45. 45. 2.  판세 평가하기 업데이트 모델 ver 1,000,000 어느 판 Training: 승/패 승 (0~1) 예측 모델 (Regression) 기존 모델에 regression  layer를 더함 0~1 사이의 값으로 예측 1에 가까우면 좋은 판세 0에 가까우면 좋지 않은 판세
  46. 46. 경우의 수 (Search  Space) 줄이기 1. “action”  후보군 줄이기 (Breadth  Reduction) 2. 판세 평가하기 (Depth  Reduction) Policy  Network Value  Network 알파고 논문에서 이런 용어를 만들어서 부름
  47. 47. +수 읽기 (w/  Monte  Carlo  Search  Tree) Action  후보군 줄이기 (Policy  Network) 수 평가하기 (Value  Network) (Rollout):  Faster  version  of  estimating  p(a|s) ;  shallow  network  (3  ms à 2µs) *  Rollout   결과와 value  network  결과 값을 반반씩 합쳐서 최종 prediction
  48. 48. 결과 Elo rating  system 알파고 components  들의  조합에  따른  성능  비교
  49. 49. Takeaways 임의의 task를 위해 training한 network를 다양하게 활용
  50. 50. 이세돌 9단 vs  알파고
  51. 51. 이세돌 9단 vs  알파고 이세돌 알파고 -­‐ 성인 하루 권장 칼로리: ~2,500 kCal -­‐ 가정: 대국에 하루 필요한 모든 칼로리 소모 2,500  kCal *  4,184  J/kCal ~=  10M  [J] -­‐ CPU:  ~100  W,  GPU:  ~300 W -­‐ CPU  1,202개, GPU  176개 170,000  J/sec  *  5  hr *  3,600  sec/hr ~=  3,000M  [J] 정말 대충 계산해서 …
  52. 52. 현재 알파고는 프로 5단 수준? =  multiple  machines European  champion
  53. 53. CPU  /  GPU를 무한정 늘리면? 그러나 구글은 CPU/GPU  늘리지 않겠다고 약속 어떻게 수렴할지 의견이 분분
  54. 54. 매일 3만대국씩 학습한다던데? 결국은 어떤 점으로 수렴하겠지만 알파고 논문에서 “자가 대결 대국 수 (RL  sample  #)와 성능 개선”간의 그래프는 공개하지 않음
  55. 55. 이세돌 9단의 기보를 학습하면? 구글은 일단 이세돌 9단의 기보를 보고 학습하지 않겠다고 약속 학습한다해도 이세돌과의 적은 수 (5판)의 대국 데이터로 수백만 번의 대국 데이터로 training 된 모델을 tune하는 것은 힘듦 (prone  to  over-­‐fitting,  etc.)
  56. 56. 알파고의 약점은?
  57. 57. AlphaGo 작동원리 발표자: 문승환 PhD  student Language  Technologies  Institute,  School  of  Computer  Science Carnegie  Mellon  University me@shanemoon.com 3/2/2016
  58. 58. Reference • Silver,  David,  et  al.  "Mastering  the  game  of  Go  with  deep  neural   networks  and  tree  search." Nature 529.7587  (2016):  484-­‐489.

×