Dạy xe tự đỗ bằng thuật toán di truyền: Từ 180 bit đến bãi đỗ hoàn hảo
Một lập trình viên đã dùng thuật toán di truyền để huấn luyện xe tự đỗ, biến bài toán phức tạp thành việc tối ưu hóa 180 bit nhị phân. Sau khoảng 40 thế hệ, những chiếc xe bắt đầu học được cách tiến sát bãi đỗ, mở ra góc nhìn thú vị về AI và học máy.

Dạy xe tự đỗ bằng thuật toán di truyền: Từ 180 bit đến bãi đỗ hoàn hảo
Tóm tắt: Một lập trình viên đã dùng thuật toán di truyền để huấn luyện xe tự đỗ, biến bài toán phức tạp thành việc tối ưu hóa 180 bit nhị phân. Sau khoảng 40 thế hệ, những chiếc xe bắt đầu học được cách tiến sát bãi đỗ, mở ra góc nhìn thú vị về AI và học máy.
Trong thế giới công nghệ, xe tự lái luôn là một chủ đề nóng. Nhưng thay vì dùng mạng nơ-ron phức tạp, một lập trình viên đã chọn cách tiếp cận thú vị hơn: dùng thuật toán di truyền để dạy xe tự đỗ. Bài viết gốc trên blog trekhleb.dev đã chia sẻ chi tiết quá trình này, từ việc tạo ra thế hệ xe đầu tiên với bộ gen ngẫu nhiên cho đến khi chúng dần "hiểu" được nhiệm vụ đỗ xe.
Mô phỏng xe tự đỗ bằng thuật toán di truyền
Bài toán đặt ra
Mục tiêu nghe có vẻ đơn giản: dạy một chiếc xe ảo tự động đỗ vào bãi. Nhưng để làm được điều đó, tác giả đã chia nhỏ bài toán thành các phần cơ bản: cho xe "cơ bắp" (động cơ và bánh lái), cho xe "mắt" (cảm biến khoảng cách) và cho xe "bộ não" (hàm xử lý tín hiệu). Cuối cùng, toàn bộ hành vi của xe được mã hóa thành một bộ gen (genome) gồm 180 bit nhị phân — tức 180 số 0 và 1.
Điều đáng chú ý là bộ não của xe ở đây không phải mạng nơ-ron phức tạp, mà chỉ là hai phương trình tuyến tính với 8 biến đầu vào từ cảm biến. Mỗi phương trình có 9 hệ số (8 hệ số cho cảm biến và 1 hệ số bias), tổng cộng 18 hệ số. Mỗi hệ số được mã hóa thành 10 bit, tạo nên chuỗi 180 bit.
Thuật toán di truyền hoạt động như thế nào?
Thuật toán di truyền (Genetic Algorithm - GA) lấy cảm hứng từ quá trình chọn lọc tự nhiên. Thay vì thử tất cả 2^180 tổ hợp (một con số khổng lồ đến mức không thể tưởng tượng nổi), GA mô phỏng quá trình tiến hóa qua các bước:
- CREATE (Tạo): Sinh ra thế hệ xe đầu tiên với bộ gen ngẫu nhiên, ví dụ khoảng 1000 chiếc.
- SELECT (Chọn lọc): Đánh giá độ "khỏe" (fitness) của từng xe dựa trên khoảng cách đến bãi đỗ. Xe càng gần bãi đỗ càng khỏe.
- MATE (Giao phối): Cho các xe bố mẹ lai ghép bộ gen với tỉ lệ 50/50 để tạo ra thế hệ con.
- MUTATE (Đột biến): Một số gen có thể bị lật ngẫu nhiên (từ 0 thành 1 hoặc ngược lại) để tăng tính đa dạng.
Quá trình này lặp lại qua nhiều thế hệ, giúp bộ gen của xe ngày càng tốt hơn.
Hành trình tiến hóa
Thế hệ xe đầu tiên với bộ gen ngẫu nhiên di chuyển hỗn loạn, không có mục đích rõ ràng. Nhưng chỉ sau khoảng 40 thế hệ, những chiếc xe bắt đầu học được cách tiến gần bãi đỗ. Đồ thị cho thấy giá trị "loss" (khoảng cách trung bình đến bãi đỗ) giảm dần theo thời gian, từ khoảng 5,5 mét xuống còn 3,5 mét sau 35 thế hệ.
Xe trước khi được huấn luyện
Xe sau khi được huấn luyện
Tác giả cũng thừa nhận một số hạn chế: xe vẫn va chạm với các xe khác trên đường, chưa đỗ hoàn hảo vào bãi, và mô phỏng chưa ổn định. Nhưng với mục đích học hỏi, kết quả này đã rất ấn tượng.
Ý nghĩa với lập trình viên Việt Nam
Thuật toán di truyền không chỉ là lý thuyết suông. Nó có thể được áp dụng trong nhiều bài toán tối ưu hóa thực tế: từ điều chỉnh tham số trong học máy, tối ưu hóa lộ trình giao hàng, đến thiết kế vi mạch. Với cộng đồng lập trình viên Việt Nam, đây là một ví dụ tuyệt vời để hiểu về AI theo cách trực quan và thực hành ngay trên trình duyệt.
Toàn bộ mã nguồn của dự án này được viết bằng TypeScript, dài chưa đến 500 dòng (không tính test) — một minh chứng cho thấy bạn không cần một hệ thống đồ sộ để bắt đầu với thuật toán tiến hóa.
"Mục đích của bài viết này là để vừa học vừa vui về cách thuật toán di truyền hoạt động, chứ không phải để chế tạo Tesla tự đỗ chuẩn sản xuất." — Tác giả chia sẻ.
Nếu bạn tò mò, có thể tự mình chạy thử trình mô phỏng tiến hóa xe tự đỗ ngay trên trình duyệt, điều chỉnh các tham số di truyền và xem những chiếc xe ảo học cách đỗ xe như thế nào. Đây là một cách thú vị để bước chân vào thế giới AI mà không cần đến những kiến thức toán học quá hàn lâm.


