무차별 검색을 사용하지 않는 체스 엔진이 있습니까?


10

내가 들어 본 모든 체스 엔진 (위키 백과에 나열된 모든 것을 포함)은 평가 기능 (minmax 알고리즘)과 함께 무차별 검색을 사용하여 이동을 결정합니다.

이것은 대부분의 인간이 일반적인 패턴 인식을 대신하여 게임에 접근하는 방식이 아니기 때문에 원칙적으로 컴퓨터가 동일한 작업을 수행 할 수 있습니다.

움직임을 찾기 위해 무차별 대입 방식에 의존하지 않는 체스 엔진이 있습니까?


9
매그너스 칼슨. ;)
Wes

3
현대식 엔진은 움직임을 가지 치기 때문에 무차별적인 힘이 없다고 말하는 사람들에 관해서는 ... 체스 엔진이 수천만 개의 위치를 ​​평가할 때 누군가가 그리는 눈썹에 관계없이 무차별적인 힘을 사용하고 있다는 것이 분명합니다. 알고리즘에.
Tony Ennis

예를 들어 최신 엔진은 움직임을 놓칠 수 있습니다. 보수가 상당히 깊어 질 때까지의 희생. 나는 그들이 가지 치기 때문에 심하게 검사하지 않았기 때문일 것입니다.
행인 : September

답변:


6

1980 년대에 인간처럼 후보자 움직임을 선택하는 지식 기반의 체스 엔진을 작성하려는 시도가 있었지만 성공하지 못했습니다. 문제는 인간 패턴 매칭이 말로 표현하기가 어렵 기 때문에 지식 기반에 대한 규칙을 만드는 것이 매우 어렵다는 것입니다.

후보 이동을 선택하기 위해 신경망을 훈련시키는 것은 유망한 연구 라인처럼 보입니다. 여기여기에 두 개의 관련 논문이있을 수 있습니다. (FWIW, 그것은 내 Comp Sci 분야가 아닙니다)



3

기린에 대한 @Ian_Bush의 답변에 세부 정보를 추가하고 싶습니다.

@Ian_Bush의 답변에서 기린은 무차별 계산을 사용하지 않습니다. 기린은 여전히 ​​알파-베타 (nega-max) 엔진이기 때문에 이것은 옳지 않습니다 . 표준 엔진과 의 유일한 차이점은 평가 기능이 딥 러닝에 의해 자동으로 조정된다는 것입니다. 따라서 엔진은 스스로 연주하는 법을 배웁니다.

일반적으로 엔진 프로그래머는 엔진에서 매개 변수를 자체 튜닝합니다. 나는 많은 일을했다. 예를 들어, 감독과 기사에게 얼마나 많은 무게를 주어야합니까? 3.0? 3.1? 3.2? 말하기 어렵다.

기린은 훨씬 똑똑한 방식으로 문제에 접근합니다. 초기 값으로 시작합니다. 엔진은 기울기 상승 알고리즘을 사용하여 해당 값을 조정합니다. 우리는 코드에서 여왕이 얼마나 많은 무게를 가져야하는지 명시 적으로 코딩 할 필요가 없습니다. 이것이 우리가 "학습"을 의미하는 것입니다. 엔진이 검색 하지 않고 체스 할 수있는 것은 아닙니다 .

편집 : 기린은 트리 노드가 주요 variatation에 속할 확률로 모델링합니다. 자세한 내용은 용지를 확인하십시오. 나는 개인적으로이 접근법을 믿지 않으며,이 논문은 그것이 얼마나 유용한 지 거의 증거를 보여주지 않습니다.


기린이 Stockfish eval을 대상으로 사용하는 것이 사실입니까? 그렇다면 자체적으로 "체크를 배우지"않고 보드 기능 위에 nnet을 사용하여 Stockfish eval에 대한 근사값 만 학습합니다.
페르난도

@Fernando Giraffe는 Stockfish와 관련이 없습니다.
SmallChess

나는 전체 논문을 읽을 것이다. 그러나 18쪽에 그것은 말한다 : We evaluated board representations by training neural networks to predict the output of Stock- fish’s evaluation function in a supervised fashion, given 5 million positions as input, in the board representation under evaluation. 그래서, 이것은 selfplay IMO에 의한 학습이 아닙니다.
페르난도

