You are on page 1of 24

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT

THÀNH PHỐ HỒ CHÍ MINH


KHOA ĐÀ O TẠO CHẤT LƯỢNG CAO


BÁO CÁO MÁY HỌC

BÁO CÁO CUỐI KỲ

SVTH: PHẠM TRÍ NHÂN


MSSV: 16141359
Khoá: 16
Ngành: Công nghệ kỹ thuật Điện tử - Truyền thông

Tp. Hồ Chí Minh, tháng 11 năm 2019

1
MỤC LỤC
MỤC LỤC ............................................................................................................. 2
BÀI 1: MẠNG NEURAL ..................................................................................... 3
BÀI 2: ĐÁNH GIÁ HỆ THỐNG PHÂN LỚP ................................................... 8
BÀI 3: PHƯƠNG PHÁP PCA ........................................................................... 13
BÀI 4: NHẬN DIỆN ẢNH BẰNG CNN ........................................................... 17
BÀI 5: REINFORCEMENT Q-LEARNING................................................... 21

2
BÀI 1: MẠNG NEURAL
1. Vấn đề:
Cần nhận biết 2 loại hoa bằng mạng neural dựa theo 2 đặc trưng của loại
hoa đó, dựa theo cấu trúc mạng neural viết chương trình sao cho máy tính có thể
nhận biết được và phân loại 2 loại hoa đó.
Mạng nơ-ron nhân tạo (Neural Network - NN) là một mô hình lập trình rất
đẹp lấy cảm hứng từ mạng nơ-ron thần kinh. Kết hợp với các kĩ thuật học sâu
(Deep Learning - DL), NN đang trở thành một công cụ rất mạnh mẽ mang lại hiệu
quả tốt nhất cho nhiều bài toán khó như nhận dạng ảnh, giọng nói hay xử lý ngôn
ngữ tự nhiên. Kiến trúc chung của một mạng nơron nhân tạo (NN) gồm 3 thành
phần đó là: Input Layer, Hidden Layer và Output Layer.
Một mạng NN sẽ có 3 kiểu tầng:
 Tầng vào (input layer): Là tầng bên trái cùng của mạng thể hiện cho các đầu
vào của mạng.
 Tầng ra (output layer): Là tầng bên phải cùng của mạng thể hiện cho các đầu
ra của mạng.
 Tầng ẩn (hidden layer): Là tầng nằm giữa tầng vào và tầng ra thể hiện cho
việc suy luận logic của mạng.
Trong đó, lớp ẩn (Hidden Layer) gồm các Nơron nhận dữ liệu input từ các
Nơron ở lớp (Layer) trước đó và chuyển đổi các input này cho các lớp xử lý tiếp
theo. Trong một NN có thể có nhiều lớp ẩn.

Hình 1 Mô phỏng mạng Neural

3
Trong đó các Processing Elements (PE) của NN gọi là Nơron, mỗi
Nơron nhận các dữ liệu vào (Inputs) xử lý chúng và cho ra một kết quả (Output)
duy nhất. Kết quả xử lý của một Nơron có thể làm Input cho các Nơron khác.
- Quá trình xử lý thông tin của một NN:

Hình 2 Sơ đồ khối quá trình xử lý thông tin của một mạng Neural
+ Inputs (dữ liệu vào): Mỗi Input tương ứng với 1 thuộc tính (attribute) của
dữ liệu (patterns).
+ Output (kết quả): Kết quả của một NN là một giải pháp cho một vấn đề.
+ Connection Weights (Trọng số liên kết) : Đây là thành phần rất quan trọng
của một NN, nó thể hiện mức độ quan trọng (độ mạnh) của dữ liệu đầu vào đối với
quá trình xử lý thông tin (quá trình chuyển đổi dữ liệu từ Layer này sang layer
khác). Quá trình học (Learning Processing) của NN thực ra là quá trình điều chỉnh
các trọng số (Weight) của các input data để có được kết quả mong muốn.
+ Summation Function (Hàm tổng): Tính tổng trọng số của tất cả các input
được đưa vào mỗi Nơron (phần tử xử lý PE). Hàm tổng của một Nơron đối với n
input được tính theo công thức sau:

