ฉันจะเลือกอัลกอริทึมที่ดีที่สุดสำหรับเกมกระดานเช่นหมากฮอสได้อย่างไร


15

ฉันจะเลือกอัลกอริทึมที่ดีที่สุดสำหรับเกมกระดานเช่นหมากฮอสได้อย่างไร

จนถึงตอนนี้ฉันได้พิจารณาอัลกอริธึมเพียงสามประการเท่านั้นคือการตัดขนาดเล็กสุดอัลฟาเบต้าและการค้นหาต้นไม้มอนติคาร์โล (MCTS) เห็นได้ชัดว่าการตัดแต่งกิ่งทั้งอัลฟ่าและ MCTS เป็นส่วนขยายของอัลกอริธึมมินิแมกซ์พื้นฐาน

คำตอบ:


18

TL; DR:

  • ไม่มีอัลกอริธึมเหล่านี้ที่สามารถนำไปใช้กับงานสมัยใหม่ได้ แต่เป็นจุดเริ่มต้นที่ดีในการสอน

  • คุณควรใช้การตัดแต่งกิ่งอัลฟ่ากับการค้นหามินิแม็กซ์เปล่า

  • คุณควรใช้รูปแบบการค้นหาคำแนะนำแบบฮิวริสติกบางรูปแบบหากคุณสามารถค้นหาแบบฮิวริสติกที่มีประโยชน์ได้ การหาวิธีแก้ปัญหาที่เป็นประโยชน์มักจะต้องใช้ความรู้เกี่ยวกับโดเมนเป็นจำนวนมาก

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

รายละเอียดเพิ่มเติม:

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

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

มีวิธีการทั่วไปสองวิธีที่คุณสามารถหลีกเลี่ยงค่าใช้จ่ายในการคำนวณที่สูงในการแก้เกมประเภทนี้ได้อย่างแน่นอน:

  1. ใช้ Heuristic (การค้นหา A * เป็นอัลกอริทึมปกติสำหรับวัตถุประสงค์การสอน แต่การค้นหา Quiescence เป็นแนวคิดที่คล้ายกันในเกมผู้เล่น 2 คน) นี่เป็นเพียงฟังก์ชั่นที่ให้ค่าประมาณของสถานะของเกม แทนที่จะพิจารณาการเคลื่อนไหวทั้งหมดในเกมคุณสามารถพิจารณาการย้ายออกไประยะทางที่แน่นอนก่อนล่วงหน้าแล้วใช้ค่าของฮิวริสติกเพื่อตัดสินมูลค่าของสถานะที่คุณไปถึง หากฮิวริสติกของคุณสอดคล้องกัน (โดยหลักแล้ว: หากประเมินคุณภาพของรัฐสูงเกินไปเสมอ) สิ่งนี้จะยังคงให้คำตอบที่ถูกต้อง แต่ด้วยการเพิ่มความเร็วอย่างมาก

  2. ใช้การเปิดตัว (เช่นการค้นหาต้นไม้ Monte Carlo) โดยพื้นฐานแล้วแทนที่จะพิจารณาทุกการเคลื่อนไหวให้รันเกมจำลองสองพันเกมระหว่างผู้เล่นที่เล่นแบบสุ่ม (ซึ่งเร็วกว่าการพิจารณาการเคลื่อนไหวที่เป็นไปได้ทั้งหมด) กำหนดค่าให้รัฐเท่ากับอัตราการชนะโดยเฉลี่ยของเกมที่เริ่มต้นจากมัน สิ่งนี้อาจไม่ได้คำตอบที่ถูกต้อง แต่ในเกมบางประเภทมันทำงานได้อย่างน่าเชื่อถือ มันมักจะใช้เป็นส่วนขยายของเทคนิคที่แน่นอนมากกว่าที่จะถูกใช้ด้วยตัวเอง


A * ดูเหมือนจะไม่สอดคล้องกับบริบทของเกมสองผู้เล่นอย่างอัลกอริธึมอื่น ๆ ใช่หรือไม่ หมายเหตุเกี่ยวกับ MCTS: การใช้งานทั่วไปจะไม่ "พิจารณาการย้ายทั้งหมดไปยังระดับความลึกคงที่" แล้วเริ่มการเปิดตัว แทนการใช้งานทั่วไปแบบไดนามิกค่อยๆเพิ่มแผนภูมิการค้นหาต้นไม้เพิ่มขึ้นในส่วนที่มีแนวโน้มมากขึ้น
Dennis Soemers