1

휴리스틱 기반 검색을 호출하고 접근 방식을 무차별 대입으로 평가할 수 있다면 논쟁의 여지가 있습니다. 오늘날 대부분의 최상위 체스 엔진은 규칙 기반 접근 방식에 따라 위치를 평가하고 규칙 기반 검색 기능을 사용하여 움직임을 제거합니다.

실제로 "전역 최적"이동을 선택할 수는 없지만 이러한 이동은 목적에 충분합니다. 이런 의미에서 대부분의 체스 엔진은 전 세계 최적의 근사치를 사용하고 실제로지나갑니다.

현재까지는 저렴한 하드웨어가 아닌 다른 접근 방식을 사용하여 최상위 수준에서 성공하는 체스 엔진이 많지 않았습니다.


0

Claude Shannon은 체스 엔진을 만들기위한 두 가지 유형의 알고리즘을 제안했습니다. "유형 A"엔진은 가능한 모든 이동을 유한 한 깊이까지 검사하고 나무를 최소화 한 다음 최소화 된 나무 (일명 무차별 력)에서 가장 높은 평가로 이동합니다. 유형 B 엔진은 일부 기준에 따라 가능한 이동의 하위 집합으로 만 검색을 제한합니다. 나는 그가 유망한 B 형을 선호한다고 믿었다.

1970 년대에 만들어진 엔진 (예 : 하이테크, 카 이사)은 가지 치기 또는 알파-베타가없는 순수한 무차별적인 경향이 있었지만 사람들은 곧 움직임의 나무와 가지 치기의 가치를 보았습니다. . 거의 모든 최근 엔진은 분명히 약한 라인 트리를 제거하며 (알파-베타) 대부분의 엔진은 다양한 유형의 정방향 가지 치기 (실용성, 늦게 이동 감소, 널 이동, 면도)도 사용합니다. 그런 의미에서 더 이상 순수한 무차별 힘을 사용하는 엔진은 많지 않습니다.

1970 년대에 Botvinnik은 Pioneer라는 엔진을 개발하여 평가 가이드가 될 수있는 공격 경로 개념을 고려했습니다. 그것은 완전한 체스 게임을 할 수있는 지점에 도달하지 못했습니다.

1990 년대 Chris Wittington은 더 많은 체스 지식을 통합하는 것에 찬성하여 Chess System Tal이라는 프로그램을 만들었습니다.

Kasparov, Anand 및 Tord Romstad는 Hiarcs가 빠른 검색에서 힘을 얻는 많은 최고의 엔진보다 더 자세한 평가를하는 것 같습니다.


-2

기본적으로 그들 모두!

체스 엔진은 실제로 다음과 같은 경우에만 무차별 대입을 사용합니다.

  • ~에게 말했다
  • 위치 분석 중 (문제 해결)
  • 체크 메이트 찾기 ( "N에서 메이트 찾기"스타일 문제와 같이 게임을 할 때가 아닌 문제 해결)

그렇지 않은 경우 "선택적 검색"이 있으면 주어진 보드 레이아웃에 대해 가능한 모든 이동을 고려하지만 소수만 탐색합니다. 엔진이 두 번의 움직임을 매우 유사하게 평가하거나 (하나 이상의 강한 움직임), 좋아하는 움직임을 찾을 수없는 경우 (강한 움직임 없음) 엔진은 무차별 힘으로 전환 할 수 있습니다.

