
Cơ chế thuật toán di truyền mô phỏng quá trình chọn lọc tự nhiên
Thuật toán di truyền là cách máy tính đóng vai "ông trời" để giải toán. Thay vì tính toán khô khan, nó tạo ra hàng nghìn đáp án ngẫu nhiên rồi ném chúng vào một cuộc đua sinh tồn khốc liệt.
Những đáp án tệ bị xóa sổ, những cái tốt được giữ lại để "phối giống" và trao đổi mã nguồn với nhau. Một vài "đột biến" ngẫu nhiên cũng được thêm vào để tạo ra những hướng đi mới đầy bất ngờ.
Sau hàng triệu lần sàng lọc, máy tính tự tiến hóa ra lời giải tối ưu nhất mà không cần con người cầm tay chỉ việc. Đây chính là cách logic mượn sự tàn nhẫn của tự nhiên để tìm kiếm sự hoàn hảo trong dữ liệu.
Nó cần một "thước đo" mà dân trong nghề gọi là hàm thích nghi. Hãy tưởng tượng bạn đang tuyển vận động viên chạy điền kinh; máy tính sẽ cầm đồng hồ bấm giờ, đứa nào chạy chậm nhất thì "bay màu" ngay lập tức.
Bạn phải định nghĩa rõ "thành công" là gì bằng con số. Nếu giải toán, đó là sai số nhỏ nhất; nếu thiết kế cánh máy bay, đó là lực cản ít nhất. Máy tính không có cảm xúc, nó chỉ đơn giản là so sánh các giá trị để lọc ra những ứng viên tiềm năng nhất.
Thiếu cái thước đo này, thuật toán sẽ chỉ là một đám hỗn loạn không mục đích. Chính những con số lạnh lùng đó đã dẫn dắt quá trình tiến hóa đi đúng hướng thay vì chạy vòng quanh.
Nếu chỉ sao chép đứa giỏi nhất, bạn sẽ kẹt trong một vòng lặp đứng yên tại chỗ. Để thực sự tiến bộ, máy tính phải thực hiện hai chiêu trò: "phối giống" và "đột biến".
Nó cắt mã nguồn của hai ứng viên xuất sắc rồi xáo trộn chúng lại để tạo ra đời con. Thỉnh thoảng, nó còn tự ý thay đổi ngẫu nhiên một vài thông số — giống như việc bạn đang nấu ăn thì lỡ tay ném thêm một loại gia vị lạ vào vậy.
Sự xáo trộn này tạo ra những biến thể chưa từng có. Đứa con có thể là một thảm họa, nhưng cũng có thể là một "siêu nhân" vượt xa cha mẹ, giúp thuật toán phá vỡ giới hạn để tìm ra đáp án tối ưu hơn.
Không hề, đây là một sự "hỗn loạn có kỷ luật". Nếu để đột biến xảy ra vô tội vạ, thuật toán sẽ biến thành một đống rác dữ liệu. Nhưng nếu không có nó, máy tính sẽ giống như một người bảo thủ, chẳng bao giờ dám thử cái mới.
Bí mật nằm ở việc kiểm soát tỉ lệ. Máy tính chỉ cho phép một vài thay đổi nhỏ xíu xuất hiện, đủ để tạo ra sự đột phá mà không phá nát những thành quả đã đạt được từ trước.
Nó giống như việc bạn nêm thêm một chút ớt vào món ăn quen thuộc để tìm ra hương vị mới, chứ không phải đổ cả tấn ớt vào nồi. Sự ngẫu nhiên chỉ là "gia vị" để kích thích sự tiến hóa đi đúng hướng mà thôi.
Con người chính là "kiến trúc sư" thiết lập các thông số này. Lập trình viên phải tính toán xem nên để tỉ lệ đột biến là bao nhiêu, thường chỉ khoảng 1% để giữ an toàn.
Nếu đặt quá cao, dữ liệu sẽ nát bét; quá thấp thì hệ thống trì trệ. Đôi khi, người ta còn dùng một thuật toán khác chỉ để đi tìm cái "tỉ lệ vàng" này.
Nó giống như việc bạn chỉnh nhiệt độ lò nướng vậy. Máy tính chỉ thực thi, còn "khẩu vị" về sự cân bằng vẫn nằm trong tay con người.





