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

Nhận diên khuôn mặt bằng phương pháp máy học

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 (8.2 MB, 41 trang )

MỤC LỤC
LỜI CẢM ƠN............................................................................................................................................3
MỞ ĐẦU....................................................................................................................................................4
1. Lý do chọn đề tài......................................................................................................................................4
2. Mục đích nghiên cứu................................................................................................................................5
3. Nhiệm vụ nghiên cứu...............................................................................................................................5
4. Đối tượng và phạm vi nghiên cứu...........................................................................................................5
5. Phương pháp nghiên cứu..........................................................................................................................5
6. Đóng góp đề tài........................................................................................................................................5
7. Cấu trúc đề tài...........................................................................................................................................5
NỘI DUNG.................................................................................................................................................7
CHƯƠNG I: CƠ SỞ LÝ THUYẾT VỀ MÁY HỌC...........................................................................7
1.1. Tổng quan về phương pháp máy học................................................................................................7
1.2. Mạng nơ ron (Neural)......................................................................................................................8
1.2.1. Mạng Nơ-ron nhân tạo...............................................................................................................8
1.2.2. Kiến trúc mạng nơ ron.............................................................................................................12
1.2.3. Huấn luyện mạng neural..........................................................................................................14
1.2.4. Thuật tốn huấn luyện mạng....................................................................................................16
CHƯƠNG 2: MẠNG NƠ RON TÍCH CHẬP (CONVOLUTION NEURAL NETWORKS –
CNNs)...................................................................................................................................................18
2.1. Phương pháp CNN..........................................................................................................................18
2.1.1. Các thành hần chính và mơ hình hoạt động của CNN............................................................18
2.1.2. Ưu điểm của CNN....................................................................................................................22
2.2. Các tầng chính trong mạng CNN....................................................................................................23
2.2.1. Pooling......................................................................................................................................23
2.2.2. ReLU........................................................................................................................................25
2.2.3. Fully-connected........................................................................................................................25
2.3. Kiến trúc mạng CNN......................................................................................................................25
2.4. Cách chọn tham số cho CNN..........................................................................................................26
CHƯƠNG 3: NHẬN DIỆN KHUÔN MẶT BẰNG CNN.................................................................27
3.1. Phương pháp nhận diện khuôn mặt bằng CNN..............................................................................27


3.1.1. Giới thiệu..................................................................................................................................27
3.1.2. Cấu trúc của hệ thống..............................................................................................................27


3.2. Thực nghiệm nhận diện khuôn mặt................................................................................................31
3.2.1. Môi trường thực nghiệm..........................................................................................................31
3.2.2. Tổ chức thực hiện.....................................................................................................................32
3.2.3. Các bước thực hiện..................................................................................................................37
C. KẾT LUẬN.........................................................................................................................................39
TÀI LIỆU THAM KHẢO.......................................................................................................................40


LỜI CẢM ƠN
Chúng tôi xin gửi lời cảm ơn sâu sắc tới quý Thầy Cô trong hội đồng khoa
học trường CĐ Bình Phước đã giúp đỡ và động viên chúng tơi tận tình trong thời
gian chúng tơi thực hiện đề tài. Những lời hướng dẫn và động viên của quý Thầy
Cô thực sự là những bài học quý báu đối với chúng tơi và giúp cho chúng tơi có thể
hồn thành tốt đề tài.
Cảm ơn quý Thầy Cô cùng khoa/tổ chun mơn đã tận tình chia sẻ kinh
nghiệm và giúp đỡ chúng tôi trong công tác cũng như giúp chúng tơi hồn thành đề
tài nghiên cứu này.
Trong q trình thực hiện đề tài này, chúng tôi đã tham khảo một số tài liệu
của một số tác giả, xin tỏ lòng cảm ơn các tác giả.
Mặc dù cố gắng hoàn thành đề tài với tất cả sự nỗ lực của bản thân, nhưng
với kiến thức còn hạn chế đề tài cũng khơng tránh khỏi những sai sót, chúng tơi rất
mong nhận được sự góp ý tận tình của q Thầy Cơ và các bạn.
Người thực hiện đề tài: Đinh Thúy Chiều – Bùi Hùng Cường


MỞ ĐẦU

