Tải bản đầy đủ (.pdf) (64 trang)

Tìm hiểu deep learning và xây dựng ứng dụng minh họa điểm danh bằng gương mặt với tensorflow

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 (1.45 MB, 64 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

BÁO CÁO ĐỒ ÁN MÔN HỌC

Đồ án 2 - SE122.L11.PMCL
Đề tài: Tìm hiểu deep learning và xây dựng
ứng dụng minh họa điểm danh bằng gương
mặt với Tensorflow

GVHD: ThS. Nguyễn Công Hoan
Sinh viên thực hiện:
Lý Hiền Phúc – 17520904
Lê Đình Trọng Nghĩa – 17520798


LỜI CẢM ƠN
Nhóm em xin phép được gửi lời cảm ơn chân thành đến thầy Nguyễn Công Hoan đã tư
vấn, hướng dẫn, hỗ trợ nhóm em thực hiện đề tài này.
Bên cạnh đó, xin chân thành cảm ơn các anh, chị cùng các bạn đã nhiệt tình hỗ trợ nhóm
với những khó khăn, bỡ ngỡ phát sinh trong suốt quá trình thực hiện đồ án khi làm việc
với model và tensorflow.

1


MỤC LỤC

Contents
1. Mục đích



5

2. Machine learning là gì ?

6

3. Cách thức hoạt động của máy học

8

4. Các kiểu máy học

10

5. Reinforcement machine learning

12

6. Deep learning

13

7. Neural Network

14

8. Lịch sử phát triển

16


9. Ứng dụng

22

10. CONVOLUTIONAL NEURAL NETWORK

23

11. TỔNG QUAN VỀ BÀI TỐN NHẬN DIỆN KHN MẶT

29

12. Mơ tả u cầu

34

13. Sơ đồ hoạt động ứng dụng

37

14. Sơ đồ use case

38

15. Sơ đồ lớp

40

16. Thiết kế API


41

17. Thiết kế CSDL

43

18. Thiết kế giao diện

44

19. Hướng dẫn cài đặt

55

20. Công nghệ sử dụng

57

21. Hướng phát triển

62

22. Tài liệu tham khảo

63

23. Bảng phân công công việc

64


2


1. Mục đích
Trong thời kỳ cơng nghệ ngày càng phát triển mạnh mẽ, ngày càng nhiều các
nghiên cứu được ra đời nhằm giải quyết các bài toán thực tiễn, phục vụ, xây dựng
và phát triển đời sống, xã hội con người văn minh, hiện đại.
Trong số đó phải kể đến công nghệ máy học, dưới sự phát triển mạnh mẽ của các
máy móc, thiết bị xử lý tính tốn. Vận dụng lợi thế phát triển đó, máy học đã trở lại
và phát triển mạnh mẽ hơn bao giờ hết, trở thành một trong những xu hướng của thế
kỷ, mở ra nhiều ứng dụng, giải pháp mạnh mẽ, linh hoạt giúp ích cho con người.
Nắm bắt được sự phát triển đó, nhóm em mong muốn được có cơ hội tiếp xúc, tìm
hiểu về máy học. Xây dựng và đưa ra những sản phẩm có ích, thiết thực cho đời
sống. Vì vậy, nhóm em đi đến ý tưởng thực hiện một phần mềm điểm danh ứng
dụng công nghệ nhận diện gương mặt. Cơng nghệ nhận diện gương mặt với độ
chính xác cao rất thích hợp để làm sản phẩm điểm danh nhận diện gương mặt bởi lẽ
phương pháp này có thể thay thế phương pháp sử dụng thẻ từ truyền thống có thể
dẫn đến hiện tượng gian lận, hay ưu điểm hơn phương pháp sử dụng vân tay ở điểm
là có thể hạn chế sự tiếp xúc lên cùng một bề mặt, nhất là trong thời gian khủng
hoảng đại dịch như hiện nay.

3


2. Machine learning là gì ?
2.1/ Định nghĩa:
Machine learning là 1 nhánh của trí tuệ nhân tạo tập trung vào việc xây dựng, phát
triển các ứng dụng có khả năng tự học hỏi từ tri thức và gia tăng độ chính xác theo
thời gian.

Trong khoa học dữ liệu, một thuật tốn là một chuỗi các bước xử lý tính tốn thống
kê. Trong máy học, các thuật toán sẽ được “huấn luyện” để tìm các đặc trưng hay
các đặc điểm chung từ một khối lượng dữ liệu lớn để có thể dựa vào đó, đưa ra các
quyết định và các dự đoán dựa trên những dữ liệu mới. Thuật toán càng xử lý nhiều
dữ liệu thì sẽ càng “thơng minh” hơn và các quyết định và các dự đoán được đưa ra
cũng sẽ chính xác hơn.
2.2/ Biểu diễn
Biểu diễn (tiếng Anh: representation) là một trong những vấn đề quan trọng của học
máy. Biểu diễn ở đây có thể hiểu làm sao ghi mã (encode) những thông tin của thế
giới thật giúp hoàn thành nhiệm vụ một cách hiệu quả và đầy đủ nhất có thể. Thơng
tin ở đây bao hàm cả thông tin về dữ liệu đầu vào, đầu ra hay các trạng thái của hệ
thống; cũng như cách đánh giá hiệu quả của chương trình.
Thơng thường, trong học máy người ta hay xây dựng các mơ hình sử dụng những
biến cho việc biểu diễn dữ liệu và nội trạng thái của hệ thống. Ví dụ: dùng biến để
biểu thị cho tính chất của email là spam (tương ứng giá trị 0) hay là bình thường
(tương ứng 1). Mối tương quan giữa các biến này có thể sử dụng ví dụ như mơ hình
xác suất dạng đồ thị để miêu tả. Mặt khác, để đo hiệu quả có thể dùng các hàm thiệt
hại (hay hàm tiện ích, trong tiếng Anh là loss function và utility function tương
ứng).
2.3/ Tính phổ quát
Một trong những trọng tâm khác của học máy là đạt được tính phổ qt (tiếng Anh:
generalization), nói cách khác là tính chất của chương trình có thể làm việc tốt với
dữ liệu mà nó chưa gặp bao giờ (tiếng Anh: unseen data). Một chương trình chỉ hiệu
quả với dữ liệu đã gặp nhìn chung khơng có nhiều tính hữu dụng.

4


Lấy ví dụ về xếp thư điện tử tự động, một hệ thống tự động sau khi trải qua quá
trình học từ dữ liệu ("training") có thể suy diễn một số nguyên tắc riêng (chẳng hạn

như xem xét nội dung: nếu thư được viết bằng tiếng Anh mà chứa một số từ như
"porn", "sell", "good product" hoặc người gửi đến từ Somalia trong khi người nhận
ở Hà Nội không thân quen nhau) để quyết định xem có phải là thư rác hay không.
Tuy nhiên, nếu như trong dữ liệu bài giảng (training data) có ngơn ngữ khác trong
thực tế (tiếng Việt thay vì tiếng Anh) hoặc thậm chí khơng phải dạng thuần văn bản
(dạng ảnh khiến cho bóc tách nội dung khó hơn hoặc khơng thể) thì rất có thể máy
sẽ dự báo khơng chính xác nữa.
Một số chương trình có thể tự động cập nhật trong thời gian thực (ví dụ như người
sử dụng có chỉ ra rằng thư bị sắp xếp sai danh mục).
2.4/ Tương tác với con người
Một số hệ thống học máy nỗ lực loại bỏ nhu cầu trực giác của con người trong việc
phân tích dữ liệu, trong khi các hệ thống khác hướng đến việc tăng sự cộng tác giữa
người và máy. Không thể loại bỏ hồn tồn tác động của con người vì các nhà thiết
kế hệ thống phải chỉ định cách biểu diễn của dữ liệu và những cơ chế nào sẽ được
dùng để tìm kiếm các đặc tính của dữ liệu. Học máy có thể được xem là một nỗ lực
để tự động hóa một số phần của phương pháp khoa học. Một số nhà nghiên cứu học
máy tạo ra các phương pháp bên trong các khuôn khổ của thống kê Bayes.
2.5/ Tương quan với Khai phá dữ liệu
Khai phá dữ liệu và học máy là hai khái niệm hay bị nhầm lẫn. Hai lĩnh vực này
nhìn chung gần với nhau và đôi khi dùng chung nhiều phương pháp, công cụ nhưng
khác biệt chính là ở mục tiêu:
Khai phá dữ liệu: thường mục tiêu là tìm kiếm những thơng tin, tri thức hồn tồn
mới tiềm năng có ích trong nguồn dữ liệu.
Học máy: dự đốn một số thơng tin của dữ liệu dựa trên những đặc tính đã biết.

5


3. Cách thức hoạt động của máy học
Có 4 bước cơ bản để xây dựng một model máy học

3.1/ Chọn lựa và chuẩn bị một bộ dữ liệu (dataset):
Dữ liệu huấn luyện chính là bộ dataset, dùng để huấn luyện model giải quyết những
bài tốn mà nó được thiết kế để giải quyết.
Dataset gồm 2 loại:
+ Labeled dataset (dataset được gán nhãn)
+ Unlabeled dataset (dataset không được gán nhãn)
Một bộ dataset trước khi dùng cho huấn luyện model cần được chuẩn bị kĩ càng,
cẩn thận để tránh ảnh hưởng đến kết quả huấn luyện model. Thông thường, dataset
sẽ được chia làm 2 bộ gồm training dataset (dữ liệu huấn luyện) và evaluation
dataset(dữ liệu đánh giá).
3.2/ Chọn một thuật toán để chạy trên bộ dataset
Loại thuật toán sẽ được cân nhắc, chọn lựa dựa trên các yếu tố:
+ Loại dataset (được gán nhãn hay không)
+ Độ lớn của dataset
+ Loại bài toán cần giải quyết
Sau đây là những thuật toán phổ biến thường được áp dụng với bộ dữ liệu được gán
nhãn:
+ Hồi quy tuyến tính (Linear regression): Được dùng để dự đốn giá trị của các yếu
tố khơng độc lập dựa trên giá trị của các yếu tố tự do. Ví dụ, một thuật tốn hồi quy
tuyến tính có thể được huấn luyện để để dự đoán doanh số hằng năm của nhân viên
bán hàng (biến số không độc lập) dựa trên mối quan hệ của doanh số với cấp độ học
thức và số năm kinh nghiệm của của người đó (các biến số tự do).
+ Cây quyết định (Decision tree): Sử dụng dữ liệu đã được phân lớp để đưa ra các
đề nghị dựa trên một tập hợp các nguyên tắc quyết định. Ví dụ, một cây quyết định
dùng để dự đoán nên đặt cược vào con ngựa nào có thể sử dụng dữ liệu về các con
ngựa (tuổi, tỷ lệ thắng, phả hệ, …) và áp dụng các nguyên tắc vào các số liệu đó để
đưa ra quyết định.

6



+ Học tập dựa trên cá thể (Instance-based algorithms): Tiêu biểu là K-Nearest
neighbors hay cịn gọi là k-nn . Nó dựa vào độ giống nhau của một cá thể với k
nhóm cá thể có cùng tập tính gần nhất khác để quyết định xem cá thể đó thuộc về
nhóm nào.
Các thuật tốn áp dụng cho tập dữ liệu khơng được gắn nhãn:
+ Các thuật toán phân cụm (Clustering algorithms): Đại diện cho nhóm thuật tốn
này có thể kể đến k-means, thuật tốn sẽ tiến hành gom nhóm các cá thể có những
đặc điểm tương đồng nhau nhất.
+ Các thuật tốn học dựa trên các quy tắc quan hệ (Association algorithms): Thuật
tốn sẽ tìm ra các điểm chung và mối quan hệ trong dữ liệu, chỉ ra các “luật quan
hệ”. Tương tự với các luật được dùng trong khai thác dữ liệu (data mining).
3.3/ Huấn luyện thuật toán để tạo ra model:
Đây là một quá trình lặp, bao gồm việc cho chạy các biến số qua thuật toán, so sánh
kết quả được tạo ra với kết quả đúng, điều chỉnh các trọng số và độ lệch để cho ra
kết quả tốt hơn, sau đó tiến hành chạy lại bước này cho đến khi kết quả thu được đã
đủ tốt.
3.4/ Sử dụng và cải thiện model
Bước cuối cùng là sử dụng model với các dữ liệu mới, trong trường hợp tốt nhất,
model sẽ tự cải thiện độ chính xác qua thời gian. Các dữ liệu mới sẽ tùy thuộc vào
bài toán đang cần giải quyết là gì. Ví dụ, model phát hiện email spam sẽ nhận dữ
liệu mới là các email.

7


4. Các kiểu máy học
Các kiểu máy học được chia làm 3 loại chính.
4.1/ Supervised machine learning
Cịn được biết đến là “học có giám sát”, phương pháp này tự “train” chính nó dựa

trên một tập dữ liệu được gán nhãn. Một tập dữ liệu được gán nhãn nghĩa là các dữ
liệu trong tập được gán cho các nhãn là thông tin mà model được xây dựng để xác
định, phân loại. Ví dụ, một model được xây dựng để nhận diện giống chó săn cừu
Đức sẽ được “trained” trên một tập dữ liệu là các bức ảnh về các giống chó khác
nhau đã được gán nhãn tương ứng là tên của giống chó đó.
Phương pháp học này cần ít dữ liệu học hơn và quá trình học cũng dễ dàng hơn so
với các phương pháp học khác bởi vì kết quả của model đưa ra có thể được kiểm
chứng bằng cách so sánh với label thực tế của dữ liệu. Tuy nhiên, có một hạn chế
đó là việc chuẩn bị tập dữ liệu được đánh nhãn một cách “đúng đắn” mất rất nhiều
cơng sức, nỗ lực. Ngồi ra cịn có nguy cơ xảy ra “overfitting”, hay nói cách khác
model bị học một cách máy móc, hình thành những “định kiến” dựa trên các dữ liệu
được cung cấp trong tập dữ liệu nên khi gặp những dữ liệu mới, lạ thì model sẽ
khơng xử lý tốt.
4.2/ Unsupervised machine learning
Cịn được gọi là học “không giám sát”, phương pháp học “không giám sát" sử dụng
nguồn tri thức là tập dữ liệu không gán nhãn và sử dụng thuật tốn để trích xuất các
đặc trưng “mấu chốt” để đánh nhãn, phân loại và sắp xếp dữ liệu theo thời gian thực
mà không cần sự can thiệp từ con người. Học không giám sát thường ít được dùng
để tự động hóa việc đưa ra quyết định và dự đốn mà thay vào đó, nó chủ yếu để rút
trích, phát hiện các điểm chung, các mối quan hệ trong dữ liệu mà con người bỏ sót.
Ví dụ như hệ thống phát hiện “spam”, con người sinh ra thư điện tử quá nhiều để
một nhóm “nhà khoa học dữ liệu” có thể đánh nhãn và phân loại trong khoảng thời
gian cả đời họ. Sử dụng một thuật tốn học khơng giám sát, họ có thể phân tích một
lượng lớn các thư điện tử và phát hiện các đặc trưng, các hình mẫu của một thư
spam (và thậm chí cịn cải thiện khả năng đánh dấu thư spam qua thời gian).
4.3/ Semi-supervised learning

8



Học bán giám sát là một phương pháp học trung hịa giữa học có giám sát và học
khơng giám sát. Trong q trình training, nó sử dụng một tập dữ liệu được gán nhãn
nhỏ hơn để định hướng cho việc phân loại và rút trích đặc trưng từ một tập dữ liệu
lớn hơn, không được đánh nhãn sẵn.
Học bán giám sát có thể giải quyết những bài tốn mà khơng có đủ dữ liệu được
đánh nhãn (hoặc khơng có khả năng thu thập đủ dữ liệu được gán nhãn) để huấn
luyện một model học có giám sát.

9


5. Reinforcement machine learning
Học tăng cường là một dạng model máy học hành vi tương tự như học có giám sát.
Tuy nhiên, model học tăng cường không học dựa trên dữ liệu sẵn có mà nó sẽ tự
học theo hình thức “trial and error” có thể hiểu là dạng học bắt tay vào thực hiện,
sau đó tiếp thu và phân tích kết quả thu được, học hỏi từ những sai sót. Các kết quả
đúng qua đó sẽ được tăng cường để hình thành những đề nghị tốt nhất hay những
quy trình tốt nhất cho một bài tốn cụ thể được đặt ra.
Hệ thống Watson@ do IBM phát triển đã chiến thắng cuộc thi Jeopardy! vào năm
2011 là một ví dụ điển hình. Hệ thống đã ứng dụng phương pháp học tăng cường để
quyết định khi nào nên trả lời hoặc đặt câu hỏi, nên chọn ô vuông nào trên bàn cờ
và đặt cược bao nhiêu. Ngồi ra cịn 2 hệ thống khác rất nổi tiếng ở thời điểm hiện
tại là Alpha-zero do Google AI phát triển và CommaAI do một hacker nổi tiếng
Geo Hotz phát triển, hệ thống Alpha-zero đã đánh bại được kì thủ số một thế giới và
tái định nghĩa lại những hiểu biết của con người về bộ môn cờ vây trong hàng trăm
năm qua hay CommaAI, một hệ thống xe tự hành đơn giản và tinh gọn chỉ gói gọn
trong một chiếc smartphone nhưng có hiệu suất tương đương với các mẫu xe tự
hành hàng đầu đắt đỏ, sử dụng những loại cảm biến hiện đại và tốn kém như các
mẫu xe của Tesla.


10


6. Deep learning
Học sâu là một tập con của máy học (tất cả model học sâu đều là máy học nhưng
không phải tất cả model máy học đều là học sâu). Các thuật toán học sâu định nghĩa
một mạng neuron nhân tạo được thiết kế để học cách mà bộ não con người học. Các
model học sâu cần một lượng dữ liệu học lớn, các dữ liệu học này sẽ đi qua nhiều
lớp tính tốn, áp dụng các trọng số và độ lệch trong mỗi lớp để liên tục điều chỉnh
và cải thiện các kết quả.
Các máy học sâu thường là các model học không giám sát hoặc bán giám sát. Máy
học tăng cường cũng có thể là máy học sâu. Một số loại model học sâu nhất định
bao gồm:
+ Mạng neuron tích chập (Convolutional neural network)
+ Mạng neuron hồi quy (Recurrent neural network)
được ứng dụng rộng rãi trong các lĩnh vực như thị giác máy tính (computer vision),
xử lý ngôn ngữ tự nhiên (natural language processing - bao gồm cả nhận dạng giọng
nói), xe tự hành.

11


7. Neural Network
1/ Khái niệm
Mạng neural nhân tạo hay thường gọi ngắn gọn là mạng neural (tiếng Anh là
Artificial Neural network - ANN hay Neural Network) là một mơ hình tốn học hay
mơ hình tính tốn được xây dựng dựa trên các mạng neural sinh học. Nó gồm có
một nhóm các neural nhân tạo (nút hay còn được gọi là perceptron) nối với nhau, và
xử lý thông tin bằng cách truyền theo các kết nối và tính giá trị mới tại các nút (cách
tiếp cận connectionism đối với tính tốn). Trong nhiều trường hợp, mạng neural

nhân tạo là một hệ thống thích ứng (adaptive system) tự thay đổi cấu trúc của mình
dựa trên các thơng tin bên ngồi hay bên trong chảy qua mạng trong q trình học.
Ngày nay có rất nhiều thuật tốn trí tuệ nhân tạo, tuy nhiên mạng neural lại có thể
thực hiện deep learning

H7.1. Mơ hình minh họa mạng neural nhân tạo
2/ Cách học của mạng neural
Khơng giống các thuật tốn khác, mạng neural khơng thể được lập trình trực tiếp
cho một cơng việc cụ thể. Thay vào đó, nó giống như một bộ não đang phát triển

12


của một đứa trẻ, nó cần được học hỏi thơng qua việc tiếp thu tri thức. Và các
phương pháp học bao gồm 3 phương pháp chính đã được trình bày ở phần trước,
chính là:
+ Supervised learning (học có giám sát)
+ Unsupervised learning (học không giám sát)
+ Reinforced learning (học tăng cường)

13


8. Lịch sử phát triển
8.1/ 1943 - Mơ hình tốn học đầu tiên của mạng nơron
Rõ ràng, để máy học và học sâu hoạt động, chúng ta cần có sự hiểu biết vững chắc
về mạng lưới thần kinh của não người.
Walter Pitts, một nhà logic học và Warren McCulloch, một nhà thần kinh học, đã
đưa cho chúng ta mảnh ghép đó vào năm 1943 khi họ tạo ra mơ hình toán học đầu
tiên của một mạng nơ-ron. Được xuất bản trong tác phẩm tiêu biểu của họ “Phép

tính lơgic của ý tưởng tồn tại trong hoạt động thần kinh”, họ đề xuất sự kết hợp giữa
toán học và thuật toán nhằm bắt chước các quá trình suy nghĩ của con người
Mơ hình của họ - thường được gọi là tế bào thần kinh McCulloch-Pitts - vẫn là tiêu
chuẩn ngày nay (mặc dù nó đã phát triển qua nhiều năm).
8.2/ 1950 - Dự đoán về học máy
Turing, một nhà toán học người Anh, có lẽ được biết đến nhiều nhất vì đã tham gia
phá mã trong Thế chiến thứ hai.
Nhưng những đóng góp của ơng cho tốn học và khoa học khơng dừng lại ở đó.
Năm 1947, ơng dự đốn sự phát triển của máy học, thậm chí cịn đi xa hơn nữa để
mơ tả tác động của nó đối với công việc.
Vào năm 1950, Turing chỉ đề xuất một chiếc máy như vậy, thậm chí cịn gợi ý về
các thuật tốn di truyền, trong bài báo của ơng “Máy tính và trí thơng minh”. Trong
đó, anh đã tạo ra thứ được gọi là Thử nghiệm Turing - mặc dù bản thân anh gọi nó
là Trị chơi Giả lập - để xác định xem một máy tính có thể “suy nghĩ” hay không.
Đơn giản nhất, bài kiểm tra yêu cầu một máy thực hiện một cuộc trò chuyện qua tin
nhắn với con người. Nếu sau năm phút mà con người tin rằng họ đang nói chuyện
với một người khác, máy được cho là đã qua.
Sẽ mất 60 năm để bất kỳ cỗ máy nào làm được như vậy, mặc dù nhiều người vẫn
tranh luận về tính hợp lệ của kết quả.
8.3/ 1952 - Chương trình học máy đầu tiên

14


Arthur Samuel đã phát minh ra máy học và đặt ra cụm từ “máy học” vào năm 1952.
Ơng được tơn kính là cha đẻ của máy học. Khi gia nhập Phịng thí nghiệm
Poughkeepsie tại IBM, Arthur Samuel sẽ tiếp tục tạo ra các chương trình học máy
tính đầu tiên. Các chương trình được xây dựng để chơi trị chơi cờ caro. Chương
trình của Arthur Samuel rất độc đáo ở chỗ mỗi lần chơi cờ caro, máy tính sẽ ln
hoạt động tốt hơn, sửa lỗi và tìm cách tốt hơn để giành chiến thắng từ dữ liệu đó.

Học tự động này sẽ là một trong những ví dụ đầu tiên của học máy.
8.4/ 1957 - Đặt nền móng cho mạng nơron sâu
Rosenblatt, một nhà tâm lý học, đã gửi một bài báo có tựa đề “The Perceptron: A
Perceiving and Recognition Automaton” cho Phịng thí nghiệm Hàng khơng Cornell
vào năm 1957.
Ơng tun bố rằng mình sẽ “xây dựng một hệ thống điện tử hoặc cơ điện để học
cách nhận ra các điểm tương đồng hoặc đồng nhất giữa các mẫu quang học, thơng
tin điện, hoặc âm sắc, theo cách có thể gần giống với các quá trình tri giác của não
sinh học. “
Ý tưởng của ông thiên về phần cứng hơn là phần mềm hoặc thuật tốn, nhưng nó đã
gieo mầm cho việc học từ dưới lên và được công nhận rộng rãi là nền tảng của
mạng nơ-ron sâu (DNN).
8.5/ 1959 - Khám phá các tế bào đơn giản và tế bào phức tạp
Năm 1959, các nhà sinh lý học thần kinh và những người đoạt giải Nobel David H.
Hubel và Torsten Wiesel đã phát hiện ra hai loại tế bào trong vỏ não thị giác chính:
tế bào đơn giản và tế bào phức tạp.
Nhiều mạng nơ-ron nhân tạo (ANN) được lấy cảm hứng từ những quan sát sinh học
này theo cách này hay cách khác. Mặc dù không phải là một cột mốc đặc biệt cho
học sâu, nhưng nó chắc chắn là một trong những ảnh hưởng nặng nề đến lĩnh vực
này.
8.6/ 1960 – Control theory
Kelley là giáo sư về kỹ thuật hàng không và đại dương tại Viện Bách khoa Virginia.
Năm 1960, ông xuất bản “Lý thuyết Gradient về các đường bay tối ưu”, bản thân nó
là một bài báo lớn và được công nhận rộng rãi trong lĩnh vực của ông. Nhiều ý
tưởng của ông về lý thuyết kiểm sốt - hành vi của hệ thống có đầu vào và cách

15


hành vi đó được sửa đổi bằng phản hồi - đã được áp dụng trực tiếp cho AI và ANN

trong những năm qua.
Chúng được sử dụng để phát triển những điều cơ bản của mơ hình lan truyền ngược
được sử dụng trong huấn luyện mạng nơ-ron.
8.7/ 1965 - Mạng học sâu hoạt động đầu tiên
Nhà toán học Ivakhnenko và các cộng sự bao gồm cả Lapa được cho là đã tạo ra
mạng học sâu hoạt động đầu tiên vào năm 1965, áp dụng những gì chỉ là lý thuyết
và ý tưởng cho đến thời điểm đó.
Ivakhnenko đã phát triển Phương pháp Nhóm Xử lý Dữ liệu (GMDH) - được định
nghĩa là “họ thuật tốn quy nạp để lập mơ hình tốn học dựa trên máy tính của bộ
dữ liệu đa tham số có tính năng tối ưu hóa cấu trúc và tham số hồn tồn tự động
của các mơ hình ”- và áp dụng nó cho mạng nơron.
Chỉ vì lý do đó, nhiều người coi Ivakhnenko là cha đẻ của học sâu hiện đại.
Các thuật tốn học tập của ơng đã sử dụng các perceptron nhiều lớp tiếp tục sâu
bằng cách sử dụng phương pháp thống kê ở mỗi lớp để tìm các tính năng tốt nhất và
chuyển tiếp chúng qua hệ thống.
Sử dụng GMDH, Ivakhnenko đã có thể tạo ra một mạng sâu 8 lớp vào năm 1971 và
ông đã chứng minh thành cơng q trình học tập trong một hệ thống nhận dạng máy
tính có tên là Alpha.
8.8/ 1982 - Sự ra đời của Mạng Hopfield
Năm 1982, Hopfield tạo ra và phổ biến hệ thống hiện mang tên ông.
Mạng Hopfield là một mạng nơ-ron lặp lại hoạt động như một hệ thống bộ nhớ có
thể định địa chỉ nội dung và chúng vẫn là một công cụ triển khai phổ biến cho học
sâu trong thế kỷ 21.
8.9/ 1985 – A program learns to pronounce English words
Nhà khoa học thần kinh tính tốn Terry Sejnowski đã sử dụng hiểu biết của mình về
quá trình học tập để tạo ra NETtalk vào năm 1985.
Chương trình đã học cách phát âm các từ tiếng Anh giống như cách một đứa trẻ làm
và có thể cải thiện theo thời gian trong khi chuyển văn bản thành giọng nói.
8.10/ 1986 - Cải tiến trong nhận dạng hình dạng và dự đốn từ


16


Trong một bài báo năm 1986 có tựa đề “Học các biểu diễn bằng các lỗi lan truyền
ngược”, Rumelhart, Hinton và Williams đã mô tả chi tiết hơn về quá trình Lan
truyền ngược.
Họ đã chỉ ra cách nó có thể cải thiện đáng kể các mạng nơ-ron hiện có cho nhiều tác
vụ như nhận dạng hình dạng, dự đốn từ và hơn thế nữa.
Mặc dù có một số thất bại sau thành cơng ban đầu đó, Hinton vẫn tiếp tục nghiên
cứu của mình trong Mùa đơng AI thứ hai để đạt được mức độ thành công mới và
được hoan nghênh. Ông được nhiều người trong lĩnh vực này coi là cha đỡ đầu của
học sâu.
8.11/ 1989 - Máy đọc các chữ số viết tay
LeCun - một ngôi sao khác trong vũ trụ AI và DL - đã kết hợp các mạng nơ-ron
phức hợp với các lý thuyết lan truyền ngược gần đây để đọc các chữ số viết tay vào
năm 1989.
Hệ thống của ông cuối cùng đã được sử dụng để đọc séc viết tay và mã zip của
NCR và các công ty khác, xử lý từ 10 - 20% séc quy ra tiền mặt ở Hoa Kỳ vào cuối
những năm 90 và đầu những năm 2000.
8.12/ 1989 – Q-learning
Watkins đã xuất bản luận án Tiến sĩ của mình - “Học từ phần thưởng bị trì hỗn” vào năm 1989. Trong đó, ơng đưa ra khái niệm Q-learning, giúp cải thiện đáng kể
tính thực tiễn và tính khả thi của việc học tăng cường trong máy móc.
Thuật tốn mới này cho thấy có thể học điều khiển tối ưu trực tiếp mà khơng cần
mơ hình hóa các xác suất chuyển đổi hoặc phần thưởng mong đợi của Quy trình
Quyết định Markov.
8.13/ 1993 - Một nhiệm vụ 'học rất sâu' được giải quyết
Nhà khoa học máy tính người Đức Schmidhuber đã giải quyết một nhiệm vụ “học
rất sâu” vào năm 1993 u cầu hơn 1.000 lớp trong mạng nơ-ron tuần hồn.
Đó là một bước tiến vượt bậc về độ phức tạp và khả năng của mạng nơ-ron.
8.14/ 1995 – Support vector machines

Máy vectơ hỗ trợ - hay SVM - đã xuất hiện từ những năm 1960, được nhiều người
điều chỉnh và hoàn thiện trong nhiều thập kỷ.

17


Mơ hình tiêu chuẩn hiện tại được thiết kế bởi Cortes và Vapnik vào năm 1993 và
được giới thiệu vào năm 1995.
SVM về cơ bản là một hệ thống để nhận dạng và ánh xạ dữ liệu tương tự và có thể
được sử dụng trong phân loại văn bản, nhận dạng ký tự viết tay và phân loại hình
ảnh vì nó liên quan đến học máy và học sâu.
8.15/ 2009 - Ra mắt ImageNet
Một giáo sư và người đứng đầu Phịng thí nghiệm Trí tuệ Nhân tạo tại Đại học
Stanford, Fei-Fei Li đã khởi động ImageNet vào năm 2009.
Tính đến năm 2017, đó là một cơ sở dữ liệu rất lớn và miễn phí với hơn 14 triệu
hình ảnh được gắn nhãn (14.197.122) dành cho các nhà nghiên cứu, nhà giáo dục và
sinh viên.
Dữ liệu được gắn nhãn - chẳng hạn như những hình ảnh này - là cần thiết để "huấn
luyện" mạng thần kinh trong học tập có giám sát.
8.16/ 2011 - Sự ra đời của AlexNet
Từ năm 2011 đến 2012, Alex Krizhevsky đã chiến thắng một số cuộc thi máy học
và học sâu quốc tế với việc tạo ra AlexNet, một mạng nơ-ron phức hợp.
AlexNet được xây dựng và cải tiến dựa trên LeNet5 (được xây dựng bởi Yann
LeCun nhiều năm trước đó). Ban đầu nó chỉ chứa tám lớp - năm lớp phức tạp, tiếp
theo là ba lớp được kết nối đầy đủ - và tăng cường tốc độ và độ trễ bằng cách sử
dụng các đơn vị tuyến tính được điều chỉnh.
Thành cơng của nó đã khởi đầu cho sự phục hưng của mạng nơ-ron phức tạp trong
cộng đồng học sâu.
8.17/ 2014 - DeepFace
Được phát triển và phát hành trên toàn thế giới vào năm 2014, hệ thống học sâu

khổng lồ trên mạng xã hội - có tên là DeepFace - sử dụng mạng thần kinh để nhận
dạng khn mặt với độ chính xác 97,35%. Đó là sự cải thiện 27% so với những nỗ
lực trước đó và là một con số cạnh tranh với con người (được báo cáo là 97,5%).
Google Photos cũng sử dụng một chương trình tương tự.
8.18/ 2014 – Generative Adversarial Networks (GAN)

18


GAN cho phép các mơ hình giải quyết việc học tập khơng có giám sát, vốn ít nhiều
là mục tiêu cuối cùng trong cộng đồng trí tuệ nhân tạo.
Về cơ bản, một GAN sử dụng hai mạng cạnh tranh: mạng thứ nhất lấy dữ liệu và cố
gắng tạo ra các mẫu không thể phân biệt được, trong khi mạng thứ hai nhận cả dữ
liệu và các mẫu đã tạo và phải xác định xem mỗi điểm dữ liệu là chính hãng hay
được tạo ra.
Học đồng thời, các mạng cạnh tranh với nhau và thúc đẩy nhau trở nên “thông minh
hơn” nhanh hơn.
8.19/ Fun and Games
+ 1992: Gerald Tesauro phát triển TD-Gammon, một chương trình máy tính sử
dụng mạng thần kinh nhân tạo để học cách chơi backgammon.
+ 1997: Deep Blue - do IBM thiết kế - đánh bại đại kiện tướng cờ vua Garry
Kasparov trong loạt sáu ván.
+ 2011: Watson - một hệ thống trả lời câu hỏi do IBM phát triển - tranh giải
trên Jeopardy! chống lại Ken Jennings và Brad Rutter. Sử dụng kết hợp máy
học, xử lý ngôn ngữ tự nhiên và các kỹ thuật truy xuất thơng tin, Watson đã
có thể giành chiến thắng trong cuộc thi trong suốt ba trận đấu.
+ 2016: Chương trình AlphaGo của Google đánh bại Lee Sedol của Hàn Quốc,
một kỳ thủ cờ vây quốc tế được xếp hạng hàng đầu. Được phát triển bởi
DeepMind, AlphaGo sử dụng kỹ thuật máy học và tìm kiếm cây. Cụ thể hơn
chính là phương pháp học tăng cường (reinforcement learning).


19


9. Ứng dụng

● Trợ lý kỹ thuật số: Apple Siri, Amazon Alexa, Google Assistant và các trợ lý
kỹ thuật số khác được hỗ trợ bởi xử lý ngôn ngữ tự nhiên (NLP), một ứng
dụng máy học cho phép máy tính xử lý dữ liệu văn bản và giọng nói và hiểu
ngôn ngữ con người theo cách mọi người làm. Xử lý ngôn ngữ tự nhiên cũng
thúc đẩy các ứng dụng điều khiển bằng giọng nói như GPS và phần mềm
nhận dạng giọng nói (chuyển lời nói thành văn bản).
● Quảng cáo trực tuyến theo ngữ cảnh: Các mơ hình máy học và học sâu có thể
đánh giá nội dung của một trang web — khơng chỉ chủ đề mà cịn cả các sắc
thái như quan điểm hoặc thái độ của tác giả — và đưa ra các quảng cáo phù
hợp với sở thích của khách truy cập.
● An ninh mạng: Máy học có thể trích xuất thơng tin tình báo từ các báo cáo sự
cố, cảnh báo, bài đăng trên blog, v.v. để xác định các mối đe dọa tiềm ẩn, tư
vấn cho các nhà phân tích bảo mật.
● Phân tích hình ảnh y tế: Thể loại và số lượng dữ liệu hình ảnh y tế kỹ thuật
số đã bùng nổ, dẫn đến nhiều thơng tin có sẵn hơn để hỗ trợ chẩn đốn
nhưng cũng có nhiều cơ hội hơn cho lỗi của con người khi đọc dữ liệu. Mạng
nơ-ron chuyển đổi (CNN), mạng nơ-ron lặp lại (RNN) và các mơ hình học
sâu khác đã chứng tỏ ngày càng thành cơng trong việc trích xuất các tính
năng và thơng tin từ hình ảnh y tế để giúp hỗ trợ chẩn đốn chính xác.
● Ơ tơ tự lái: Ơ tơ tự lái địi hỏi máy tính phải liên tục xác định các đối tượng
trong môi trường xung quanh ô tô, dự đoán chúng sẽ thay đổi hoặc di chuyển
như thế nào và đưa ra hướng dẫn . Hầu như mọi hình thức học máy và thuật
toán học sâu được đề cập ở trên đều đóng một số vai trị trong việc kích hoạt
ơ tơ tự lái


20


10. CONVOLUTIONAL NEURAL NETWORK
Để giải quyết bài toán nhận diện khn mặt trong đề tài, nhóm em sử dụng một giải
pháp sẵn có là một mạng neural tích chập (convolutional neural network) VGG16.
Sau đây là tổng quan về mạng neural tích chập.
10.1/ Tiến trình phát triển của CNN
10.1.1/ Giới thiệu chung
Mạng CNN ra đời đã thúc đẩy quá trình phát triển của ngành computer vision. Hiện
tại có rất nhiều các kiến trúc mạng CNN khác nhau và các kiến trúc mới vẫn đang
tiếp tục được khám phá ngày qua ngày. Nhưng ít ai biết rằng đằng sau những khám
phá đó là một tiến trình khoa học lâu dài và bền bỉ trong gần 20 năm. Với sự kết
hợp đồng bộ của phát triển kiến trúc mạng, khả năng tính tốn của máy tính và các
phương pháp tối ưu hóa. Bài viết này mình sẽ giới thiệu tới các bạn lược sử hình
thành của các kiến trúc CNN tiêu biểu và những đóng góp mang tính cải tiến của
những kiến trúc mạng này so với trước đó. Thơng qua bài viết bạn đọc sẽ hình dung
được lộ trình hình thành và phát triển cho tới ngày nay của những mạng CNN và
đồng thời hiểu rõ được đặc trưng trong kiến trúc của từng mạng. Những ưu nhược
điểm và cải tiến đã thực hiện so với những kiến trúc mạng trước đó.
10.1.2/ Các dấu mốc quan trọng

Hình 10.1: Các cột mốc phát triển của mạng CNN. Source: Illustrated: 10
CNN Architectures - Raimi Karim
Tiến trình phát triển của các kiến trúc CNN có thể được khái quát qua những dẫu
mốc quan trọng sau đây:

21



1998: Yan Lecun lần đầu tiên sử dụng mạng tích chập trong tác vụ phân loại chữ số
viết tay và đạt hiệu quả cao. Tuy nhiên vào thời điểm đó do chưa có sự phát triển
của dữ liệu và khả năng tính tốn nên mạng CNN vẫn chưa có cơ hội phát triển.
2009: Bộ dữ liệu ImageNet được giới thiệu vào năm 2009 là một trong những bộ dữ
liệu tạo ra tiếng vang trong cộng đồng computer vision. Đây là bộ dữ liệu lớn nhất
so với các bộ dữ liệu từng có từ trước đến thời điểm đó. Với 1 triệu ảnh của 1000
nhãn, mỗi nhãn bao gồm 1000 ảnh, các mơ hình được huấn luyện trên ImageNet
dường như có thể chuyển giao tới rất nhiều những domain dữ liệu khác nhau. Kể từ
thời điểm đó, bắt đầu từ năm 2010, ImageNet trở thành cuộc thi đo đạc sự phát triển
của các thuật tốn học có giám sát trong thị giác máy tính.
2012: Mạng AlexNet lần đầu tiên vượt qua các phương pháp tạo đặc trưng thủ công
theo truyền thống và đạt độ chính xác cách biệt trong cuộc thi ImageNet. Khởi đầu
cho xu hướng nghiên cứu của các chuyên gia đầu ngành trong computer vision
trong việc ứng dụng CNN.
Liên tiếp vào những năm sau đó, chỉ trong vịng 8 năm, rất nhiều các kiến trúc mới
của CNN đã được phát triển và cải tiến qua các năm như VGG Net, GoogleNet,
ResNet, DenseNet,… mà chúng ta sẽ tìm hiểu qua bài viết này. Qúa trình phát triển
của các kiến trúc mạng song hành cùng với sự phát triển phần cứng máy tính mạnh
hơn trước. Các GPU có tốc độ tính tốn nhanh hơn, các frame work hỗ trợ deep
learning hình thành và phát triển, các bộ dữ liệu lớn ngày một nhiều hơn và kéo
theo đó là sự mở rộng của cộng đồng những người theo đuổi và nghiên cứu về AI
cho tới thời điểm hiện tại.
10.2/ Lý thuyết mạng tích chập
10.2.1/ Giới thiệu tích chập
Tích chập là một khái niệm trong xử lý tín hiệu số nhằm biến đổi thơng tin đầu vào
thơng qua một phép tích chập với bộ lọc để trả về đầu ra là một tín hiệu mới. Tín
hiệu này sẽ làm giảm những đặc trưng mà bộ lọc không quan tâm và chỉ giữ những
đặc trưng chính.
Tích chập thơng dụng nhất là tích chập 2 chiều được áp dụng trên ma trận đầu vào

và ma trận bộ lọc 2 chiều. Phép tích chập của một ma trận
lọc (receptive field)
sau:

là một ma trận

với một bộ
sẽ trả qua những bước

22


Tính tích chập tại 1 điểm: Tại vị trí đầu tiên trên cùng của ma trận đầu vào ta sẽ lọc
ra một ma trận con
trị
tương ứng trên

có kích thước bằng với kích thước của bộ lọc. Giá
là tích chập của
với được tính như sau:

Tiến hành trượt dọc theo ma trận theo chiều từ trái qua phải, từ trên xuống dưới theo
bước nhảy (stride) ta sẽ tính được các giá trị tiếp theo. Sau khi quá trình này kết
thúc ta thu được trọn vẹn ma trận .

Hình 10.2: Ví dụ minh họa lý thuyết tích chập
10.2.2/ Các thuật ngữ
Đơn vị (Unit): Là giá trị của một điểm nằm trên ma trận khối ở mỗi tầng của mạng
CNN.
Vùng nhận thức (Receptive Field): Là một vùng ảnh trên khối ma trận đầu vào mà

bộ lọc sẽ nhân tích chập để ánh xạ tới một đơn vị trên layer tiếp theo.
Vùng địa phương (Local region): Theo một nghĩa nào đó sẽ bao hàm cả vùng nhận
thức. Là một vùng ảnh cụ thể nằm trên khối ma trận ở các tầng mạng CNN.
Bản đồ kích hoạt (Activation Map): Là ma trận đầu ra khi áp dụng phép tích chập
giữa bộ lọc với các vùng nhận thức theo phương chi chuyển từ trái qua phải và từ
trên xuống dưới.
Bản đồ đặc trưng (Feature Map): Theo một nghĩa nào đó cũng tương tự như bản đồ
kích hoạt.

23


10.2.3/ Kiến trúc chung của mạng neural tích chập
Tích chập được ứng dụng phổ biến trong lĩnh vực thị giác máy tính. Thơng qua các
phép tích chập, các đặc trưng chính từ ảnh được trích xuất và truyền vào các tầng
tích chập (layer convolution). Mỗi một tầng tích chập sẽ bao gồm nhiều đơn vị mà
kết quả ở mỗi đơn vị là một phép biến đổi tích chập từ layer trước đó thơng qua
phép nhân tích chập với bộ lọc.
Về cơ bản thiết kế của một mạng nơ ron tích chập 2 chiều có dạng như sau:
INPUT -> [[CONV -> RELU]*N -> POOL?]*M -> [FC -> RELU]*K -> FC
Trong đó:
INPUT: Tầng đầu vào
CONV: Tầng tích chập
RELU: Tầng biến đổi thơng qua hàm kích hoạt relu để kích hoạt phi tuyến
POOL: Tầng tổng hợp, thơng thường là Max pooling hoặc có thể là Average
pooling dùng để giảm chiều của ma trận đầu vào.
FC: Tầng kết nối hồn tồn. Thơng thường tầng này nằm ở sau cùng và kết nối với
các đơn vị đại diện cho nhóm phân loại.
Các kí hiệu []N, []M hoặc []*K ám chỉ các khối bên trong [] có thể lặp lại nhiều lần
liên tiếp nhau. M, K là số lần lặp lại. Kí hiệu -> đại diện cho các tầng liền kề nhau

mà tầng đứng trước -> sẽ làm đầu vào cho tầng đứng sau ->. Dấu ? sau POOL để
thể hiện tầng POOL có thể có hoặc khơng sau các khối tích chập.
Như vậy ta có thể thấy một mạng nơ ron tích chập về cơ bản có 3 q trình khác
nhau:
Q trình trích xuất đặc trưng (convolution): Thơng qua các tích chập giữa ma trận
đầu vào với bộ lọc để tạo thành các đơn vị trong một tầng mới. Q trình này có thể
diễn ra liên tục ở phần đầu của mạng và thường sử dụng hàm kích hoạt relu.
Q trình tổng hợp (max pooling): Các tầng càng về sau trích xuất đặc trưng sẽ cần
số lượng tham số lớn do chiều sâu được qui định bởi số lượng các kênh ở các tầng
sau thường tăng tiến theo cấp số nhân. Điều đó làm tăng số lượng tham số và khối
lượng tính tốn trong mạng nơ ron. Do đó để giảm tải tính tốn chúng ta sẽ cần
giảm chiều của khối ma trận đầu vào hoặc giảm số đơn vị của tầng. Vì mỗi một đơn

24


×