Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 9

ĐỒ ÁN CUỐI KÌ

MÔ TẢ ĐỀ TÀI: Trí Tuệ Nhân Tạo


Tên đề tài: machine learning algorithm for flappy bird
Nhiệm vụ đề tài: viết algorithm để giúp những con flappy bird có thể bay qua các
chướng ngại vật
Cách chạy dự án và mô tả chi tiết cách thức hoạt động:
- Game đã được config và upload lên Heroku: https://plappy-bird-group-
6.herokuapp.com/
- Chạy local: Vì game được viết bằng javascript trên nền tảng của nodejs nên
cần cài đặt nodejs khi cài đặt nodejs thành công chỉ cần bật phần mềm gõ
lệnh và gõ “npm install” để cài các thư viện phụ thuộc của dự án, cài đặt
thành công tiếp tục gõ lệnh npm start để chạy dự án
- Mặc định dự án sẽ chạy ở http://localhost:8000
- Dự án có dụng Synaptic Neural Network library
- Thuật toán sử dụng: Game sử dụng thuật toán genetic kết hợp với neural
network để tìm đường đi tối ưu nhất qua các lần thử từ đó giúp chim bay qua
các chướng ngại vật một cách dễ dàng
- Cách thức thức hoạt động và nhiệm vụ của các function trong dự án
Công việc Người làm
- The main concept of game: - Kha
- Tổng quan về Artificial - Quách Đình Trường Thi
Neural Network
- Genetic algorithm - Trần Võ Hoàng Lâm
- Fitness Function - Trần Nhật Nam
- Replace strategy - Cao Thắng
- Design lại word tổng hợp - Đỗ Thanh Hiếu
check thông báo nộp báo cáo
và works relate the word
- Nghiên cứu các function chạy - Đình Bảo
trong dự án (đào tẩu code….) - Đại

I. Neural Network Architecture


Để trò chơi hoạt động, mỗi đơn vị (chú chim) có Neural Network riêng bao
gồm 3 lớp:
1. Lớp đầu với 2 neurons trình bày những vật cản phía trước mà một con chim
nhìn thấy:
+ Khoảng cách ngang giữa con chim và khoảng cách gần nhất
(horizontal Distance)
+ Độ chệnh lệch chiều cao giữa con chim và khoảng cách gần nhất
(height difference)
2. Một lớp ẩn với 6 tế bào
3. Một lớp đầu ra với 1 nơ-ron được sử dụng để cung cấp một hành động như
ví dụ sau:
+Nó bay lên hoặc bay xuống hoặc bay ngang.
if output > 0.5 then flap else do nothing

II. The Main Concept of Machine Learning


Khái niệm chính về Machine Learning được triển khai trong chương trình
này là dựa trên hình thức tiến hoá thần kinh(neuro-evolution form). Nó sử dụng
các thuật toán tiến hoá như thuật toán di truyền để đào tạo mạng nơ-ron(neuron)
nhân tạo.
Đây là các bước chính:
1. Tạo ra một quần thể mới gồm 10 chú chim với một mạng nơ-ron ngẫu nhiên
2. Cho tất cả các con chim chơi cùng lúc bằng neural networks riêng biệt của
từng con.
3. Dùng fitness function để đánh giá mỗi con chim:
Fitness = total travelled distance - distance to the closest gap
Fitness ở đây có thể như điểm số mà con chim đạt được sau kết thúc trò
chơi, điểm số này được tính bằng cách lấy tổng quảng đường đã đi trừ khoảng cách
ban đầu đến khoảng cách gần nhất

4. Khi tất cả các con chim va vào vật cản và chết, ta sử dụng các toán tử thuật
toán di truyền (chọn lọc, trao đổi chéo và đột biến) để đánh giá quần thể hiện
tại cho đến các quần thể tiếp theo của nó:
a. Sort the units of the current population in decreasing order by their
fitness ranking
b. Select the top 4 units and mark them as the winners of the current
population
c. The 4 winners are directly passed on to the next population
d. To fill the rest of the next population, create 6 offsprings as follows:
- 1 offspring is made by a crossover of two best winners
- 3 offsprings are made by a crossover of two random winners
- 2 offsprings are direct copy of two random winners
e. To add some variations, apply random mutations on each offspring.
5. Quay trở lại bước 2.
III. Neural Network
Neural network bao gồm cái lớp ví dụ như có 1 lớp input, 1 lớp output, và các
cái lớp hidden. 1 neural network bao gồm rất nhiều input hoặc output. Các lớp liên
kết với nhau thông qua 1 cái trọng số (WH1, WH2, ….).
Một neron lấy một nhóm các đầu vào có trọng số, áp dụng hàm kích hoạt và trả
về một đầu ra.

 Sau đây là ví dụ để hiểu thêm về cách neron nó hoạt động như thế nào.
