อัลกอริทึมการเรียนรู้ของเครื่องเพื่อเล่น Connect Four


14

ฉันกำลังอ่านเกี่ยวกับการเรียนรู้ของเครื่องและสงสัยว่าจะนำไปใช้กับการเล่นConnect Fourได้อย่างไร

ความพยายามในปัจจุบันของฉันคือตัวแยกประเภทมัลติคลาสแบบง่ายโดยใช้โมเดลฟังก์ชัน sigmoid และวิธี one-vs-all

ในความคิดของฉันฟีเจอร์อินพุตจะต้องเป็นสถานะ (แผ่นดิสก์ของผู้เล่น 1 แผ่นดิสก์ของผู้เล่น 2 ว่าง) ของเขตข้อมูลตาราง 7x6 = 42

ผลลัพธ์จะเป็นจำนวนของแถวที่ใส่ดิสก์เข้าไป เนื่องจากนั่นเป็นตัวเลขที่ไม่ต่อเนื่องระหว่าง 1 ถึง 7 ฉันจึงคิดว่านี่เป็นปัญหาการจำแนกประเภทหลายคลาสได้

แต่ฉันจะสร้างตัวอย่างการฝึกอบรมที่ใช้งานได้ในการเรียนรู้แบบมีผู้สอนได้อย่างไร

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

แก้ไข: ตามที่แนะนำในความคิดเห็นที่ฉันอ่านเพียงเล็กน้อยเกี่ยวกับการเรียนรู้การเสริมแรง จากสิ่งที่ฉันรู้เข้าใจ Q-Learning ควรทำเคล็ดลับเช่นฉันต้องประมาณฟังก์ชั่น Q ของสถานะปัจจุบันและการดำเนินการเพื่อให้เป็นรางวัลสะสมสูงสุดที่เริ่มต้นในรัฐนั้น จากนั้นแต่ละขั้นตอนจะต้องเลือกการกระทำที่ส่งผลให้มีค่าสูงสุดของ Q อย่างไรก็ตามเกมนี้มีสถานะมากเกินไปในการทำเช่นในตารางการค้นหา ดังนั้นวิธีที่มีประสิทธิภาพในการจำลอง Q-Function นี้คืออะไร?


2
Google "Reinforcement Learning"
George

โอเคฉันเดาว่าจะใช้กับปัญหานี้จริงๆ ดูเหมือนว่ามีการอ่านล่วงหน้ามาก พอยน์เตอร์หรือคำแนะนำที่เฉพาะเจาะจงใด ๆ เพิ่มเติม?
ทอม

1
ถ้าฉันรู้เพิ่มเติมฉันจะโพสต์เป็นคำตอบ :) น่าเสียดายที่ฉันไม่มีประสบการณ์ในการเรียนรู้การเสริมแรง ฉันจะเริ่มต้นจากหนังสือ "การเรียนรู้ของเครื่อง" โดย Tom Mitchell มันเป็นหนังสือเกริ่นนำที่ดีมากและยังมีบทเกี่ยวกับการเสริมแรงการเรียนรู้
George

1
อย่างหลังฉันแค่อยากรู้เกี่ยวกับการเรียนรู้ของเครื่องและพยายามทำความรู้จักมัน
ทอม

1
@Tom มีวิธีที่ดีกว่าในการ 'ทำความรู้จัก' เทคนิคการเรียนรู้ของเครื่อง ฉันจะเริ่มต้นด้วยการจำแนกขั้นพื้นฐานและเทคนิคการถดถอยและก้าวไปข้างหน้าจากที่นั่น คุณสามารถคว้าชุดข้อมูลจากที่เก็บข้อมูลการเรียนรู้ของเครื่องของ UCI ตรวจสอบหมายเหตุหลักสูตรการเรียนรู้ของเครื่อง Andrew Ng (Stanford) และเริ่มใช้งาน การกระโดดเข้าสู่ความพยายามในการแก้ปัญหาการเชื่อมต่อ 4 โดยใช้การเรียนรู้การเสริมแรงนั้นดูค่อนข้างจะลำบาก
Nick

คำตอบ:


8

เพียงเพื่อเสนอทางเลือกที่ง่ายกว่าในการเรียนรู้การเสริมแรงคุณสามารถใช้อัลกอริธึม minimax พื้นฐานเพื่อค้นหาการเคลื่อนไหวที่ดีและใช้การเรียนรู้ของเครื่องเพื่อประเมินตำแหน่งของบอร์ด

ในการชี้แจงมินิแม็กซ์จะสร้างทรีเกมที่แต่ละโหนดจะมีป้ายกำกับที่มีผลลัพธ์จากการทิ้ง (1 = ผู้เล่น A ชนะ, 0 = ผู้เล่น B ชนะ), สมมติว่า A เลือกการเคลื่อนไหวที่เพิ่มจำนวนนี้ให้มากที่สุดและ B เลือกการเคลื่อนไหว ที่ลดให้น้อยที่สุด

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

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


2

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


รู้สึกอิสระที่จะแยกรหัสของฉันบน Github github.com/lukasvermeer/minimax
Lukas Vermeer

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

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

"ยินดีต้อนรับลิงก์ไปยังโซลูชันที่อาจเกิดขึ้น แต่โปรดเพิ่มบริบทรอบลิงก์เพื่อให้ผู้ใช้เพื่อนของคุณจะมีความคิดว่ามันคืออะไรและเหตุใดจึงมีอยู่" อ้างอิงส่วนที่เกี่ยวข้องที่สุดของลิงก์สำคัญเสมอในกรณีที่ไซต์เป้าหมาย ไม่สามารถเข้าถึงหรือออฟไลน์อย่างถาวร " ฉันคิดว่าฉันทำอดีต หลังจะไม่เกี่ยวข้อง คำถามเดิมต้องการตัวอย่างเกมไม่ใช่คำอธิบายวิธีใช้โซลูชัน
Lukas Vermeer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.