+ Transfer Function (Hàm chuyển đổi): Hàm tổng (Summation Function)


của một Nơron cho biết khả năng kích hoạt (Activation) của Nơron đó còn gọi là
kích hoạt bên trong (internal activation). Các Nơron này có thể sinh ra một output
hoặc không trong NN (nói cách khác rằng có thể output của 1 Nơron có thể được
chuyển đến layer tiếp trong mạng Nơron hoặc không). Mối quan hệ giữa Internal
Activation và kết quả (output) được thể hiện bằng hàm chuyển đổi (Transfer
Function).

4
Hình 3 Mối quan hệ giữa việc kích hoạt từ bên trong và kết quả ngõ ra
Việc lựa chọn Transfer Function có tác động lớn đến kết quả của NN. Hàm
chuyển đổi phi tuyến được sử dụng phổ biến trong NN là sigmoid (logical
activation) function.
YT = 1/(1 + e-Y)
Trong đó :
YT: Hàm chuyển đổi
Y: Hàm tổng
Kết quả của Sigmoid Function thuộc khoảng [0,1] nên còn gọi là hàm chuẩn
hóa (Normalized Function).
Kết quả xử lý tại các Nơron (Output) đôi khi rất lớn, vì vậy transfer function
được sử dụng để xử lý output này trước khi chuyển đến layer tiếp theo. Đôi khi
thay vì sử dụng Transfer Function người ta sử dụng giá trị ngưỡng (Threshold
value) để kiểm soát các output của các Nơron tại một layer nào đó trước khi chuyển
các output này đến các Layer tiếp theo. Nếu output của một nơron nào đó nhỏ hơn
giá trị ngưỡng thì nó sẽ không được chuyển đến Layer tiếp theo.
2. Phương pháp:
 Cần xác định số lớp của mạng:
 Ở đây ta sử dụng mô hình neural có 1 lớp vào 1 lớp ẩn và 1 lớp ngõ ra.
 Tại lớp vào bao gồm 2 nút tương đương với 2 đặc trưng của loại hoa đó.
 Tại lớp ẩn cũng bao gồm 2 nút.
 Riêng tại lớp ngõ ra vì chỉ cần nhận biết 1 trong 2 loại hoa nên ta chỉ cần
1 nút.
 Lấy các tham số tượng trưng cho 2 đặc trưng của 2 loại hoa đó bằng các
lệnh:
x1=xlsread('inis_flower.xls','sheet1','B1:B70');
x2=xlsread('inis_flower.xls','sheet1','C1:C70');
d1=xlsread('inis_flower.xls','sheet1','G1:G70');
 Sau đó, cần tạo 2 trọng số random và điều chỉnh tốc độ học cho chương
trình bằng các lệnh:
w10 = rand(2,2);
w21 = rand(1,2);
eta=0.01;
5
mse=1;
ite=0;
e=[];
 Tìm ngõ vào lớp ẩn bằng công thức:
net11=w10(1,1)*x1(p)+w10(1,2)*x2(p);
net12=w10(2,1)*x1(p)+w10(2,2)*x2(p);
 Tìm ngõ ra lớp ẩn bằng công thức:
x11=sigf(net11);
x12=sigf(net12);
 Tìm ngõ vào lớp ra bằng công thức:
net21=w21(1)*x11+w21(2)*x12;
 Tìm ngõ ra lớp ra bằng công thức:
o1=sigf(net21);
 Tiếp theo cần cập nhật lại các trọng số lớp ngõ ra:
dw21(1)=eta*(d1(p)-o1)*o1*(1-o1)*x11;
dw21(2)=eta*(d1(p)-o1)*o1*(1-o1)*x12;
w21=w21+dw21;
 Sau đó cần cập nhật lại các trọng số lớp ngõ vào và lớp ẩn:
