문제

좋은 움직임을하고 다른 플레이어와의 승리를 배우는 체스 엔진을 프로그래밍하고 싶습니다. 이미 체스 보드의 표현과 가능한 모든 동작을 출력하는 함수를 코딩했습니다. 따라서 보드의 주어진 상황이 얼마나 좋은지를 나타내는 평가 기능 만 필요합니다. 따라서 인공 신경망을 사용하여 주어진 위치를 평가해야합니다. 출력은 숫자 값이어야합니다. 가치가 높을수록 백인 플레이어의 위치가 더 좋습니다.

저의 접근 방식은 385 개의 뉴런 네트워크를 구축하는 것입니다. 보드에는 6 개의 독특한 체스 조각과 64 개의 필드가 있습니다. 따라서 모든 분야에서 우리는 6 개의 뉴런을 취합니다 (모든 조각마다 1). 흰색 조각이있는 경우 입력 값은 1입니다. 검은 색 조각이 있으면 값은 -1입니다. 그리고 그 필드에 그런 종류의 조각이 없다면, 값은 0입니다. 그 외에도 플레이어가 움직일 수있는 뉴런이 1 개 있어야합니다. White의 턴 인 경우 입력 값은 1이고 Black의 턴 인 경우 값은 -1입니다.

신경망의 구성이 상당히 좋다고 생각합니다. 그러나 주요 부분은 누락되었습니다. 어떻게이 신경망을 코딩 언어 (예 : 델파이)로 구현할 수 있습니까? 각 뉴런의 무게는 처음에 동일해야한다고 생각합니다. 경기 결과에 따라 무게를 조정해야합니다. 하지만 어떻게? 나는 2 명의 컴퓨터 플레이어 (내 엔진을 사용하는)가 서로 대결하도록해야한다고 생각합니다. 흰색이 이기면 Black은 무게가 좋지 않다는 피드백을 얻습니다.

따라서 신경망을 코딩 언어로 구현하는 데 도움이되면 좋을 것입니다 (가장 좋은 것은 델파이, 그렇지 않으면 의사 코드). 미리 감사드립니다!

도움이 되었습니까?

해결책

거기에 있었어. 문제에 연속성이 없기 때문에 (위치의 값은 하나의 입력 값이 1 번만 변경되는 다른 위치와 밀접한 관련이 없기 때문에) NN이 작동 할 가능성은 거의 없습니다. 그리고 그것은 내 실험에서 한 적이 없습니다.

차라리 위치의 가치를 평가하기 위해 임시 휴리스틱 (그곳에 충분한 부분이 있음)이있는 시뮬레이션 된 어닐링 시스템을보고 싶습니다.

그러나 NN을 사용하는 경우 비교적 쉽게 표현하기가 쉽습니다. 일반적인 NN은 단순히 그래프이며 각 노드는 뉴런입니다. 각 뉴런은 현재 활성화 값을 가지며, 입력 값, 즉 링크가있는 모든 노드의 활성화 값을 기반으로 다음 활성화 값을 계산하기위한 전이 공식을 갖는다.

입력 계층, 출력 레이어, 각 층에 대한 동일한 뉴런 및 시간 의존성이있는보다 고전적인 NN은 입력 노드, 출력 노드의 배열 및 연결된 그래프로 표시 될 수 있습니다. 그것들을 연결하는 노드. 각 노드는 현재 활성화 값을 가지고 있으며 전달하는 노드 목록이 있습니다. 출력 값을 계산하면 입력 뉴런의 활성화를 입력 값으로 설정하고 각 후속 레이어를 통해 전환 공식을 사용하여 이전 층으로부터 활성화 값을 계산하는 것입니다. 마지막 (출력) 레이어에 도달하면 결과가 있습니다.

다른 팁

