เครื่องยนต์มีการปรับปรุงอย่างไรตั้งแต่ Deep Blue?


17

เอ็นจิ้นหมากรุกคอมพิวเตอร์ได้ดีขึ้นตั้งแต่ Deep Blue เอาชนะ Kasparov ในปี 1997

อัลกอริทึมนั้นดีขึ้นหรือการปรับปรุงส่วนใหญ่เกิดจากอัลกอริธึมเดียวกันที่ทำงานเร็วขึ้นขอบคุณฮาร์ดแวร์ที่เร็วขึ้น ฯลฯ

หากก่อนหน้านี้การปรับปรุงอัลกอริทึมเหล่านี้เป็นของสาธารณะหรือไม่

และถ้าเป็นเช่นนั้นการปรับปรุงคืออะไร? ฉันจะอ่านเกี่ยวกับพวกเขาได้ที่ไหน


คำตอบที่อ่อนน้อมถ่อมตนของฉัน: chess.stackexchange.com/questions/19575/is-deep-blue-outdated
SmallChess

ได้อย่างไร เป็นคุ้งเป็นแคว
Evargalo

คำตอบ:


8

บางทีคุณสามารถดูที่TalkChessซึ่งเป็นฟอรัมสำหรับคอมพิวเตอร์หมากรุก ฉันพบกระทู้ล่าสุดที่อาจน่าสนใจสำหรับคุณ: ความคืบหน้าใน 30 ปีสี่ช่วง 7-8 ปี

คู่ของการแข่งขันระหว่าง (อดีต) เครื่องมือด้านบนมีการเล่นบนฮาร์ดแวร์เดียวกัน การทดสอบแสดงให้เห็นว่าในช่วงไม่กี่ปีที่ผ่านมา (2545-2560) กำไรส่วนใหญ่เกิดจากการปรับปรุงซอฟต์แวร์ ในการทดสอบ Stockfish (2017) ได้คะแนนที่น่าประทับใจ 94/100 เมื่อเทียบกับ RobboLito (2009) ในขณะที่ RobboLito ได้ทำการทำลาย Shredder (2002) ด้วย 92/100

ข้อสังเกตที่สำคัญ: เนื่องจากการคำนวณแบบขนานไม่ได้ถูกนำไปใช้ในเอ็นจิ้นรุ่นเก่าการทดสอบจึงดำเนินการบนแกนเดียว เป็นผลให้ฮาร์ดแวร์ได้รับจากเครื่องขนานไม่ได้วัด ในอีกทางหนึ่งคุณอาจโต้แย้งว่าการคำนวณแบบขนานนั้นเป็นซอฟต์แวร์ที่ได้รับด้วยเช่นกันมันไม่ใช่เรื่องง่ายที่จะออกแบบและใช้การขนานที่มีประสิทธิภาพและปรับขนาดได้สำหรับอัลกอริทึมการค้นหา

เอ็นจิ้น Stockfishเป็นโอเพ่นซอร์สดังนั้นการปรับปรุงอัลกอริทึมจึงเป็นแบบสาธารณะ สามารถพบเอกสารจำนวนมากได้ที่https://chessprogramming.wikispaces.com


นี่เป็นคำตอบที่ยืนยันของเขา ลองตอบคำถามในครั้งต่อไป
Fred Knight

1
ฉันเชื่อว่าฉันตอบคำถามแล้ว: กำไรส่วนใหญ่เกิดจากการปรับปรุงอัลกอริทึม นอกจากนี้ฉันยังแสดงข้อมูลที่สนับสนุนการอ้างสิทธิ์นี้ (ดูลิงก์) และชี้ให้เห็นข้อบกพร่องที่เป็นไปได้ (ไม่มีการวัดสัญญาณคู่ขนาน)
Maxwell86

3

ฉันไม่สามารถพูดถึงอัลกอริทึมที่ใช้สำหรับ Deep Blue ได้ แต่ฉันจะพยายามอธิบายการปรับปรุงในการเขียนโปรแกรมหมากรุก ความเร็วคือการปรับปรุงที่ยิ่งใหญ่ที่สุด Deep Blue ใช้คอมพิวเตอร์เฉพาะโปรเซสเซอร์หลายตัวดังนั้นจึงไม่สามารถทำการเปรียบเทียบได้

