ฉันจะเข้ารหัสโครงสร้างของเครือข่ายประสาทในจีโนมได้อย่างไร


14

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

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

คำตอบ:


12

ส่วนที่ 4.2 ของ"ข้อมูลสำคัญเกี่ยวกับการเปลี่ยนแปลงของร่างกาย"มีข้อมูลมากมายเกี่ยวกับวิธีทางเลือกในการเข้ารหัสโครงสร้างกราฟผ่านอัลกอริทึมทางพันธุกรรม

ด้วยความคำนึงถึงการพัฒนา ANNs โดยเฉพาะฉันไม่อยากทำอะไรแบบนี้ตั้งแต่เริ่มต้นเลย:

neuroevolution ได้รับรอบระยะเวลาหนึ่งและการใช้วิธีการบางอย่างเช่น Neuroevolution ของ Augmenting Topologies ( NEAT ) ตอนนี้รวมผลของประสบการณ์จริงมาก

ตามลิงค์ด้านบน:

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


"Essentials of Metaheuristics" นั้นดูน่าสนใจมาก! นี่คือสิ่งที่จริง ๆ แล้วอยู่ในแผนงานของ M-automata เนื่องจาก MCTS ที่บริสุทธิ์ไม่เคยดีที่สุดในเกม M จากmetaheuristic wiki : "ในวิทยาการคอมพิวเตอร์และการเพิ่มประสิทธิภาพทางคณิตศาสตร์, metaheuristic เป็นขั้นตอนระดับสูงขึ้นหรือฮิวริสติกที่ออกแบบมาเพื่อค้นหาสร้างหรือเลือกฮิวริสติก (อัลกอริทึมการค้นหาบางส่วน) ที่อาจให้ทางออกที่ดี โดยเฉพาะอย่างยิ่งกับข้อมูลที่ไม่สมบูรณ์หรือไม่สมบูรณ์หรือความสามารถในการคำนวณ จำกัด "
DukeZhou

4

โดยใช้กลไกการวิวัฒนาการที่จะพัฒนาเครือข่ายประสาทที่เรียกว่าneuroevolution

อัลกอริธึม neuroevolution บางอย่างเพิ่มประสิทธิภาพเฉพาะน้ำหนักของโครงข่ายประสาทเทียมที่มีโครงสร้างแบบคงที่ ฟังดูเหมือนไม่ชอบสิ่งที่คุณต้องการ อัลกอริทึม neuroevolution อื่น ๆ เพิ่มประสิทธิภาพทั้งน้ำหนักและทอพอโลยีของโครงข่ายประสาท อัลกอริทึมประเภทนี้ดูเหมือนจะเหมาะสมกับเป้าหมายของคุณมากขึ้นและบางครั้งเรียกว่า TWEANNs (โทโพโลยีและโครงข่ายประสาทเทียมน้ำหนัก)

อัลกอริธึมที่ได้รับความนิยมอย่างหนึ่งเรียกว่าNEATและอาจเป็นจุดเริ่มต้นที่ดีถ้าเพียงเพราะมีการนำไปใช้งานที่หลากหลายซึ่งหนึ่งในนั้นหวังว่าจะเขียนด้วยภาษาที่คุณชื่นชอบ อย่างน้อยก็จะให้พื้นฐานในการทำงานกับคุณ

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

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

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

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