1. Lý do chọn đề tài
Ngày nay, xã hội loài người chứng kiến sự phát triển mạnh mẽ và sôi động của
công nghệ thông tin trong mọi lĩnh vực trong đó có lĩnh vực trí tuệ nhân tạo và thị
giác máy tính, nhận diện đối tượng. Những năm gần đây, lĩnh vực này đã đưa ra
nhiều ứng dụng rất quan trọng giúp ích cho cuộc sống của chúng ta. Trong đó việc
nghiên cứu về máy học và những ứng dụng của máy học như: nhận diện khuôn
mặt, nhận diện chữ viết tay, nhận diện đối tượng… đang được các nhà nghiên cứu
dành sự quan tâm đặc biệt và đầu tư nhiều nguồn lực vào lĩnh vực này.
Nhận diện khuôn mặt là một trong những cách thức để giám sát an ninh, an
toàn xã hội là cần thiết ở mọi nơi, một số địa điểm/đơn vị cần mức độ an tồn hơn
mức bình thường như: cửa hàng siêu thị, tịa nhà công ty, chung cư cao cấp, cơ
quan công an, doanh trại quan đội….
Nhận diện danh tính qua khn mặt không chỉ đặc biệt quan trong trong
ngành an ninh mà cịn có thể áp dụng cho nhiều lĩnh vực khác nhau như: điểm
danh học sinh/sinh viên trong ngành giáo dục, giám sát trẻ nhỏ trong lớp học….
Nhận diện khuôn mặt có hai yếu tố chính đó là phát hiện khn mặt trong ảnh
và nhận diện danh tính khn mặt. Phát hiện khn mặt đã có mặt trên nhiều điện
thoại di động đời mới, cịn nhận diện khn mặt là nhận diện danh tính xem người
đó là ai từ thư viện ảnh. Nhận diện khn mặt là bài tốn khó cần được đào sâu
nghiên cứu vì nó có nhiều thử thách. Điểm thử thách là mỗi khn mặt đều có
cùng mắt, mũi, miệng và có cùng khn dạng. Như vậy làm sao để áp dụng xử lý
ảnh và máy học vào nhận dạng, trong phạm vi đề tài tác giả sẽ tìm hiểu một
phương pháp máy học có độ chính xác cao và tốc độ chạy nhanh, phù hợp với thời
gian thực đó là phương pháp mạng nơ ron tích chập (CNN).
Do quá trình nghiên cứu cũng như kiến thức và tài liệu còn nhiều hạn chế nên


đề tài cịn nhiều thiếu sót, chưa được đầy đủ. Mong nhận được sự góp ý của q
Thầy Cơ để đề tài được thực sự hồn chỉnh hơn.
2. Mục đích nghiên cứu

Nghiên cứu tổng quan về phương pháp máy học.
Nghiên cứu về một giải thuật trong máy học để áp dụng vào nhận diện khn
mặt người.
Viết chương trình thực nghiệm trên ngơn ngữ lập trình python.
3. Nhiệm vụ nghiên cứu
Nghiên cứu phương pháp máy học để xem cách học nào phù hợp nhất với bài
tốn nhận diện khn mặt.
Ứng dụng phương pháp học sâu mạng nơ ron tích chập (CNNs) vào phương
pháp nhận diện khuôn mặt.
4. Đối tượng và phạm vi nghiên cứu
Nghiên cứu phương pháp được sử dụng trong hệ thống nhận diện khuôn mặt:
Phương pháp sử dụng mạng nơ ron tích chập.
Nghiên cứu ngơn ngữ lập trình python áp dụng cho bài toán.
5. Phương pháp nghiên cứu
Phương pháp phân tích và tổng hợp tài liệu để tìm hiểu về phương pháp máy
học và nhận diện khuôn mặt dựa trên giải thuật của máy học.
Phương pháp nghiên cứu thực tiễn áp dụng của đề tài.
6. Đóng góp đề tài
Tài liệu bổ ích cho lĩnh vực máy học.
Sử dụng để có thể phát triển với tập dữ liệu lớn hơn trong q trình nhận diện
khn mặt để kiểm sốt người lạ ra vào ở các cơ quan.
Nâng cao khản năng tư duy xây dựng thuật tốn và viết chương trình.
7. Cấu trúc đề tài
Chương 1: Giới thiệu tổng quan về phương pháp máy


Chương 2: Mạng nơ ron tích chập (Convolutional Neural Networks –CNNs).
Chương 3. Thực nghiệm nhận diện khuôn mặt