https://chessprogramming.wikispaces.com/เป็นแหล่งข้อมูลยอดเยี่ยม แต่การสำรวจทำได้ยาก

มี 3 ฟังก์ชั่นหลักที่ปรับแต่งเพื่อปรับปรุงเอ็นจิ้นหมากรุกคือฟังก์ชั่นการประเมินการสร้างการย้ายและการค้นหา

การประเมินเป็นโปรแกรมที่ยากที่สุดเนื่องจากมีข้อยกเว้นมากมายสำหรับกฎ ด้วยพื้นที่ว่างบนฮาร์ดไดรฟ์ที่ถูกลงฟังก์ชั่น eval จะช่วยให้สามารถทำการประเมินข้อยกเว้นเพิ่มเติมได้

การสร้างการเคลื่อนย้ายพร้อมกับการสร้างและถอนการย้ายจะสิ้นเปลืองหน่วยความจำมากเพราะต้องมีการปรับรูปแบบล่วงหน้าหลายครั้ง ฟังก์ชั่นการสร้างที่พบมากที่สุดคือกล่องจดหมาย, bitboard, 0x88, 8x8, บอร์ดขยาย (10x10, 10x12) และอาร์เรย์ / ตารางการย้ายที่กำหนดไว้ล่วงหน้า (* ฉันใช้ตารางการย้ายแบบดัชนี) ความเห็นในปัจจุบันคือว่า bitboards นั้นเร็วกว่าและการใช้ magic bitboards จะเพิ่มความเร็วได้มากถึง 30% ดร. โรเบิร์ตไฮแอทศาสตราจารย์และผู้สร้างเครื่องมือหมากรุก cratfy อ้างว่าไม่มีการเพิ่มความเร็วอย่างมีนัยสำคัญ

ฟังก์ชั่นการค้นหาในช่วงต้นคือฟังก์ชั่นขั้นต่ำสูงสุด โดยพื้นฐานแล้วคุณพยายามเพิ่มคะแนนด้านข้างให้มากที่สุดเพื่อขยับและลดคะแนนของคู่ต่อสู้ Alpha-Beta เป็นการปรับปรุงครั้งแรก พวกเขาลดจำนวนการเคลื่อนไหวที่ถูกค้นหาโดยตารางการขนย้ายค่าการตัดหน้าต่างความทะเยอทะยานและการวิเคราะห์ประวัติศาสตร์ เหล่านี้คือการค้นหาความลึกครั้งแรก นอกจากนี้ยังมีการค้นหาในเชิงลึกที่วนซ้ำซึ่งพยายามค้นหาการเคลื่อนไหวที่ดีที่สุดหวังว่าการค้นหาการเคลื่อนไหวอื่น ๆ จะพิสูจน์ว่าไร้ประโยชน์

หมายเหตุ: ตารางดัชนีของฉัน GNUChess และ Jester ใช้ดัชนีอาร์เรย์เพื่อสร้างการเคลื่อนไหว พวกเขาเริ่มต้นเครื่องยนต์โดยการกรอกอาเรย์ด้วยการเคลื่อนไหวที่เป็นไปได้ ใช้เวลาหกชิ้นและคำนวณการเคลื่อนไหวทางกฎหมายที่มีอยู่ในแต่ละตาราง ดังนั้นแต่ละชิ้นจึงมีอาร์เรย์ [64] [8] ฉันใช้ความคิดนี้และบีบอัดมันเป็นดัชนีสองตัวและตาราง ตารางเก็บค่าซึ่งบอกว่าการเคลื่อนไหว 16 เป็นไปได้หรือไม่ดัชนีหนึ่งเก็บออฟเซ็ตของการย้ายและอีกอันหนึ่งเก็บมาสก์

ชดเชย [] = {-8, -1, 1, 8, -9, -7, 7, 9, -17, -15, -10, -6, -6, 6, 10, 15, 17};

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