dw10(1,1)=eta*(d1(p)-o1)*o1*(1-o1)*w21(1)*x11*(1-x11)*x1(p);
dw10(1,2)=eta*(d1(p)-o1)*o1*(1-o1)*w21(1)*x11*(1-x11)*x2(p);
dw10(2,1)=eta*(d1(p)-o1)*o1*(1-o1)*w21(2)*x12*(1-x12)*x1(p);
dw10(2,2)=eta*(d1(p)-o1)*o1*(1-o1)*w21(2)*x12*(1-x12)*x2(p);
w10=w10+dw10;
e(p)= abs(o1-d1(p));

 Cuối cùng sau khi training cho máy học đến khi kết quả độ chính xác trả về
đạt giá trị là 0.01 (độ chính xác tối thiểu cần để nhận biết đúng 2 loại hoa vì
độ chênh lệch giữa các đặc trưng hay các tham số của hoa có độ chênh lệch
là 0.1) rồi thực hiện chạy code testing để xem kết quả của việc training có
cho ra kết quả đúng hay không dựa theo số liệu người dùng chọn:
x1=5.2;
x2=2.7;
3. Kết quả:

6
Inis Flower Versicolor!
e = 87.3143
acc = 12.6857

7
BÀI 2: ĐÁNH GIÁ HỆ THỐNG PHÂN LỚP
1. Vấn đề:
Sau khi xây dựng một mô hình nào đó, ta cần phải xét đến viếc đánh giá mô
hình đó so với các mô hình tương tự khác có hoạt động như thế nào. Những điều
chúng ta quan tâm đến một mô hình đó là khả năng hoạt động có chính xác, có
nhanh hay ổn định hay không.
Có rất nhiều phương pháp để đánh giá một mô hình. Ví dụ như Accuracy,
Confusion Matrix, ROC curve, Area Under the Curve, Precision and Recall, F1
score, Top R error, etc.,… Trong bài báo cáo này chúng ta sẽ xem xét và chạy mô
phỏng các vấn đề liên quan đến Accuracy và Confusion Matrix. Đây là 2 phương
pháp đơn giản nhất để đánh giá một hệ thống phân lớp.
Accuracy đơn giản tính tỉ lệ giữa số điểm được dự đoán đúng và tổng số
điểm trong tập dữ liệu kiểm thử.
Trong ví dụ này, ta có thể đếm được có 6 điểm dữ liệu được dự đoán đúng
trên tổng số 10 điểm. Vậy ta kết luận độ chính xác của mô hình là 0.6 (hay 60%).
Để ý rằng đây là bài toán với chỉ 3 class, nên độ chính xác nhỏ nhất đã là khoảng
1/3, khi tất cả các điểm được dự đoán là thuộc vào một class nào đó.
from __future__ import print_function

import numpy as np

def acc(y_true, y_pred):

correct = np.sum(y_true == y_pred)

return float(correct)/y_true.shape[0]

y_true = np.array([0, 0, 0, 0, 1, 1, 1, 2, 2, 2])

y_pred = np.array([0, 1, 0, 2, 1, 1, 0, 2, 1, 2])

print('accuracy = ', acc(y_true, y_pred))

accuracy = 0.6

Và đây là cách tính bằng thư viên:


from sklearn.metrics import accuracy_score

print('accuracy = ',accuracy_score(y_true, y_pred))

accuracy = 0.6

Cách tính sử dụng accuracy như ở trên chỉ cho chúng ta biết được bao nhiêu
phần trăm lượng dữ liệu được phân loại đúng mà không chỉ ra được cụ thể mỗi
loại được phân loại như thế nào, lớp nào được phân loại đúng nhiều nhất, và dữ
liệu thuộc lớp nào thường bị phân loại nhầm vào lớp khác. Để có thể đánh giá được
các giá trị này, chúng ta sử dụng một ma trận được gọi là confusion matrix.
8
Về cơ bản, confusion matrix thể hiện có bao nhiêu điểm dữ liệu thực
sự thuộc vào một class, và được dự đoán là rơi vào một class. Để hiểu rõ hơn, hãy
xem bảng dưới đây:
2. Total: 10 | Predicted | Predicted | Predicted |

3. | as: 0 | as: 1 | as: 2 |

4. -----------|-----------|-----------|-----------|---

5. True: 0 | 2 | 1 | 1 | 4