NỘI DUNG
CHƯƠNG I: CƠ SỞ LÝ THUYẾT VỀ MÁY HỌC
1.1. Tổng quan về phương pháp máy học
Máy học (Machine Learning - ML) là một công nghệ phát triển từ lĩnh
vực trí tuệ nhân tạo. Các thuật tốn ML là các chương trình máy tính có khả năng
học hỏi về cách hoàn thành các nhiệm vụ và cách cải thiện hiệu suất theo thời gian.
ML vẫn đòi hỏi sự đánh giá của con người trong việc tìm hiểu dữ liệu cơ sở và lựa
chọn các kĩ thuật phù hợp để phân tích dữ liệu. Đồng thời, trước khi sử dụng, dữ
liệu phải sạch, khơng có sai lệch và khơng có dữ liệu giả.
Các mơ hình ML u cầu lượng dữ liệu đủ lớn để "huấn luyện" và đánh giá
mơ hình. Trước đây, các thuật toán ML thiếu quyền truy cập vào một lượng lớn dữ
liệu cần thiết để mơ hình hóa các mối quan hệ giữa các dữ liệu. Sự tăng trưởng
trong dữ liệu lớn (big data) đã cung cấp các thuật toán ML với đủ dữ liệu để cải
thiện độ chính xác của mơ hình và dự đốn.
Học sâu, một tập con của máy học, sử dụng các lớp, bậc của mạng nơ-ron
nhân tạo để thực hiện quá trình máy học. Các mạng nơ-ron được xây dựng giống
như bộ não của con người, với các nút rơ-ron được kết nối với nhau như một trang
web.
Học sâu khơng có nghĩa là máy học thêm kiến thức chuyên sâu, nó có nghĩa
là máy sử dụng các lớp khác nhau để học hỏi từ dữ liệu. Độ sâu của mơ hình được
biểu thị bằng số lớp trong mơ hình. Trong khi các chương trình truyền thống xây
dựng các phân tích dữ liệu theo cách tuyến tính, thì chức năng phân tầng của các
hệ thống học sâu cho phép các máy xử lí dữ liệu theo cách tiếp cận phi tuyến. Lớp
đầu tiên của mạng nơ-ron sẽ xử lí dữ liệu đầu vào thơ, như là xử lý ảnh gốc ban
đầu và chuyển nó sang lớp tiếp theo làm đầu ra. Lớp thứ hai xử lí thơng tin của lớp


trước bằng cách thêm thông tin bổ sung như địa chỉ IP của người dùng hoặc rút
trích đặc trưng ảnh và chuyển qua kết quả.
Một trong những mơ hình Deep Learning tiên tiến giúp chúng ta xây dựng

được những hệ thống thơng minh với độ chính xác cao đó là mạng nơ ron.
1.2. Mạng nơ ron (Neural)
1.2.1. Mạng Nơ-ron nhân tạo
Mạng Neural nhân tạo, Artificial Neural Network (ANN) gọi tắt là mạng nơ
ron, là một mơ hình xử lý thơng tin phỏng theo cách thức xử lý thông tin của hệ nơ
ron sinh học. Trong Deep learning, Neural networks để chỉ mạng nơ ron nhân tạo,
là sự kết hợp giữa các nơ ron nhân tạo với nhau. Mỗi liên kết kèm theo một trọng
số nào đó đặc trưng cho đặc tính kích hoạt ức chế giữa các nơ ron. ANN giống như
bộ não con người, được học bởi kinh nghiệm thơng qua huấn luyện, có khả năng
lưu giữ những kinh nghiệm hiểu biết và sử dụng những tri thức đó trong việc dự
đoán các dữ liệu chưa biết.
Kiến trúc chung của một mạng nơron nhân tạo (ANN) gồm 3 thành phần đó
là: Tầng nhập (Input Layer), tầng ẩn (Hidden Layer) và tầng xuất (Output Layer).
Trong đó, tầng ẩ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 ANN có thể có nhiều tầng ẩn.
Tầng input layer (tầng vào): Tầng này nằm 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 output layer (tầng ra): Là tầng bên phải cùng và nó thể hiện cho những đầu ra
của mạng.
Tầng hidden layer (tầng ẩn): Tầng này nằm giữa tầng vào và tầng ra nó thể hiện
cho q trình suy luận logic của mạng.


Mỗi một Neural Network chỉ có duy nhất một tầng vào và một tầng ra nhưng lại có
rất nhiều tầng ẩn.

Hình 1.1. Mơ hình mạng nơ ron nhân tạo ANN

Hình 1.2. Kiến trúc tổng quát của một ANN

Trong đó các Processing Elements (PE) của ANN 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.
- Q trình xử lý thơng tin của một ANN:


Hình 1.3. Qúa trình xử lý thơng tin trong ANN
+ Inputs (dữ liệu vào): Mỗi Input tương ứng với một thuộc tính (attribute) của dữ
liệu (patterns).
+ Output (kết quả): Kết quả của một ANN 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 ANN, nó thể hiện mức độ quan trọng (độ mạnh) của dữ liệu đầu vào đối với
q trình xử lý thơng tin (q trình chuyển đổi dữ liệu từ Layer này sang layer
khác). Quá trình học của ANN thực ra là quá trình điều chỉnh các trọng số của các
dữ liệu đầu vào để 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. 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 chuyển đổi của một nơron cho biết
khả năng kích hoạt 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 (nói cách khác là
output của một nơ ron có thể được chuyển đến layer tiếp trong mạng hoặc không).


