Các thuật toán đồng biến không thể tăng tốc một cách kỳ diệu trên bất kỳ lớp vấn đề tùy ý nào. Vì vậy, theo nghĩa đó, kết luận ở cuối câu hỏi là chính xác. Tuy nhiên, nó không tuân theo rằng tất cả các bữa ăn trưa miễn phí hợp tác là tầm thường, như kết luận của câu hỏi cho thấy.
Tôi không thể cung cấp một tài khoản đầy đủ về tất cả các loại bữa trưa miễn phí hợp tác, nhưng tôi có thể đưa ra hai ví dụ, trong đó đầu tiên là tầm thường, và thứ hai tôi sẽ tranh luận là không cần thiết. Thứ hai là không cần thiết bởi vì nó giúp giải thích tại sao định lý bữa trưa miễn phí thực sự phải giữ.
Sự khác biệt quan trọng giữa hai ví dụ là: trong lần đầu tiên, các thuật toán cạnh tranh đang cạnh tranh để đạt được cùng một mục tiêu bao trùm, trong khi trong lần thứ hai, các thuật toán cạnh tranh đang cố gắng đạt được các mục tiêu khác nhau. Trong trường hợp thứ hai, sự không phù hợp giữa các mục tiêu của hai thuật toán cho phép những điều thú vị xảy ra. Tôi sẽ bắt đầu với ví dụ tầm thường.
Những người phản đối tìm kiếm cùng một mục tiêu
Hãy tưởng tượng một vấn đề tối ưu hóa rất đơn giản trong đó cảnh tìm kiếm là một ô 7x7. Mục tiêu chính là tìm ô có giá trị tối đa. 48 trong số các ô có giá trị 0 và một ô được chọn ngẫu nhiên trên lưới có giá trị là 1.
Mục tiêu phụ của chúng tôi là khám phá một chiến lược tìm kiếm tìm thấy giá trị tối đa nhanh hơn. Nhưng nó xuất phát từ vấn đề ban đầu rằng không có chiến lược nào có thể đánh bại tìm kiếm ngẫu nhiên ở đây, bởi vì không có gì có thể học được từ một tế bào về một tế bào khác. Tuy nhiên, định lý bữa trưa miễn phí hợp tác giữ! Đây là lý do tại sao:
Giả sử bạn có hai thuật toán tối ưu hóa, A và B, cả hai đều tìm kiếm lưới. Việc họ sử dụng chiến lược nào thực sự không quan trọng, nhưng để cụ thể, chúng tôi sẽ quy định rằng cả hai đều sử dụng chiến lược tìm kiếm ngẫu nhiên. Sự khác biệt duy nhất giữa chúng là B chú ý đến các bước di chuyển của A và khi thấy A đã tìm thấy giá trị tối đa, nó cũng nhảy vào ô đó. Ở một khía cạnh nào đó, khi điều đó xảy ra, B vẫn "thua" cuộc thi. Nhưng nếu bạn chạy nhiều cuộc thi và sau đó so sánh hiệu suất trung bình của A với hiệu suất trung bình của B, bạn sẽ thấy B tìm thấy giá trị tối đa trung bình nhanh hơn.
Giải thích rất đơn giản. Thời gian trung bình để khám phá lần đầu tiên - cho dù bằng A hay B - vẫn giữ nguyên. Nhưng bất cứ khi nào A đánh bại B để giành chiến thắng, B không bận tâm tìm kiếm bất cứ nơi nào khác. Nó bỏ qua phía trước để các tế bào tốt nhất. Mặt khác, khi B đánh bại A để giành chiến thắng, mặt khác, A chỉ tiếp tục tìm kiếm, lập kế hoạch cho đến khi tự mình tìm thấy giá trị tối đa.
Điều này trông giống như một chiến thắng nếu bạn chỉ đếm số lần di chuyển mà B thực hiện. Nếu bạn nhìn vào tổng số lần di chuyển mà A và B thực hiện cùng nhau, trung bình chúng thực sự làm điều tồi tệ hơn so với chính nó. Đó là vì sự lãng quên của A. Nếu chúng ta thay đổi A để hành xử giống như B, thì họ cũng sẽ tự làm với nhau - nhưng không tốt hơn.
Vì vậy, ở đây, mô hình hóa cả hai thuật toán cùng nhau đưa chúng ta trực tiếp đến khu vực ăn trưa miễn phí, giống như câu hỏi lập luận. Trong thực tế, A và B chỉ thực hiện song song các thuật toán tìm kiếm. Số lượng cuối cùng của hoạt động tìm kiếm vẫn giữ nguyên.
Đối thủ tìm kiếm mục tiêu khác nhau
Bây giờ hãy tưởng tượng một kịch bản rất khác. Giả sử chúng ta có một vấn đề phân loại: nhận biết cừu. Ở đây, công việc của A là nhìn vào một dòng ảnh và cho biết liệu có cừu trong đó không. Đủ đơn giản.
Nhưng công việc của B rất khác. B có sức mạnh để đưa hình ảnh của chính mình vào luồng! Mục tiêu của nó là không xác định cừu; nó chỉ muốn làm chậm A xuống.
Làm thế nào B có thể làm điều này? Có một bài đăng blog tuyệt vời và chủ đề Twitter liên quan về một câu hỏi liên quan chặt chẽ của Janelle Shane . Các Twitter chủ đề bắt đầu:
Có ai có một hình ảnh của con cừu ở một nơi thực sự khác thường? Đó là để chơi khăm một mạng lưới thần kinh.
Và đây là một trong những câu trả lời đầu tiên :
Một con cừu màu cam thì sao?
Đây là con cừu màu cam:
Hóa ra, điều này là hoàn hảo để chơi khăm :
Bạn hoàn toàn hiểu điều đó. Cừu cam không phải là một điều nó mong đợi. "một con bò nâu nằm trên một cánh đồng xanh tươi tốt"
Dưới đây là một vài ví dụ khác từ bài đăng trên blog của Shane:
Vì vậy, điều này có liên quan gì đến vấn đề của chúng tôi? Chúng ta có thể kết nối chúng bằng cách chính xác hơn. Giả sử mục tiêu của A là đạt độ chính xác cao hơn 99% và B có khả năng đưa một hình ảnh vào luồng của A cho mỗi chín hình ảnh "tự nhiên". B tìm kiếm các mẫu trong hành vi của A và sử dụng chúng để tìm các hình ảnh gây rối với mô hình của nó. Điều này sẽ giữ độ chính xác của A dưới 99% lâu hơn nhiều so với việc A chỉ nhìn thấy những bức ảnh "tự nhiên".
Hai điều sau đây. Đầu tiên, B sẽ làm tốt hơn nhiều nếu nó chú ý đến những gì A làm. Nếu B chỉ chọn hình ảnh trên cơ sở một số nguyên tắc chung được chọn ngẫu nhiên như "cừu ở những nơi kỳ lạ", thì rất có thể A sẽ chuẩn bị sẵn sàng cho chúng. Nếu không, nó sẽ nhanh chóng học cách xử lý chúng một cách chính xác và sau đó B sẽ phải áp dụng một chiến lược mới. Mặt khác, nếu B theo dõi hành vi của A, nó có thể chọn ra những điều cụ thể mà A tệ nhất và tập trung vào những điều đó. Ngay khi A cải thiện một trong số họ, B có thể có một người khác sẵn sàng để đi. Miễn là B có thể tìm thấy các mẫu trong hành vi của A, B sẽ luôn đưa ra những hình ảnh thách thức nhất cho A.
Thứ hai, A sẽ làm tốt hơn nhiều nếu nó chú ý đến hình ảnh B chọn. Rốt cuộc, B đang tìm kiếm các mẫu trong hành vi của A. Nếu nó tìm thấy các mẫu, thì nó sẽ sử dụng các mẫu đó để gửi hình ảnh giả hoặc gây rắc rối cho A. Lần lượt, điều đó có nghĩa là sẽ có các mẫu đáng chú ý điều khiển các lựa chọn của B. Ở đây một lần nữa, nếu A chú ý đến các mẫu trong hành vi của B, nó sẽ nhanh chóng có thể xác định được những hình ảnh B đang tiêm.
Điều quan trọng là trong kịch bản này, cả A và B đều dựa vào dữ liệu được đảm bảo có các mẫu . Nó được đảm bảo có các mẫu vì nếu A làm tốt nhất, A đang làm một cái gì đó ngoài tìm kiếm ngẫu nhiên. Và nếu B đang cố gắng hết sức, thì B đang làm một việc khác ngoài tìm kiếm ngẫu nhiên.
Vì vậy, ban đầu, điều này trông giống như một tình huống ăn trưa miễn phí thực sự hấp dẫn. Nhưng những gì chúng ta đã thực sự thể hiện? Chúng tôi đã cho thấy điều này:
Miễn là A đang làm một việc gì đó ngoài tìm kiếm ngẫu nhiên, B luôn có thể tìm thấy các mẫu ngoài băng mà phương thức của A không thể xử lý.
Đó không phải là định lý ăn trưa miễn phí một cách ngắn gọn!
Cách duy nhất A có thể ngăn B tìm ra hình ảnh ngoài băng là hành xử theo cách có vẻ ngẫu nhiên với B. Nhưng nếu hành vi của A không thực sự ngẫu nhiên, thì về lâu dài, B sẽ luôn có thể tìm thấy mẫu - ngay cả khi bản thân B chỉ thực hiện tìm kiếm ngẫu nhiên.
Đối số rất giống nhau hoạt động theo hướng khác. Cách duy nhất B có thể ngăn A nhận thấy các mẫu trong ảnh của mình là hành xử theo những cách có vẻ ngẫu nhiên. Nhưng nếu hành vi của B không thực sự ngẫu nhiên, A cuối cùng sẽ tìm thấy mô hình, ngay cả khi nó chỉ thực hiện tìm kiếm ngẫu nhiên.
Trong kịch bản này, cả hai thuật toán sẽ cố gắng đánh lừa lẫn nhau bằng cách áp dụng các hành vi có vẻ ngẫu nhiên, phức tạp hơn và phức tạp hơn. Vì vậy, trong thời gian rất dài, họ sẽ dần dần hội tụ đến một tìm kiếm thực sự ngẫu nhiên - đó là điều tốt nhất mà bất kỳ thuật toán nào có thể làm trung bình trên tất cả các miền vấn đề.
Một nhóm ngẫu nhiên vô tận
Có thể các chiến lược học tập liên hợp này vẫn có lợi thế này so với các chiến lược khác: chúng có thể khuyến khích cả hai thuật toán khám phá không gian của các hành vi không ngẫu nhiên có liên quan nhanh hơn hoặc rộng hơn. Tôi thậm chí không chắc chắn về điều đó. Dù bằng cách nào, định lý không ăn trưa miễn phí nói chung, bởi vì không gian của các hành vi không ngẫu nhiên có thể là rất xa, nhỏ hơn nhiều so với không gian của các hành vi ngẫu nhiên có thể.
Làm sao mà chúng ta biết được? Sẽ là lạc đề khi đi vào một bằng chứng chi tiết, nhưng hãy xem xét câu hỏi liên quan về việc có bao nhiêu chuỗi dài có thể được nén thành các chuỗi ngắn hơn. Bất kể phương pháp nén nào, phần lớn tất cả các chuỗi không thể nén được. Điều này là dễ dàng để chứng minh với một đối số đếm bin. Giả sử chúng ta xem xét các chuỗi nhị phân và bắt đầu với chuỗi trống. Giả sử không thể có chuỗi có độ dài âm, điều đó không thể nhấn được. Bây giờ hãy xem xét các chuỗi có độ dài-1. Có hai, nhưng chỉ có một chuỗi có độ dài 0, vì vậy chỉ một trong số chúng có thể được nén. Bây giờ chúng ta có hai chuỗi không thể nén và một chuỗi thứ ba có thể được nén bởi một bit. Chuyển sang chuỗi có độ dài-2: có bốn chuỗi, nhưng chỉ có hai chuỗi có độ dài-1 và chuỗi đã có độ dài-0 đã được sử dụng, vì vậy chúng tôi chỉ có thể nén hai trong số các chuỗi có độ dài 2. Hai cái còn lại là không thể ép được. Đó là ba chuỗi có thể nén và bốn chuỗi không thể nén ... và cứ thế.
Khi số lượng ngày càng cao, một trong những điều bạn nhận thấy là ngay cả trong số các chuỗi có thể nén, một nửa trong số chúng chỉ có thể nén được một bit, bởi vì chúng nén thành các chuỗi không thể tự nén được. Một phần tư chỉ có thể nén bởi hai bit; một phần tám chỉ có thể nén bởi ba bit. Bất kể bạn cắt nó như thế nào, số lượng chuỗi có thể nén đáng kể luôn thấp hơn nhiều so với số chuỗi không thể nén hoặc hầu như không nén được.
Dòng lý luận cho hành vi ngẫu nhiên là tương tự. Bạn cũng có thể kết nối những ý tưởng này với bằng chứng rằng có rất nhiều số thực hơn số nguyên. Trong sơ đồ toàn cầu của mọi thứ, không có định lý bữa trưa miễn phí nào là đúng bởi vì phạm vi ngẫu nhiên là vô cùng lớn.