Giải khối Rubik bằng bàn tay robot

Ảnh: Eric Haines
Chúng tôi đã huấn luyện một cặp mạng thần kinh để giải khối Rubik bằng bàn tay robot tương tự tay người. Các mạng thần kinh này được huấn luyện hoàn toàn trong môi trường mô phỏng, sử dụng cùng mã nguồn học củng cố của OpenAI Five kết hợp với một kỹ thuật mới có tên là Tự động chọn ngẫu nhiên miền (Automatic Domain Randomization - ADR). Hệ thống này có thể xử lý những tình huống chưa từng gặp trong quá trình huấn luyện, ví dụ như bị hươu cao cổ nhồi bông chọc vào. Điều này cho thấy học củng cố không chỉ là công cụ cho các tác vụ ảo mà còn có thể giải quyết các vấn đề trong đời thực đòi hỏi sự khéo léo ở mức độ chưa từng có.
Đôi tay con người giúp chúng ta giải quyết nhiều tác vụ khác nhau. Trong 60 năm phát triển của ngành robot, để thực hiện các tác vụ khó mà con người làm được bằng đôi tay, người ta đã phải thiết kế một robot riêng cho từng tác vụ(mở trong cửa sổ mới). Để thay thế, con người đã dành nhiều thập kỷ tìm cách dùng phần cứng robot đa dụng(mở trong cửa sổ mới), nhưng thành công còn hạn chế do chúng có số bậc tự do quá cao. Đặc biệt, phần cứng chúng tôi dùng ở đây không phải là mới—bàn tay robot chúng tôi dùng đã ra đời từ 15 năm trước—nhưng cách tiếp cận về phần mềm thì hoàn toàn mới.
Kể từ tháng 5/2017, chúng tôi đã cố gắng huấn luyện một bàn tay robot giống người để giải khối Rubik(mở trong cửa sổ mới). Chúng tôi đặt ra mục tiêu này vì tin rằng việc huấn luyện thành công một bàn tay robot như vậy để thực hiện các tác vụ điều khiển phức tạp sẽ đặt nền móng cho các robot đa dụng trong tương lai. Chúng tôi đã mô phỏng giải được khối Rubik vào tháng 7/2017. Nhưng mãi đến tháng 7/2018, chúng tôi chỉ mới có thể điều khiển một khối trên robot. Giờ đây, chúng tôi đã đạt được mục tiêu ban đầu của mình.
Quá trình giải hoàn chỉnh khối Rubik. Video này phát ở thời gian thực và hoàn toàn không qua chỉnh sửa.
Giải khối Rubik bằng một tay là thử thách khó khăn ngay cả đối với con người, còn trẻ em phải mất vài năm mới có đủ sự khéo léo để thành thạo kỹ năng này. Tuy nhiên, robot của chúng tôi vẫn chưa hoàn thiện kỹ thuật, khi chỉ giải thành công khối Rubik trong 60% trường hợp (và chỉ 20% đối với các trường hợp xáo trộn ở mức độ khó tối đa(mở trong cửa sổ mới)).
Chúng tôi huấn luyện các mạng thần kinh để giải khối Rubik trong môi trường mô phỏng(mở trong cửa sổ mới) bằng phương pháp học củng cố và sử dụng thuật toán Kociemba(mở trong cửa sổ mới) để lựa chọn các bước giải.A Chọn ngẫu nhiên(mở trong cửa sổ mới) miền(mở trong cửa sổ mới) cho phép các mạng được huấn luyện hoàn toàn trong môi trường mô phỏng để chuyển sang robot thật.