Mối quan hệ giữa hàm kích hoạt và kết quả (output) được thể hiện bằng hàm
chuyển đổi (Transfer Function).

Việc lựa chọn hàm chuyển đổi có tác động lớn đến kết quả của ANN. Hàm chuyển
đổi phi tuyến được sử dụng phổ biến trong ANN là sigmoid 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.
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.


1.2.2. Kiến trúc mạng nơ ron
Mạng Một Tầng
Mạng một tầng với S nơ-ron được minh họa trong hình 1.4. Chú ý rằng với
mỗi một đầu vào trọng số R đầu vào sẽ được nối với từng nơ-ron và ma trận trọng
số bây giờ sẽ có S hàng. Một tầng bao gồm ma trận trọng số, các bộ cộng, vector
ngưỡng b, hàm chuyển và vector đầu ra a.
Mỗi phần tử của vector đầu vào p được nối với từng nơ-ron thông qua ma trận
trọng số W. Mỗi nơ-ron có một ngưỡng b i, một bộ cộng, một hàm chuyển f và một
đầu ra ai. Kết hợp cùng với nhau, các đầu ra tạo thành một vector đầu ra a.
Ma trận trọng số cho các phần tử trong vector đầu vào W:

W=
Các chỉ số hàng của các phần tử trong ma trận W chỉ ra nơ-ron đích đã kết hợp với
trọng số đó, trong khi chỉ số cột cho biết đầu vào cho trọng số đó. Vì vậy, các chỉ
số trong ma trận cho biết rằng đây là trọng số của đầu vào nào nối với nơ-ron thứ
mấy.



Hình 1.4 : Mơ hình mạng một lớp

.

Mạng Đa Tầng

Hình 1.5 :Ví dụ về một mơ hình mạng đa tầng
Mơ hình mạng neural ở trên gồm 3 tấng: tầng nhập (input), tầng ẩn(hidden) và tầng
xuất (output). Mỗi nút trong tầng nhập nhận giá trị của một biến độc lập và chuyển


vào mạng.
Dữ liệu từ tất cả các nút trong tầng nhập được tích hợp - ta gọi là tổng trọng số – và
chuyển kết quả cho các nút trong tầng ẩn. Các nút trong lớp xuất nhận các tín hiệu
tổng trọng hóa từ các nút trong lớp ẩn.
1.2.3. Huấn luyện mạng neural
Mạng neural nhân tạo phỏng theo việc xử lý thông tin của bộ não người, do
vậy đặc trưng cơ bản của mạng là có khả năng học, khả năng tái tạo các hình ảnh
và dữ liệu khi đã học. Trong trạng thái học thông tin được lan truyền theo hai chiều
nhiều lần để học các trọng số. Có 3 kiểu học chính, mỗi kiểu học tương ứng với
một nhiệm vụ học trừu tượng. Đó là học có giám sát (có mẫu), học khơng giám sát
và học tăng cường. Thơng thường loại kiến trúc mạng nào cũng có thể dùng được
cho các nhiệm vụ.
a. Học có giám sát
Một thành phần khơng thể thiếu của phương pháp này là sự có mặt của một
người thầy (ở bên ngoài hệ thống). Người thầy này có kiến thức về mơi trường thể
hiện qua một tập hợp các cặp đầu vào - đầu ra đã được biết trước. Hệ thống học (ở
đây là mạng neural) sẽ phải tìm cách thay đổi các tham số bên trong của mình (các
trọng số và các ngưỡng) để tạo nên một ánh xạ có khả năng ánh xạ các đầu vào

thành các đầu ra mong muốn. Sự thay đổi này được tiến hành nhờ việc so sánh
giữa đầu ra thực sự và đầu ra mong muốn.
b. Học không giám sát
Trong học khơng có giám sát, ta được cho trước một số dữ liệu x và hàm chi
phí cần được cực tiểu hóa có thể là một hàm bất kỳ của dữ liệu x và đầu ra của
mạng, f – hàm chi phí được quyết định bởi phát biểu của bài toán. Phần lớn các
ứng dụng nằm trong vùng của các bài tốn ước lượng như mơ hình hóa thống kê,
nén, lọc, phân cụm.


