Deep Blue 이후 엔진이 어떻게 개선 되었습니까?


17

1997 년 Deep Blue가 Kasparov를 제치고 컴퓨터 체스 엔진이 향상되었습니다.

알고리즘이 나아 졌습니까? 아니면 빠른 하드웨어 등으로 인해 동일한 알고리즘이 더 빠르게 실행되어 주로 개선 되었습니까?

전자의 경우 이러한 알고리즘 개선이 공개됩니까?

그렇다면 어떻게 개선 되었습니까? 그들에 대해 어디서 읽을 수 있습니까?



어떻게 ? 극적으로.
Evargalo

답변:


8

컴퓨터 체스 전용 포럼 인 TalkChess를 살펴볼 수도 있습니다 . : 나는 당신을 위해 재미있을 수있는 최근의 스레드 발견 7~8년의 네 간격으로 30 년 동안 진행을

(이전) 최상위 엔진 간의 두 가지 일치 항목이 동일한 하드웨어 에서 재생됩니다 . 이 테스트는 최근 몇 년 (2002-2017) 동안 주로 소프트웨어 개선을 통해 얻은 것임을 시사합니다. 테스트에서 Stockfish (2017)는 RobboLito (2009)에 비해 94/100의 인상적인 점수를, RobboLito는 Shredder (2002)를 92/100으로 분쇄했습니다.

중요한 말 : 병렬 컴퓨팅은 구형 엔진에서 구현되지 않기 때문에 테스트는 단일 코어에서 수행되었습니다. 결과적으로 병렬 머신의 하드웨어 이득은 측정되지 않습니다. 반면에 병렬 컴퓨팅도 소프트웨어의 이점이라고 주장 할 수 있습니다. 검색 알고리즘을위한 효율적이고 확장 성이 뛰어난 병렬화를 설계하고 구현하는 것은 쉽지 않습니다.

건어 알고리즘의 개선이 공공 그래서 엔진은 오픈 소스입니다. https://chessprogramming.wikispaces.com 에 많은 문서가 있습니다.


이것은 그의 주장에 답한다. 다음에 질문에 대답하십시오.
Fred Knight

1
글쎄, 나는 그 질문에 대답했다고 믿는다 : 이득은 주로 알고리즘 개선에 의해 이루어진다. 또한, 나는이 주장을 뒷받침하는 데이터를 보여 주었고 (링크 참조) 가능한 결점을 지적했다 (병렬화는 측정되지 않음).
Maxwell86

3

Deep Blue에 사용되는 알고리즘을 말할 수는 없지만 체스 프로그래밍의 개선 사항을 설명하고 설명하려고합니다. 속도가 가장 향상되었습니다. Deep Blue는 다중 프로세서 전용 컴퓨터를 사용했기 때문에 비교가 불가능합니다.

https://chessprogramming.wikispaces.com/ 은 훌륭한 소스이지만 탐색하기는 어렵습니다.

체스 엔진을 개선하기 위해 조정 된 3 가지 주요 기능은 평가, 이동 생성 및 검색 기능입니다.

규칙에는 많은 예외가 있으므로 평가는 프로그래밍하기가 가장 어렵습니다. 하드 드라이브 공간이 저렴 해짐에 따라 eval 기능을 사용하면 더 많은 예외를 평가할 수 있습니다.

이동 생성 및 이동과 함께 이동 생성은 여러 번 수행되어야하므로 많은 메모리를 소비합니다. 가장 일반적인 생성 기능은 사서함, 비트 보드, 0x88, 8x8, 확장 보드 (10x10, 10x12) 및 미리 정해진 이동 배열 / 테이블입니다 (* 인덱스 이동 테이블을 사용합니다). 현재 비트 보드가 더 빠르며 매직 비트 보드를 사용하면이 속도가 최대 30 % 향상됩니다. cratfy 체스 엔진의 교수이자 제작자 인 Robert Hyatt 박사는 속도가 크게 증가하지 않았다고 주장합니다.

초기 검색 기능은 기본 최소-최대 기능이었습니다. 기본적으로 당신은 상대의 점수를 이동하고 최소화하기 위해 측면의 점수를 최대화하려고했습니다. 알파-베타가 첫 개선이었습니다. 조옮김 테이블, 컷오프 값, 흡인 창 및 히스토리 휴리스틱으로 검색되는 동작 수를 줄였습니다. 이것은 깊이 우선 검색입니다. 또 다른 움직임을 찾는 것이 결실을 맺지 않기를 바라는 가장 깊은 "최상의"움직임을 검색하려는 내부 반복 심화 검색도 있습니다.

