Làm thế nào để phân tích hiệu suất của một thuật toán di truyền thực nghiệm?


7

Tôi có một thuật toán di truyền cho một vấn đề tối ưu hóa. Tôi đã vẽ thời gian chạy của thuật toán trên một số lần chạy trên cùng một đầu vào và cùng các tham số (kích thước dân số, kích thước thế hệ, chéo, đột biến).

Thời gian thực hiện thay đổi giữa các lần thực hiện. Điều này có bình thường không?

Tôi cũng nhận thấy rằng trái với dự đoán của tôi, thời gian chạy đôi khi giảm thay vì tăng khi tôi chạy trên đầu vào lớn hơn. Đây có phải là mong đợi?

Làm thế nào tôi có thể phân tích hiệu suất của thuật toán di truyền của tôi bằng thực nghiệm?


5
GA và heuristic thường không thể đoán trước, và có thể rất khó để hiểu hoặc phân tích chúng về mặt lý thuyết. Dựa trên dữ liệu bạn cung cấp, tôi không nghĩ ai có thể đưa ra câu trả lời tốt hơn "có lẽ là bình thường, tôi không biết." Bạn có thể thử chạy GA của mình với cùng một tham số nhiều lần và ghi lại số lần lặp trung bình. Sau đó điều chỉnh các tham số và thử lại.
Juho

2
Vâng, đó là bình thường, nó là một thuật toán heuristic (nó không phải là một thuật toán không xác định , có ý nghĩa kỹ thuật, đây là những khái niệm khác nhau). Bất kỳ thuật toán nào cũng hoạt động tốt hơn trên một số đầu vào lớn hơn so với một số đầu vào nhỏ hơn bởi vì chúng có thể đơn giản hơn để giải quyết, kích thước nếu không phải là yếu tố xác định duy nhất. Người ta không thể nói nhiều về hiệu suất của thuật toán trên các trường hợp thực tế thường khác với cách chúng thực hiện và các tập dữ liệu cụ thể và cách chúng so sánh với các thuật toán khác cho vấn đề trên các tập dữ liệu đó.
Kaveh

bạn đã không đề cập đến cách bạn theo dõi thời gian chạy của bạn. bên cạnh những gì mọi người nói về heuristic khó dự đoán, nếu bạn không đo lường nỗ lực tính toán thực tế (ví dụ: bằng cách xác định thời gian chạy theo đồng hồ của máy tính), rất có thể bạn sẽ nhận được kết quả khó xử ...
Ron Teller

1
Tôi không hiểu ý chính của câu hỏi. Các biện pháp hiệu suất bạn quan tâm là gì? Loại kết quả nào sau đó bạn không thể có được bằng cách chạy N lần và tính trung bình?
Raphael

Câu trả lời:


8

Cách tiếp cận điển hình là thực hiện một số lần chạy thuật toán tiến hóa (EA) và biểu diễn hiệu suất trung bình theo thời gian (hiệu suất trung bình của mức trung bình dân số KHÔNG chạy tốt nhất ).

Một nguyên tắc nhỏ là thực hiện tối thiểu 30 lần chạy (tất nhiên 50 - 100 lần chạy là tốt hơn).

Trung bình là tốt hơn so với giá trị tốt nhất đạt được trong một tập hợp chạy nhưng phương sai cũng cần được tính đến.

Có một số ví dụ hay trên trang web của Randy Olson :


thể lực trung bình của cả hai thuật toán trên một số lần lặp lại

Thể lực trung bình của cả hai thuật toán qua nhiều lần lặp lại. Từ biểu đồ này, chúng tôi sẽ kết luận rằng thuật toán của chúng tôi hoạt động tốt hơn so với thuật toán tốt nhất hiện tại trung bình.

thể lực trung bình với khoảng tin cậy 95%

Thể lực trung bình với khoảng tin cậy 95% cho mỗi thuật toán. Biểu đồ này cho chúng ta thấy rằng thuật toán của chúng tôi không thực sự hoạt động tốt hơn thuật toán tốt nhất hiện tại và chỉ xuất hiện để hoạt động tốt hơn trung bình do tình cờ.