1
@JohnDoucette ทำไมคุณถึงพูดว่า "ไม่มีอัลกอริธึมเหล่านี้ในทางปฏิบัติสำหรับงานที่ทันสมัย ​​แต่มันเป็นสถานที่ที่เหมาะสำหรับการเริ่มสอน ในกรณีของ MCTS ดูเหมือนว่าเหมาะสมมากสำหรับงานสมัยใหม่แม้กระทั่งการค้นหาผู้เล่นคนเดียวเมื่อเปลี่ยนไปสู่สถานะถัดไปเนื่องจากรัฐมีการกระทำที่ชัดเจน คุณเห็นด้วยไหม
Miguel Saraiva

1
@MiguelSaraiva ด้วยตัวเอง MCTS ไม่ใช่สิ่งที่คุณมักจะใช้สำหรับแอปพลิเคชันที่ทันสมัย เมื่อรวมกับบางสิ่งบางอย่างเช่น DNN เพื่อให้ฮิวริสติกที่เรียนรู้แล้วจะค่อนข้างดี
John Doucette

1
@JohnDoucette "MCTS ไม่ใช่สิ่งที่คุณมักจะใช้สำหรับแอปพลิเคชันที่ทันสมัย" ก่อนอื่นเลย "ความทันสมัย" ที่คุณอ้างถึงมีความก้าวหน้าครั้งใหญ่ในปี 2559 (MCTS + DNN) และดูเหมือนว่าคุณกำลังแสดงให้เห็นว่าทุกสิ่งจากก่อนหน้านั้นล้าสมัยไปแล้ว (เห็นได้ชัดว่าผิด) ในความเป็นจริงมันอาจเป็นไปได้มากกว่าที่จะบอกว่าโดยทั่วไปแล้ว MCTS นั้นไม่ได้ใช้เพราะตรงกันข้าม: เป็นขั้นสูงเกินไป: มีแอปพลิเคชันจำนวนมากในอุตสาหกรรมที่ล้าสมัยจริง ๆ และอาจอัปเกรดเป็น MCTS สำหรับ MCTS + DNN เหล่านี้เป็นเพียงความฝันอันไกลโพ้นเนื่องจากการฝึกอบรมล่วงหน้านั้นไม่น่าเชื่อเลยทีเดียว
Johan

1
@Johan ฟังดูเหมาะกับการใช้งานในอุตสาหกรรมแต่คำถามก็ถามถึง "เกมกระดานอย่างหมากฮอส" สำหรับปัญหาของเล่นประเภทนั้นฉันคิดว่า MCTS ไม่ใช่วิธีการที่ทันสมัย มีปัญหามากมายในโลกแห่งความเป็นจริงซึ่งมันจะมีการปรับปรุงอย่างมากในระบบที่ใช้งานอยู่
John Doucette

7

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

ได้รับบริบทนี้ผมจะแนะนำให้เริ่มออกกับ Minimax ในสามอัลกอริทึม Minimax นั้นง่ายที่สุดที่จะเข้าใจ

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

การค้นหาต้นไม้ Monte-Carloน่าจะเป็นขั้นสูงขึ้นเล็กน้อยและซับซ้อนกว่าที่จะเข้าใจอย่างลึกซึ้ง ในช่วงสิบปีที่ผ่านมา MCTS ได้เติบโตขึ้นเรื่อย ๆ จนได้รับความนิยมมากกว่าอีกสองเท่าดังนั้นจากมุมมองดังกล่าวการเข้าใจว่า MCTS อาจมีประโยชน์มากกว่า

การเชื่อมต่อระหว่าง Minimax และ MCTS น้อยกว่าโดยตรง / ชัดเจนกว่าการเชื่อมต่อระหว่าง Minimax และ Alpha-Beta แต่ยังคงมีการเชื่อมต่ออย่างน้อยในระดับแนวคิด ฉันขอยืนยันว่าการมีความเข้าใจที่ดีเกี่ยวกับ Minimax ก่อนยังคงมีประโยชน์ก่อนที่จะดำน้ำใน MCTS ; โดยเฉพาะอย่างยิ่งการทำความเข้าใจ Minimax และจุดอ่อน / จุดอ่อนของมันสามารถให้บริบทที่เป็นประโยชน์ / ช่วยให้คุณเข้าใจว่าทำไม MCTS จึงกลายเป็น "จำเป็น" / ได้รับความนิยม


