การเข้ารหัสอินพุต / เอาต์พุตสำหรับเครือข่ายนิวรัลเพื่อเรียนรู้เกมแบบอิงกริด


13

ฉันกำลังเขียนเกมของเล่นง่ายๆโดยมีจุดประสงค์ในการฝึกอบรมโครงข่ายประสาทเทียมที่อยู่ด้านบน กฎของเกมมีดังต่อไปนี้:

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

มีกฎเพิ่มเติม (เกี่ยวกับผลัดจำนวนและประเภทของชิ้นส่วน ฯลฯ ) แต่ก็ไม่สำคัญในบริบทของคำถามนี้ ฉันต้องการสร้างโครงข่ายประสาทเทียมที่สามารถเรียนรู้ซ้ำ ๆ ได้โดยการเล่นกับตัวเอง คำถามของฉันเกี่ยวกับการเป็นตัวแทนของอินพุตและเอาต์พุต โดยเฉพาะอย่างยิ่ง:

  • เนื่องจากรูปแบบของชิ้นส่วนสำคัญฉันจึงคิดที่จะมีเลเยอร์ convolutional อย่างน้อย กระดานอาจมีขนาดที่แตกต่างกัน แต่โดยทั่วไปแล้วจะมีขนาดเล็กมาก (6x10 ในการทดสอบของฉันที่จะขยายโดยไม่กี่เซลล์) มันสมเหตุสมผลหรือไม่ ฉันสามารถใช้การรวมกำไรแบบใดได้บ้าง
  • วิธีการเป็นตัวแทนของทั้งสองฝ่าย? ในบทความนี้เกี่ยวกับการเดินทางผู้เขียนใช้เมทริกซ์การป้อนข้อมูลสองรายการหนึ่งรายการสำหรับหินขาวและอีกเล่มสำหรับหินดำ มันสามารถทำงานได้ในกรณีนี้ด้วยหรือไม่ แต่จำไว้ว่าฉันมีประเภทที่แตกต่างกันพูด A, B, C และ D ฉันควรใช้เมทริกซ์การป้อนข้อมูล 2x4? มันดูเบาบางและมีประสิทธิภาพเพียงเล็กน้อยสำหรับฉัน ฉันกลัวว่ามันจะเบาบางเกินไปสำหรับการทำงานของชั้น convolutional
  • ฉันคิดว่าผลลัพธ์อาจเป็นการกระจายความน่าจะเป็นเหนือเมทริกซ์ซึ่งเป็นตัวแทนของตำแหน่งคณะกรรมการรวมถึงความน่าจะเป็นที่แยกต่างหากซึ่งระบุว่าจะเล่นส่วนใด อย่างไรก็ตามฉันยังต้องแสดงความสามารถในการผ่านจุดเลี้ยวซึ่งมีความสำคัญมาก ฉันจะทำได้โดยไม่ลดความสำคัญลงในความน่าจะเป็นอื่น ๆ ได้อย่างไร
  • และที่สำคัญที่สุดฉันต้องบังคับให้ชนะหรือไม่ การบังคับให้ย้ายที่ชนะเป็นเรื่องง่ายเพราะฉันเพิ่งตั้งความน่าจะเป็นที่ต้องการ 1 อย่างไรก็ตามเมื่อแพ้ฉันควรทำอย่างไร ตั้งค่าความน่าจะเป็นของการย้ายเป็น 0 และค่าอื่น ๆ ทั้งหมดเป็นค่าเท่ากันหรือไม่ นอกจากนี้มันสมเหตุสมผลหรือไม่ที่จะบังคับใช้การเคลื่อนไหวด้วยคะแนนแตกต่างสุดท้ายแม้ว่าสิ่งนี้จะขัดกับความหมายของผลลัพธ์ซึ่งเป็นความน่าจะเป็นโดยประมาณหรือไม่?

นอกจากนี้ฉันได้พัฒนาเอ็นจิ้นเกมใน node.js ที่คิดว่าจะใช้ Synaptic เป็นเฟรมเวิร์ก แต่ฉันไม่แน่ใจว่ามันสามารถทำงานกับเครือข่าย convolutional (ฉันสงสัยว่ามีวิธีแก้ไขน้ำหนักที่เกี่ยวข้องกับฟิลด์การรับรู้ในท้องถิ่น) คำแนะนำเกี่ยวกับห้องสมุดอื่น ๆ ที่เข้ากันได้กับโหนด?


เราจะสมมติว่าคุณต้องการให้เครื่องเรียนรู้เกมที่ไม่รู้จักแล้วเรียนรู้วิธีที่จะชนะหรือไม่ (ตรงข้ามกับการเรียนรู้วิธีการชนะเกมกฎซึ่งมีให้กับโปรแกรมเมอร์ก่อนที่จะเขียนซอฟต์แวร์การเรียนรู้ของเครื่อง)
FauChristian

คำตอบ:


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

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

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

นี่คือประเภทของงานที่ Deep Q Learning ทำ บางทีคุณอาจต้องการตรวจสอบสิ่งนั้นด้วย


1

คุณไม่ต้องการเลเยอร์ Conv เนื่องจากคุณไม่ได้ป้อนรูปภาพเป็นอินพุต (ดูด้านล่าง) หรือคุณอาจลองใช้รูปภาพของบอร์ด (โดยมีชิ้นส่วนต่าง ๆ ที่มีรูปร่างแตกต่างกัน) สิ่งนี้สามารถทำงานได้เช่นกัน จากนั้นฉันจะไปที่ 2 conv layer, stride 1, ขนาดเคอร์เนลเท่ากับครึ่งชิ้น ฉันจะลองด้วยการรวมกำไรสูงสุดครั้งเดียว

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

ฉันจะใช้เวกเตอร์ที่มีองค์ประกอบ n + 1 เท่านั้นสำหรับเอาต์พุต: n สำหรับการเคลื่อนไหวที่เป็นไปได้ทั้งหมดและ 1 สำหรับการผ่าน มันจะเข้ารหัสรางวัลที่คาดหวังสำหรับการเคลื่อนไหวแต่ละครั้งไม่ใช่ความน่าจะเป็น

ไม่แน่ใจว่าคุณหมายถึงอะไรโดยการบังคับย้าย แต่เมื่อคุณจะฝึกมันด้วยการเรียนรู้แบบ Q มันจะทำให้การเคลื่อนที่แบบสุ่มสมบูรณ์ทุกครั้งในขณะที่มีความเป็นไปได้ที่แน่นอน (พูด 10% ของจำนวนครั้ง) ค้นหาhttps://en.wikipedia.org/wiki/Reinforcement_learning


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