Open heatz123 opened 2 years ago
Todos
지금까지 구현한 점
MCTS: Neural net이 주어지고, Game Rule을 모두 알고 있다면, search를 num_MCTS번 할 시 policy(pi)를 구할 수 있다.
MCTS에는 내부적으로 N, P, W, Q, V, E가 있다. N: 방문수 P: 방문 확률 (Neural net output) W: sum of values of child Q: value (W / N) E: isGameEnded. 1이면 플레이어 win, -1이면 플레이어 lose, 1e-4이면 draw, 0이면 게임 진행중 모든 type은 np.array (E 제외)
pi = N(s,a) / sum over a of N(s,a) (10수 전까지) 또는 pi = N(s,a)의 최대값 index만 1이고 나머진 0인 one-hot vector
구현할 점
Board size를 내가 제어할 수 있도록 수정 ---> BOARD_SIZE라는 변수로 통일, 함수화할 것은 함수화. 논문에 Neural Net에 플레이어 색도 인풋으로 들어가던데, 이걸 어떻게 처리했는지. (아마 constant를 15*15 판으로 확장한 듯하긴 한데, 정확히 알아보기.) -> Done
Neural Net 학습까지 시키는 로직 짜기. -> Done
모델이 쓰는 Rule과 기존 Github에 있는 Rule을 연결하기. -> 나중에.
어떤 요소가 np.array이고 어떤 요소가 list인지 확실히 하기. array이면 type도 확실히 구분하기. -> Done MCTS 내부 변수는 모두 np.array (dtype=np.float32) Rule이 return/받는 값은 모두 python scalar or np array. (모델 관점의 Rule)
Model을 eval과 train시에 각각 다른 output을 출력하도록 하기. -> Done Model의 출력값을 eval/train 나눌 필요 없이, eval과 train의 루프에서 다르게 처리하면 됨. eval에서는 train된 output을 detach하고 스칼라/np array로 변환하면 되고, train에서는 loss를 따로 계산해서 backward시킴
https://colab.research.google.com/drive/1ToDfYzIjs_5EpMRKWfvHUhohTsaE7Iw-?usp=sharing
Self-Play로 학습 가능하도록 뉴럴넷/tree search 구현중 어느 정도 완료되면 코드에 병합할 예정