เพื่อสรุปในความคิดของฉัน:

  • อัลฟ่า - เบต้านั้นดีกว่ามินิแม็กซ์อย่างเข้มงวด ดังนั้นเริ่มต้นด้วย Minimax ไปหา Alpha-Beta หลังจากนั้นถ้ามีเวลา
  • MCTS มีจุดแข็ง / จุดอ่อนที่แตกต่างกันมักจะดีกว่า Alpha-Beta ในปัญหา "ทันสมัย" (แต่ไม่เสมอไป) ความเข้าใจที่ดีของ Minimax น่าจะเป็นประโยชน์ก่อนที่จะเริ่มเข้าสู่ MCTS

มีอัลกอริธึมอื่น ๆ ที่คุณอยากจะแนะนำหรือไม่ นั่นเป็นเหมือนระดับการตัดแต่งกิ่งเบต้าอัลฟา
Joey

@ โจอี้อืมไม่จริงหรอก มินิแมกซ์เป็นจุดเริ่มต้นที่เป็นธรรมชาติมากฉันขอแนะนำอย่างยิ่งหากคุณเพิ่งเริ่มต้นใช้งาน นั่นเป็นพื้นฐานของอัลกอริธึมแรกที่พัฒนาขึ้นสำหรับเกมอย่างหมากรุก / หมากฮอส / โอเอกซ์ หลังจากนั้นหลายร้อยหากไม่นับพันของการปรับปรุงได้รับการพัฒนาด้านบนของมันหลายแห่งซึ่งคุณอาจจะสามารถพบได้ที่chessprogramming.wikispaces.com/Search อัลฟ่าเบต้าคือการปรับปรุงที่เป็นธรรมชาติที่สุดในการมองดูบน Minimax
Dennis Soemers

@ Joey Monte-Carlo Tree Search แตกต่างกันเล็กน้อย (ไม่จำเป็นต้องมี Minimax เป็นพื้นฐาน) น่าสนใจสนุกได้รับความนิยมและเกี่ยวข้องอย่างมากใน AI สมัยใหม่ ถึงกระนั้นพื้นฐานก็มีความสำคัญฉันไม่แนะนำให้เริ่มต้นด้วย MCTS ทันทีหากคุณยังไม่เข้าใจ Minimax + Alpha-Beta ถึงแม้ว่ามันจะเป็นไปได้ในทางเทคนิคก็ตาม
Dennis Soemers

ขอบคุณสำหรับไซต์นั้น มันเป็นความรู้ที่ฉันสามารถอ่านได้ในตอนนี้ สิ่งที่ยากที่สุดเกี่ยวกับการเรียนรู้สิ่งใหม่คือการค้นหาเนื้อหาที่ถูกต้องเพื่อช่วยให้คุณเข้าใจ ขอบคุณอีกครั้งสำหรับเว็บไซต์
Joey

@ โจอี้ฉันไม่แน่ใจ 100% ว่าการเขียนโปรแกรมหมากรุกเป็นเว็บไซต์ที่ง่ายที่สุดในการเรียนรู้จาก (และดูเหมือนจะมีการแจ้งเตือนที่น่ากลัวที่ด้านบนว่าไซต์อาจหายไปเมื่อสิ้นเดือนกรกฎาคม) ถ้าฉันจำได้อย่างถูกต้องคำอธิบายหลายอย่างจะค่อนข้างสั้น / อาจไม่เข้าใจง่ายถ้าคุณเป็นมือใหม่ในสนาม อย่างน้อยมันก็จะเป็นคอลเล็กชั่นที่ดีและครอบคลุมของชื่อของอัลกอริธึม / การปรับปรุงทุกชนิดและคุณสามารถลองค้นหาที่มาดั้งเดิมหรือ google ชื่อเหล่านั้นทั้งหมดเพื่อดูรายละเอียดเพิ่มเติมที่อื่น
Dennis Soemers

1

ฉันต้องเลือกระหว่างการตัดแต่ง Minimax และ Alpha-Beta คุณควรเลือก Alpha-beta มันมีประสิทธิภาพและรวดเร็วกว่าเพราะสามารถตัดทอนส่วนสำคัญของต้นไม้สำรวจของคุณได้ แต่คุณต้องสั่งการกระทำจากดีที่สุดไปหาแย่ที่สุดขึ้นอยู่กับมุมมองสูงสุดหรือต่ำสุดดังนั้นอัลกอริทึมสามารถตระหนักได้อย่างรวดเร็วว่าจำเป็นต้องมีการสำรวจหรือไม่

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