Thử thách lớn nhất mà chúng tôi gặp phải là tạo ra các môi trường mô phỏng đủ đa dạng để tái hiện được các yếu tố vật lý trong đời thực. Các yếu tố như ma sát, độ đàn hồi và động lực học của những vật thể phức tạp như khối Rubik hay bàn tay robot là cực kỳ khó đo lường và mô hình hóa. Và chúng tôi nhận thấy rằng chỉ riêng phương pháp chọn ngẫu nhiên miền là chưa đủ.
Để khắc phục hạn chế này, chúng tôi đã phát triển một phương pháp mới mang tên Tự động chọn ngẫu nhiên miền (Automatic Domain Randomization - ADR), có khả năng tự động tạo ra các môi trường mô phỏng với độ khó tăng dần không giới hạn.B Phương pháp này giúp chúng tôi không cần phải có một mô hình chính xác của thực tế, và cho phép áp dụng mạng thần kinh đã học trong mô phỏng vào đời thực.
ADR khởi đầu với một môi trường duy nhất, chưa được chọn ngẫu nhiên, nơi mạng thần kinh sẽ học cách giải khối Rubik. Khi mạng thần kinh dần thành thạo tác vụ và đạt đến một ngưỡng hiệu suất nhất định, mức độ chọn ngẫu nhiên miền sẽ tự động được tăng lên. Điều này khiến cho tác vụ trở nên khó hơn, vì lúc này mạng thần kinh phải học cách tổng quát hóa để thích ứng với các môi trường được chọn ngẫu nhiên nhiều hơn. Mạng thần kinh sẽ tiếp tục học cho đến khi một lần nữa vượt qua ngưỡng hiệu suất, lúc này mức độ chọn ngẫu nhiên lại tiếp tục tăng lên, và quy trình cứ thế lặp lại.
Một trong những tham số chúng tôi tiến hành chọn ngẫu nhiên là kích thước của khối Rubik (hình trên). ADR bắt đầu với một kích thước cố định của khối Rubik và dần tăng phạm vi chọn ngẫu nhiên trong quá trình huấn luyện. Chúng tôi áp dụng kỹ thuật tương tự cho tất cả các tham số khác, ví dụ như khối lượng khối Rubik, lực ma sát của các ngón tay robot, và vật liệu bề mặt của bàn tay. Nhờ đó, mạng thần kinh này phải học cách giải khối Rubik trong tất cả những điều kiện ngày càng khó khăn hơn đó.
Chọn ngẫu nhiên miền đòi hỏi chúng tôi phải tự xác định phạm vi chọn ngẫu nhiên. Việc này rất khó khăn, bởi nếu chọn ngẫu nhiên quá nhiều, mô hình sẽ khó học, còn nếu quá ít thì sẽ khó chuyển sang robot thật. ADR giải quyết vấn đề này bằng cách tự động mở rộng phạm vi chọn ngẫu nhiên theo thời gian mà không cần con người can thiệp. ADR loại bỏ yêu cầu về kiến thức chuyên môn và giúp việc áp dụng các phương pháp của chúng tôi vào tác vụ mới trở nên đơn giản hơn. Trái ngược với cách chọn ngẫu nhiên miền thủ công, ADR (Tự động chọn ngẫu nhiên miền) còn giữ cho tác vụ đó luôn có độ khó cao và quá trình huấn luyện không bao giờ hội tụ.
Chúng tôi đã so sánh ADR với phương pháp chọn ngẫu nhiên miền thủ công trong tác vụ lật khối hộp, tác vụ mà chúng tôi vốn đã có một mô hình cơ sở rất mạnh. Ban đầu, ADR hoạt động kém hiệu quả hơn xét về số lần thành công trên robot thật. Nhưng khi ADR làm tăng entropy – một thước đo độ phức tạp của môi trường – hiệu suất chuyển giao cuối cùng đã tăng gấp đôi so với mô hình cơ sở mà không cần con người tinh chỉnh.
Sử dụng ADR, chúng tôi có thể huấn luyện mạng thần kinh trong môi trường mô phỏng để giải được khối Rubik trên bàn tay robot thật. Điều này là do ADR cho mạng thần kinh tiếp xúc với vô số các mô phỏng được chọn ngẫu nhiên. Chính sự tiếp xúc với độ phức tạp trong quá trình huấn luyện này đã giúp mạng thần kinh sẵn sàng cho việc chuyển từ môi trường mô phỏng sang thế giới thực, vì nó phải học cách nhanh chóng xác định và thích ứng với bất kỳ môi trường vật lý nào mà nó đối mặt.
Để kiểm tra giới hạn của phương pháp, chúng tôi đã thử nghiệm với nhiều loại nhiễu loạn khác nhau trong lúc bàn tay robot đang giải Rubik. Không chỉ kiểm tra độ bền vững của mạng điều khiển, thử nghiệm này còn kiểm tra cả mạng thị giác mà chúng tôi dùng để ước tính vị trí và hướng của khối Rubik.
Chúng tôi nhận thấy rằng hệ thống được huấn luyện bằng ADR có khả năng chống chịu nhiễu loạn một cách đáng ngạc nhiên, mặc dù chúng tôi chưa bao giờ huấn luyện nó với các nhiễu loạn này: Robot có thể thực hiện thành công hầu hết các thao tác lật và xoay mặt khối Rubik dưới tất cả nhiễu loạn được thử nghiệm, dù không đạt hiệu suất cao nhất.
Chúng tôi tin rằng siêu học(mở trong cửa sổ mới), hay học cách học, là điều kiện tiên quyết quan trọng để xây dựng các hệ thống đa năng, vì nó cho phép chúng nhanh chóng thích ứng với các điều kiện thay đổi trong môi trường. Giả thuyết đằng sau ADR là một mạng thần kinh có tăng cường trí nhớ kết hợp với môi trường được chọn ngẫu nhiên ở mức độ đủ cao sẽ dẫn đến siêu học mới nổi. Khi đó, mạng thần kinh sẽ tự triển khai một thuật toán học hỏi cho phép nó nhanh chóng điều chỉnh hành vi phù hợp với môi trường mà nó được triển khai.C
Để kiểm tra điều này một cách có hệ thống, chúng tôi đo lường thời gian cần thiết để lật thành công một mặt của khối Rubik (xoay khối rubik để một mặt màu khác hướng lên trên) cho mạng thần kinh dưới các nhiễu loạn khác nhau, chẳng hạn như xóa bộ nhớ của mạng, thiết lập lại động lực học, hoặc làm hỏng một khớp nối. Chúng tôi thực hiện các thí nghiệm này trong môi trường mô phỏng, cho phép lấy kết quả trung bình 10.000 lần thử trong một thiết lập có kiểm soát.
Ban đầu, khi mạng thần kinh thực hiện thành công nhiều lần lật hơn, thời gian để thành công ở mỗi lần kế tiếp sẽ giảm xuống vì mạng học được cách thích ứng. Khi áp dụng các nhiễu loạn (các đường màu xám dọc trong biểu đồ trên), chúng tôi thấy thời gian để thành công tăng vọt. Điều này là do chiến lược mà mạng đang sử dụng không còn hiệu quả trong môi trường đã thay đổi. Sau đó, mạng thần kinh sẽ học lại về môi trường mới và chúng tôi lại thấy thời gian để thành công giảm xuống mức cơ sở trước đó.
Chúng tôi cũng đo lường xác suất thất bại và thực hiện các thí nghiệm tương tự cho các thao tác xoay mặt (xoay mặt trên cùng 90 độ theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ) và nhận thấy có quy luật thích ứng tương tự.
Việc trực quan hóa các mạng này giúp chúng tôi hiểu rõ chúng đang lưu trữ những gì trong bộ nhớ. Điều này trở nên rất quan trọng khi các mạng lưới ngày càng phức tạp.
Bộ nhớ của mạng thần kinh được trực quan hóa ở hình trên. Chúng tôi sử dụng một khối xây dựng từ bộ công cụ diễn giải(mở trong cửa sổ mới), cụ thể là phương pháp phân tích ma trận không âm, để cô đọng vec-tơ chiều cao này thành 6 nhóm và gán cho mỗi nhóm một màu sắc riêng biệt. Sau đó, chúng tôi hiển thị màu sắc của nhóm chủ đạo tại mỗi bước thời gian.
Chúng tôi nhận thấy rằng mỗi nhóm trí nhớ đều tương ứng với một hành vi có ý nghĩa về mặt ngữ nghĩa. Ví dụ: chỉ cần nhìn vào nhóm chủ đạo trong trí nhớ của mạng, chúng ta có thể biết được liệu nó có sắp xoay cả khối hay xoay mặt trên theo chiều kim đồng hồ hay không trước khi hành động đó diễn ra.
Việc giải khối Rubik bằng một bàn tay robot vẫn không hề dễ dàng. Phương pháp của chúng tôi hiện giải được khối Rubik 20% số lần khi áp dụng một lượt xáo trộn phức tạp tối đa(mở trong cửa sổ mới), đòi hỏi 26 lượt xoay mặt. Đối với các lượt xáo trộn đơn giản hơn cần 15 lượt xoay để hoàn tác, tỷ lệ thành công là 60%. Khi khối Rubik bị rơi hoặc hết thời gian, chúng tôi coi như lần thử đó thất bại. Tuy nhiên, mạng lưới của chúng tôi có khả năng giải khối Rubik từ bất kỳ điều kiện ban đầu nào. Vì vậy, nếu khối bị rơi, ta hoàn toàn có thể đặt nó trở lại vào bàn tay và tiếp tục giải.
Nhìn chung, chúng tôi nhận thấy rằng mạng thần kinh của mình có khả năng thất bại cao hơn nhiều trong vài lượt xoay mặt và lật đầu tiên. Nguyên nhân là do mạng thần kinh cần phải cân bằng giữa việc giải khối Rubik và thích ứng với thế giới vật lý trong những lượt xoay và lật ban đầu đó.
Để đánh giá tiến độ và làm cho bài toán khả thi, chúng tôi đã xây dựng và thiết kế các phiên bản khối Rubik tùy chỉnh như những bước đệm hướng tới mục tiêu cuối cùng là giải một khối Rubik thông thường.