그들은 또한 최후의 방어선으로 무차별 공격을하는 경향이 있습니다. 만약 당신이 장군의 기회를 보았을 때 그것이 다가오는 것을 볼 수 있고 정말로 그리려고 노력하고, 탈출구를 찾을 수 없을 것입니다 ( "수평선 효과" "는 엔진에 문제가있다. 그것이 여왕을 풀어줄 것이라고 가정하고, 그것은 단지 4 연의 깊이로 가도록 제한되어있다. 폰을 교환하고 여왕의 상실을 4 번 옮길 수 있다고 연기한다면 여왕을 구했다고 생각할 것이다. , 그 과정에서 최소한 다음 폰이 풀릴 것입니다 (다음 움직임으로 인해 수평선이 가까워지기 시작 함). 여왕을 구하기 위해 가해지는 무게로 인해 죽음이 수평선을 넘어 가면 아무것도 방어하지 못할 수도 있습니다. .

또한 선택적 검색이 그다지 유용하지 않으면 무차별 대입됩니다. 3 개 정도 남았을 때 엔진이 더 오래 걸리는 이유입니다. 선택 알고리즘이 이동을 평가할 수 없기 때문에 무차별 대입해야합니다. 선택 알고리즘은 "Oohh, 폰으로이 작업을 수행하면 자신의 [무엇이든]을 차단하고 공격하는 것보다 방어하는 숫자가 적은 내 [어떤 것이 든]을 백업하는"것과 같을 수 있기 때문에 게임 중간에 훌륭합니다. .

만약 당신이 보드 중간에 왕이 있다면, 8 개의 움직임이 있습니다.

선택적 검색은 두 부분으로 구성된 것으로 생각할 수 있습니다. 전술적 움직임을 시도하고 발견한다는 의미에서 전술적입니다. 전략의 일부가 아닌 여왕은 가치가 없기 때문에 일반적으로 관련된 조각의 무게를 무시합니다. 전당포보다 더 중요합니다. 또한 방어를 강화하고 나중에 잠재적 인 공격에 노출되는 움직임을 탐색한다는 점에서 전략적입니다.

그런 다음 엔진은 사용자의 관점에서, 앞뒤로 동일한 작업을 수행합니다.

조옮김 테이블이라고하는 것은 생각했던 것의 큰 목록입니다. 이미 수행 한 것을 고려하면 결과를 알고 다시 평가할 필요가 없습니다.

UNLESS (selective :))는 다른 방법을 찾거나 더 탐구하고 싶습니다. 예를 들어, 당신의 ... 루크가 임박한 공격에 필수적이라는 것을 발견했다고 가정하면, 엔진은 이것을 발견했을 때 라인을 다시 평가할 수 있습니다. 그 루크에 가한 이전 무게 (예 : 5 점, 그것이 당신에게 얼마나 중요한가)는 과소 평가 될 수 있습니다.

선택적 검색은 또한 주교가 적의 영역으로 바로 이동하는 것을 고려하는 것처럼 이동 선택기로 역 추적 할 수 있으므로 쉽게 취할 수있는 것은 중요하지 않습니다. 그것이 전략적으로 훌륭한 움직임이라는 것을 발견했다고 가정하십시오! 그런 다음 그 광장을 감독으로 데려 가기 위해 광장을 보호 할 수있는 방법을 찾도록 역 추적 할 수 있습니다. 그렇게하기 위해 폰이 포함되어 있다고 가정하십시오.

무차별 대입 방법은 해당 전당포 이동과 주교 이동도 포함하는 선을 고려할 것이며 보드 위치 (선택적 검색 자체)를 평가하는 것과 동일한 내용이 "이것이 좋다"고 말할 것입니다. 변동이 심하게 발생하면 둘 다 찾을 수 있습니다.

무차별 대입 방법을 사용하여 위치를 평가하는 것은 매우 어렵 기 때문에 선택 검색이 제대로 작동합니다.

시작 위치의 무차별 대원은 감독이 뒤덮인 여왕 f7과 관련된 유명한 메이트 인 4를 발견 할 수 있으며 그것을 높이 평가한다면 (나는 수표를 찾았습니다! JOB DONE! PLAY!) 검은 색이 분명히 반격 할 것이기 때문에 틀렸다. 선택적 검색은 위치 가 양호 해 보이 므로 (추가 평가를 위해) 위치를 평가 합니다. 이것은 귀하의 답변을 고려할 때 귀하에게 유익한 것을 결정할 수 있음을 의미합니다.

따라서 선택 검색에서 물건을 평가하는 데 사용하는 물건은 어쨌든 무차별 대행자가 사용합니다. "이 이동과 관련된 수사관을 찾았다"는 것은 이동이 좋다고 말하기에는 충분하지 않기 때문입니다.

따라서 무차별 체스 엔진이 선택한 첫 번째 동작은 무엇입니까 (흰색)?

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