참고 : 내 인덱스 테이블. GNUChess와 Jester는 모두 인덱스 배열을 사용하여 이동을 생성합니다. 가능한 이동으로 배열을 채워 엔진을 초기화합니다. 여섯 조각을 가지고 각 광장에서 사용할 수있는 합법적 인 움직임을 계산합니다. 따라서 각 조각에는 [64] [8] 배열이있었습니다. 이 아이디어를 가져 와서 두 개의 인덱스와 테이블로 압축했습니다. 테이블에는 16 개의 이동이 가능한지, 하나의 인덱스는 이동의 오프셋을 보유하고, 다른 하나는 마스크를 보유하는 값을 보유합니다.

오프셋 [] = {-8, -1, 1, 8, -9, -7, 7, 9, -17, -15, -10, -6, 6, 10, 15, 17};

마스크 [] = {1, 2, 4, 8, 16, 32, 64, 128, 256, ...};

그런 다음 이동 테이블에 대해 허용되는 오프셋에서 마스크의 유효성을 찾는 것만 큼 슬라이딩 이동 생성이 쉽습니다.


7
답변에 답장을 보내지 않으려 고하지만, 이것은 단지 ... 알파-베타와 비트 보드는 딥 블루 이전에 오랫동안 발명되었습니다. 또한 보드 평가가 정상적인 엔진에서 HD에 액세스하지 않는다고 확신합니다 (지연 시간은 거대합니다). 넷째, RAM 크기가 정상적인 알파-베타 검색 구현에 실질적인 차이를 만든다는 것에 회의적입니다.
MaxB

논의중인 일부 개념에 하이퍼 링크를 추가 할 수 있습니까? 개념에 관심이 있지만 용어에 익숙하지 않은 사람은 비트 보드가 무엇인지 또는 Crafty Chess 엔진이 무엇인지 알지 못하기 때문에 따르기가 어렵습니다.
Thunderforge

나는 딥 블루와 비교하지 않았다는 것이 분명하다고 생각했지만, 나는 간단한 역사를주고 있었다. 내가 언급 한 하드 드라이브는 프로그램 자체입니다. 새로운 평가 개념이 체스 엔진에 포함될 때마다 더 많은 코드와 더 많은 HD 공간이 필요합니다.
Fred Knight

@Thunderforge, 내가 제공 한 링크는 체스 프로그래밍을 다루고 싶었던 모든 측면을 설명하지만 탐색하기가 어렵다는 것을 인정합니다. 다른 사람의 소스 코드를 읽음으로써 배웠지 만 가장 많이 언급 된 것은 Dr. Hyatt 's Crafty 엔진입니다. 공간 제한과 플랫폼 및 컴파일러의 차이로 인해 너무 포괄적이지 않기로 선택합니다. 위키 체스 페이지를 읽은 후에도 여전히 혼란 스러우면 질문을하고 많은 사람들이 더 나은 답변을 제공 할 것이라고 확신합니다.
Fred Knight

1
Every time that a new eval concept in included into a chess engine, more code, and therefore more HD space is required.보드 평가 기능은 일반적으로 CPU 캐시에 적합하도록 설계되었습니다. CPU 캐시 << RAM << HD. HD 크기는 차이가 없습니다.
MaxB

2

알고리즘이 나아 졌습니까?

분명히 그렇습니다.

더 빠른 하드웨어와 소프트웨어 덕분에 동일한 알고리즘이 더 빠르게 실행되어 개선이 이루어 졌습니까?

경미 : 알고리즘이 나아지면 소프트웨어가 나아 지므로 "또는"이 없습니다.

무어의 법칙에 따르면 프로세서 속도는 대략 18 개월마다 두 배가 될 것입니다. 그것은 20 년 만에 약 13 배가되었다는 것을 의미합니다. 이로 인해 현대 프로세서는 8,000 배 빠른 속도를 자랑합니다. 따라서 엔진 성능의 가장 큰 향상은 하드웨어 속도가 빠르기 때문입니다.

전자의 경우 이러한 알고리즘 개선이 공개됩니까?

그렇다면 어떻게 개선 되었습니까? 그들에 대해 어디서 읽을 수 있습니까?

글쎄요, 그것은 전자가 아니라 후자였습니다. 그럼에도 불구하고 개선 사항은 대부분 오픈 소스이며 Stockfish와 같은 엔진의 소스를 다운로드하여 자유롭게 볼 수 있습니다 . 버전 9가 나오면 특정 소스 코드 링크가 만료 될 수 있으므로 일반적인 Stockfish 다운로드 링크를 제공 할 가치가 있습니다.


2
That means it has doubled roughly 13 times in 20 years.무어의 법칙을 잘못 인용 한 것 같습니다. 프로세서 속도에 대해서는 아무 것도 말하지 않습니다. 실제로, 한동안 두 배가되지 않았습니다.
MaxB