Các nguyên mẫu khối Rubik, từ trái sang phải: Khối bị khóa, Khối xoay mặt, Khối hoàn chỉnh, Khối Giiker(mở trong cửa sổ mới), Khối Rubik thông thường.
Nguyên mẫu | Vị trí + hướng | Số bậc tự do nội bộ (cảm biến) |
Khối bị khóa | Tầm nhìn | 0 (Không có cảm biến) |
Khối xoay mặt | PhaseSpace | 2 (PhaseSpace) |
Khối hoàn chỉnh | PhaseSpace | 6 (PhaseSpace) |
Khối Giiker | Tầm nhìn | 6 (Cảm biến tích hợp) |
Khối Rubik thông thường | Tầm nhìn | 6 (Tầm nhìn) |
Chúng tôi tin rằng sự khéo léo ở cấp độ con người là một bước tiến trên con đường xây dựng các robot đa năng, và chúng tôi rất hào hứng để tiếp tục thúc đẩy theo hướng này.
Nếu bạn muốn chung tay tạo ra các hệ thống AI ngày càng tổng quát hơn, dù là robot hay ảo, thì chúng tôi đang tuyển dụng!!
Ghi chú cuối trang
- A
Chúng tôi tập trung vào những bài toán mà máy móc hiện đang gặp khó khăn để thành thạo: nhận thức và thao tác khéo léo. Do đó, chúng tôi huấn luyện các mạng thần kinh của mình thực hiện các thao tác xoay mặt và lật khối cần thiết theo yêu cầu của thuật toán Kociemba.
- B
Công trình của chúng tôi có liên quan chặt chẽ đến POET(mở trong cửa sổ mới), một hệ thống tự động tạo ra các môi trường 2D. Tuy nhiên, công trình của chúng tôi học một chính sách chung cho tất cả các môi trường, và chính sách này có thể áp dụng cho bất kỳ môi trường nào mới được tạo ra.
- C
Cụ thể hơn, chúng tôi đưa ra giả thuyết rằng một mạng thần kinh với năng lực hữu hạn, khi được huấn luyện trên các môi trường có độ phức tạp vô hạn, sẽ buộc phải học một thuật toán học chuyên dụng. Lý do là vì mạng không thể ghi nhớ lời giải cho từng môi trường riêng lẻ và cũng không tồn tại một chính sách đơn lẻ nào đủ mạnh để hoạt động hiệu quả trong mọi tình huống ngẫu nhiên.
- D
Vui lòng tham khảo bài báo(mở trong cửa sổ mới) của chúng tôi để xem kết quả đầy đủ.
- E
Chỉnh sửa duy nhất mà chúng tôi thực hiện là cắt một miếng nhỏ trên mỗi miếng dán màu của khối nhỏ trung tâm. Điều này cần thiết để phá vỡ tính đối xứng xoay(mở trong cửa sổ mới).
Tác giả
Lời cảm ơn
Xin gửi lời cảm ơn chân thành đến những người sau đây đã đóng góp ý kiến cho bản nháp của bài đăng và bài báo này: Josh Achiam, Greg Brockman, Nick Cammarata, Jack Clark, Jeff Clune, Ruben D’Sa, Harri Edwards, David Farhi, Ken Goldberg, Leslie P. Kaelbling, Hyeonwoo Noh, Lerrel Pinto, John Schulman, Ilya Sutskever & Tao Xu.
Video: Peter Jordan (Giám đốc), Yvette Solis (Nhà sản xuất), Brooke Chan (Nhà sản xuất)
Biên tập viên: Ashley Pilipiszyn
Thiết kế: Justin Jay Wang & Ben Barry
Ảnh chụp: Eric Haines