c. Học tăng cường
Dữ liệu x thường không được tạo trước mà được tạo ra trong quá trình một
agent tương tác với môi trường. Tại mỗi thời điểm t, agent thực hiện hành động y t
và môi trường tạo một quan sát xt với một chi phí tức thời C t, theo một quy trình
động nào đó (thường là khơng được biết). Mục tiêu là một sách lược lựa chọn hành
động để cực tiểu hóa một chi phí dài hạn nào đó, nghĩa là chi phí tích lũy mong
đợi. Quy trình hoạt động của mơi trường và chi phí dài hạn cho mỗi sách lược
thường khơng được biết, nhưng có thể ước lượng được. Mạng nơ-ron nhân tạo
thường được dùng trong học tăng cường như một phần của thuật toán tồn cục.
Các bài tốn thường được giải quyết bằng học tăng cường là các bài tốn điều
khiển, trị chơi và các nhiệm vụ quyết định tuần tự khác.
d. Ví dụ
Giả sử chúng ta muốn dạy nơron phân biệt chữ A và B. Khi đưa input là A
chúng ta muốn nơron cho output là 1, cịn khi input là B thì nơron phải cho output
bằng 0.

Hãy bắt đầu bằng cách cho các trọng số (weigh) những giá trị ngẫu nhiên,
lúc này nơron chưa biết gì hết. Bây giờ hãy input chữ A. Nơron sẽ lấy tổng có
trọng số của các inputs và so sánh kết quả với 0. Nếu kết quả dương thì output là 1,
âm thì output là 0. Khả năng nơron đốn đúng là 50%, vì các trọng số đang có giá

trị hồn tồn ngẫu nhiên. Nếu nơron đốn đúng thì chúng ta khơng cần làm gì cả,
nhưng khi nơron đốn sai (output bằng 0), thì chúng ta phải tăng các trọng số của


các inputs đang hoạt động (các inputs khác không) lên, sao cho lần tới tổng có
trọng số sẽ vượt quá ngưỡng và tạo nên output là 1.
Ngược lại, khi đưa chữ B vào và nơron đoán sai (output bằng 1), thì ta phải giảm
các weights của các inputs đang hoạt động xuống, sao cho lần tới tổng có trọng số
sẽ nhỏ hơn threshold và buộc nơron phải cho output bằng 0.
Như vậy, khi dạy chữ B thành cơng rồi thì nơron có quên đi chữ đã học trước đó là
A khơng ? Khơng, vì khi input là các chữ khác nhau thì nhóm các đường inputs
đang hoạt động cũng khác nhau hoặc là khơng hồn tồn trùng nhau. Nhớ là chúng
ta chỉ biến đổi weights của các inputs đang hoạt động thôi. Chúng ta chỉ việc lập đi
lập lại quá trình dạy như trên cho tới khi nơron học thuộc bài mới thơi.
1.2.4. Thuật tốn huấn luyện mạng
Trong phạm vi đề cập những gì liên quan đến kiến thức cơ sở để làm đề tài,
chúng tơi chỉ xin trình bày những vấn đề có liên quan, những kiến thức được sử
dụng phục vụ cho việc hoàn thành đề tài.
Trong đề tài này, chúng tôi đã sử dụng mạng feed-forward và thuật toán lan truyền
ngược sai số Back Propagation để xử lý bài toán.
a. Thuật toán lan truyền ngược Back Propagation
Đây là phương pháp thông dụng nhất để huấn luyện cho các mạng nơron
truyền thẳng nhiều lớp. Có thể áp dụng cho các mạng truyền thẳng với các hàm
chuyển và các hàm lỗi khả vi.
Tiêu chuẩn huấn luyện: Làm cho sai số đầu ra càng nhỏ càng tốt.
Triết lý của phương pháp: dựa trên đầu ra để điều chỉnh trọng số của lớp ra,
sau đó dựa trên tính tốn của lớp ra để điều chỉnh trọng số của lớp ẩn.
Huấn luyện mạng neural nhiều lớp sử dụng thuật toán Lan truyền ngược
gồm hai q trình: Q trình truyền tuyến tính và q trình truyền ngược:
Q trình truyền tuyến tính: Dữ liệu từ lớp nhập qua lớp ẩn và đến lớp xuất để:



 Thay đổi giá trị của trọng số liên kết W của các neural trong mạng biểu
diễn được dữ liệu học.
 Tìm ra sự khác nhau giữa giá trị thật hàm mẫu mà mạng tính được và kết
