Tải bản đầy đủ (.docx) (13 trang)

Đề Tài Tìm hiểu hệ mô phỏng mạng OMNeT++ và mô phỏng ứng dụng UDPClient/Sever

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (477.75 KB, 13 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THƠNG
**********

Báo cáo bài tập lớn
Mơn Học sâu và ứng dụng
ĐỀ TÀI: Sử dụng mạng CNN phân loại chữ số viết tay

Giảng viên hướng dẫn : TS. Trịnh Anh Phúc
Sinh viên thực hiện

:

Hà Nội, 12 – 2020


MỤC LỤC
Lởi cảm ơn......................................................................................................................... 3
Phần mở đầu....................................................................................................................... 4
Phần nội dung.................................................................................................................... 5
1. Mơ tả bài tốn............................................................................................................ 5
2. Giới thiệu mơ hình..................................................................................................... 5
2.1. Tổng quan kiến trúc mạng mơ hình sử dụng.................................................................................... 5
2.2. Lớp 2.................................................................................................................................................. 6
2.3. Lớp 3.................................................................................................................................................. 6
2.4. Lớp 4.................................................................................................................................................. 6
2.5. Lớp 5.................................................................................................................................................. 6
2.6. Lớp 6.................................................................................................................................................. 6
2.7. Lớp 7.................................................................................................................................................. 6

3. Bộ dữ liệu hình ảnh.................................................................................................... 7


4. Kết quả thực nghiệm.................................................................................................. 9
4.1. Cấu hình Google Colab...................................................................................................................... 9
4.2. Cấu hình phần mềm.......................................................................................................................... 9
4.3. Độ đo đánh giá................................................................................................................................ 10
4.4. Hàm mất mát................................................................................................................................... 10
4.5. Thời gian train, test......................................................................................................................... 11

Phần kết luận.................................................................................................................... 13


Lởi cảm ơn
Lời đầu tiên cho phép chúng em được gửi lời cảm ơn tới thầy Trịnh Anh Phúc giảng viên
môn Học sâu và ứng dụng, cảm ơn thầy đã dạy cho chúng em những kiến thức rất hay về
Deep Learning, cảm ơn thầy vì những tiết học nhiều kiến thức nhưng cũng đầy thư giãn,
mang lại cho chúng em niềm say mê học tập để có thể hồn thành bài tập lớn của môn
học.
Tuy nhiên, với những kiến thức cơ bản học được, bài tập lớn của chúng em chắc chắn
vẫn cịn tồn tại nhiều sai sót, rất mong nhận được các góp ý từ thầy.
Em xin chân thành cảm ơn!


Phần mở đầu
Hiện nay, thuật ngữ Deep Learning đang trở nên phổ biến. Deep Learning – học sâu là
một tập hợp các các máy học nơi các mạng nơ-ron nhân tạo, các thuật tốn mơ phỏng bộ
não con người, học hỏi từ một lượng lớn dữ liệu.
Mỗi ngày chúng ta tạo ra khoảng 2.6 nghìn tỷ bytes dữ liệu, đó chính là nguồn học của
các thuật tốn học sâu. Vì vậy, học sâu trong những năm gần đây đã có những bước phát
triển như vũ bão, một số ví dụ trong thực tế của học sâu: trợ lý ảo, các ứng dụng tự động
dịch giữ các ngôn ngữ, nhận diện khn mặt, xe tự hành,…
Để có những hiểu biết về các mạng học sâu, trong khuôn khổ môn học Học sâu và ứng

dụng, chúng em lựa chọn đề tài sử dụng mạng CNN để nhận diện chữ số viết tay.

Phần nội dung
1. Mơ tả bài tốn
Nhận diện chữ số viết tay sử dụng bộ dữ liệu MNIST. Bộ dữ liệu gồm 70000 mẫu dữ liệu
về các chữ số từ 0 đến 9. Mơ hình được huấn luyện với 60000 mẫu dữ liệu và được kiểm
tra bằng 10000 mẫu dữ liệu cịn lại. Bài tốn nhận diện chữ số viết tay đọc dữ liệu ảnh
đầu vào là ảnh của chữ số cần đốn nhãn, sử dụng mơ hình đã được huấn luyện để dự
đốn nhãn cho ảnh đó.

2. Giới thiệu mơ hình
2.1. Tổng quan kiến trúc mạng mơ hình sử dụng
LeNet-5 là một kiến trúc mạng CNN cũ, được phát triển vào năm 1998 bởi Andre LeCun,
Leon Bottou, Yoshua Bengio, và Patrick Hafner. LeNet-5 được dùng cho nhận dạng chữ
viết tay và trở thành cơ sở thiết kế cho các mạng lớn hơn sau này.
Trong bài này, chúng em sử dụng kiến trúc mạng Lenet-5 nhưng có một chút thay đổi, cụ
thể là thay lớp AVG Pooling bằng lớp Max Pooling và hàm kích hoạt sau các tầng tích
chập và tầng kết nối đầy đủ là ReLU.
Kiến trúc mơ hình:


2.1 Lớp 1
Lớp đầu tiên là lớp tích chập nhận đầu vào là ảnh kích thước 28x28x1. Nó sử dụng 6 hạt
nhân kích thước 5x5x1, thực hiện tích chập padding “same”, bước nhảy bằng 1 tạo ra một


tensor kích thước 28x28x6. Tensor này được chuyển qua một hàm kích hoạt ReLU, sau
đó trở thành đầu vào cho lớp 2.

2.2. Lớp 2

Lớp 2 là lớp gộp max pooling, nhận đầu vào là tensor kích thước 28x28x6. Lớp này
thực hiện lấy mẫu con không đệm, bằng cách sử dụng hạt nhân kích thước 2x2 với bước
nhảy là 2 tạo ra tensor kích thước 14x14x6 đi tới lớp 3 trở thành đầu vào.

2.3. Lớp 3
Lớp 3 là lớp tích chập, đầu vào là tenensor kích thước 14x14x6. Lớp này sử dụng 16 hạt
nhân kích thước 5x5x6, thực hiện tích chập khơng đệm, bước nhảy bằng 1 thu được
tensor kích thước 10x10x16, tensor này được đưa qua hàm kích hoạt ReLU và trở thành
đầu vào cho lớp tiếp theo.

2.4. Lớp 4
Lớp 4 là một lớp gộp max pooling, đầu vào của nó là tensor 10x10x16 kích thước hạt
nhân 2x2 bước nhảy bằng 2. Đầu ra của lớp này là tensor 5x5x16.

2.5. Lớp 5
Lớp 5 là kết nối đầy đủ (Dense), nhận đầu vào là một vector được duỗi ra từ tensor
5x5x16 (đầu ra của lớp 4), hàm kích hoạt ReLU, đầu ra là 1 vector kích thước 120 .

2.6. Lớp 6
Lớp 6 là một lớp kết nối đầu đủ, vector đầu vào kích thước 120, hàm kích hoạt ReLU,
vector đầu ra kích thước 84

2.7. Lớp 7
Lớp 7 là lớp kết nối đầu đủ, lấy đầu ra của lớp 6 làm đầu vào, sử dụng kích hoạt softmax
để tiến hành phân loại cho 10 lớp tương ứng 10 node đầu ra.


Tổng kết các lớp:
1:
convolutiona

l layer
2: max
pooling
3:
convolutiona
l layer
4: max
pooling
5: full
connected
6:full
connected
7: full
connected

28x28x1
6 kernel (5,5)
padding=”same”
stride=1
activate fuction: ReLU
28x28x6
kernel(2,2)
padding=0
stride=2
14x14x6
16 kernel (5,5)
padding=0
stride=1
activate function: ReLU
10x10x16

kernel (2,2)
padding=0
stride=2
400(=5x5x16)
activate function: ReLU
120
activate function: ReLU
84
activate function: ReLU

28x28x6

Parameters
6x5x5x1+6
=156

14x14x6

-

10x10x16

16x5x5x6+16
=2416

5x5x16

-

120


120x400+120
=48120
84x120+84
=10164
84x10+10
=850
61706

84
10
Tổng

Operations
(5x5x1)x(28x28x6)
=117600

(5x5x6)x(10x10x16
)
=240000

120x400
=48000
120x84
=10080
84x10
=840
416520

3. Bộ dữ liệu hình ảnh

Trong bài toán này sử dụng bộ dữ liệu MNIST là bộ cơ sở về chữ số viết tay, được cải
biên từ bộ cơ sở dữ liệu gốc của NIST giúp dễ sử dụng hơn. MNIST là tập hợp gồm
70000 mẫu ảnh chứa dữ liệu về các chữ số viết tay từ 0 đến 9. Trong đó dữ liệu huấn
luyện là 60000 và dữ liệu test là 10000 mẫu ảnh. Mỗi mẫu ảnh gồm 2 phần là một hình
ảnh grayscale của một kí tự chữ số kích thước 28x28 và một nhãn tương ứng với nó.


Hình 1: Một số hình ảnh về mẫu dữ liệu của MNIST

Thống kê trên hai tập train, test:
Chữ số
0
1
2
3
4
5
6
7
8
9
Tổng

Tập train
Số lượng mẫu
5923
6742
5958
6131
5842

5421
5918
6265
5851
5949
60000

Chữ số
0
1
2
3
4
5
6
7
8
9
Tổng

Tập test
Số lượng mẫu
980
1135
1032
1010
982
892
958
1028

974
1009
10000


Hình 2: Biểu đồ thống kê trên 2 tập train, test của MNIST

4. Kết quả thực nghiệm
4.1. Cấu hình Google Colab:
Cấu hình phần cứng Google colab:
-

GPU: Tesla K80, driver version 418.67, memory 11441 MiB
CPU: Single core Intel Xeon (-MT-) cache: 56320 KB
clock speeds: max: 2200 MHz 1: 2200 MHz 2: 2200 MHzMemory: 13 GB

4.2. Cấu hình phần mềm:
Sử dụng bộ thư viện Keras với các module sau:
-

keras.datasets.mnist
keras.layers.Conv2D
keras.layers.MaxPooling2D
keras.layers.Dense
keras.layers.Flatten
keras.models.Sequential
Keras.utils.np_utils

Sử dụng bộ thư viện bổ sung sau:
-


matplotlib.pyplot


-

numpy

4.3. Độ đo đánh giá
Có nhiều cách để đánh giá một mơ hình phân lớp: accuracy score, confusion matrix, ROC
curve, Area Under the Curve, Precision and Recall, F1 score, Top R error,… Tuy nhiên,
để cho đơn giản, trong bài toán này, chúng em sử dụng accuracy score (độ chính xác).
Đây là cách đánh giá dựu trên tỉ lệ giữa số dự đoán đúng trên tổng số dự đoán trong tập
test.

4.4. Hàm mất mát
Các nhãn trong bài toán được chuyển đổi về dạng one-hot vector:

Hàm activation tại lớp cuối cùng là hàm softmax: nhận đầu vào là một mảng số thực và
đầu ra là một phân phối xác suất với mỗi phần tử nằm trong khoảng [0, 1] và tổng các
phần tử bằng 1. Giá trị của label dạng one-hot và kết quả dự đốn sau hàm softmax là có
cùng kích thước.


Hàm “categorical_crossentropy“ trong Keras:
M

L=−∑ y i log ( y^ i )
i


Với ^y là giá trị nhãn mà mơ hình dự đoán ra, y là nhãn thực, M là số lượng lớp dữ liệu.
Hàm này tính tốn độ chênh lệch giữa giá trị dự đoán và nhãn thực của dữ liệu. Giá trị L
càng nhỏ thì model dự đốn càng gần với giá trị thực

4.5. Thời gian train, test
Trainning tập dữ diệu huấn luyện 60000 mẫu dữ liệu với batch-size=32, epoch=20 hết
100s 60ms thu được độ chính xác training accuracy=0.9945.
Thời gian test 10000 mẫu dữ liệu hết 1s, độ chính xác testing accuracy=0.9847, test loss
là 0,0769. Một số hình ảnh dự đoán sai:



Phần kết luận
Mơ hình sau khi chỉnh sửa so với mơ hình gốc có tỉ lệ lỗi khá cao 1,53%, cần có
những tìm hiểu sâu hơn để cải tiến mơ hình. Tuy nhiên về cơ bản, chúng em đã hiểu
được các tầng trong mơ hình gốc và có thể tùy biến mơ hình theo ý, từ đó có thể tự tạo
ra các mơ hình phục vụ cho các bài tốn khác nhau trong tương lai.



×