Phân tích cơ bản về cách tính khoảng tin cậy cho trung bình dân số như sau:

  1. Xác định trung bình mẫu . Trong khi khác với , nghĩa là dân số, chúng vẫn được tính theo cùng một cách:x¯x¯μ

    x¯= =ΣxTôin
  2. Xác định độ lệch chuẩn mẫu (đã sửa) : là ước tính của độ lệch chuẩn dân số .S

    S= =ΣTôi= =1n(xTôi-x¯)2n-1
    Sσ
  3. Tính giá trị tới hạn , , của phân phối Student-t. Giá trị này phụ thuộc vào mức độ tin cậy, và số lượng quan sát, .t*Cn

    Giá trị tới hạn được tìm thấy từ bảng phân phối t (hầu hết các sách giáo khoa thống kê liệt kê nó). Trong bảng này, được viết là trong đó là bậc tự do (được tìm thấy bằng cách trừ đi một từ số lượng quan sát) và là mức ý nghĩa .t*

    t*(α,r)
    r= =n-1α= =1-C2

    Cách tốt hơn để có giá trị hoàn toàn chính xác là hàm thống kê được triển khai trong bảng tính (ví dụ: hàm ), môi trường máy tính khoa học (ví dụ SciPy ), thư viện ngôn ngữ (ví dụ C ++ và ).t*T.INV.2Tstats.t.ppfboost::math::students_t

  4. Cắm các giá trị tìm thấy vào các phương trình thích hợp:

    (x¯-t*Sn,x¯+t*Sn)
  5. Bước cuối cùng là diễn giải câu trả lời . Vì câu trả lời tìm thấy là một khoảng với giới hạn trên và dưới nên phù hợp để nói rằng, dựa trên dữ liệu đã cho, giá trị trung bình thực của dân số nằm giữa giới hạn dướigiới hạn trên với mức độ tin cậy đã chọn.


Khoảng tin cậy của hai thuật toán càng trùng nhau, các thuật toán càng có khả năng thực hiện giống nhau (hoặc chúng tôi chưa lấy mẫu đủ để phân biệt giữa hai thuật toán). Nếu khoảng tin cậy 95% không trùng nhau, thì thuật toán có hiệu suất trung bình cao nhất sẽ hoạt động tốt hơn đáng kể.

Trong EA, phân phối nguồn về cơ bản không bao giờ bình thường và những gì đã nói chính thức chỉ áp dụng nếu đó là phân phối bình thường!

Quả thực nó vẫn kể nhiều điều. Bảng sau đây tóm tắt hiệu suất của các khoảng thời gian trong bốn tình huống:

                             Normal curve | Not Normal curve
Small sample size (n < 30)      Good      |       Poor
Larger sample size (n ≥ 30)     Good      |       Fair

Để có câu trả lời chính xác hơn , số liệu thống kê không tham số là cách thực hiện (xem phần Giới thiệu về Thống kê để phân tích thử nghiệm EC của Mark Wineberg và Steffen Christensen để biết thêm chi tiết).


Câu trả lời này nên được chấp nhận và xứng đáng được nâng cấp hơn nhiều.
Kevin Dreßler

1

Trả lời: bạn phân tích hiệu suất thống kê.

Ví dụ, Xem hình 3 của bài viết này: Đường Hoàng gia Khối xây dựng nơi Giao nhau là điều cần thiết , trong đó hiệu suất của nhiều GA khác nhau được so sánh với nhau.

Biểu đồ cho thấy những thay đổi về thể lực (trục Y) so với số lần lặp (trục X). Mỗi thuật toán được chạy nhiều lần và thể lực trung bình, tối thiểu và tối đa được hiển thị trong cốt truyện . Do đó, hiển thị rõ ràng một số biến thể GA có hiệu suất tốt hơn các biến thể khác.

Sự hội tụ tiệm cận của thể dục qua lặp đi lặp lại như được đề xuất bởi câu trả lời của vzn cũng rất hữu ích cho hầu hết các trường hợp.

...

(Ngoại trừ khi tập thể dục không hội tụ khi bạn có chức năng tập thể dục phát triển.)


0

chiến lược cơ bản là vẽ đồ thị chức năng tập thể dục theo thời gian. người ta có thể vẽ biểu đồ mức độ phù hợp của giải pháp tốt nhất hoặc thể lực trung bình của giải pháp, giải pháp tồi tệ nhất, v.v. tốt nhất / tồi tệ nhất sẽ thể hiện các tính chất giống như bậc thang và trung bình sẽ cho thấy sự hội tụ tiệm cận đối với khả năng đạt được tối ưu của GA. Nói chung không có "thời gian thực hiện" tiên nghiệm liên quan đến việc tìm giải pháp cho GA, người ta thường chấm dứt thuật toán tại một điểm "đủ tốt" bằng cách kiểm tra đường cong tiệm cận này.

xem ví dụ đồ thị ở cuối slideshow này:


Làm thế nào người ta có thể xác định thời gian cần thiết để hội tụ một giải pháp "đủ tốt" dựa trên kích thước đầu vào?
soandos
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.