จากนั้นการสร้างตัวเลื่อนแบบเลื่อนก็ง่ายพอ ๆ กับการค้นหาความถูกต้องของมาสก์ในการชดเชยกับตารางการย้าย


7
ฉันพยายามที่จะไม่ตอบคำตอบ แต่นี่เป็นเพียง .... อัลฟ่าเบต้าและบิตบอร์ดถูกคิดค้น LONG ก่อน Deep Blue ฉันค่อนข้างมั่นใจว่าบอร์ด Eval ไม่สามารถเข้าถึง HD ในเอนจิ้นที่มีสติได้ (เวลาแฝงนั้นมีขนาดใหญ่มาก) ประการที่สี่ฉันสงสัยมากว่าขนาด RAM สร้างความแตกต่างอย่างแท้จริงในการใช้งานการค้นหาอัลฟาเบต้าแบบปกติของคุณ
MaxB

บางทีคุณอาจเพิ่มไฮเปอร์ลิงก์ไปยังแนวคิดบางอย่างที่คุณคุยด้วย ในฐานะคนที่มีความสนใจในแนวคิด แต่ไม่คุ้นเคยกับคำศัพท์มันยากที่จะติดตามเพราะฉันไม่รู้ว่า bitboard คืออะไรหรือเครื่องมือ Crafty Chess
Thunderforge

ฉันคิดว่าฉันชัดเจนว่าฉันไม่ได้เปรียบเทียบกับ Deep Blue แต่ฉันได้ให้ประวัติโดยย่อ ฮาร์ดไดรฟ์ที่ฉันอ้างถึงคือตัวโปรแกรมเอง ทุกครั้งที่แนวคิด eval ใหม่ที่รวมอยู่ในโปรแกรมหมากรุกรหัสมากขึ้นและจำเป็นต้องมีพื้นที่ HD เพิ่มเติม
Fred Knight

@Thunderforge ลิงก์เดียวที่ฉันให้อธิบายทุกแง่มุมที่คุณอาจต้องการจัดการกับการเขียนโปรแกรมหมากรุก แต่ฉันยอมรับว่ามันยากที่จะนำทาง ฉันเรียนรู้จากการอ่านซอร์สโค้ดของผู้อื่น แต่สิ่งที่ถูกวิจารณ์อย่างหนักที่สุดคือเครื่องมือเจ้าเล่ห์ของ Dr. Hyatt ฉันเลือกที่จะไม่ครอบคลุมมากเกินไปเนื่องจากข้อ จำกัด ด้านพื้นที่และความแตกต่างระหว่างแพลตฟอร์มและคอมไพเลอร์ หากหลังจากอ่านหน้าหมากรุกของวิกิคุณยังคงสับสนถามคำถามและฉันมั่นใจว่าหลายคนจะให้คำตอบที่ดีกว่า
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.ฟังก์ชัน Eval ของบอร์ดได้รับการออกแบบโดยทั่วไปเพื่อให้พอดีกับแคชของ CPU CPU cache << RAM << HD ขนาด HD ไม่สร้างความแตกต่าง
MaxB

2

อัลกอริทึมดีขึ้นไหม

เห็นได้ชัดว่าใช่เล็กน้อย

หรือการปรับปรุงส่วนใหญ่เกิดจากอัลกอริทึมเดียวกันทำงานเร็วขึ้นขอบคุณฮาร์ดแวร์และซอฟต์แวร์ที่เร็วขึ้น?

ผู้เยาว์เล็กน้อย: หากอัลกอริทึมดีขึ้นแสดงว่าซอฟต์แวร์นั้นเริ่มดีขึ้นดังนั้นจึงไม่มี "หรือ"

กฎของมัวร์บอกเราว่าความเร็วโปรเซสเซอร์จะเพิ่มขึ้นเป็นสองเท่าทุกๆ 18 เดือน นั่นหมายความว่ามันเพิ่มขึ้นเป็นสองเท่า 13 ครั้งในรอบ 20 ปี ทำให้โปรเซสเซอร์รุ่นใหม่บางแห่งในภูมิภาคนี้ทำงานได้เร็วขึ้น 8,000 เท่า ดังนั้นการปรับปรุงประสิทธิภาพของเครื่องยนต์ที่มากที่สุดและไกลก็คือฮาร์ดแวร์ที่เร็วขึ้น