VD: Con chó có thể phân biệt được người thân trong gia đình và người lạ. Những
việc tưởng chừng như rất đơn giản nhưng lại cực kì khó để thực hiện bằng máy
tính. Vậy sự khác biệt nằm ở đâu? Câu trả lời nằm ở bộ não với lượng lớn các nơ-
ron thần kinh liên kết với nhau. Thế thì máy tính có nên mô phỏng lại mô hình ấy
để giải các bài toán trên???
Ta có thể thấy neron nó gồm các input và các output và các trọng số
(W1, W2, W3, …Wm)
Thì công việc của lớp hidden đó là lấy lần lượt input nhân với trọng số và cộng lại
với nhau,
(X1. W1 + X2. W2 +….Xm.Wm ) + bias
và sẽ nó đưa tới 1 cái gọi là activation hàm activation nó sẽ trả giá trị về 1 hoặc 0
và đó cũng chính là output cũng chúng ta ví dụ nếu là 1 thì đây là ảnh người thân
trong gia đình hoặc 0 thì đây là ảnh của người lạ chẳng hạn.

Suy ra trong tựa game flappy bird mỗi đơn vị (chim) có mạng lưới thần kinh riêng
được sử dụng làm bộ não AI của nó để chơi trò chơi. Nó bao gồm 3 lớp như sau:
1) Một lớp đầu vào (input) với 2 tế bào thần kinh đại diện cho những gì một con
chim nhìn thấy:
 Khoảng cách ngang đến khoảng cách gần nhất
 Chênh lệch độ cao đến khoảng cách gần nhất
2) Một lớp ẩn (hidden) với 6 tế bào thần kinh (sử lí số liệu để cho ra ouput)
3) Một lớp đầu ra (output) với 1 nơ-ron cung cấp một hành động như sau:
 Nếu đầu ra> 0,5 thì lật ngược lại không làm gì cả.
IV. Tổng quan về giải thuật di truyền – GA (Genetic Algorithm) trong game
Bước 1: Tạo quần thể ban đầu gồm 10 đơn vị (chim) với mạng nơron ngẫu
nhiên. Theo GA, là bước đầu tiên – Khởi tạo quần thể.
Bước 2: Cho phép tất cả các đơn vị chơi trò chơi đồng thời bằng cách sử dụng
mạng thần kinh của riêng họ. Có nghĩa là ở đây, chúng ta đặt các cá thể đã được
chọn ban đầu cùng sinh sống trong một môi trường có sẵn.
Bước 3: Đối với mỗi đơn vị tính toán chức năng thể dục của nó để đo chất
lượng của nó. Ở đây chức năng thể dục là một số liệu cụ thể để đánh giá xem
những con chim nào là chất lượng, những con chim nào sẽ kém hơn trong cùng
một quần thể đã cho. Để kết luận, chức năng thể dục là sự khác biệt giữa tổng
khoảng cách mà một con chim bao phủ (nghĩa là độ cao cũng như chiều ngang của
nó đối với các chướng ngại vật xung quanh) và khoảng cách hiện tại của nó đến
khoảng cách gần nhất (quãng đường đã đi được bao xa).
Bước 4: Khi tất cả các đơn vị chết, hãy đánh giá quần thể hiện tại cho đến quần
thể tiếp theo bằng cách sử dụng các toán tử di truyền. Nói chung, là đánh giá sự
thích nghi của mỗi cá thể. Cá thể thích nghi tốt nhất là con chim sống sót cuối cùng
và ngược lại.
Bước 5: Quay lại bước 2.
V. Fitness Function