6. -----------|-----------|-----------|-----------|---

7. True: 1 | 1 | 2 | 0 | 3

8. -----------|-----------|-----------|-----------|---

9. True: 2 | 0 | 1 | 2 | 3

10. -----------|-----------|-----------|-----------|---

Có tổng cộng 10 điểm dữ liệu. Chúng ta xét ma trận tạo bởi các giá trị tại
vùng 3x3 trung tâm của bảng.
Ma trận thu được được gọi là confusion matrix. Nó là một ma trận vuông
với kích thước mỗi chiều bằng số lượng lớp dữ liệu. Giá trị tại hàng thứ i, cột
thứ j là số lượng điểm lẽ ra thuộc vào class i nhưng lại được dự đoán là thuộc vào
class j. Như vậy, nhìn vào hàng thứ nhất (0), ta có thể thấy được rằng trong số bốn
điểm thực sự thuộc lớp 0, chỉ có hai điểm được phân loại đúng, hai điểm còn lại bị
phân loại nhầm vào lớp 1 và lớp 2.
Chú ý: Có một số tài liệu định nghĩa ngược lại, tức giá trị
tại cột thứ i, hàng thứ j là số lượng điểm lẽ ra thuộc vào class i nhưng lại được dự
đoán là thuộc vào class j. Khi đó ta sẽ được confusion matrix là ma trận chuyển vị
của confusion matrix như cách tôi đang làm. Tôi chọn cách này vì đây chính là
cách thư viện sklearn sử dụng.
Chúng ta có thể suy ra ngay rằng tổng các phần tử trong toàn ma trận này
chính là số điểm trong tập kiểm thử. Các phần tử trên đường chéo của ma trận là
số điểm được phân loại đúng của mỗi lớp dữ liệu. Từ đây có thể suy
ra accuracy chính bằng tổng các phần tử trên đường chéo chia cho tổng các phần
tử của toàn ma trận. Đoạn code dưới đây mô tả cách tính confusion matrix:
11. def my_confusion_matrix(y_true, y_pred):

12. N = np.unique(y_true).shape[0] # number of classes

13. cm = np.zeros((N, N))

14. for n in range(y_true.shape[0]):

15. cm[y_true[n], y_pred[n]] += 1

16. return cm

17.

9
18. cnf_matrix = my_confusion_matrix(y_true, y_pred)

19. print('Confusion matrix:')

20. print(cnf_matrix)

21. print('\nAccuracy:', np.diagonal(cnf_matrix).sum()/cnf_matrix.sum())

22.

23. Confusion matrix:

24. [[ 2. 1. 1.]

25. [ 1. 2. 0.]

26. [ 0. 1. 2.]]

27.

28. Accuracy: 0.6

Cách biểu diễn trên đây của confusion matrix còn được gọi là unnormalized
confusion matrix, tức ma confusion matrix chưa chuẩn hoá. Để có cái nhìn rõ hơn,
ta có thể dùng normalized confuion matrix, tức confusion matrix được chuẩn hoá.
Để có normalized confusion matrix, ta lấy mỗi hàng của unnormalized confusion
matrix sẽ được chia cho tổng các phần tử trên hàng đó. Như vậy, ta có nhận xét
rằng tổng các phần tử trên một hàng của normalized confusion matrix luôn bằng 1.
Điều này thường không đúng trên mỗi cột. Dưới đây là cách tính normalized
confusion matrix:
29. normalized_confusion_matrix = cnf_matrix/cnf_matrix.sum(axis = 1, keepd
ims = True)

30. print('\nConfusion matrix (with normalizatrion:)')

31. print(normalized_confusion_matrix)

32. Confusion matrix (with normalizatrion:)

33. [[ 0.5 0.25 0.25 ]

34. [ 0.33333333 0.66666667 0. ]

35. [ 0.0.33333333 0.66666667]]

Và cách tính sử dụng thư viện:


36. from sklearn.metrics import confusion_matrix

37. cnf_matrix = confusion_matrix(y_true, y_pred)

38. print('Confusion matrix:')

39. print(cnf_matrix)

40. Confusion matrix:

