จะขยายการพัฒนาอัลกอริทึมได้อย่างไร


18

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

การพัฒนาอัลกอริธึมจะเร่งและปรับขนาดได้อย่างไร

ความท้าทายเฉพาะบางประการ:

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

วิธีการเรียกใช้บนชุดข้อมูลขนาดใหญ่ในระหว่างการพัฒนา? (มักเกิดจากชุดข้อมูลขนาดเล็กถึงใหญ่คือเมื่อมีพฤติกรรมใหม่ ๆ และมีปัญหาใหม่ ๆ เกิดขึ้น)

พารามิเตอร์ของอัลกอริทึมสามารถปรับได้เร็วขึ้นอย่างไร

วิธีการใช้เครื่องมือประเภทการเรียนรู้ของเครื่องกับการพัฒนาอัลกอริทึมเอง? (ตัวอย่างเช่นแทนที่จะเขียนอัลกอริธึมด้วยมือเขียนแบบเอกสารสำเร็จรูปง่ายๆและรวมสิ่งเหล่านั้นเข้าด้วยกันในแบบที่เรียนรู้จากปัญหา ฯลฯ )

คำตอบ:


7

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

ดังนั้นตอบคำถามแต่ละข้อ:

  1. การระบุลักษณะเป็นวิธีการลดจำนวนการวนซ้ำในขณะที่พยายามเลือกอัลกอริทึมที่เหมาะสมสำหรับข้อมูลเฉพาะ
  2. หากคุณมีชุดของเกณฑ์ที่ไม่ต่อเนื่องซึ่งข้อมูลของคุณแตกต่างกันไปมันจะกลายเป็นเรื่องง่ายมากที่จะขยายขนาดของการแก้ปัญหาตามที่จะรู้ว่าข้อมูลที่คุณจะได้รับ / สูญเสียถ้าวิธีที่เรียบง่าย / เฉพาะถูกนำมาใช้;
  3. หลังจากการระบุลักษณะคุณควรเลือกพารามิเตอร์ได้ง่ายขึ้นเนื่องจากคุณจะทราบว่ามีข้อมูลเฉพาะประเภทใดที่คุณต้องจัดการด้วย
  4. ในที่สุดคุณอาจใช้อัลกอริทึมการเรียนรู้การขุดข้อมูล / เครื่องจักรเพื่อสนับสนุนคุณลักษณะนี้ ซึ่งรวมถึงการใช้:
    • อัลกอริธึมการจัดกลุ่มเพื่อลดมิติข้อมูล
    • อัลกอริทึมการจำแนกเพื่อช่วยในการตัดสินใจคุณสมบัติเฉพาะข้อมูลในฟังก์ชั่นของเวลา / บริบท / ... อาจนำเสนอ;
    • กฎการเชื่อมโยงเพื่อคาดการณ์ความรู้เฉพาะจากชุดข้อมูลในขณะที่ยังปรับปรุง / ปรับแต่งข้อมูลที่ใช้สำหรับการวิเคราะห์ในภายหลัง
    • และกลยุทธ์และการวิเคราะห์อื่น ๆ ที่เป็นไปได้

และนี่คือรายการของเกณฑ์ที่ใช้ในการวิเคราะห์ข้อมูลซึ่งคุณอาจพบว่ามีประโยชน์


5

สองสิ่งที่คุณอาจพบว่ามีประโยชน์:

  1. meta-learningเพื่อเร่งการค้นหาแบบจำลองที่เหมาะสมและพารามิเตอร์ที่เหมาะสม การเรียนรู้แบบ Meta ประกอบด้วยการนำเครื่องมือการเรียนรู้ของเครื่องไปใช้กับปัญหาในการค้นหาเครื่องมือ / พารามิเตอร์การเรียนรู้ที่เหมาะสมสำหรับปัญหาที่เกิดขึ้น ตัวอย่างนี้กระดาษนี้เป็นตัวอย่างในทางปฏิบัติ;

  2. gpucomputingเพื่อเพิ่มความเร็วอัลกอริทึมบนชุดข้อมูลขนาดใหญ่ ตัวอย่างเช่นOpenCV สามารถใช้ GPUซึ่งมีประสิทธิภาพมากในการประมวลผลภาพ / วิดีโอและสามารถเพิ่มความเร็วได้ 10 ถึง 100 ครั้งสำหรับซีพียู เนื่องจากคอมพิวเตอร์ของคุณอาจมี GPU ที่ใช้ gpu คอมพิวติ้งได้คุณจึงสามารถใช้เวลากับมันได้มากมาย


4

คาดว่าเป็นไปได้ว่าคุณเคยเห็นตัวอย่างของ YouTubeนี้และGoogle Tech Talkที่เกี่ยวข้องซึ่งเกี่ยวข้องกับเอกสารเหล่านี้:

และนี้ตั้งโค้ดบน GitHub สำหรับOpenTLD หากคุณตรวจสอบ "อ่านฉัน" ใน GitHub ที่นี่คุณจะสังเกตเห็นว่าอีเมลของผู้เขียน (Zdenek Kalal)อยู่ในรายการดังนั้นจึงอาจคุ้มค่าที่จะส่งอีเมลถึงเขาเกี่ยวกับคำถามของคุณหรือเชิญเขาให้ตอบคำถามนี้ด้วย

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