누군가 가이 페이지를 무작위로 찾는 경우. 우리가 지금 알고있는 것을 감안할 때, OP가 제안한 것은 거의 확실합니다. 사실 우리는 훨씬 더 큰 상태 공간을 가진 게임을 위해 그것을 할 수있었습니다 - Go ( https://deepmind.com/alpha-go ).

알파 베타 가지 치기로 고전적인 미니 선식 룩보이드를 수행한다면 정적 평가자를위한 신경망을 가질 수없는 이유는 모르겠습니다. 많은 체스 엔진은 조각이나 무언가를 추가하는 Braindead 정적 평가자와 함께 Minimax를 사용합니다. 미니 맥스 레벨이 충분하다면 그다지 중요하지 않습니다. 나는 그물이 얼마나 개선 될지 모르겠지만 잃을 것이 거의 없다. 훈련하지만 까다로울 것입니다. 나는 많은 움직임을 앞두고 (CPU 등의 부하) 엔진을 사용하는 것이 좋습니다. 그렇게하면 CPU가 많이 걸리지 않는 엔진으로 끝납니다 (희망적으로).

앤을 훈련시키는 데 필요한 것은 역전 학습 또는 어떤 형태의 a 유전자 알고리즘. 그러나 체스는 복잡한 게임이므로 간단한 앤이 그것을 연주하는 법을 배우지 않을 것입니다. 학습 과정이 감독되지 않으면 더 많은 것을 배웁니다.

또한, 귀하의 질문은 계층 수에 대해 아무 말도하지 않습니다. 현재 상황을 인코딩하기 위해 385 개의 입력 뉴런을 사용하려고합니다. 그러나 어떻게 해야하는지 결정하고 싶습니까? 필드 당 뉴런에? 가장 높은 흥분이 승리합니까? 그러나 종종 하나 이상의 가능한 움직임이 있습니다.

또한 여러 개의 숨겨진 레이어가 필요합니다. 입력으로 표현할 수있는 함수와 숨겨진 레이어가없는 출력 레이어가 실제로 제한됩니다.

그래서 나는 당신이 그것을 시도하는 것을 막고 싶지는 않지만, 1 년 정도의 실질적으로 0이라고 말하면서 성공적인 구현과 훈련을받을 수 있습니다.

나는 16 년 정도 때 Tic-Tac-toe를 연주하기 위해 Ann을 만들고 훈련 시키려고 노력했지만 실패했습니다. 나는 그런 간단한 게임을 먼저 시도하는 것이 좋습니다.

내가 여기에서 볼 수있는 주요 문제는 훈련 중 하나입니다. 당신은 당신이 당신의 Ann이 현재 보드 위치를 취하고 플레이어에게 얼마나 좋은지 평가하기를 원한다고 말합니다. (플레이어를 위해 가능한 모든 움직임을 취하고, 현재 이사회 상태에 적용하고, Ann을 통해 평가 한 다음 가장 높은 출력을 가진 사람을 가져갑니다 - 즉 언덕 등반).

내가 볼 수있는 당신의 옵션은 다음과 같습니다.

  • 보드 상태를 평가하고 네트워크를 훈련시키기 위해 휴리스틱 기능을 개발하십시오. 그러나 그것은 당신이 당신의 휴리스틱을 사용할 수있을 때 왜 Ann을 사용하는지에 대한 의문을 제기합니다.

  • "이 보드 구성에서 흰색 또는 검은 색으로 승리 한 게임 수"와 같은 통계적 측정을 사용하여 White 또는 Black 사이의 체력을 제공합니다. 어려움은 문제 공간의 크기에 필요한 훈련 데이터의 양입니다.

두 번째 옵션을 사용하면 항상 Grandmaster Games에서 IT 보드 시퀀스를 공급할 수 있으며 ANN이 솔루션을 개발할 수있는 충분한 커버리지가 있기를 바랍니다.

문제의 복잡성으로 인해 교육을 너무 속도를 늦추지 않고 최대의 가장 큰 네트워크 (예 : 많은 내부 노드)를 던지고 싶습니다.

가능하지만 어떤 식 으로든 사소한 것은 아닙니다.

https://erikbern.com/2014/11/29/deep-learning-forchess/

그는 평가 기능을 훈련시키기 위해 많은 컴퓨팅 능력을 활용하여 그렇게했습니다.

일반적으로 요약하려면 다음과 같이 갈 수 있습니다. 평가 기능은 피드 포워드 NN입니다. 매트릭스 계산이 이동이 얼마나 좋은지를 평가하는 스칼라 출력으로 이어집니다. 네트워크의 입력 벡터는 보드의 모든 조각으로 표시되는 보드 상태이므로 화이트 폰은 1이고, 백기사는 2입니다. -12. 이 평가는 많은 게임에 대해 Grandmaster Games (예 : FICS 데이터베이스에서 사용할 수 있음)를 사용하여 교육을받을 수 있으며, 현재 매개 변수가 가장 높은 평가와 Grandmasters가 만든 것 (가장 높은 평가를 받아야 함) 사이의 손실을 최소화 할 수 있습니다. 물론 이것은 그랜드 마스터 움직임이 정확하고 최적이라고 가정합니다.

실라스가 말한 것을 말하기 위해 여기에 왔습니다. Minimax 알고리즘을 사용하면 미리 N 동작을 볼 수 있습니다. 알파 베타 가지 치기를 사용하면 이론적으로 2*N 이동으로 확장 할 수 있지만보다 현실적으로 3*N/4 동작을 확장 할 수 있습니다. 신경망은 여기서 정말 적합합니다.

아마도 유전자 알고리즘이 사용될 수 있습니다.

입력 알고리즘은 사운드입니다. 모든 위치, 모든 조각 및 두 플레이어가 모두 설명됩니다. 게임 보드의 모든 과거 상태에 대한 입력 레이어가 필요할 수 있으므로 과거 이벤트가 다시 입력으로 사용됩니다.

출력 레이어는 (어떤 형태로) 조각을 움직일 수 있고 이동할 위치를 제공해야합니다.

모든 뉴런 가중치와 시냅스 강도를 포함하는 Connectome을 사용하여 유전자 알고리즘을 작성하고 각각의 많은 수의 코네티컷이있는 여러 분리 된 유전자 풀을 시작하십시오.

그들을 서로 연주하고, 최고의 소수를 유지하고, 크로스 오버를 유지하고, 수영장을 다시 채우기 위해 최상의 코네티컷을 돌연변이합니다.

Blondie24 읽기 : http://www.amazon.co.uk/blondie24-playing-kaufmann-artificial-intelligence/dp/1558607838.

체스 대신 체커를 다루지 만 원칙은 동일합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top