41. [[2 1 1]
10
42. [1 2 0]

43. [0 1 2]]

2. Phương pháp:

Hình 4 Minh hoạ unnormalized confusion matrix và normalized confusion


matrix.
Với các bài toán với nhiều lớp dữ liệu, cách biểu diễn bằng màu này rất hữu
ích. Các ô màu đậm thể hiện các giá trị cao. Một mô hình tốt sẽ cho một confusion
matrix có các phần tử trên đường chéo chính có giá trị lớn, các phần tử còn lại có
giá trị nhỏ. Nói cách khác, khi biểu diễn bằng màu sắc, đường chéo có màu càng
đậm so với phần còn lại sẽ càng tốt. Từ hai hình trên ta thấy rằng confusion matrix
đã chuẩn hoá mang nhiều thông tin hơn. Sự khác nhau được thấy ở ô trên cùng bên
trái. Lớp dữ liệu 0 được phân loại không thực sự tốt nhưng trong unnormalized
confusion matrix, nó vẫn có màu đậm như hai ô còn lại trên đường chéo chính.
3. Kết quả:

11
12
BÀI 3: PHƯƠNG PHÁP PCA
1. Vấn đề:
PCA (Principle Components Analysic) là một thuật toán dưoc sử dụng để
tạo ra một änh mới từ ảnh ban đầu. Anh mới này có kích thước nhỏ hơn nhiều so
với ảnh ban dầu nhưng vân mang những dặc trưng cơ bản nhất của ảnh cần nhận
dạng. PCA không cấn quan tâm đến việc tìm ra các đặc điểm cụ thể của thực thể
cần nhận dạng và mối quan hệ giữa các đặc điểm đó. Tất cả các chi tiết đó đều
được thể hiện ở ảnh mới dược tạo ra từ PCA. Về bàn chất, PCA tìm ra một không
gian mới theo hướng biến thiên mạnh nhất của một tập hợp các vector trong không
gian cho trước. Trong không gian mới, người ta hi vọng rằng việc phân loại sẽ
mang lại kết quả tốt hơn so với không gian ban đầu.
2. Phương pháp:
Cấu trúc của hệ thống nhận dạng mặt người được thể hiện như sau:

Hình 5 Cấu trúc tổng quát của hệ thống nhận dạng khuôn mặt người
Face detection (Phát hiện khuôn mặt):
Ảnh đầu vào là ảnh chứa đối tượng gồm một hoặc nhiều người, với gương
mặt chinh diện hoặc tương đối chinh diện để hệ thống có thể phát hiện. Sau khi
phát hiện được ví trí và kích thước của một hoặc nhiều khuôn mặt, những khuôn
hình chứa mặt sẽ được cắt ra để tiến hanh quá trình tiền xử lý.

Preprocessing (Tiền xử lý):


Khối tiền xử lý sẽ xử lý những khuôn ảnh chứa mặt,chuẩn hóa kích thước
ảnh trong cơ sở dữ liệu và ảnh cần nhận dạng cùng một kích thước đã định trước,
làm giảm nhiễu, điều chỉnh độ sáng tối làm tăng chất lượng ảnh thuận tiện cho quá
trình trích thuộc tính đc chinh xác và dễ dàng hơn.

13
Feature extraction (Trích chọn đặc trưng):
Tìm ra các đặc trưng chính của ảnh mặt, từ các đặc trưng này hình thành
các vector đặc trưng,các vector này sẽ được sử dụng để đối sánh sự giống nhau
giữa ảnh mặt cần tìm và ảnh mặt trong CSDL.

Recognition (Nhận dạng):


Bước này thực hiện việc so sánh giữa cáccvector đặc trưng để chọn ra độ
tương tự giữa ảnh cần tìm và ảnh trong CSDL.

14
3. Kết quả:

Ta thấy sai số nhỏ nhất là 0,000993s với tốc độ học rất nhanh. Ngoài ra, chỉ
cần học 250 là xong.

15
Đây là kết quả trả về khi nhận diện đúng.
Khi không nằm trong tập tin được học thì cho ra kết quả là không xác định.

