Khoa Khoa học Dữ liệuĐại học Quốc Gia Hà NộiTrường Đại học Khoa học Tự nhiênBÁO CÁO BÀI TẬP LỚNXây dựng thuật toán tìm đườngđi tự động cho vật thể sử dụngMachine Learning AI trong Unity.
Trang 1Khoa Khoa học Dữ liệu Đại học Quốc Gia Hà Nội Trường Đại học Khoa học Tự nhiên
BÁO CÁO BÀI TẬP LỚN
Xây dựng thuật toán tìm đường
đi tự động cho vật thể sử dụng Machine Learning AI trong Unity
Trang 2Lời cảm ơn
Sau khoảng thời gian nghiên cứu, dưới sự chỉ bảo tận tình của cô Nguyễn Thị Bích Thủy.Chúng em không chỉ hoàn thành projet mà còn học hỏi được rất nhiều kiến thức mới
Để được như vậy chúng em vô cùng biết ơn cô đã tận tình giảng dạy, hướng dẫn, truyền đạt những kiến thức, kinh nghiệm quý báu cho chúng em trong khoảng thời gian qua.Với lòng biết ơn chân thành,em xin gửi lời chúc sức khoẻ
và những gì tốt đẹp nhất đến các thầy cô trong khoa, trong nhà trường và đặc biệt là cô Nguyễn Thị Bích Thủy
Sinh viên thực hiện
Trang 3Nhận xét của giảng viên
Chữ ký của giảng viên
Trang 4Tổng quan
Trong thời đại công nghệ phát triển, việc sử dụng trí tuệ nhân tạo (AI) và machine learning (ML) đã trở thành xu hướng không thể phủ nhận trong lĩnh vực xây dựng trò chơi điện tử Trong môi trường phát triển nhanh chóng của các trò chơi 3D như Unity, việc tìm ra cách tối ưu để vật thể tự động di chuyển trong một không gian đa chiều đang trở thành mục tiêu quan trọng
Báo cáo này tập trung vào việc phát triển thuật toán tìm đường tự động cho vật thể trong môi trường Unity, bằng cách sử dụng kết hợp giữa machine learning
và trí tuệ nhân tạo Mục tiêu là tạo ra một cách tiếp cận linh hoạt và hiệu quả
để vật thể trong trò chơi có thể tự động di chuyển thông minh tránh các vật cản, tìm đường đi tối ưu từ điểm xuất phát đến điểm đích
Chúng ta sẽ khám phá quá trình xây dựng, huấn luyện và triển khai thuật toán này trong môi trường Unity Từ việc thu thập dữ liệu đầu vào, xây dựng mô hình machine learning phù hợp, đến việc tích hợp thuật toán vào trò chơi thực
tế, mọi khía cạnh sẽ được đề cập một cách chi tiết
Hy vọng rằng báo cáo này sẽ cung cấp cái nhìn rõ ràng và sâu sắc về tiềm năng của machine learning và trí tuệ nhân tạo khi áp dụng vào lĩnh vực xây dựng trò chơi, đặc biệt là trong việc tạo ra hệ thống định hướng tự động cho vật thể, giúp trò chơi trở nên sống động và hấp dẫn hơn
Trang 5Mục lục
1 Khái niệm cơ bản về Machine Learning và AI 6
1.1 Machine Learning 6
1.2 AI (Artificial Intelligence) 6
2 Sử dụng Machine Learning trong Unity 6 3 Đặt vấn đề 7 4 Tiến hành 7 4.1 Mô hình học máy 7
4.2 Khởi tạo đối tượng 8
4.3 Xây dựng thuật toán 8
4.3.1 Xác định vị trí 8
4.3.2 Phương pháp 9
4.4 Thực nghiệm 11
5 Kết quả 12 5.1 File ONNX 12
5.2 Kết quả 13
7 Hướng phát triển trong tương lai 14
Trang 61 Khái niệm cơ bản về Machine Learning và AI
Trước khi đi sâu vào việc sử dụng ML và AI trong Unity, chúng ta cần hiểu rõ
về những khái niệm cơ bản của chúng
1.1 Machine Learning
Machine Learning là một lĩnh vực của trí tuệ nhân tạo mà ở đó máy tính được huấn luyện để học từ dữ liệu và tự động cải thiện qua thời gian Có ba loại chính của Machine Learning:
• Học có giám sát (Supervised Learning)
• Học không giám sát (Unsupervised Learning)
• Học tăng cường (Reinforcement Learning)
1.2 AI (Artificial Intelligence)
Artificial Intelligence là khái niệm tổng quát hơn, bao gồm cả Machine Learning
và các phương pháp khác như Expert Systems, Logic Systems, Neural Networks,
và nhiều hơn nữa
Trong báo cáo này, chúng ta sẽ tập trung vào việc sử dụng Machine Learning trong Unity
2 Sử dụng Machine Learning trong Unity
Trong phần này, chúng ta sẽ tìm hiểu cách tích hợp Machine Learning vào Unity
và tạo ra các ứng dụng, trò chơi sử dụng các kỹ thuật ML
Cài đặt Unity và ML-Agents: Đầu tiên, ta cần cài đặt Unity và ML-Agents ML-Agents là một plugin miễn phí cho Unity, giúp tạo ra các mô hình Machine Learning một cách dễ dàng
Tạo môi trường: Sau khi cài đặt, chúng ta sẽ bắt đầu bằng việc tạo một môi trường đơn giản trong Unity Đây có thể là một trò chơi nhỏ, một môi trường
mô phỏng, hoặc bất kỳ ứng dụng nào bạn muốn áp dụng ML vào
Huấn luyện mô hình: Tiếp theo, chúng ta sẽ sử dụng ML-Agents để huấn luyện một mô hình Ví dụ, trong trò chơi đua xe, chúng ta có thể huấn luyện một mô hình để tự động lái xe
Tích hợp mô hình vào Unity: Khi mô hình đã được huấn luyện, chúng ta
sẽ tích hợp nó vào Unity
Trang 73 Đặt vấn đề
Bài toán gồm 2 vật thể là Agent (màu xanh) và Goal (màu vàng)
Mục tiêu: Xây dựng mô hình sao cho Agent có thể tìm đường di chuyển đến Goal chính xác nhất trong thời gian ngắn nhất
4 Tiến hành
4.1 Mô hình học máy
Trang 8Reinforcement learning là một phương pháp học máy mà mô hình học tập phải tương tác với môi trường để học thông qua việc thử và sai Máy tính "học" bằng cách thử các hành động và nhận phản hồi để biết hành động nào tốt và hành động nào không tốt, từ đó cải thiện ở các lần thử tiếp theo
Cụ thể ở trong bài toán của chúng ta, mô hình sẽ lặp đi lặp lại quá trình agent
đi tới goal, mỗi khi tới goal hoặc đi ra khỏi viền thì mô hình sẽ được reset
4.2 Khởi tạo đối tượng
Khởi tạo 2 đối tượng là Agent và Goal
4.3 Xây dựng thuật toán
4.3.1 Xác định vị trí
Xác định vị trí hai vật thể trong không gian dưới dạng vecto (x,y,z) Xong sau mỗi lần chạy, vị trí của hai vật thể sẽ được đặt lại về vị trí cũ cho lần chạy tiếp theo
Để tránh trường hợp bị overfitting cho 1 trường hợp duy nhất (do vị trí của goal
và agent là giống nhau), vị trí các vật thể được sẽ được set một cách random
Trang 94.3.2 Phương pháp
1 Loại huấn luyện (PPO): Chỉ định rằng thuật toán PPO sẽ được sử dụng
để huấn luyện mô hình PPO là một loại phương pháp gradient cho học tăng cường, giúp cân bằng giữa khám phá môi trường và khai thác thông tin đã biết
2 Tham số:
• Kích thước lô (Batch Size): Số mẫu trong mỗi lô cho các bản cập nhật
Trang 10• Epsilon (0.2): Liên quan đến cơ chế cắt trong PPO giúp duy trì vùng tin cậy trong các bản cập nhật
• Lambda (0.99): Hệ số chiết khấu cho phần thưởng tương lai trong ước tính lợi thế
• Số Epoch (Num Epoch): Số lần đi qua bộ đệm huấn luyện
• Lịch trình tốc độ học (Linear), Lịch trình Beta (Constant), Lịch trình Epsilon (Linear): Các tham số này xác định cách các tham số tương ứng thay đổi theo thời gian trong quá trình huấn luyện
3 Cài đặt mạng Neuron:
• Chuẩn hóa (Normalize): Có chuẩn hóa đầu vào cho mạng hay không
• Đơn vị ẩn (Hidden Units - 128): Số nơ-ron trong mỗi lớp ẩn của mạng
• Số lớp (Num Layers - 2): Số lớp ẩn trong mạng
4 Số bước tối đa (Max Steps - 500000): Tổng số bước để huấn luyện mô hình
5 Thời gian (Time Horizon - 64): Số bước trước khi cắt đứt một tập; ảnh hưởng đến cách ước tính phần thưởng dài hạn
6 Tần suất tóm tắt (Summary Frequency - 10000): Tần suất tóm tắt và ghi nhật ký quá trình huấn luyện (Sau 10000, in ra tóm tắt 1 lần)
Trang 114.4 Thực nghiệm
Bước 1: Nhận đầu vào là 2 vecto tương trưng cho việc di chuyển theo chiều dọc hoặc chiều ngang, mỗi khi agent trong mô hình chạm vào goal thì reward
sẽ được đặt là 1, ngược lại khi agent đi ra khỏi mô hình thì reward sẽ được đặt
là -1
Quá trình được lặp đi lặp lại qua nhiều lần sử dụng 16 agents, kết hợp với học máy để điều chỉnh các hệ số của mạng neuron network thông qua reinforcement learning
Trang 125 Kết quả
5.1 File ONNX
Sau khi huấn luyện, các hệ số của mạng neuron được lưu trong 1 file onnx:
Đầu vào:
Chỉ có một đầu vào tên là với hình dạng bao gồm kích thước lô không xác định (n:), chiều cao (h:), chiều rộng (w:), và kênh (c:) được chỉ định bằng 6 (Có thể hiểu là 2 véc tơ đầu vào (x, y, z) tương ứng cho di chuyển ngang và dọc)
Đầu ra:
Mô hình có năm đầu ra, bao gồm version_number, memory_size, continu-ous_actions, continuous_action_output_shape, và deterministic_continucontinu-ous_actions, mỗi đầu ra với hình dạng tương ứng của nó giống như đầu vào Các đầu ra này cho thấy mô hình có thể thực hiện các nhiệm vụ hoặc dự đoán khác nhau
Lớp:
Mô hình NN có 17 lớp sử dụng 177,668 trọng số Các lớp này bao gồm các lớp Dense (các lớp kết nối đầy đủ) và các hàm kích hoạt như Sigmoid
Hằng số:
Có 7 hằng số sử dụng 8 trọng số, có thể được sử dụng cho các hoạt động như chuẩn hóa lô hoặc các tham số tĩnh khác trong các phép tính của mô hình
Trang 135.2 Kết quả
Quá trình này, được gọi là "MoveToGoal," hiển thị số bước cùng với thời gian
đã trôi qua, phần thưởng trung bình, và độ lệch chuẩn (Std) của phần thưởng
• Bước 50000: Mất 73.595 giây để đạt đến điểm này Phần thưởng trung bình khá thấp, chỉ 0.200, và độ lệch chuẩn của phần thưởng cao, ở mức 0.946 Điều này cho thấy rằng thuật toán có thể đang trong quá trình học ban đầu và chưa tối ưu hóa tốt
• Bước 100000: Thời gian trôi qua tăng lên 131.135 giây Tuy nhiên, phần thưởng trung bình đã tăng đáng kể lên 0.997, và độ lệch chuẩn của phần thưởng giảm xuống còn 0.074 Điều này chỉ ra rằng thuật toán đã học được cách tối ưu hóa hành vi tìm đường tới mục tiêu để đạt được phần thưởng cao hơn
• Bước 150000: Thời gian là 193.541 giây với phần thưởng trung bình tiếp tục cải thiện lên 0.998 và độ lệch chuẩn giảm nhẹ xuống 0.068 Sự cải thiện này cho thấy thuật toán có khả năng thích nghi và học hỏi tốt, dẫn đến hiệu suất ổn định và dự đoán được
Nhìn chung, kết quả này phản ánh một quá trình huấn luyện thành công với
sự cải thiện rõ rệt qua từng bước thời gian Phần thưởng trung bình cao và độ lệch chuẩn thấp ở các bước sau cùng cho thấy thuật toán đã học cách đạt được mục tiêu một cách hiệu quả và với ít biến động hơn trong các kết quả
6 Kết luận
Trong quá trình nghiên cứu và thực hiện dự án, chúng tôi đã áp dụng các phương pháp machine learning, đặc biệt là reinforcement learning, vào việc xây dựng thuật toán tìm đường đi tự động cho vật thể trong môi trường Unity Qua quá trình này, chúng tôi đã tiến hành các bước từ khảo sát vấn đề, xây dựng môi trường, huấn luyện mô hình, đến tích hợp và thử nghiệm
Kết quả của dự án đã cho thấy tiềm năng của việc kết hợp machine learning
Trang 147 Hướng phát triển trong tương lai
Đối với hướng phát triển trong tương lai, chúng tôi đề xuất tiếp tục nghiên cứu
và áp dụng các kỹ thuật mới, cải thiện thuật toán và mô hình, cũng như mở rộng phạm vi ứng dụng của dự án Chúng ta có thể áp dụng mô hình phần thưởng vào thuật toán tìm đường đi cho máy Cụ thể là ta sẽ set các checkpoint sao cho oto đi càng đúng đường thì phần thưởng từ check point càng nhiều Ngược lại nếu oto đi sai hoặc ngược đường thì sẽ bị trừ điểm và reset vị trí
Tuy nhiên, khi thực hiện việc huấn luyện thì mô hình hoạt động chưa hiệu quả, oto vẫn còn đi ngược đường hoặc không tìm được hướng đi phù hợp Kể cả khi
áp dụng thêm thị giác máy tính (hình dưới) để oto nhận diện được checkpoint
và các khu vực giới hạn nhưng oto vẫn không đi theo đúng hướng và cần phải được nghiên cứu thêm
Trang 158 Tài liệu tham khảo
1 Unity ML-Agents GitHub Releases: [https://github.com/Unity-Technologies/ml-agents/releases/tag/release_10]
2 Unity ML-Agents Forum: [https://forum.unity.com/forums/ml-agents.453/]
3 Unity Code Monkey Website: [https://unitycodemonkey.com/]