หากก่อนหน้านี้การปรับปรุงอัลกอริทึมเหล่านี้เป็นของสาธารณะหรือไม่

และถ้าเป็นเช่นนั้นการปรับปรุงคืออะไร? ฉันจะอ่านเกี่ยวกับพวกเขาได้ที่ไหน

มันไม่ใช่อดีตมันเป็นอย่างหลัง อย่างไรก็ตามการปรับปรุงเป็นแหล่งที่มาเปิดเป็นส่วนใหญ่และสามารถมองเห็นได้อย่างอิสระโดยการดาวน์โหลดแหล่งที่มาสำหรับเครื่องยนต์เช่น Stockfish บางทีก็คุ้มค่าที่จะให้ลิงค์ดาวน์โหลด Stockfish ทั่วไปเนื่องจากลิงก์ซอร์สโค้ดเฉพาะนั้นอาจจะหมดอายุเมื่อเวอร์ชัน 9 ออกมา


2
That means it has doubled roughly 13 times in 20 years.ฉันคิดว่าคุณเข้าใจผิดกฎของมัวร์ มันไม่ได้บอกอะไรเลยเกี่ยวกับความเร็วโปรเซสเซอร์ ในความเป็นจริงมันไม่ได้เป็นสองเท่าในขณะที่
MaxB

hardware and softwareฉันหมายถึงซอฟต์แวร์เช่นเดียวกับการใช้อัลกอริทึม (ASM vs C ++) แต่ฉันเห็นได้ว่ามันสับสนอย่างไร แก้ไขแล้ว.
MaxB

1
กฎของมัวร์นั้นถูกต้องยกเว้นว่าเขามีวลี "ในทศวรรษหน้า" นี่น่าจะเป็นในปี 1975 และเขาก็ถูกต้อง
Fred Knight

-1 เนื่องจากคำตอบไม่ถูกต้อง - บนฮาร์ดแวร์เดียวกันเอ็นจิ้นปัจจุบันยังคงบดขยี้เอนจิ้นก่อนหน้านี้
เสน่ห์

0

มันคือทั้งหมดที่เกี่ยวกับอัลกอริทึม

การเข้าร่วมเป็นผู้เล่นหมากรุกของมนุษย์ทำให้คอมพิวเตอร์ที่ทรงพลังที่สุดเครื่องหนึ่งในโลกในเวลานั้น วิธีการคำนวณด้วยพลังเดรัจฉานนี้ทำให้ Deep Blue มองไปข้างหน้าประมาณหกถึงแปดจังหวะ ในการประกวดที่ใกล้เคียงกันเครื่องในที่สุดก็เอาชนะคาสปารอฟโดย 3 1/2 เกมเป็น 2 1/2

หกปีต่อมาคาสปารอฟมีส่วนร่วมในการแข่งขันของมนุษย์กับเครื่องจักร คราวนี้เขาเล่นกับผู้สืบทอดตำแหน่ง Deep Deep, Deep Junior ผลที่ได้คือชุดที่วาดในสามเกมทั้งหมด ความแตกต่างที่ใหญ่ที่สุดคือ Deep Junior วิ่งบนเครื่องที่มีพลังการประมวลผลของ Deep Blue ประมาณหนึ่งเปอร์เซ็นต์ อัลกอริธึมการเล่นหมากรุกได้รับการปรับปรุงจนถึงจุดที่จะได้ผลลัพธ์เช่นเดียวกันโดยใช้พลังการคำนวณน้อยกว่าร้อยเท่า


4
ยินดีต้อนรับสู่หมากรุก! คุณเขียนส่วนหลักของคำตอบของคุณราวกับว่ามันเป็นคำพูด คุณช่วยจัดหาแหล่งที่มาได้ไหม
Glorfindel