16
BÀI 4: NHẬN DIỆN ẢNH BẰNG CNN
1. Vấn đề:
Convolutional Neural Networks (CNN) là một trong những mô hình deep
learning phổ biến nhất và có ảnh hưởng nhiều nhất trong cộng đồng Computer
Vision. CNN được dùng trong trong nhiều bài toán như nhân dạng ảnh, phân tích
video, ảnh MRI, hoặc cho bài các bài của lĩnh vự xử lý ngôn ngữ tự nhiên,và hầu
hết đều giải quyết tốt các bài toán này.
2. Phương pháp:
Chúng ta tạo ra các tệp hình ảnh về các đối tượng cụ thể sao đó cho máy tự
động quét xem tất cả các tệp hình ảnh đó. Từ đó, máy tính sẽ chọn ra hình ảnh để
học và phân tích các đặc điểm của hình ảnh như hình dạng, độ sáng, …
Ta sử dụng mạng CNN với các thông số sau
Hàm model = Sequential(): để nói cho keras là ta sẽ xếp các layer lên nhau
để tạo model. Ví dụ input -> CONV -> POOL -> CONV -> POOL -> FLATTEN
-> FC -> OUTPUT.
Lớp Convolutional đầu tiên với 32 kernel, với kích thước 3*3, sử dụng hàm
kích hoạt relu.
Thêm 1 hàm Convolutional với các thông số tương tự.
Hàm MaxPooling2D với kích thước hàm pool 2*2.
Hàm Dropout với xác suất là 25%.
Hai Lớp Convolutional tiếp theo với 64 kernel, với kích thước 3*3, sử dụng
hàm kích hoạt relu .
Hàm Flatten dùng để chuyển tensor sang vector.
3. Kết quả:
Tập dữ liệu gồm: 5 loại trái cây có tổng cộng 2301 hình ảnh và lấy ra 576
hình dùng để train cho hệ thống
Tập test dữ liệu gồm: 25 hình ảnh
Các thông số sử dụng trong mô hình gồm: sai số training (train_loss), độ
chính xác (train_acc), giá trị sai số (val_loss), giá trị chính xác (val_acc)
Số chu kỳ học: 10 lần
Tốc độ học: 0.001s

[INFO] evaluating network...


precision recall f1-score support
Apple Red Yellow 2 1.00 1.00 1.00 136
Banana 1.00 1.00 1.00 94
Carambula 1.00 1.00 1.00 97
Kaki 1.00 1.00 1.00 95
Walnut 1.00 1.00 1.00 154
accuracy 1.00 576
macro avg 1.00 1.00 1.00 576
weighted avg 1.00 1.00 1.00 576
Nhận xét:
17
 Độ chính xác cao với thông số chính xác là 99,74%.
 Giá trị chính xác đều đạt mức 1.
 Giá trị sai số khi training xong là 1.5780e-05 cho thấy giá trị sai số rất nhỏ.
Kết quả:

18
 Tốc độ nhận biết nhanh cứ mỗi 0.005~0.008 giây cho mỗi hình.
 Nhận biết đúng hết 5 hình trái Banana, Kaki, Walnut.
19
 Các trái còn lại đều nhận biết sai nhất là trái Chestnut là không nhận ra hình
nào, trái apple red yellow nhận biết đúng 1 hình.
 Tăng chu kỳ học có thể học được đúng hơn nhưng tăng chu kỳ học có thể
dẫn đến học sai như lần thứ 18, hệ thống kh6ong học được.
 Hệ thống tuy cho ra độ chính xác cao nhưng khi cho chạy tập test thử thì
không nhận biết đúng so với kết quả train cho thấy hệ thống chưa đủ tin cậy
trong việc học và nhận biết hình ảnh, với các loại trái cây có kiểu dáng và
hình dạng gần như nhau thì hệ thống rất dễ nhận biết sai.
Hệ thống tuy cho ra độ chính xác cao nhưng khi cho chạy tập test thử thì
không nhận biết đúng so với kết quả train cho thấy hệ thống chưa đủ tin cậy trong
việc học và nhận biết hình ảnh, với các loại trái cây có kiểu dáng và hình dạng gần
như nhau thì hệ thống rất dễ nhận biết sai.

