나는 알파고를 아는가? NO
나는 Deep Learning을 아는가? NO
나는 Reinforcement Learning을 아는가? NO
나는 Monte-Carlo Tree Search를 아는가? NO
=> 알파고 설명을 보자
---------------------------------------------------------------------
알파고 해부하기 1~3부
https://www.slideshare.net/DonghunLee20/1-59501887
https://www.slideshare.net/DonghunLee20/2-59620244
https://www.slideshare.net/DonghunLee20/3-61454159
잘 설명 되어있고 모르는 단어들이 또 쏟아져 나오고 있습니다.
하나씩 공부해야할 것이 스택에 계속 쌓이네요.
- CNN(Convolutional Neural Network)
- Reinforcement learning framework
- MCTS(Monte Carlo Tree Search)
는 확실히 습득하고 넘어가야 할 부분임.
---------------------------------------------------------------------
여기서 주목한 것은 네트워크의 각 층을 구성하는 '19x19x48 텐서' 부분이었음.
하나의 착점마다 48칸의 데이터로 구성된 3차원 블럭이라고 볼 수 있는데
그것에 대한 feature가
- "흑돌" 바둑판 19x19 행렬 (0이면 흑돌이 없고, 1이면 놓인)
- "백돌" 바둑판 19x19 행렬 (0이면 백돌이 없고, 1이면 놓인)
- "빈칸" 바둑판 19x19 행렬 (0이면 뭔가 돌이 있고, 1이면 빈칸인)
- 그냥 상수 1 ("그 칸 고유의 특성"을 모델링)
- 돌이 있다면, 몇 수 전에 놓였는지 (최소 1, 최대 8) (길이 8의 binary array)
- 연결된 말의 현재 활로가 몇개인지 (최소 1, 최대 8)
- 상대가 돌을 놓는다면 내가 잃을 돌의 수 (최소 1, 최대 8)
- 내가 돌을 놓는다면 그 돌에 연결된 말의 활로가 몇 개가 될지 (최소 1, 최대 8)
- 내가 돌을 놓는다면, 내가 축을 만드는데 성공할지
- 내가 돌을 놓는다면, 내가 축을 탈출하는데 성공할지
- 돌을 놓는것이 바둑의 규칙에 어긋나는지, 내 집을 메꾸는 수가 아닌지
- 내가 흑돌인지 백돌인지 (이건 Value Network (판세분석) 에만 쓰입니다)
였음.
---------------------------------------------------------------------
퍼즐에 대한 분석을 하면서 텐서의 feature들을 제대로 설정하는게 중요할 것 같음. 그리고, 그걸 세팅해주는 모든 함수들도 짜야함.
과연 여기에 추가되어 필요한 정보는 무엇일까?
공부할게 늘었습니다. 그리고, 고민할게 늘었습니다. (철학적인 사고 비슷하게 고민해야할듯 함...)