MLAgent The Amaaze

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 15

Khoa 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
Sinh Viên: Phan Sĩ Nguyên, Đào Tất Thắng
Giảng viên: Cô Nguyễn Thị Bích Thủy

Tháng 4, 2024
Lờ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

2
Nhận xét của giảng viên
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................
..............................................................................

Chữ ký của giảng viên

3
Tổ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.

4
Mụ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

6 Kết luận 13

7 Hướng phát triển trong tương lai 14

8 Tài liệu tham khảo 15

5
1 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.

6
3 Đặ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

7
Reinforcement 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.

8
4.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
huấn luyện. Kích thước lô nhỏ hơn có nghĩa là mô hình cập nhật thường
xuyên hơn.
• Kích thước bộ đệm (Buffer Size): Kích thước của bộ đệm để lưu trữ
các bộ kinh nghiệm.

• Tốc độ học (3.0e-4): Xác định mức độ thay đổi mô hình phản hồi với
lỗi ước tính mỗi khi trọng số mô hình được cập nhật.
• Beta (5.0e-4): Tham số điều chỉnh để kiểm soát sự cân bằng giữa việc
học mô hình và tránh quá khớp.

9
• 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).

10
4.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.

Bước 2: Nhận đầu ra là một mạng neuron network đã được huấn luyện qua
reinforcement training và các hệ số có thể được dùng để cho các model chưa
được train kháckhác.

11
5 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_continuous_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.

12
5.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
và trí tuệ nhân tạo trong việc tạo ra hệ thống định hướng tự động cho vật thể
trong trò chơi. Dù có những thách thức và hạn chế, nhưng chúng tôi tin rằng
với sự tiếp tục nghiên cứu và phát triển, các phương pháp này sẽ trở nên ngày
càng mạnh mẽ và ứng dụng rộng rãi hơn trong lĩnh vực trò chơi điện tử.

13
7 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.

14
8 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/]

15

You might also like