20
BÀI 5: REINFORCEMENT Q-LEARNING
1. Vấn đề:
Liên quan đến RL thì chúng ta không thể không nói đến lĩnh vực game và
robot. Học tăng cường (Reinforcement Learning-RL) là một trong ba kiểu học máy
chính bên cạnh học giám sát (Supervised Learning) và học không giám sát
(Unsupervised Learning). Bản chất của RL là trial-and-error, nghĩa là thử đi thử
lại và rút ra kinh nghiệm sau mỗi lần thử như vậy. Gần đây, RL đã đạt được những
thành tựu đáng kể khi các thuật toán của DeepMind (AlphaGo, AlphaZero,
AlphaStar,...) đã chiến thắng áp đảo các tuyển thủ thế giới trong những trò chơi
mà con người đã từng nghĩ rằng máy móc sẽ không bao giờ có thể vượt mặt như
cờ vây hay StarCraft.
Nói về robot, thì RL hỗ trợ rất nhiều trong lĩnh vực này. Ví dụ, để cho một
chú robot có thể biết đường thoát khỏi một mê cung với con đường nhanh nhất thì
RL là phương pháp tốt nhất để dạy cho chú robot này. Lại nói về RL thì gồm 7
khái niệm chính: Agent, Environment, State, Action, Reward, Episode, Policy.
2. Phương pháp:
Để dễ hiểu hơn, mình sẽ lấy ví dụ về một con robot tìm đường như hình
dưới:

Nhiệm vụ của con robot - Agent - là đi đến ô đích màu xanh, tránh ô phạt
màu đỏ và ô xám là chướng ngại vật không được phép đi vào. Agent tương tác
với Environment bằng các Actions trái/ phải/ lên/ xuống. Sau mỗi action,
environment trả lại cho agent một State (ở ví dụ này là vị trí của robot)
và Reward tương ứng với state đó (+1 nếu đi vào xanh, -1 nếu đi vào ô đỏ và 0 nếu
ở ô trắng). Khi agent đến ô xanh hoặc đỏ trò chơi kết thúc; một loạt các tương tác
giữa agent và environment từ thời điểm bắt đầu đến lúc này được gọi là
một Episode. Trong một episode, agent sẽ cố gắng chọn ra các actions tối ưu để

21
tối đa hóa reward nhận được sau mỗi episode. Cách mà agent chọn những actions
đó là Policy; ví dụ: "đi ngẫu nhiên", "đi men theo rìa" hoặc "hướng về ô đích". Có
thể thấy policy cũng có policy này và policy kia; mục đích của RL là tìm ra policy
tốt nhất. Hình dưới đây mô tả tương tác giữa Agent - Environment:

Công thức tính Q:


Q(state, action) = R(state,action) + Gamma*Max[Q(next state, all actions)]
Trong bài báo cáo này sử dụng code để tìm đường cho chú ong và con người
có tìm đến nhau và ngược lại là để chú ong thoát khỏi khói cũng như con người.
3. Kết quả:

Người tìm tới ong:


22
[[0. 64. 0. 0. 0. 0. 0. 0.]
[51. 0. 80. 0. 0. 51. 0. 0.]
[0. 64. 0. 64. 0. 0. 0. 100.]
[0. 0. 80. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 51. 0. 0.]
[0. 64. 0. 0. 41. 0. 41. 0.]
[0. 0. 0. 0. 0. 51. 0. 0.]
[0. 0. 80. 0. 0. 0. 0. 100.]]
[0, 1, 2, 7]

Ong trốn khỏi người:


[[0. 64. 0. 0. 0. 0. 0. 0.]
[51. 0. 80. 0. 0. 51. 0. 0.]
[0. 64. 0. 100. 0. 0. 0. 64.]
[0. 0. 80. 100. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 51. 0. 0.]
[0. 64. 0. 0. 41. 0. 41. 0.]
[0. 0. 0. 0. 0. 51. 0. 0.]
[0. 0. 80. 0. 0. 0. 0. 0.]]
[7, 2, 3]

23
24

You might also like