มีกฎง่ายๆ (หรือชุดตัวอย่าง) เพื่อตรวจสอบว่าเมื่อใดจะใช้อัลกอริทึมทางพันธุกรรมเมื่อเทียบกับเครือข่ายประสาท (และในทางกลับกัน) เพื่อแก้ปัญหา?
ฉันรู้ว่ามีหลายกรณีที่คุณสามารถผสมทั้งสองวิธีได้ แต่ฉันกำลังมองหาการเปรียบเทียบระดับสูงระหว่างสองวิธี
มีกฎง่ายๆ (หรือชุดตัวอย่าง) เพื่อตรวจสอบว่าเมื่อใดจะใช้อัลกอริทึมทางพันธุกรรมเมื่อเทียบกับเครือข่ายประสาท (และในทางกลับกัน) เพื่อแก้ปัญหา?
ฉันรู้ว่ามีหลายกรณีที่คุณสามารถผสมทั้งสองวิธีได้ แต่ฉันกำลังมองหาการเปรียบเทียบระดับสูงระหว่างสองวิธี
คำตอบ:
จากวิกิพีเดีย:
วิธีทางพันธุกรรม (GA) เป็นเทคนิคการค้นหาที่ใช้ในการคำนวณเพื่อหาสิ่งที่แน่นอนหรือโดยประมาณโซลูชั่นเพื่อเพิ่มประสิทธิภาพและค้นหาปัญหา
และ:
โครงข่ายประสาทเทียมเป็นเครื่องมือสร้างแบบจำลองข้อมูลเชิงสถิติที่ไม่ใช่เชิงเส้น สามารถใช้เพื่อจำลองความสัมพันธ์ที่ซับซ้อนระหว่างอินพุตและเอาต์พุตหรือเพื่อค้นหารูปแบบในข้อมูล
หากคุณมีปัญหาที่คุณสามารถหาปริมาณของโซลูชันได้อัลกอริทึมทางพันธุกรรมสามารถทำการค้นหาพื้นที่ของโซลูชันได้โดยตรง (เช่นหาเส้นทางที่สั้นที่สุดระหว่างสองจุด)
เมื่อคุณมีไอเท็มจำนวนมากในคลาสที่ต่างกันโครงข่ายประสาทสามารถ "เรียนรู้" เพื่อจำแนกไอเท็มที่มันไม่ได้ "เห็น" มาก่อน (เช่นการจดจำใบหน้าการจดจำเสียง)
ต้องพิจารณาเวลาดำเนินการด้วย อัลกอริทึมทางพันธุกรรมใช้เวลานานในการค้นหาโซลูชันที่ยอมรับ เครือข่ายนิวรัลใช้เวลานานในการ "เรียนรู้" แต่ก็สามารถจำแนกอินพุตใหม่ได้ทันที
ขั้นตอนวิธีทางพันธุกรรม (แม้จะมีชื่อเซ็กซี่ของมัน) คือสำหรับวัตถุประสงค์มากที่สุดเป็นเทคนิคการเพิ่มประสิทธิภาพ โดยพื้นฐานแล้วคุณจะต้องมีตัวแปรจำนวนมากและต้องการหาค่าที่ดีที่สุดสำหรับตัวแปรเหล่านี้ มันแค่ยืมเทคนิคจากวิวัฒนาการตามธรรมชาติเพื่อไปที่นั่น
โครงข่ายประสาทเทียมมีประโยชน์สำหรับการรับรู้รูปแบบ พวกเขาทำตามแบบอย่างง่าย ๆ ของสมองและโดยการเปลี่ยนน้ำหนักระหว่างพวกเขาพยายามทำนายผลลัพธ์จากปัจจัยการผลิต
พวกเขาเป็นสองหน่วยงานที่แตกต่างกันโดยพื้นฐาน แต่บางครั้งปัญหาที่พวกเขาสามารถแก้ไขการทับซ้อนกัน
GA สร้างรูปแบบใหม่ในโครงสร้างที่คุณกำหนด
NNs จัดประเภท (หรือรับรู้) รูปแบบที่มีอยู่ตามข้อมูลการฝึกอบรมที่คุณให้
GAs ทำงานได้อย่างมีประสิทธิภาพในการค้นหาพื้นที่ขนาดใหญ่ของโซลูชั่นและการบรรจบกันในโซลูชันที่ดีตั้งแต่หนึ่งโซลูชันขึ้นไป แต่ไม่จำเป็นต้องเป็นโซลูชันที่ดีที่สุด
NNs สามารถเรียนรู้ที่จะจดจำรูปแบบ (ผ่านการฝึกอบรม) แต่มันเป็นเรื่องยากที่จะรู้ว่าสิ่งที่พวกเขาได้เรียนรู้คืออะไรคือการดึงความรู้จากพวกเขาเมื่อได้รับการฝึกฝนแล้วและนำความรู้ไปใช้
คุณกำลังเปรียบเทียบสองสิ่งที่แตกต่างกันโดยสิ้นเชิงที่นี่
Neural Networks ใช้สำหรับการถดถอย / การจัดหมวดหมู่ - เนื่องจากชุดของตัวอย่าง (x, y) คุณต้องการถอยหลัง y ที่ไม่รู้จักสำหรับบาง x ที่กำหนด
อัลกอริทึมทางพันธุกรรมเป็นเทคนิคการเพิ่มประสิทธิภาพ รับฟังก์ชั่น f (x), คุณต้องการหาค่า x ซึ่งย่อเล็กสุด / maximizes f (x)
มีความคล้ายคลึงกันมากมายระหว่างพวกเขาดังนั้นฉันจะพยายามอธิบายความแตกต่างของพวกเขาเท่านั้น
สามารถวิเคราะห์รูปแบบออนไลน์ (ที่เปลี่ยนแปลงตลอดเวลา) โดยทั่วไปนี่เป็นตัวอย่างที่เปลี่ยนแปลงตามเวลาที่ต้องจับคู่และคาดการณ์
ตัวอย่าง :
ใช้เมื่อคุณสามารถเขียนรหัสคุณลักษณะที่คุณคิดว่าอาจมีส่วนทำให้เกิดปัญหาที่ไม่เปลี่ยนแปลง สิ่งสำคัญคือการสามารถเขียนรหัสคุณลักษณะเหล่านี้ (บางครั้งคุณก็รู้ว่ามันคืออะไร) และปัญหาคือระดับที่ไม่มีการเปลี่ยนแปลงมากนัก (ไม่เช่นนั้นการวิวัฒนาการจะไม่มาบรรจบกัน)
ตัวอย่าง :
คุณสามารถใช้อัลกอริทึมทางพันธุกรรมเป็นทางเลือกแทนอัลกอริทึม backpropagationเพื่อปรับปรุงน้ำหนักในเครือข่ายประสาท สำหรับตัวอย่างนี้หมายถึง: http://www.ai-junkie.com/ann/evolved/nnt1.html
อัลกอริทึมทางพันธุกรรม (ปกติ) ทำงานกับข้อมูลที่ไม่ต่อเนื่อง (enums ช่วงจำนวนเต็ม ฯลฯ ) แอปพลิเคชันทั่วไปสำหรับ GA กำลังค้นหาพื้นที่ที่ไม่ต่อเนื่องเพื่อหาทางออก "ดีพอ" เมื่อทางเลือกเดียวที่มีคือการค้นหาแบบไร้กำลัง (การประเมินชุดค่าผสมทั้งหมด)
ในทางกลับกันเครือข่ายประสาทเทียม (โดยปกติ) จะทำงานกับข้อมูลอย่างต่อเนื่อง (ลอยเป็นต้น) แอปพลิเคชั่นทั่วไปสำหรับ NNs คือการประมาณฟังก์ชั่นโดยที่คุณมีชุดอินพุต X และชุด Y ของเอาต์พุตที่เกี่ยวข้อง แต่ฟังก์ชันวิเคราะห์ f: X → Y
แน่นอนว่ามีหลายพันสายพันธุ์ของทั้งคู่ดังนั้นเส้นแบ่งระหว่างพวกเขาจึงค่อนข้างเบลอ
ไม่มีกฎง่ายๆ ในหลายกรณีคุณสามารถกำหนดปัญหาของคุณเพื่อใช้ประโยชน์จากทั้งสองอย่าง การเรียนรู้ของเครื่องยังคงเป็นพื้นที่ของการวิจัยและรูปแบบการเรียนรู้ที่จะใช้สามารถถกเถียงกันได้
GA ใช้ภาษาเซ็กซี่จากวิวัฒนาการ แต่คุณกำลังรอคอมพิวเตอร์ของคุณเพื่อแก้ปัญหาผ่านกระบวนการสุ่ม ศึกษาข้อมูลของคุณตั้งสมมติฐานที่ดีพยายามที่จะรู้ว่าคุณต้องการอะไรและเลือกแนวทางที่สามารถใช้ประโยชน์จากสิ่งเหล่านี้ได้ หากตัวเลือกแรกของคุณให้ผลลัพธ์ที่ไม่ดีให้รู้ว่าทำไมจึงเป็นเช่นนั้นและปรับปรุงอัลกอริธึมเองหรือเลือกวิธีที่ดีกว่า