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