Làm thế nào để mở rộng quy mô phát triển thuật toán?


18

Khi làm việc về phân tích dữ liệu khám phá và phát triển các thuật toán, tôi thấy rằng phần lớn thời gian của tôi dành cho một chu kỳ trực quan hóa, viết một số mã, chạy trên tập dữ liệu nhỏ, lặp lại. Dữ liệu tôi có xu hướng là loại công cụ kết hợp thị giác / cảm biến máy tính và các thuật toán nặng về tầm nhìn (ví dụ: phát hiện và theo dõi đối tượng, v.v.) và các thuật toán ngoài kệ không hoạt động trong ngữ cảnh này. Tôi thấy rằng việc này cần rất nhiều lần lặp (ví dụ: để quay số theo loại thuật toán hoặc điều chỉnh các tham số trong thuật toán hoặc để có được một trực quan hóa đúng) và thời gian chạy ngay cả trên một tập dữ liệu nhỏ cũng khá dài, vì vậy tất cả cùng nhau phải mất một thời gian.

Làm thế nào để phát triển thuật toán có thể được tăng tốc và có thể mở rộng hơn?

Một số thách thức cụ thể:

Làm thế nào có thể giảm số lần lặp lại? (Đặc biệt khi loại thuật toán nào, huống chi là chi tiết cụ thể của thuật toán, dường như không dễ thấy trước mà không thử các phiên bản khác nhau và kiểm tra hành vi của chúng)

Làm thế nào để chạy trên các tập dữ liệu lớn hơn trong quá trình phát triển? (Thường đi từ tập dữ liệu nhỏ đến lớn là khi nhìn thấy một loạt các hành vi mới và các vấn đề mới)

Làm thế nào các tham số thuật toán có thể được điều chỉnh nhanh hơn?

Làm thế nào để áp dụng các công cụ loại máy học để phát triển thuật toán chính nó? (Ví dụ: thay vì viết thuật toán bằng tay, hãy viết một số khối xây dựng đơn giản và kết hợp chúng theo cách học được từ vấn đề, v.v.)

Câu trả lời:


7

Trước hết, nếu dữ liệu của bạn có nhiều biến thể (về chức năng thời gian, bối cảnh và các biến thể khác) để làm cho việc áp dụng một chiến lược duy nhất để đối phó với nó, bạn có thể quan tâm đến việc thực hiện theo thời gian / bối cảnh trước đó / .. đặc tính của bộ dữ liệu. Đặc trưng dữ liệu, nghĩa là trích xuất thông tin về cách khối lượng hoặc chi tiết cụ thể của nội dung thay đổi theo một số tiêu chí, thường cung cấp sự hiểu biết tốt hơn (chính xác hơn và chính xác hơn) chỉ đơn giản là suy ra các thuật toán theo kiểu vũ phu.

Vì vậy, trả lời từng câu hỏi:

  1. đặc tính hóa chắc chắn là một phương tiện để giảm số lần lặp trong khi cố gắng chọn các thuật toán thích hợp cho dữ liệu cụ thể;
  2. nếu bạn có một bộ tiêu chí riêng biệt mà dữ liệu của bạn thay đổi, việc mở rộng các giải pháp trở nên dễ dàng hơn nhiều , vì sẽ biết thông tin nào bạn nhận được / mất nếu áp dụng các giải pháp đơn giản / cụ thể hơn;
  3. sau khi mô tả đặc điểm, bạn cũng sẽ dễ dàng hơn trong việc chọn tham số, vì bạn biết loại dữ liệu cụ thể nào bạn sẽ xử lý;
  4. cuối cùng, bạn có thể sử dụng thuật toán khai thác dữ liệu / máy học để hỗ trợ đặc tính này. Điều này bao gồm sử dụng:
    • thuật toán phân cụm, để giảm tính chiều của dữ liệu;
    • thuật toán phân loại, để giúp quyết định các thuộc tính cụ thể, dữ liệu theo chức năng của thời gian / bối cảnh / ... có thể xuất hiện;
    • quy tắc kết hợp, để dự đoán kiến ​​thức cụ thể từ bộ dữ liệu, đồng thời cải thiện / tinh chỉnh dữ liệu được sử dụng để phân tích sau này;
    • và các chiến lược và phân tích có thể khác.

đây là danh sách một số tiêu chí để phân tích dữ liệu mà bạn có thể thấy hữu ích.


5

Hai điều bạn có thể thấy hữu ích:

  1. học siêu tốc để tăng tốc tìm kiếm mô hình phù hợp và các tham số tối ưu. Meta learning bao gồm việc áp dụng các công cụ học máy cho vấn đề tìm kiếm công cụ / thông số máy học phù hợp cho vấn đề hiện tại. Ví dụ , bài viết này cho một ví dụ thực tế;

  2. gpucomputing để tăng tốc thuật toán trên các bộ dữ liệu lớn hơn. Chẳng hạn, OpenCV có thể sử dụng GPU , rất hiệu quả trong việc xử lý hình ảnh / video và có thể mang lại 10 đến 100 tốc độ đối với CPU. Vì máy tính của bạn rất có thể có GPU có khả năng tính toán gpucomputing, bạn có thể có nhiều thời gian sử dụng nó.


4

Đoán rằng có khả năng bạn đã xem bản demo YouTube này và Google Tech Talk có liên quan, có liên quan đến các giấy tờ này:

Và bộ mã này trên GitHub cho OpenTLD . Nếu bạn kiểm tra "đọc tôi" trên GitHub tại đây, bạn sẽ nhận thấy email của tác giả (Zdenek Kalal) được liệt kê, vì vậy có thể đáng để gửi email cho anh ấy về câu hỏi của bạn hoặc thậm chí mời anh ấy trả lời câu hỏi này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.