quả dự đốn của mạng gọi là lỗi (học có giám sát).
Q trình truyền ngược: Giá trị lỗi sẽ được truyền ngược lại sao cho quá
trình huấn luyện (học) sẽ tìm ra trọng số Wi để lỗi nhỏ nhất.
b. Những hạn chế của phương pháp lan truyền ngược
Ngồi những thành cơng của giải thuật học lan truyền ngược, vẫn cịn có
một số khía cạnh làm cho giải thuật trở nên chưa được bảo đảm là mọi lúc đều tốt.
Khó khăn chủ yếu là ở q trình huấn luyện lâu. Có thể do tốc độ học và động lực
khơng tối ưu. Sự sai sót trong việc huấn luyện nói chung xuất hiện từ hai nguồn:
mạng liệt và những cực tiểu địa phương.
Mạng liệt: xảy ra khi những trọng số được điều chỉnh tới những giá trị rất
lớn. Tổng đầu vào của một đơn vị ẩn hoặc đơn vị đầu ra có thể bởi vậy mà đạt giá
trị rất cao (hoặc dương hoặc âm), và qua hàm kích hoạt sigmoid, đơn vị sẽ có một
giá trị kích hoạt rất gần 0 hoặc rất gần 1. Giá trị hiệu chỉnh trọng số gần 0, và quá
trình huấn luyện có thể đi đến một trạng thái dừng ảo.
Cực tiểu địa phương: bề mặt sai số của mạng rất phức tạp đầy những ngọn
đồi và những thung lũng. Bởi vì sự hạ độ dốc, mạng có thể bị mắc bẫy tại một cực
tiểu địa phương khi có nhiều cực tiểu thấp hơn gần bên cạnh. Những phương pháp
thống kê có thể giúp để tránh cái bẫy này, nhưng chúng làm chậm. Một phương án
khác là tăng thêm số lượng đơn vị ẩn. Như vậy sẽ làm việc trong không gian sai số
nhiều chiều, nên cơ hội gặp bẫy nhỏ hơn. Tuy nhiên việc tăng cũng có giới hạn
trên, khi vượt qua giới hạn này, cơ hội mắc bẫy lại tăng lên.


CHƯƠNG 2: MẠNG NƠ RON TÍCH CHẬP (CONVOLUTION NEURAL
NETWORKS – CNNs)

2.1. Phương pháp CNN
Mạng neural tích chập (Convolutional Neural Network) là một trong những
mơ hình Depep Learning tiên tiến giúp ta xây dựng được những hệ thống thông
minh với độ chính xác cao như hiện nay.
Về cơ bản CNN là một kiểu mạng ANN truyền thẳng, trong đó kiến trúc chính
gồm nhiều thành phần được ghép nối với nhau theo cấu trúc nhiều tầng đó là:
Convolution, Pooling, ReLU và Fully connected.
2.1.1. Các thành hần chính và mơ hình hoạt động của CNN
Trước khi đi vào các thành phần cơ bản của CNN, ta xem xét một ví dụ về
cách thức xử lý thông tin đầu vào của một ANN truyền thẳng để từ đó rút ra tác
dụng của các thành phần có trong mạng CNN.

Hình 2.1: Ví dụ mạng cách thức xử lý ANN với cấu trúc full connected
Hình 2.1 mơ tả một ví dụ với dữ liệu đầu vào là một bức ảnh có kích thước
200 *200 được xử lý bằng ANN với kết nối đầy đủ giữa hai tầng liên tiếp (full
connected). Như vậy giả sử số neural tầng ẩn là 40000 thì tổng số tham số (mà cụ
thể hơn ở đây là các trọng số liên kết W giữa các neural tầng nhập với tầng ẩn) cần
phải ước lượng lên đến 1.6 tỉ. Điều này gây khó khăn cho việc huấn luyện ANN


trên hai yếu tố:(1) chi phí để xây dựng dữ liệu huấn luyện lớn và (2) thời gian huấn
luyện lâu.

Hình 2.2: Ý tưởng CNN
Từ thực tế đặt ra ở trên người ta thấy rằng để giảm số lượng tham số cần giảm số
lượng kết nối giữa các lớp. Từ đây thành phần convolution được áp dụng – ý tưởng
chính là mỗi neural chỉ cần kết nối tới một vùng cục bộ của ảnh thay vì trên tồn
bộ ảnh.
● Tầng chập (Convolution)
Tầng Convolution (Conv) là tầng quan trọng nhất trong cấu trúc của CNN.

Conv dựa trên lý thuyết xử lý tín hiệu số, việc lấy tích chập sẽ giúp trích xuất được
những thơng tin quan trọng từ dữ liệu. Ta có thể hình dung phép tính này được thực
hiện bằng cách dịch chuyển một cửa sổ mà ta gọi là kernel trên ma trận đầu vào,
trong đó kết quả mỗi lần dịch chuyển được tính bằng tổng tích chập (tích của các
giá trị giữa 2 ma trận tại vị trí tương ứng).
Để dễ hình dung, ta có thể xem tích chập như một cửa sổ trượt áp đặt lên một ma
trận như sau:


