좋아요, 그렇다면 DeepMind의 Atari 알고리즘과 동일한 아이디어를 사용하여 신경 네트워크 Q-learner를 만들었습니다. (아직)).내 신경망 Q-learner가 tic-tac-toe를 배울 수없는 이유는 무엇입니까
신경망 빌드 : 9-50와
1 은닉층 ("O"를 "X"-1 빈 자리가 0, 1)
9 개 입력 뉴런
(8)로 출력한다 (다른 크기, 활성화 함수 S 자형으로 시도)
,536 (모든 행동 1, Q 값, 기동 시그 모이 드 함수를 출력한다)
- MSE 손실 함수 내가 100 % 확신 네트워크 때문에 그라데이션 점검 및 테스트의 많은 제대로 내장되어있어
Q-매개 변수 : 잃어버린 게임 이동이 이미 자리를 차지하려고 시도하는 경우
- -1 보상 (예 : X는 플레이어 O 넣어하려고 자리에 이미 그의 "O")에 대한
- 0 보상
- 한 보상 원 게임 를위한 터미널 상태로 이어질하지 않는 이동을 위해
- 0 상을 그립니다
- 다음 상태 (s, a, r, s ')는 자신과 상대방이 이동 한 후의 상태입니다. 예 : 빈 보드와 플레이어 X는 첫번째 턴을 가지며 "X"를 좌상 구석에 놓습니다. 그런 다음 플레이어 O는 오른쪽 상단 모서리에 "O"를 넣습니다. 그런 다음 s, a, r, s '는 s = [000000000], a = 0, r = 0, s'= [1,0, -
1,0,0,0,0,0,0]
문제는 내 모든 Q-값은 내가 주면 -1 보상을 이동이 이미 자리를 차지하려고 할 때 제로로 이동합니다. 내가하지 않으면 네트워크는 이미 점령 된 장소로 이동해서는 안되며 임의의 Q 값을 배우는 것으로 보인다는 것을 알지 못합니다. 또한 내 오류가 줄어들지 않는 것 같습니다. 작동하지 않았다
솔루션
나는 (0, 0.5, 1), (0, 1)하지만 여전히 배울하지 않았다에 보상을 변경하기 위해 노력했다.
비어있는 상태를 0, O를 0.5, X를 1로 표시하려고했지만 작동하지 않았습니다.
나는 이동이 이루어진 직후에 다음 상태를 제공하려고 시도했지만 도움이되지 않았습니다.
저는 아담과 바닐라 백 소품으로 시도했지만 여전히 같은 결과가 있습니다.
- 내가 ReLU에 재생 메모리와 확률 그라데이션 하강,하지만 여전히 같은
- 변경된 시그 모이 드에서 일괄 적으로 시도했지만 도움이되지 않았다. 사물의
- 모든 종류의 내가 GitHub의에서 지금
프로젝트 불러올 수 없습니다 주로 때문에 이러한 코드 리팩토링의 모든 추한 코드 https://github.com/Dopet/tic-tac-toe (미안,이는 쉽게 테스트해야했는데 (U를 만든
- TicTac 클래스는 게임 자체를 가지고 : 알고리즘이 작동하는 경우
홈페이지 포인트)를 참조하십시오 추상적 인 게임 클래스 템플릿 메소드 패턴)을 노래
이 게시는 가능한 한 우수합니다. 문제는 (a) 나는 당신의 접근 방식에있어서 어떤 잘못도 보이지 않는다. (b) 오류를 재현 할 수있는 코드를 제공하지 않았습니다. – Prune
프로젝트를 GitHub에 추가했습니다. 불명확 한 것이 있는지 물어보십시오! https://github.com/Dopet/tic-tac-toe – Dope
[최소한의 완전하고 검증 가능한 예] (http://stackoverflow.com/help/mcve)가 여기에 적용됩니다. – Prune