오셀로에서 강화 학습을 하는【vs 랜덤군】

타이틀대로 랜덤군을 상대로 강화 학습을 해 보았습니다.

네트워크에 제공되는 입력 값의 크기는 8*8*3
한층 더는 자신의 돌의 정보
2층째에는 상대의 돌의 정보
3층째에는 합법수의 정보
0과 1로만 표현됩니다.

네트워크 구조는
필터 크기 108 cnn 12 레이어
유닛 사이즈가 512인 전체 결합층이 5층으로 되어 있습니다.
활성화 함수는 prelu(마이너스의 값을 자동으로 학습해 주는 함수)
활성화하기 전에 batch_normalization을 사이에 두십시오.
출력 레이어는 64개의 softmax 함수입니다.
학습시 드롭아웃은 cnn과 전체 결합 모두 0.5

학습에서 사용하는 데이터는 랜덤군과의 대국 데이터를 그대로 사용합니다.
이긴 경기는 그 경기 중에 취한 모든 행동을 정답으로 하고, 그 행동이 보다 나오기 쉬워지도록 구배 하강합니다.
패한 경기는 반대로 그 행동이 나오기 어려워지도록 경사 하강합니다.
정답 라벨을 제공하는 방법은 매우 간단하고 mnnist로 친숙한 one_hot_label을 제공합니다.

그 행동을 더 내기 쉽게 하고 싶을 때[0, 1, 0, 0, 0, 0, 0, 0, 0, 0]
그 행동을 나오기 어려워하고 싶을 때 [1, 0, 1, 1, 1, 1, 1, 1, 1, 1]
이번에는 64개의 출력값이므로 이것의 64개 버전의 one_hot_label입니다.

또한 부정한 손을 가리키지 않도록,
합법수 중에서 출력값이 가장 큰 것을 가리키는 손으로 채용하고 있습니다.

또 강화 학습을 할 때는, 통상 랜덤 행동을 도입합니다만, 이번은 없었습니다.

학습 그래프↓


랜덤군과의 대국이라고 하는 것으로, 승률에 편차는 있지만, 8할 정도는 승리하게 되어 있는 것을 알 수 있습니다.

그 밖에, 이하와 같은 일도 시도했습니다만, 이것이라고 말한 효과는 없었습니다.

· 경험 재생
리스트 등에 국면의 데이터와, 행동했을 때의 데이터를 보존해 두고,
일정한 타이밍에 미니 배치 학습으로 다시하는 방법

경험 재생은 딥 프라의 강화 학습에서 간이되는 방법이라는 이미지였습니다.
1000경기마다 최근 1000경기분의 데이터를 이용해 다시 학습시켜 보았지만 이것이라고 말한 효과는 없었습니다

・진 때만 학습시킨다
80% 가까이에서 멈추어 버리는 것은 network가 만심해 버리니까? 생각했기 때문에
졌을 때만, 그 행동이 나오기 어려워지도록 학습을 시켜 보았습니다만, 승률이 6할~7할이 되어 버려 성능이 나빠졌습니다.
역시 이겼을 때의 요령도 가르쳐 주는 것이 소중한 것 같습니다.

랜덤 행동도 시켜도 보았습니다만, 결과는 같습니다.

어쨌든, dqn과 같은 약간 복잡한 식을 짜지 않아도 나름대로 학습할 수 있는 것을 알았습니다.

다음은 제로로부터의 상태로 랜덤군에게 100% 승리하고 싶다-라고 생각합니다.

좋은 웹페이지 즐겨찾기