8

การขยายขอบเขตของวัตถุวิวัฒนาการ: จากพารามิเตอร์สู่โปรแกรม

AI999第2课:演化计算的源流与多路线交汇
00:00

วัตถุวิวัฒนาการหมายถึงส่วนของเนื้อหาในระบบวิวัฒนาการที่ถูกเข้ารหัส กลายพันธุ์ ประเมิน และคัดเลือกจริง อัลกอริทึมวิวัฒนาการแบบคลาสสิกถือว่าวัตถุนี้เป็นเพียงชุดพารามิเตอร์เชิงตัวเลข แต่บนฐานรากสมัยใหม่ที่เกิดจาก GPU และโมเดลขนาดใหญ่ร่วมกัน ขอบเขตนี้กำลังขยายออกไป: จากพารามิเตอร์เชิงตัวเลข ไปสู่ไฮเปอร์พารามิเตอร์และโครงสร้างโมเดล ต่อไปยังกลไกอัลกอริทึมและตัวดำเนินการ และสุดท้ายไปสู่โปรแกรมและสถานะวิศวกรรมซอฟต์แวร์ที่ดำเนินอยู่ต่อเนื่อง

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

  1. ชั้นพารามิเตอร์เชิงตัวเลข: วัตถุคือเวกเตอร์จำนวนจริงต่อเนื่อง θ \in \mathbb{R}^dเช่น อัตราการเรียนรู้ น้ำหนัก หรือปัจจัยการกลายพันธุ์ของ Differential Evolution ข้อจำกัดหลักคือช่วงค่าที่อนุญาต การประเมินมักเป็นเป้าหมายสเกลาร์เดียว f(θ)。
  2. ชั้นไฮเปอร์พารามิเตอร์และโครงสร้างโมเดล: วัตถุประกอบด้วยตัวเลือกแบบไม่ต่อเนื่อง เช่น จำนวนชั้น ความกว้าง วิธีการเชื่อมต่อ และกลยุทธ์การเพิ่มข้อมูล พื้นที่การค้นหากลายเป็นแบบผสมและขยายตัวแบบเชิง組合อย่างรวดเร็ว การประเมินต้องให้ความสำคัญเพิ่มเติมกับความสามารถในการวางนัยทั่วไปและการโอเวอร์ฟิต
  3. ชั้นกลไกอัลกอริทึมและตัวดำเนินการ: วัตถุเองคือกลไกที่จะถูกนำไปดำเนินการ เช่น กลยุทธ์การกลายพันธุ์ของ Differential Evolution วิธีการ组合ค่าสัมประสิทธิ์ความเฉื่อยใน Particle Swarm รูปแบบเฉพาะของฟังก์ชันขาดทุน ผู้สมัครต้องเป็นไปตามข้อจำกัดทางไวยากรณ์และความหมาย การประเมินเปลี่ยนจาก "ใครได้คะแนนสูงกว่า" ไปสู่ความทนทาน ความเสถียร และการ权衡หลายเป้าหมาย
  4. ชั้นโปรแกรมและสถานะวิศวกรรม: วัตถุกลายเป็นสคริปต์การฝึก การตั้งค่าไปป์ไลน์ ความสัมพันธ์ของ dependencies และสถานะโปรเจกต์ ผู้สมัครจะถือว่าใช้ได้ก็ต่อเมื่อผ่านการคอมไพล์ การทดสอบ และการตรวจรับ การประเมินยกระดับเป็นผลตอบกลับระดับระบบ: ความแม่นยำเพิ่มขึ้นเท่าใด ต้นทุนทรัพยากรยอมรับได้หรือไม่ ผลลัพธ์ทำซ้ำได้หรือไม่
บันไดสี่ขั้นของการขยายวัตถุวิวัฒนาการผู้สมัครถูกแสดงอย่างไรอยู่ภายใต้ข้อจำกัดใดใช้สัญญาณใดในการประเมินความสามารถในการแสดงวัตถุวิวัฒนาการและความซับซ้อนของการประเมิน1พารามิเตอร์เชิงตัวเลขเช่น: อัตราการเรียนรู้และน้ำหนัก2ไฮเปอร์พารามิเตอร์และโครงสร้างโมเดลเช่น: จำนวนชั้นและความกว้าง3กลไกอัลกอริทึมและตัวดำเนินการเช่น: กลยุทธ์การกลายพันธุ์,รูปแบบฟังก์ชันขาดทุน4โปรแกรมและสถานะวิศวกรรมเช่น: สคริปต์การฝึก,การตั้งค่าไปป์ไลน์,การทดสอบและบันทึกเวอร์ชันยิ่งวัตถุใกล้เคียงโปรแกรมมากเท่าไร พื้นที่การแสดงก็ยิ่งใหญ่ขึ้น ต้นทุนข้อจำกัดและการประเมินก็เพิ่มขึ้นพร้อมกัน

ทำไมขอบเขตจึงขยายออกไป

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

เมื่อ "วิธีการสร้างผู้สมัคร" เองก็สามารถถูกแสดงและประเมินได้ คำถามธรรมชาติก็เกิดขึ้น: ในเมื่อคำตอบผู้สมัครสามารถถูกวิวัฒน์ได้ แล้ววิธีการสร้างคำตอบผู้สมัครก็สามารถเป็นวัตถุวิวัฒนาการได้เช่นกันหรือไม่? นี่คือบันไดขั้นนั้นที่ก้าวจาก "การหาคำตอบที่ดีที่สุด" ไปสู่ "การหาอัลกอริทึมที่ดีที่สุดในตัวเอง"

สัญญาณการประเมินต้องยกระดับไปพร้อมกับวัตถุ

ในชั้นพารามิเตอร์ เป้าหมายสเกลาร์เดียวก็เพียงพอที่จะขับเคลื่อนการค้นหา เช่น \min f(θ)แต่เมื่อถึงชั้นโปรแกรม ไม่มีสเกลาร์ใดที่จะสรุปได้ว่า "โค้ด這段นี้ควรค่าแก่การเก็บไว้หรือไม่": การประเมินกลายเป็นการ权衡หลายเป้าหมายภายใต้ข้อจำกัด ต้องพิจารณาความแม่นยำพร้อมกัน f1ต้นทุนการประเมิน f2 และความเสถียร f3และภายใต้ข้อจำกัด C(x) ≤ 0 เพื่อค้นหากลุ่มผู้สมัครที่ไม่ถูกครอบงำซึ่งกันและกัน รายการตรวจสอบที่ใช้กันทั่วไปในงานวิศวกรรมประกอบด้วย: การคอมไพล์ผ่านหรือไม่ การทดสอบครอบคลุมหรือไม่ ค่ามาตรฐานดีขึ้นหรือไม่ ต้นทุนทรัพยากรยอมรับได้หรือไม่ ผลลัพธ์ทำซ้ำได้หรือไม่

ความเข้าใจผิดที่พบบ่อย: การขยายไม่ได้หมายความว่าสร้างได้ตามอำเภอใจ

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

ดังนั้นแนวทางที่稳妥กว่า คือการเปิดแบบเป็นชั้น: ขยายขอบเขตที่อนุญาตให้เปลี่ยนแปลงทีละชั้น ใช้การคัดกรองต้นทุนต่ำหรือโมเดลตัวแทนเพื่อกำจัดผู้สมัครที่เห็นได้ชัดว่าไม่มีประสิทธิผลก่อน แล้วจึงเก็บการประเมินความแม่นยำสูงไว้สำหรับตัวเลือกที่มีแนวโน้มไม่กี่ตัว และ权衡ระหว่างความแม่นยำกับต้นทุนอย่างชัดเจน

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