Hình 2.3. Minh họa cửa sổ chập
Trong hình trên, ma trận bên trái là một hình có kích thước 5x5, mỗi giá trị trong
ma trận tương đương với một điểm ảnh: 0 là màu trắng, 1 là màu đen (đối với ảnh
xám thì giá trị màu biến thiên trong khoảng từ 0 đến 255).
Khi được áp dụng phép tính Conv vào xử lý ảnh người ta thấy rằng Conv sẽ giúp
biến đổi các thông tin đầu vào thành các yếu tố đặc trưng (nó tương ứng như bộ
phát hiện – detector các đặc trưng về cạnh, hướng, đốm màu …). Hình 4 là minh
họa việc áp dụng phép tính Conv trên ảnh trong đó (a) là kết quả biến đổi hình ảnh
khi thực hiện phép Conv khác nhau cho ra kết quả khác nhau, (b) là trực quan hóa
các kernel dùng để detector các đặc trưng về cạnh, hướng, đốm màu.

Hình 2. 4: Ví dụ Conv
Để dễ hình dung, ta xét bài tốn thực hiện tính giá trị đầu ra của một ảnh có
kích thước W_1*H_1 * D_1 ( ở đây D_1 được gọi là chiều sâu của ảnh thực chất
là giá trị tại 3 kênh màu tương ứng với ảnh RGB). Khi đó một Conv như một cửa
sổ trượt (sliding window, có tên gọi là kernel, filter hay feature detector ) – cửa sổ


này thực chất cũng là một ma trận có kích thước F*F thực hiện trên mỗi chiều của
ảnh đầu vào (ta sử dụng K filter). Trong quá trình xử lý sẽ dịch chuyển các filter
trên toàn bộ bức ảnh theo S(slide) bước (tính bằng pixel). Người ta gọi mỗi vùng

mà filter áp đặt lên ma trận đầu vào là receptive field. Trong một số trường hợp để
cân bằng giữa số bước dịch chuyển và kích thước của ảnh người ta có thể chèn
thêm P pixel với một giá trị màu cho trước (thường là 0) xung quanh viền của ảnh
khi đó ta được ma trận đầu ra (feature map) là W_2* H_2 * D_2 trong đó:
○ W_2=(W_1 – F+2P)/S+1
○ H_2=( H_1 – F+2P)/S+1
○ D_2=K
Giá trị tại các ô trong ma trận của filter có kích thước (F*F* D_1) +1 (cộng 1 ở
đây là tham số ngưỡng của filter) sẽ tương ứng là trọng số, các giá trị này của mỗi
filter khơng đổi trong q trình dịch chuyển trên tồn bộ bức ảnh đầu vào. Đây
cũng là tính chất quan trọng (dùng chung bộ trọng số – shared weights) làm giảm
thêm số tham số cần học trong quá trình huấn luyện mạng. Từ đó tổng số tham số
cần học cho quá trình sử dụng Conv là (F*F* D_1)*K +K (ở đây cộng thêm k
tham số ngưỡng của k filter).

Hình 2.5: Các thành phần của conv


Trong hình 2.6 là ví dụ cụ thể, trong đó đầu vào là ảnh có kích thước (32*32*3) ở
đây W_1 = H_1=32 và D_1 =3 là chỉ giá trị của kênh màu RGB. Giả sử ta tiến
hành sử dụng 6 filter (K=6) trong đó mỗi filter có kích thước (5*5*3) F= 5 với
bước dịch chuyển S=1 và P=0. Tương ứng với mỗi filter sẽ cho một feature map
khác nhau ở kết quả đầu ra trong đó: kích thước feature map là W_2 = H_2 =
( W_1 – F)/1 +1 =28. Mỗi neural trong một feature map sẽ có số tham số là (F*F*
D_1) = 5*5*3 +1.

Hình 2.6: Ví dụ tầng Conv trong ảnh
2.1.2. Ưu điểm của CNN
Giảm số lượng tham số: Ở ANNs truyền thống, các neural ở lớp trước sẽ kết
nối tới tất cả các neural ở lớp sau (full connected) gây nên tình trạng quá nhiều

tham số cần học. Đây là ngun nhân chính gây nên tình trạng overfiting cũng như
làm tăng thời gian huấn luyện. Với việc sử dụng Conv trong đó cho phép chia sẻ
trọng số liên kết (shared weights), cũng như thay vì sử dụng full connected sẽ sử
dụng local receptive fields giúp giảm tham số.
Các tham số trong quá trình sử dụng Conv hay giá trị của các filter – kernel sẽ
được học trong quá trình huấn luyện. Như giới thiệu ở phần trên các thơng tin này
biểu thị thơng tin giúp rút trích ra được các đặc trưng như góc, cạnh, đóm màu


