앞에 알파고의 원리에 대해서 간단히 썼던 적이 있는데 알파고의 학습은 인간 고수들이 대국했던 기보를 시작으로 한다. 기보를 입력으로 여러 특징을 더 추출한 뒤 CNN으로 학습시켜 SL policy network를 구한다. 이렇게 학습해서 인간과 얼추 비슷하게 다음 수를 예측할 수 있다.
이렇게 구한 SL policy network를 강화 학습하여 더 좋은 수를 예측하는 RL policy network를 구하고, RL policy network로 현재 형세를 판단하는 value network를 구한다.
여기에서는 강화 학습을 통해 얻는 RL policy network와 value network를 어떤 처리를 통해 구하는지 정리한다.
RL policy network
미리 구해둔 SL policy network에서 출발한다. self play로 모델 학습을 진행하는데 자기와 붙을 상대 모델을 관리하는 set이 있다. 역시 상대 모델 set에도 처음에는 SL policy network가 들어있다.
이제 내 모델과 상대 모델과 대국시켜 하나의 에피소드(한판)를 진행한다. 상대 모델은 상대 모델 set에서 임의로 하나를 고른다.
모델은 policy network로 확률로 이루어져 있기 때문에 한판으로 끝내지 않고 128판을 둔다. 그러면 매번 다른 과정을 통해 여러 결과가 나올 것이다. 이렇게 얻은 128번의 결과를 reinforce 알고리즘으로 내 모델 파라미터를 갱신한다. 이 과정을 500번을 반복해서 안정이 되면 지금까지 만든 모델을 상대 모델 set에 추가한다. 다음 학습에는 지금까지 만든 모델과도 붙을 수 있게 하기 위함이다.
이렇게 강화 학습시킨 RL policy network는 인간 기보로 얻은 SL policy network와 비교해서 80% 확률로 이길 수 있다.
과정과 결과를 보면 SL policy network보다 항상 우월할 것 같지만 꼭 그렇지만은 않다. MCTS에서 이렇게 구한 policy network를 사용해보면 SL policy network가 더 성능이 좋았다고 한다. 그래서 이세돌과 붙기 전 유럽 챔피언 판 후이 2단과 붙을 때에는 SL policy network를 사용하기도 했다.
Value network
다음 수의 확률을 구하는 policy network와는 달리 현재 바둑판의 상태를 보고 그 승률을 예측하는 모델이다.
value network는 결국 입력으로 임의의 바둑 국면이 필요하고, 그 국면에서의 승률을 출력으로 한다. 인간 고수들의 기보만 가지고 하기에는 데이터가 충분치 않아 self play를 통해 데이터를 더 생성한다. 이때 단순한 self play보다 탐색을 넓히기 위해 아래와 같은 방법으로 생성한다.
- 한판 두는데 가능한 1 ~ 450 수 U를 선택
- SL policy network로 U-1 수 까지 대국
- U번째 수로는 바둑판 빈 공간 중에서 임의로 선택
- 이제부터 RL policy network로 대국
- 3번에서 만든 상태 $s$와 4번의 결과 $z$를 데이터로 생성
언뜻 더 쉽게 학습시키는 방법이 떠오르지만 다양한 경우를 포함시키기 위한 고민의 산출물일 것이다. 이렇게 얻은 3000만 개의 기보와 결과를 바탕으로 현재 상태의 승률을 출력하는 CNN을 완성시킨다. 인간 기보를 입력으로 여러 층의 필터를 통과시켜 SL policy network를 구한 방법과 같은 방법이다.
'딥러닝' 카테고리의 다른 글
Keras로 모델 저장, 불러오기 (0) | 2019.11.16 |
---|---|
Keras로 간단한 CNN 구현하기 (0) | 2019.11.13 |
알파고의 몬테카를로 방법 (0) | 2019.11.10 |
강화학습의 종류 (0) | 2019.11.03 |
알파고의 원리와 그 버전들 (0) | 2019.11.03 |
댓글