체스 규칙과 같은 규칙을 신경망에 적용하여 네트워크가 유효하지 않은 움직임을 예측/훈련하지 않도록하려면 어떻게해야합니까?신경 네트워크의 출력에서 체스에서 합법성을 이동하는 것과 같은 규칙을 적용하는 방법은 무엇입니까?
답변
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의 확률을 출력하도록 교육 할 수 있습니다. 그런 다음 우리가 연주를위한 이동 확률을 사용할 때, 우리는 원하는 결과를 얻기 위해 합법적 인 움직임 이상으로 정규화 할 수 있지만 이것은 신경망 외부에서 발생합니다.많은 감사! 아주 좋은 대답! –
대단히 환영합니다! 귀하의 질문에 완전히 답변되었다고 생각되면 답변을 수락하십시오. – Imran
더 중요한 질문은 아마도 다음과 같습니다. 이것이 올바른 접근 방법입니까? AlphaGo에는 정책 및 가치 네트워크가 있지만 Go의 이동 규칙은 체스에 비해 훨씬 간단합니다. 모든 working chess-approach는 아마 value-networks (그리고 classic move generators)를 사용했을 것입니다. 기린. – sascha