2017-12-16 15 views
0

체스 규칙과 같은 규칙을 신경망에 적용하여 네트워크가 유효하지 않은 움직임을 예측/훈련하지 않도록하려면 어떻게해야합니까?신경 네트워크의 출력에서 ​​체스에서 합법성을 이동하는 것과 같은 규칙을 적용하는 방법은 무엇입니까?

+0

더 중요한 질문은 아마도 다음과 같습니다. 이것이 올바른 접근 방법입니까? AlphaGo에는 정책 및 가치 네트워크가 있지만 Go의 이동 규칙은 체스에 비해 훨씬 간단합니다. 모든 working chess-approach는 아마 value-networks (그리고 classic move generators)를 사용했을 것입니다. 기린. – sascha

답변

2

AlphaZero Chess의 예에서 네트워크의 출력 모양은 모든 사각형에서 시작하는 모든 조각에 대해 가능한 모든 이동을 허용합니다. 용지 Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm 가입일

:

체스 이동은 두 부분으로 설명 될 수있다 : 선택하는 조각에 대한 법적 이동 중 다음 이동하는 부분을 선택하고. 확률 분포가 4,672 건이 넘는 8 x 8 x 73 평면 스택으로 정책 π (a | s)를 나타냅니다. 각 8 × 8 위치는 조각을 "픽업"할 사각형을 식별합니다. 첫 번째 56면은 어떤 조각에 대해서도 '여왕의 움직임'을 인코딩합니다. 조각이 일 수있는 8 개의 상대 나침반 방향 {N, NE, E, SE, S, SW, W, NW}. 다음 8 개의 평면은 해당 조각에 대한 가능한 기사 이동을 인코딩합니다. 마지막 9 개 비행기는 두 가지 가능한 대각선, 기사, 주교 또는 루크에 각각 폰 이동 또는 포착에 대한 가능한 과소 홍보를 인코딩합니다. 일곱 번째 계급의 다른 폰 움직임 또는 캡처는 여왕 (으)로 승격됩니다.

그래서, 예를 들면 네트워크 는 나이트가없는 경우에도 g1에 출력하는 이동 g1-f3위한 포지티브 확률 허용하거나 이동 e8=Q위한 e7에 폰이 아닌 경우에도 인 또는 d1에 여왕이 있다면 d1-h5이지만 다른 조각은 대각선을 차단하고 있습니다.

핵심은 가능한 이동에 대한 확률 분포를 출력하고, 합법적 인 이동 만 허용되는 곳에서 재생함으로써 훈련되므로 불법 이동에 대해 매우 낮은 또는 0의 확률을 출력하는 방법을 배우게됩니다.

더 정확히 말하면, 정해진 횟수의 셀프 플레이 게임 후에 네트워크는 감독 된 학습을 사용하여 보드 위치에서 주어진 움직임의 확률과 가치를 예측하도록 훈련됩니다. 셀프 플레이 초기에 네트워크는 무작위 가중치를 가지며 불가능한 동작이 많이 발생할 확률이 높지만 감독 된 학습을 한 번 이상 반복하면 이동 출력 확률이 훨씬 더 합리적으로 보일 것입니다.

AlphaZero 팀이 네트워크에서 규칙을 적용하는 것에 비해이 아키텍처를 선택한 이유는 간단합니다. 고정 된 숫자의 출력 뉴런이 있어야하기 때문에 출력은 고정 된 크기를 가져야합니다. 다른 수의 법적 이동에 해당하는 출력 뉴런의 수가 다른 것은 당연한 것입니다. 또는 네트워크 내부의 비 법적 이동에 대한 출력을 제로로 만드는 것이 적절하지 않을 것입니다. 이는 비표준 작업이 될 것이므로 백 프로 퍼 게이트를 실행하는 악몽 일 것입니다. 체스 이동 생성기를 차별화해야합니다!

또한 네트워크가 게임을하기 위해 정책 출력을 사용할 때 합법적 인 동작만으로 각 출력을 간단하게 정상화 할 수 있습니다. 이러한 방식으로 우리는 자기 재생 시스템 내에서 이동 합법성을 시행하지만 신경망 아키텍처 자체에서는 그렇지 않습니다. 이것은 이동 생성기의 도움으로 수행됩니다.그것은 신경의 구조에 이동 적법성을 적용 에 필요는 없다 : 요약

model.add(Dense(4672, activation='softmax')) 

:로

는 keras에 대해 요구하고 있기 때문에, 특히, 당신은 출력 층을 나타낼 수 네트워크에서 모든 가능한 동작 (불법 동작 포함)을 허용하고 네트워크가 불법적 인 이동에 대해 낮은 또는 0의 확률을 출력하도록 교육 할 수 있습니다. 그런 다음 우리가 연주를위한 이동 확률을 사용할 때, 우리는 원하는 결과를 얻기 위해 합법적 인 움직임 이상으로 정규화 할 수 있지만 이것은 신경망 외부에서 발생합니다.

+0

많은 감사! 아주 좋은 대답! –

+0

대단히 환영합니다! 귀하의 질문에 완전히 답변되었다고 생각되면 답변을 수락하십시오. – Imran