체스에서 시간적 차이 구현


10

알파-베타 가지 치기 알고리즘과 재료, 왕의 안전성, 이동성, 폰 구조 및 갇힌 조각 등을 사용하여 위치를 평가하는 평가 기능을 사용하는 체스 프로그램을 개발하고 있습니다. 에서 파생 된

에프()=1재료+2왕의 안전+유동성+4폰 구조+5갇힌 조각

여기서 는 각 기능에 할당 된 가중치입니다. 이 시점에서 나는 에이전트가 자신을 대항하고 프로세스에서 환경 (강화 학습의 한 형태)에서 훈련 데이터를 수집하는 시간적 차이를 사용하여 평가 기능의 가중치를 조정하려고합니다. Java로 이것을 구현하는 방법에 대한 통찰력을 얻기 위해 몇 가지 책과 기사를 읽었지만 실제보다는 이론적 인 것처럼 보입니다. 이전 게임을 기반으로 평가 기능의 가중치를 자동으로 조정하는 방법에 대한 자세한 설명과 의사 코드가 필요합니다.

답변:


4

이 주제에 관심이있는 사람 은 TDL과 딥 러닝이 결합 된 논문 을 살펴 보는 것이 좋습니다 .

대략, 엔진이 서로 게임을하도록해야합니다. 각 위치에 대한 최소 최대 평가를 기록하십시오. 게임이 끝나면 체스에 대한 보상이 {0,1, -1}입니다. 그런 다음 다음을 사용하여 매개 변수를 조정해야합니다.

여기에 이미지 설명을 입력하십시오

이 방정식은 시간 차이에 따라 가중치를 조정하고 얼마나 멀리 가야하는지 가중치를 부여합니다. 완벽한 평가를 받으면 시간 차이는 항상 0이므로 조정할 필요가 없습니다.

다음으로, 새로운 게임을하려면 새로운 매개 변수를 사용해야합니다. 감당할 수있는 횟수만큼 또는 수렴 된 것으로 생각 될 때까지 반복합니다.

몇 가지 언급 :

  1. 내가 인용 한 논문은 할인 요소를 적용합니다. 신경망에 대한 역 비례 알고리즘을 위해 수행되었습니다. 필요하지 않습니다.
  2. 최적의 학습 속도 (방정식의 알파)를 실험해야합니다. 너무 크면 학습이 불안정 해지고 너무 작아서 수렴하는 데 더 오래 걸립니다. 사람들이 0.70을 사용하는 것을 보았습니다. 내가 인용 한 논문은 1.0을 사용했다.

안녕, 나는 당신의 답변을 사랑하지만 당신은 종이에 대한 링크를 수정하시기 바랍니다?
padura

@padura 수정. 읽어주세요. 데이터 과학에 대한 좋은 읽기였습니다.
HelloWorld

(+1) 정답입니다. 종이도 좋아했습니다 :)
Dawny33

그것은 좋은 기사입니다, 부끄러운 일입니다. 내 체스 엔진에서 작업 할 때 이것을 알지 못했습니다.)이 기술과 결합하여 개선 할 수 있는지 궁금합니다 : bjmc.lu.lv/fileadmin/user_upload/lu_portal/ projekti / bjmc /…
padura

2

첫 번째로, 자신이 무엇을하는지 알기 위해 '워 게임'을 봐야합니다.

당신이 원하는 것은 f (p)가 가능한 한 위치의 강도에 가깝도록 f (p)입니다.

유전자 알고리즘을 사용하는 매우 간단한 해결책은 무게가 다른 10000 명의 플레이어를 설정하고 어떤 승리를 보는 것입니다. 그런 다음 상위 1000 명의 승자 무게를 유지하고 10 회 복사 한 다음 무게 공간을 탐색하기 위해 약간 변경 한 후 시뮬레이션을 다시 실행하십시오. 기능적 형태를 고려할 때 표준 GA가 가장 적합한 계수입니다.

또 다른 해결책은 위치를 추출하는 것이므로 위치의 우수성이 객관적인 요인 인 위의 시뮬레이션을 사용하여 계산 된 결과 승 / 손실 인 '(재료, kingsafety, 이동성, 폰 구조, 갇힌 조각)-> 위치의 양호'테이블이 있습니다. 또는 알려진 일치 항목, 사용 가능한 트리의 깊이, 5 가지 요소 중 하나가 더 좋아지는 트리 아래의 이동 수 f (p), 회귀, svm에 대해 다른 기능 양식을 시도 할 수 있습니다.


이것은 말이되지 않습니다.
HelloWorld
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.