Ở đây chúng ta sẽ đi tìm hiểu chi tiết hơn về chức năng Fitness Function -
nó là gì và cách xác định nó.
Vì chúng ta muốn phát triển một dân số bằng cách sử dụng các đơn vị tốt
nhất, chúng ta cần xác định một Fitness Function.
Nói chung, chức năng của Fitness Function là số liệu để đo lường chất lượng của
một đối tượng. Khi có thước đo chất lượng cho mỗi con chim, chúng ta có thể chọn
những con phù hợp nhất và sử dụng chúng để tái sản xuất quần thể tiếp theo.
Trong dự án này, con chim nào đi được khoảng cách càng xa càng tốt và khoảng
cách từ vị trí hiện tại của nó đến khe hở tiếp theo phải càng gần càng tốt . Vì vậy
theo cách đó, chúng ta đang tạo ra sự khác biệt giữa những con chim di chuyển
cùng một khoảng cách.
Fitness Function nhận vào tổng khoảng cách đi được và khoảng cách từ ví
trí hiện tại dến khe hở gần nhất, sau đó trả về số liệu được tính bởi công thức:

fitness = total travelled distance - distance to the closest gap

Kết luận: Fitness Function là sự khác biệt giữa khoảng cách mà một con
chim đi được và khoảng cách từ vị trí hiện tại của nó đến khe hở tiếp theo.

Sau khi thực hiện Fitness Function (bước 3), chúng ta đã có dữ liệu đánh giá của
các unit (cụ thể là tổng đường đi được – quảng đường cần để đến ‘điểm’ tiếp theo) để tiến
hành Replacement Strategy (bước 4). Replacement Strategy có các nguyên tắc đặc
trưng thứ giúp chúng ta phân biệt Genetic algorithm với các giải thuật khác. Đó là
các nguyên tắc tiến hoá như di truyền, đột biến, chọn lọc tự nhiên và lai xa.

VI. Replacement Strategy


Bổ xung vào bước 4 của Genetic algorithm, đây là các bước nhắm tiến hóa dựa
trên quần thể đã gần bị loại bỏ. Về cơ bản, các unit tốt nhất được giữ lại và các đột
biến của chúng được thay thế cho các unit kém nhất trong quần thể theo cách này:

 1. Sắp xếp các unit trong quần thể dựa trên xếp hạng đánh giá fitness của
chúng.
 2. Chọn 4 units tốt nhất và chuyển trực tiếp vào quần thể kế tiếp (di truyền
có chọn lọc).
 3. Tạo 1-unit thông qua việc crossover 2 unit tốt nhất. (lai xa, đột biến).
 4. Tạo 3 units là các sản phẩm của quá trình crossover 2 units ngẫu nhiên
trong bộ 4 units tốt nhất (lai xa, đột biến).
 5. Tạo 2 units là bản sảo của 2 units ngẫu nhiên trong bộ 4 units tốt nhất (di
truyền có chọn lọc).
 6. Áp dụng các đột biến ngẫu nhiên trên mỗi đời con nhằm tạo thêm một số
biến dị (đột biến).

Đây là một ví dụ minh hoạ:

Tạo mới Step 1 Step 2 Step 3 Step 4 Step 5 Step 6

A -449/5 K K K K*

B -458/6 L L L*

C -467/7 M M M*

D -475/8 N N N*

E -336/4 E E E E E*

F -495/9 (G) (G)*

G 404/1 G G G G G*

H -515/10 (J) (J)*

I -259/3 I I I I I*

J -241/2 J J J J J*

NOTE:
- A đến J: là units mới tạo đầu tiên.
- -123/5: -123 là đánh giá fitness, 5 là xếp hạng theo đánh giá fitness trong
quần thể.
- E, G, I, J: là 4 units tốt nhất theo đánh giá fitness trong quần thể.
- K : là unit được tạo ra thông qua việc crossover 2 unit tốt nhất (G và J)
- L, M, N: là các sản phẩm của quá trình crossover 2 units ngẫu nhiên trong
bộ 4 units tốt nhất.
- Ở bước 5, (G) và (J) 2 units là bản sảo của 2 units ngẫu nhiên trong bộ 4
units tốt nhất (trong trường hợp này là G và J).
- X*: là biến dị được tạo ra sau khi thực hiện một số đột biến trên X.

You might also like