hardware and software알고리즘 구현에서와 같이 소프트웨어를 의미했지만 (ASM vs C ++) 혼동되는 방식을 볼 수 있습니다. 결정된.
MaxB

1
그는 "다음 10 년 안에"라는 문구를 포함한다는 점을 제외하고는 무어의 법칙이 정확합니다. 이것은 1975 년에 있었을 것입니다.
Fred Knight

-1 동일한 하드웨어에서 응답이 올바르지 않기 때문에 현재 엔진은 여전히 ​​이전 엔진을 분쇄합니다.
매력

0

알고리즘에 관한 모든 것.

인간 체스 플레이어를 타는 것은 당시 세계에서 가장 강력한 컴퓨터 중 하나를 사용했습니다. 이 무차별 컴퓨팅 방식을 통해 Deep Blue는 약 6 ~ 8 개의 움직임을 예측할 수있었습니다. 치열한 경쟁에서 기계는 Kasparov를 3 1/2 게임으로 2 1/2로 이겼습니다.

6 년 후 카스파로프는 사람 대 기계의 또 다른 대회에 참여했습니다. 이번에는 딥 블루의 후임자 인 딥 주니어와 대결했습니다. 결과는 3 경기 연속으로 그려졌다. 가장 큰 차이점은 Deep Junior가 Deep Blue의 컴퓨팅 성능의 약 1 %를 사용하는 컴퓨터에서 실행되었다는 것입니다. 체스 재생 알고리즘은 컴퓨팅 성능이 수백 배 적은 사실상 동일한 결과를 달성 할 정도로 향상되었습니다.


4
체스에 오신 것을 환영합니다! 답의 주요 부분을 마치 인용문처럼 썼습니다. 소스를 제공해 주시겠습니까?
Glorfindel

0

면책 조항 : 전문가가 아닙니다.

알고리즘이 향상되었으며 1995 년 (Deep Blue는 1999 년 기억)에서 실행되는 오늘날 최고의 엔진이 카스파로프를 능가 할 것입니다. 내가 이해하는 것처럼 알고리즘에는 두 가지 측면이 있습니다.

검색 . 예를 들어 여왕을 여왕으로 데려 가면 인간의 상대가 자동으로 다시 채집을 보게됩니다. 그러나 컴퓨터의 경우 QxQ에 대한 모든 가능한 응답을 평가합니다. 거의 항상, 이것은 처리 능력을 낭비합니다. 좋은 검색 알고리즘은 이러한 "분기"가 모두 관련이 없기 때문에 줄입니다.

표준 검색 알고리즘은 alpha-beta pruning 이며 초기 체스 컴퓨터에서 사용되었습니다. Deep Blue가 알파-베타 가지 치기를 사용했는지는 모르겠지만 최신 엔진은 그렇지 않습니다. 결과적으로 그들의 검색은 "안전하지 않은"것입니다. 예를 들어, 여왕을 다시 잡는 것 이외의 다른 움직임이 게임에서 이겼을 수도 있습니다. 그러나 이런 일이 발생하는 경우는 드물며 그 결과 깊이가 매우 높아집니다. ( "깊이"는 엔진이 얼마나 깊이 검색하는지에 대한 기술 용어입니다. 예를 들어, 깊이 30까지 검색하는 엔진은 깊이 20까지만 검색하는 엔진을 능가 할 가능성이 있습니다.

평가 . 이것은 엔진 코드의 다른 갈래입니다. 특정 위치가 주어지면 흰색, 검은 색 또는 동등한 위치에 더 적합합니까? 여기에는 모든 종류의 기능이 포함될 수 있습니다. 예 :

  • 한쪽에 추가 재료 / 공간이있는 경우 평가에 보너스를 제공하십시오.
  • 흰색에 폰이 지원하는 고급 기사가 있다면, 흰색에 평가 보너스를 제공하십시오.
  • 흑인 왕이 찌그러지면 백인에게 평가 보너스를 준다.
  • 화이트가 7 위에 루크를 가지고 있다면, 화이트는 평가에 보너스를 준다.
  • 최종 게임이고 (그리고 위치가 최종 게임인지 여부를 결정하는 알고리즘이 있으며) 양쪽에 반대편의 색상 주교가있는 경우, 평가에 페널티를 부과합니다 (즉, 0.00으로 푸시).

오늘날의 엔진은 Deep Blue보다 위치를 훨씬 잘 평가합니다.

알고리즘의 공개 여부에 관해서, Stockfish는 현재 세계에서 가장 강력한 엔진이며 오픈 소스입니다. Github 에서 직접 코드를 다운로드 할 수 있습니다 .

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