0

คำเตือน: ไม่ใช่ผู้เชี่ยวชาญ

อัลกอริธึมดีขึ้นและเอ็นจิ้นที่ดีที่สุดในปัจจุบันทำงานในปี 1995 (จำได้ว่า Deep Blue คือปี 1999) ฮาร์ดแวร์จะเอาชนะ Kasparov ได้อย่างคล่องแคล่ว เมื่อฉันเข้าใจแล้วอัลกอริทึมมีสองด้าน:

ค้นหา ตัวอย่างเช่นถ้าฉันพาราชินีของคุณไปกับราชินีคู่ต่อสู้ของมนุษย์จะมองดูก่อนโดยอัตโนมัติ อย่างไรก็ตามสำหรับคอมพิวเตอร์มันจะประเมินการตอบสนองที่เป็นไปได้ทั้งหมดต่อ QxQ เกือบตลอดเวลานี่คือพลังการประมวลผลที่สูญเปล่า อัลกอริทึมการค้นหาที่ดีจะลด "สาขา" เหล่านี้ทั้งหมดเนื่องจากไม่เกี่ยวข้องเลย

อัลกอริธึมการค้นหามาตรฐานคือการตัดแต่งกิ่งแบบอัลฟ่าและใช้ในคอมพิวเตอร์หมากรุกรุ่นแรกสุด ฉันไม่รู้ว่า Deep Blue ใช้การตัดอัลฟ่าเบต้าหรือไม่ แต่เครื่องมือทันสมัยไม่ ผลที่ตามมาคือการค้นหาของพวกเขา "ไม่ปลอดภัย" - พวกเขาอาจพลาดเช่นกันว่าการเคลื่อนไหวบางอย่างนอกเหนือไปจากการยึดราชินีจะเป็นผู้ชนะในเกม อย่างไรก็ตามมันเป็นเรื่องยากที่สิ่งนี้จะเกิดขึ้นและในทางกลับกันพวกเขาผลักความลึกของพวกเขาสูงมาก ("ความลึก" เป็นคำศัพท์ทางเทคนิคเกี่ยวกับความลึกของเครื่องมือค้นหาดังนั้นเช่นเครื่องยนต์ที่ค้นหาความลึก 30 น่าจะชนะได้เพียงระดับเดียวเท่านั้นที่ค้นหาระดับความลึก 20 และอื่น ๆ ที่เท่ากันทั้งหมด)

การประเมินผล นี่คือรหัสง่ามอื่น ๆ ของรหัสเครื่องยนต์ หากให้ตำแหน่งเฉพาะจะดีกว่าสำหรับสีขาวสีดำหรือสีเท่ากันหรือไม่ สิ่งนี้สามารถเกี่ยวข้องกับฟังก์ชั่นทุกประเภทเช่น

  • หากด้านใดด้านหนึ่งมีวัสดุ / พื้นที่เพิ่มเติมให้โบนัสเพื่อทำการทดลอง
  • หากสีขาวมีอัศวินขั้นสูงรองรับโดยจำนำให้โบนัสสีขาวที่จะประเมิน
  • ถ้าราชาของคนผิวดำนั้นจนมุมให้เพิ่มโบนัสสีขาวให้เป็นหลักฐาน
  • หากสีขาวมีการโกงในอันดับที่ 7 ให้โบนัสสีขาวเป็นหลักฐาน
  • หากเป็นเกม endgame (และมีอัลกอริธึมที่จะตัดสินว่าตำแหน่งนั้นเป็นเกม endgame) หรือไม่และทั้งสองฝ่ายมีโคนสีที่ต่างกัน

เครื่องยนต์ทุกวันนี้ประเมินตำแหน่งที่ดีกว่า Deep Blue มาก

สำหรับอัลกอริทึมว่าเป็นสาธารณะหรือไม่ Stockfish เป็นเครื่องมือที่แข็งแกร่งที่สุดในโลกและเป็นโอเพ่นซอร์ส คุณสามารถดาวน์โหลดตัวเองโค้ดจากGithub

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.