trong ảnh … như vậy việc sử dụng Conv sẽ giúp xây dựng mơ hình tự học ra đặc
trưng.
2.2. Các tầng chính trong mạng CNN
2.2.1. Pooling
Tầng pooling (hay cịn gọi subsampling hoặc downsample) là một trong
những thành phần tính tốn chính trong cấu trúc CNN. Xét về mặt tốn học
pooling thực chất là q trình tính tốn trên ma trận trong đó mục tiêu sau khi tính
tốn là giảm kích thước ma trận nhưng vẫn làm nổi bật lên được đặc trưng có trong
ma trận đầu vào. Trong CNN tốn tử pooling được thực hiện độc lập trên mỗi kênh
màu của ma trận ảnh đầu vào.
Có nhiều tốn tử pooling như Sum-Pooling, Max-Pooling, L_2-Pooling
nhưng Max-Pooling thường được sử dụng. Về mặt ý nghĩa thì Max-Pooling xác
định vị trí cho tín hiệu mạnh nhất khi áp dụng một loại filter. Điều này cũng tương
tự như là một bộ lọc phát hiện ví trị đối tượng bằng filter trong bài tốn phát hiện
đối tượng trong ảnh. Thủ tục max-pooling chọn giá trị lớn nhất trong vùng đầu vào
2x2. Như vậy qua lớp Max Pooling thì số lượng neuron giảm đi phân nửa. Trong
một mạng CNN có nhiều Feature Map nên mỗi Feature Map chúng ta sẽ cho mỗi
Max Pooling khác nhau. Chúng ta có thể thấy rằng Max Pooling là cách hỏi xem
trong các đặc trưng này thì đặc trưng nào là đặc trưng nhất.
Hình 2.7 là ví dụ về sử dụng tốn tử pooling. Trong đó hình 2.7 (a) là cách
thức tầng pooling xử lý đối với một đầu vào là kết quả của nhiều filter (k=64), kích

thước của đầu vào là [224*224*64] được thực hiện với các thông số F=2 và S= 2
thì đầu ra có kích thước [112*112*64]. Hình 2.7 (b) mô tả chi tiết cách thức hoạt
động của max-pooling trong đó F=2 và S=2 kết quả đầu ra ma trận tương ứng.


Hình 2.7: Ví dụ lớp Pooling
Lớp pooling thường được sử dụng ngay sau lớp convolutional để đơn giản
hóa thơng tin đầu ra để giảm bớt số lượng nơ-ron.

Hình 2.8: Ví dụ minh họa mơ hình CNN
Một lớp (layer) pooling là hoạt động thực hiện pooling trên một hình ảnh
hoặc một tập các hình ảnh. Đầu ra sẽ có cùng số lượng hình ảnh, nhưng mỗi cái sẽ
có điểm ảnh ít hơn. Điều này cũng rất hữu ích trong việc giảm tải sự tính tốn. Có
thể hạ dung lượng một tấm ảnh 8 megapixel xuống còn 2 megapixel sẽ giúp mọi
xử lý về trở nên dễ dàng.
Cuối cùng ta đặt tất cả các lớp lại với nhau thành một CNN với đầu ra gồm các
neuron với số lượng tùy bài toán.


Hai lớp cuối cùng của các kết nối trong mạng là một lớp đầy đủ kết nối
(fully connected layer) . Lớp này nối mọi nơron từ lớp max pooled tới mọi nơron
của tầng ra.
2.2.2. ReLU
ReLU layer áp dụng các kích hoạt (activation function) max(0,x) lên đầu ra
của Conv Layer, có tác dụng đưa các giá trị âm về thành 0. Layer này khơng thay
đổi kích thước của ảnh và khơng có thêm bất kì tham số nào.
Mục đích của lớp ReLu là đưa ảnh một mức ngưỡng, ở đây là 0. Để loại bỏ các giá
trị âm không cần thiết mà có thể sẽ ảnh hưởng cho việc tính tốn ở các layer sau
đó.
2.2.3. Fully-connected

Fully-connected là cách kết nối các neural ở hai tầng với nhau trong đó tầng
sau kết nối đẩy đủ với các neural ở tầng trước nó. Đây cũng là dạng kết nối thường
thấy ở ANN, trong CNN tầng này thường được sử dụng ở các tầng phí cuối của
kiến trúc mạng.
2.3. Kiến trúc mạng CNN
CNN có kiến trúc được hình thành từ các thành phần cơ bản bao gồm
Convolution (CONV), Pooling (POOL), ReLU, Fully-connected (FC) về mặt xây
dựng kiến trúc tổng quát CNN được mô tả như sau (dấu mũi tên thể hiện thứ tự sắp
xếp các tầng từ trước đến sau).


×