การใช้ความแตกต่างชั่วคราวในหมากรุก


10

ฉันได้พัฒนาโปรแกรมหมากรุกซึ่งใช้อัลกอริทึมการตัดอัลฟ่าเบต้าและฟังก์ชั่นการประเมินที่ประเมินตำแหน่งโดยใช้คุณสมบัติดังต่อไปนี้คือวัสดุความเป็นกษัตริย์ความปลอดภัยคล่องตัวโครงสร้างจำนำและชิ้นส่วนที่ติดอยู่ ฯลฯ ..... มาจาก

f(p)=w1material+w2kingsafety+w3mobility+w4pawn-structure+w5trapped pieces

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

คำตอบ:


4

ฉันขอแนะนำให้ทุกคนที่สนใจในหัวข้อลองดูที่กระดาษซึ่งรวม TDL และการเรียนรู้ลึก

ประมาณว่าคุณจะต้องสร้างเครื่องมือเล่นเกมซึ่งกันและกัน บันทึกการประเมินผลขนาดเล็กสูงสุดสำหรับแต่ละตำแหน่ง ในตอนท้ายของเกมคุณจะได้รับรางวัลซึ่งเป็น {0,1, -1} สำหรับหมากรุก จากนั้นคุณจะต้องปรับพารามิเตอร์ของคุณด้วย:

ป้อนคำอธิบายรูปภาพที่นี่

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

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

หมายเหตุน้อย:

  1. กระดาษที่ฉันอ้างใช้เป็นปัจจัยลดราคา มันทำสำหรับอัลกอริทึม backproportion สำหรับเครือข่ายประสาทเทียม คุณไม่ต้องการมัน
  2. คุณจะต้องทดสอบด้วยอัตราการเรียนรู้ที่เหมาะสม (อัลฟาในสมการ) ใหญ่เกินไปจะทำให้การเรียนรู้ของคุณไม่เสถียรน้อยเกินไปที่จะมาบรรจบกัน ฉันเคยเห็นคนใช้ 0.70 กระดาษที่ฉันพูดใช้ 1.0

สวัสดีฉันชอบคำตอบของคุณ แต่คุณช่วยแก้ไขลิงค์ไปยังกระดาษได้ไหม?
padura

@padura คงที่ โปรดอ่าน มันเป็นการอ่านที่ดีสำหรับวิทยาศาสตร์ข้อมูล
HelloWorld

(+1) คำตอบที่ดี ชอบกระดาษมากเกินไป :)
Dawny33

เป็นบทความที่ดีน่าละอายที่ฉันไม่รู้ในเวลาที่ฉันทำงานกับโปรแกรมหมากรุกของตัวเอง;) ฉันสงสัยว่าเราสามารถปรับปรุงได้หรือไม่โดยการรวมกับเทคนิคนี้: bjmc.lu.lv/fileadmin/user_upload/lu_portal/ projekti / bjmc / …
padura

2

ข้อสังเกตแรกคุณควรดู 'Wargames' เพื่อทราบว่าคุณกำลังทำอะไรอยู่

สิ่งที่คุณต้องการคือ f (p) เช่นนั้น f (p) ใกล้เคียงกับจุดแข็งของตำแหน่ง

ทางออกที่ง่ายมากที่ใช้ algo พันธุกรรมคือการตั้งค่าผู้เล่น 10,000 คนที่มีน้ำหนักต่างกันและดูว่าใครจะชนะ จากนั้นรักษาน้ำหนักผู้ชนะสูงสุด 1,000 อันดับคัดลอกพวกเขา 10 ครั้งปรับเปลี่ยนเล็กน้อยเพื่อสำรวจพื้นที่น้ำหนักและเรียกใช้การจำลองอีกครั้ง นั่นคือ GA มาตรฐานที่ได้รับจากรูปแบบการทำงานอะไรคือสัมประสิทธิ์ที่ดีที่สุดสำหรับมัน

อีกวิธีหนึ่งคือการแยกตำแหน่งดังนั้นคุณจึงมีตาราง '(วัสดุ, ความเป็นกษัตริย์, ความคล่องตัว, โครงสร้างจำนำ, trappedpieces) -> ความดีของตำแหน่ง' ที่ความดีของตำแหน่งเป็นปัจจัยวัตถุประสงค์ (ผลลัพธ์ชนะ / แพ้คำนวณโดยใช้แบบจำลองด้านบน หรือการแข่งขันที่รู้จักความลึกของต้นไม้ที่มีอยู่จำนวนการเคลื่อนไหวใต้ต้นไม้ซึ่งหนึ่งใน 5 ปัจจัยดีขึ้นจากนั้นคุณสามารถลองใช้รูปแบบการทำงานที่แตกต่างกันสำหรับ f (p) การถดถอย svm


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