Preview text:
lOMoARcPSD| 59629529
TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN
NHẬP MÔN NHẬP MÔN HỌC MÁY
ỨNG DỤNG THUẬT TOÁN CNN ĐỂ NHẬN DIỆN CHỮ VIẾT TAY
Sinh viên thực hiện
: TẠ TRẦN TRUNG HIẾU LÊ HUY ĐỒNG
NGUYỄN VIẾT TIẾN
Giảng viên hướng dẫn : VŨ VĂN ĐỊNH Ngành
: CÔNG NGHỆ THÔNG TIN Chuyên ngành
: CÔNG NGHỆ PHẦN MỀM Lớp
: D16CNPM5 Khóa : D16
Hà Nội, tháng 4 năm 2024 lOMoARcPSD| 59629529
PHIẾU CHẤM ĐIỂM ST
Họ và tên sinh viên Nội dung thực hiện Điểm Chữ ký T 1 Tạ Trần
-Chỉnh sửa chung,phân công công Trung việc Hiếu21810310638 . (Nhóm trưởng)
-Làm phần:Giới thiệu bài toán
nhận dạng, Mô hình học sâu.
-Tìm hiểu code bài toán lớn. 2 Lê Huy
-Làm phần: Các bước xử lý cho
Đồng21810310631 bài toán nhận dạng hoàn chỉnh,Mô
hình và huấn luyện trong bài toán nhận dạng.
-Tìm hiểu code bài toán lớn 3 Nguyễn
-Làm phần: Các bước xử lý cho bài Viết Tiến-
toán nhận dạng hoàn chỉnh, Giới 21810310518
thiệu tổng quan về neuron.
-Tìm hiểu code bài toán lớn.
Họ và tên giảng viên Chữ ký Ghi chú Giảng viên chấm 1: Giảng viên chấm 2: MỤC LỤ C
MỞ ĐẦU..................................................................................................................5
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI......................................................................6
1.1. Giới thiệu về bài toán phân loại ảnh...................................................................6
1.1.1 .Mục tiêu........................................................................................................6 lOMoARcPSD| 59629529
1.1.2. Các giai đoạn phát triển.................................................................................6
1.2. Các bước xử lý cho bài toán nhận dạng.............................................................7
CHƯƠNG 2. TỔNG QUAN VỀ CNN...................................................................8
2.1. Định nghĩa mạng neural tích châp ̣ ......................................................................8
2.2. Tích châp là gì....................................................................................................8
2.3. Mô hình mạng neural tích châp ̣ ..........................................................................9
2.4. Xây dựng mạng neural tích châp ̣ ......................................................................11
2.4.1. Trường tiếp nhân c ̣ ục bô.............................................................................̣ 11
2.4.2. Trọng số và đô lệcḥ .....................................................................................14
2.4.3. Lớp chứa hay lớp tổng hợp.........................................................................17
CHƯƠNG 3: CÀI ĐẶT CHƯƠNG TRÌNH THỬ NGHIỆM...........................19 3.1.
Dữ liệu thực nghiệm.....................................................................................19
3.2.1. Mô hình huấn luyện......................................................................................19
3.2.2. Các bước thực nghiệm..................................................................................21
3.2.3 Kết quả thực nghiệm......................................................................................26
KẾT LUẬN CHUNG.............................................................................................29
TÀI LIỆU THAM KHẢO.....................................................................................30 lOMoARcPSD| 59629529 MỞ ĐẦU
Trong thời đại của cuộc cách mạng công nghệ, sự tiến bộ đáng kinh ngạc trong
lĩnh vực trí tuệ nhân tạo, đặc biệt là các mô hình học sâu như Convolutional Neural
Networks (CNNs), đã mở ra những khả năng mới không ngờ trong việc xử lý và nhận
diện hình ảnh. Trên nền tảng của CNNs, một trong những ứng dụng đặc biệt thu hút
sự quan tâm là việc nhận diện chữ viết tay từ hình ảnh.
Nhận diện chữ viết tay không chỉ là một thách thức khoa học mà còn mang
lại nhiều ứng dụng thực tiễn quan trọng. Trong xã hội ngày càng phát triển hiện
nay, việc nhận diện chữ viết tay đã trở thành một phần không thể thiếu của cuộc
sống hàng ngày. Tuy nhiên, việc xác định chữ viết tay dựa trên hình ảnh không phải
lúc nào cũng dễ dàng đối với con người. Đặc biệt, với sự đa dạng về phong cách
viết, độ nghiêng, và kích thước của các nét chữ, việc nhận diện chính xác từ hình
ảnh đòi hỏi sự hiểu biết sâu sắc về đặc điểm đặc trưng của từng phong cách chữ viết.
Trong ngữ cảnh này, việc áp dụng các mô hình học sâu như CNNs để nhận
diện chữ viết tay mang lại tiềm năng lớn trong việc cải thiện hiệu suất và độ chính
xác của các hệ thống nhận diện hình ảnh. Cùng với sự tiến bộ trong công nghệ xử lý
ảnh và thuật toán học máy, các nghiên cứu và ứng dụng trong lĩnh vực này đang dần
trở thành một lĩnh vực nghiên cứu sôi động và hứa hẹn. Đề tài này tập trung vào việc
khám phá và đánh giá sâu hơn về ứng dụng của CNNs trong việc nhận diện giống
chó, đồng thời đề xuất các phương pháp và kỹ thuật tiên tiến nhằm tăng cường hiệu
suất và độ chính xác của các hệ thống nhận diện hình ảnh, từ đó đóng góp vào việc
phát triển một hệ thống nhận diện giống chó hiệu quả và đáng tin cậy.
Do thời gian thực hiện có hạn kiến thức còn nhiều hạn chế nên bài làm của
chúng em chắc chắn không tránh khỏi những thiếu sót nhất định. Em rất mong nhận
được ý kiến đóng góp của thầy cô giáo và các bạn để em có thêm kinh nghiệm và
tiếp tục hoàn thiện đồ án của mình.
Chúng em xin chân thành cảm ơn!
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI lOMoARcPSD| 59629529
1.1. Giới thiệu về bài toán phân loại ảnh 1.1.1. Mục tiêu
Mục tiêu chính của bài toán phân loại ảnh là xây dựng một mô hình học máy
có thể tự động phân loại các hình ảnh mới với độ chính xác cao. Mô hình này cần
được huấn luyện trên một tập dữ liệu gồm các hình ảnh đã được dán nhãn (labeled)
với các lớp tương ứng. Sau khi được huấn luyện, mô hình có thể dự đoán lớp của các
hình ảnh mới mà nó chưa từng gặp trước đây.
1.1.2. Các giai đoạn phát triển
Giai đoạn tiền nền (1950s - 1970s):
Trong thời kỳ này, sự quan tâm ban đầu của các nhà nghiên cứu tập trung vào
việc phát triển các kỹ thuật cơ bản trong xử lý ảnh và trí tuệ nhân tạo. Các phương
pháp đầu tiên thường dựa trên các kỹ thuật xử lý ảnh đơn giản như lọc, biến đổi hình
học và phân loại dựa trên các đặc trưng thủ công được thiết kế bởi con người.
Giai đoạn truyền thống (1980s - 2000s):
Trong giai đoạn này, các kỹ thuật truyền thống như phân loại dựa trên đặc
trưng (feature-based classification) trở nên phổ biến. Các kỹ thuật phổ biến bao gồm
việc sử dụng bộ lọc Gabor, histogram của các đặc trưng hình ảnh, và kỹ thuật phân
loại như SVM (Support Vector Machines) và k-nearest neighbors (k-NN). Tuy nhiên,
việc rút trích đặc trưng thủ công có thể gặp phải các hạn chế trong việc áp dụng cho
các bài toán phức tạp.
Giai đoạn Deep Learning (Từ năm 2012 trở đi):
Giai đoạn này đánh dấu sự bùng nổ của Deep Learning trong lĩnh vực nhận
dạng ảnh. Mạng nơ-ron tích chập (Convolutional Neural Networks - CNNs) trở thành
tiêu biểu cho việc học sâu trong thị giác máy tính. Các mạng nơ-ron sâu, được đào
tạo trên dữ liệu lớn, đã đạt được hiệu suất vượt trội trong các cuộc thi như ImageNet,
giúp chứng minh sức mạnh của Deep Learning trong việc nhận dạng và phân loại ảnh.
Giai đoạn Hiện đại (Từ năm 2015 trở đi): lOMoARcPSD| 59629529
Trong giai đoạn này, các phương pháp như Transfer Learning trở nên phổ biến.
Transfer Learning cho phép tái sử dụng kiến thức đã học được từ các mô hình đào
tạo trước trên các tập dữ liệu lớn, giúp tăng cường hiệu suất và giảm đáng kể thời
gian và nguồn lực cần thiết cho việc đào tạo mới. Các mô hình như VGG, ResNet và
Inception được sử dụng rộng rãi, đặc biệt là khi kết hợp với Transfer Learning.
Giai đoạn Tiên tiến (Từ năm 2020 trở đi):
Trong giai đoạn này, các nghiên cứu tiếp tục tập trung vào việc cải thiện hiệu
suất và tính nhất quán của các mô hình nhận dạng ảnh. Các phương pháp như kết hợp
học tăng cường (reinforcement learning) và học biểu diễn (representation learning)
được nghiên cứu để tăng khả năng giải thích và ổn định của các mô hình. Các nghiên
cứu cũng tập trung vào việc giảm chi phí tính toán và tăng tính linh hoạt của các mô
hình, đặc biệt là trong các ứng dụng nhận dạng ảnh thời gian thực và trên các thiết bị có tài nguyên hạn chế.
1.2. Các bước xử lý cho bài toán nhận dạng
1) Thu thập dữ liệu: Thu thập một tập dữ liệu gồm các hình ảnh thuộc các lớp khác nhau.
2) Chuẩn bị dữ liệu: Tiền xử lý dữ liệu bằng cách thay đổi kích thước, xoay, cắt,
v.v. để chuẩn hóa dữ liệu và tăng cường dữ liệu.
3) Huấn luyện mô hình: Huấn luyện một mô hình học máy, ví dụ như mạng nơron
nhân tạo (ANN) hoặc mạng nơ-ron tích chập (CNN), trên tập dữ liệu đã được chuẩn bị.
4) Đánh giá mô hình: Đánh giá hiệu suất của mô hình trên một tập dữ liệu kiểm
tra (test set) để đảm bảo độ chính xác của mô hình.
5) Triển khai mô hình: Triển khai mô hình đã được huấn luyện để sử dụng cho
các ứng dụng thực tế.
CHƯƠNG 2. TỔNG QUAN VỀ CNN
2.1. Định nghĩa mạng neural tích châp ̣
Những năm gần đây, ta đã chứng kiến được nhiều thành tựu vượt bậc trong
ngành Thị giác máy tính (Computer Vision). Các hệ thống xử lý ảnh lớn như của lOMoARcPSD| 59629529
Facebook ,Google hay Amazon đã đưa vào sản phẩm của mình những chức năng
thông minh như nhận diện khuôn mặt người dùng, phát triển xe hơi tự lái hay drone giao hàng tự động.
Convolutional Neural Networks (CNNs – Mạng nơ-ron tích chập) là một trong
những mô hình Deep Learning tiên tiến giúp cho chúng 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. Trong báo cáo này, chúng ta
sẽ trình bày về Convolution (tích chập) cũng như ý tưởng của mô hình CNNs trong
phân lớp ảnh áp dụng cho bài toán nhân ḍ ạng chữ viết tay(Image Classification).
2.2. Tích châp là gì
Tích chập được sử dụng đầu tiên trong xử lý tín hiệu số (Signal processing).
Nhờ vào nguyên lý biến đổi thông tin, các nhà khoa học đã áp dụng kĩ thuật này vào
xử lý ảnh và video số.
Để dễ hình dung, ta có thể xem tích chập như một cửa sổ trượt (sliding window)
áp lên một ma trận. Ta có thể theo dõi cơ chế của tích chập qua hình minh họa bên dưới.
Hình 2. 1 Minh họa tích châp̣
Ma trận bên trái là một bức ảnh đen trắng. Mỗi giá trị của ma trận tương đương
với một điểm ảnh (pixel), 0 là màu đen, 1 là màu trắng (nếu là ảnh grayscale thì giá
trị biến thiên từ 0 đến 255). Sliding window còn có tên gọi là kernel, filter hay feature
detector. Ở đây, ta dùng một ma trận filter 3×3 nhân từng thành phần tương ứng
(element-wise) với ma trận ảnh bên trái. Gía trị đầu ra do tích của các thành phần này lOMoARcPSD| 59629529
cộng lại. Kết quả của tích chập là một ma trận (convoled feature) sinh ra từ việc trượt
ma trận filter và thực hiện tích chập cùng lúc lên toàn bộ ma trận ảnh bên trái. Dưới
đây là một vài ví dụ của phép toán tích chập.
Ta có thể làm mờ bức ảnh ban đầu bằng cách lấy giá trị trung bình của các điểm
ảnh xung quanh cho vị trí điểm ảnh trung tâm.
Hình 2. 2 Ảnh mờ sau khi châp̣
Ngoài ra, ta có thể phát hiện biên cạnh bằng cách tính vi phân (độ dị biệt) giữa
các điểm ảnh lân cận. lOMoARcPSD| 59629529
Hình 2. 3 Ảnh mờ sau khi châp̣
2.3. Mô hình mạng neural tích châp ̣
Bây giờ, Chúng ta đã biết thế nào là convolution. Vậy CNNs là gì? CNNs chỉ
đơn giản gồm một vài layer của convolution kết hợp với các hàm kích hoạt phi tuyến
(nonlinear activation function) như ReLU hay tanh để tạo ra thông tin trừu tượng hơn
(abstract/higher-level) cho các layer tiếp theo.
Trong mô hình Feedforward Neural Network (mạng nơ-ron truyền thẳng), các
layer kết nối trực tiếp với nhau thông qua một trọng số w (weighted vector). Các layer
này còn được gọi là có kết nối đầy đủ (fully connected layer) hay affine layer.
Trong mô hình CNNs thì ngược lại. Các layer liên kết được với nhau thông
qua cơ chế convolution. Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ
vậy mà ta có được các kết nối cục bộ. Nghĩa là mỗi nơ-ron ở layer tiếp theo sinh ra
từ filter áp đặt lên một vùng ảnh cục bộ của nơ-ron layer trước đó.
Mỗi layer như vậy được áp đặt các filter khác nhau, thông thường có vài trăm
đến vài nghìn filter như vậy. Một số layer khác như pooling/subsampling layer dùng
để chắt lọc lại các thông tin hữu ích hơn (loại bỏ các thông tin nhiễu). Tuy nhiên, ta
sẽ không đi sâu vào khái niệm của các layer này.
Trong suốt quá trình huấn luyện, CNNs sẽ tự động học được các thông số
cho các filter. Ví dụ trong tác vụ phân lớp ảnh, CNNs sẽ cố gắng tìm ra thông số tối
ưu cho các filter tương ứng theo thứ tự raw pixel > edges > shapes > facial > highlevel
features. Layer cuối cùng được dùng để phân lớp ảnh. lOMoARcPSD| 59629529
Hình 2. 4 Mô hình mạng neural tích châp̣
CNNs có tính bất biến và tính kết hợp cục bộ (Location Invariance and
Compositionality). Với cùng một đối tượng, nếu đối tượng này được chiếu theo các
gốc độ khác nhau (translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị
ảnh hưởng đáng kể. Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển
(translation), phép quay (rotation) và phép co giãn (scaling).
Tính kết hợp cục bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến
mức độ cao và trừu tượng hơn thông qua convolution từ các filter. Đó là lý do tại sao
CNNs cho ra mô hình với độ chính xác rất cao. Cũng giống như cách con người nhận
biết các vật thể trong tự nhiên. Ta phân biệt được một con chó với một con mèo nhờ
vào các đặc trưng từ mức độ thấp (có 4 chân, có đuôi) đến mức độ cao (dáng đi, hình thể, màu lông).
2.4. Xây dựng mạng neural tích châp ̣
Phần này sẽ giới thiệu một trong những mạng sâu được sử dụng rộng rãi đó
là mạng tích chập sâu (deep convolutional networks). Chúng ta sẽ làm việc cụ thể
với mạng tích chập để giải quyết bài toán phân loại chữ số viết tay từ tập dữ liệu MNIST.
Mặc dù nhiều phép toán lặp nhưng chúng ta sẽ xây dựng mạng hiệu quả hơn.
Chúng ta sẽ khám phá ra rất nhiều kĩ thuật hiệu quả: Tích chập (convolution), giảm
số chiều (pooling), sử dụng GPUs để huấn luyện được nhiều dữ liệu hơn chúng ta đã
thực hiện trên mạng cũ, mở rộng giải thuật huấn luyện dữ liệu (để giảm quá khớp –
overfitting), sử dụng kĩ thuật dropout để giảm overfitting, việc sử dụng tổng hợp các
mạng và các kĩ thuật khác. Kết quả là hệ thống làm việc gần như con người. Trong
số 10.000 bức ảnh huấn luyện, hệ thống của chúng ta sẽ phân loại đúng 9.967 bức ảnh.
Phần còn lại của chương sẽ thảo luận về học sâu dưới góc độ tổng quan và chi
tiết. Chúng ta sẽ tìm hiểu làm thế nào để các mô hình mạng nơron tích chập có thể
ứng dụng để giải quyết các bài toán nhận dạng tiếng nói, xử lí ngôn ngữ tự nhiên và
các lĩnh vực khác. Và chúng ta sẽ nghiên cứu về mạng nơron trong tương lai và học lOMoARcPSD| 59629529
sâu (deep learning), từ các ý tưởng như giao diện người sử dụng hướng đích đến vai
trò của học sâu trong trí tuệ nhân tạo.
Phần này xây dựng dựa trên các ý tưởng như: lan truyền ngược
(backpropagation), regularization, hàm softmax….
Mạng tích chập sử dụng 3 ý tưởng cơ bản: các trường tiếp nhận cục bộ (local
receptive field), trọng số chia sẻ (shared weights) và tổng hợp (pooling). Chúng ta
hãy xem xét lần lượt từng ý tưởng.
2.4.1. Trường tiếp nhân cục bộ ̣
Trường tiếp nhận cục bộ (Local receptive fields): Trong các tầng kết nối đầy
đủ, đầu vào đã được mô tả là một đường thẳng đứng chứa các nơron. Trong mạng
tích chập, ta sẽ thay thế các đầu vào là 28 × 28 nơron, giá trị tương ứng với 28 x28
cường độ điểm ảnh mà chúng ta sử dụng: lOMoARcPSD| 59629529
Như thường lệ chúng ta sẽ kết nối các điểm ảnh đầu vào cho các nơron ở tầng
ẩn. Nhưng chúng ta sẽ không kết nối mỗi điểm ảnh đầu vào cho mỗi neuron ẩn. Thay
vào đó, chúng ta chỉ kết nối trong phạm vi nhỏ, các vùng cục bộ của bức ảnh.
Để được chính xác hơn, mỗi nơron trong lớp ẩn đầu tiên sẽ được kết nối với
một vùng nhỏ của các nơron đầu vào, ví dụ, một vùng 5 × 5, tương ứng với 25 điểm
ảnh đầu vào. Vì vậy, đối với một nơron ẩn cụ thể, chúng ta có thể có các kết nối như sau:
Hình 2. 5 Kết nối giữa input nơron và nơron ẩn
Vùng đó trong bức ảnh đầu vào được gọi là vùng tiếp nhận cục bộ cho nơron
ẩn. Đó là một cửa sổ nhỏ trên các điểm ảnh đầu vào. Mỗi kết nối sẽ học một trọng
số. Và nơron ẩn cũng sẽ học một độ lệch (overall bias). Có thể hiểu rằng nơron lớp
ẩn cụ thể là học để phân tích trường tiếp nhận cục bộ cụ thể của nó. Sau đó chúng
ta trượt trường tiếp nhận cục bộ trên toàn bộ bức ảnh. Đối với mỗi trường tiếp nhận lOMoARcPSD| 59629529
cục bộ, có một nơron ẩn khác trong tầng ẩn đầu tiên . Để minh họa điều này một
cách cụ thể, chúng ta hãy bắt đầu với một trường tiếp nhận cục bộ ở góc trên bên trái:
Hình 2. 6 Trường tiếp nhân cục bộ và nơron ẩṇ
Sau đó, chúng ta trượt trường tiếp nhận cục bộ trên bởi một điểm ảnh bên phải
(tức là bằng một nơron), để kết nối với một nơron ẩn thứ hai:
Hình 2. 7 Trượt trường tiếp nhân cục bộ cho nơron ẩn tiếp theọ
Và như vậy, việc xây dựng các lớp ẩn đầu tiên. Lưu ý rằng nếu chúng ta có
một ảnh đầu vào 28 × 28 và 5 × 5 trường tiếp nhận cục bộ thì ta sẽ có 24 × 24 nơron
trong lớp ẩn. Có được điều này là do chúng ta chỉ có thể di chuyển các trường tiếp
nhận cục bộ ngang qua 23 nơron (hoặc xuống dưới 23 nơron), trước khi chạm với
phía bên phải (hoặc dưới) của ảnh đầu vào.
Và như vậy, việc xây dựng các lớp ẩn đầu tiên. Lưu ý rằng nếu chúng ta có lOMoARcPSD| 59629529
một ảnh đầu vào 28 × 28 và 5 × 5 trường tiếp nhận cục bộ, sau đó sẽ có 24 × 24 nơron
trong lớp ẩn. Điều này là bởi vì chúng ta chỉ có thể di chuyển các trường tiếp nhận
cục bộ 23 nơron ngang qua(hoặc 23 nơron xuống), trước khi chạm với phía bên phải
(hoặc dưới) của ảnh đầu vào.
2.4.2. Trọng số và đô lệ cḥ
Trọng số và độ lệch (Shared weights and biases) : Mỗi một neuron ẩn có một
độ lệch (bias) và 5 × 5 trọng số liên kết với trường tiếp nhận cục bộ. Những gì chúng
ta vẫn chưa đề cập đến là chúng ta sẽ sử dụng các trọng số và độ lệch tương tự cho
mỗi nơron ẩn 24 × 24. Nói cách khác, đối với những neuron ẩn thứ j, k, đầu ra là:
Ở đây, σ là hàm kích hoạt neuron M , m là một mảng 5 × 5 của trọng số wl chia
sẻ. Và, cuối cùng, chúng ta sử dụng axy biểu thị giá trị kích hoạt đầu vào tại vị trí x, y.
Chúng ta chưa xác định chính xác khái niệm về đặc trưng. Ta có thể nghĩ rằng
của đặc trưng là loại mẫu đầu vào mà làm cho nơron hoạt động: ví dụ, nó có thể là
biên của ảnh hoặc có thể là một dạng hình khối khác, ngay tại các vị trí khác nhau
của ảnh đầu vào. Tại sao điều này lại có lí, giả sử rằng các trọng số và độ lệch mà các
nơron ẩn chọn ra, một biên thẳng đứng (vertical edge) trong trường tiếp nhận cục bộ.
Khả năng đó rất hữu ích ở các vị trí khác nhau trong bức ảnh. Và do đó, nó là hữu
ích để áp dụng phát hiện các đặc trưng giống nhau trong ảnh. Để đặt nó trong thuật
ngữ trừu tượng hơn một chút, mạng chập được thích nghi với bất biến dịch
(translation invariance) của các ảnh: di chuyển ảnh của một con mèo một ít, và nó
vẫn là một hình ảnh của một con mèo.
Trong thực tế, đối với bài toán phân lớp ảnh mà chúng ta đang nghiên cứu,
bức ảnh được đặt ở trung tâm và chuẩn hóa kích thước. Chính vì vậy nó có ít bất
biến chuyển dịch hơn so với các bức ảnh tìm thấy trong tự nhiên. Tuy nhiên, các
đặc trưng có vẻ phù hợp hơn trong các ảnh đầu vào. lOMoARcPSD| 59629529
Vì lý do này, chúng ta đôi khi gọi các bản đồ từ các lớp đầu vào cho lớp ẩn là
bản đồ đặc trưng (feature map). Chúng ta gọi các trọng số xác định các bản đồ đặc
trưng là trọng số chia sẻ (shared weights). Và chúng ta gọi độ lệch xác định bản đồ
đặc trưng là độ lệch chia sẻ (shared bias). Các trọng số được chia sẻ và độ lệch thường
được gọi là hạt nhân (kernel) hay bộ lọc (filter).
Cấu trúc mạng chúng ta đã vừa mô tả có thể phát hiện một bản đồ đặc trưng .
Để nhận dạng ảnh chúng ta cần nhiều hơn một bản đồ đặc trưng. Và do đó, một lớp
tích chập hoàn chỉnh bao gồm vài bản đồ đặc trưng:
Trong ví dụ, có 3 bản đồ đặc trưng. Mỗi bản đồ đặc trưng được xác định bởi
một tập 5 × 5 trọng số chia sẻ, và một độ lệch chia sẻ duy nhất. Kết quả là các mạng
có thể phát hiện 3 loại đặc trưng khác nhau, với mỗi đặc trưng được phát hiện trên toàn bộ ảnh.
Chúng ta đã chỉ ra 3 bản đồ đặc trưng, để làm cho cho sơ đồ ở trên đơn giản.
Tuy nhiên, trong thực tế mạng chập có thể sử dụng nhiều bản đồ đặc trưng hơn. Một
trong những mạng chập đầu tiên là LeNet-5, sử dụng 6 bản đồ đặc trưng, mỗi bản đồ
được liên kết đến một trường tiếp nhận cục bộ 5 × 5, để phát hiện các kí tự MNIST.
Vì vậy, các ví dụ minh họa ở trên là thực sự khá gần LeNet-5. Trong ví dụ chúng ta
phát triển sau này trong chương này chúng ta sẽ sử dụng lớp tích chập với 20 và 40
bản đồ đặc trưng. Chúng ta hãy xem qua một số bản đồ đặc trưng đã được học. lOMoARcPSD| 59629529
Trên đây là 20 ảnh tương ứng với 20 bản đồ đặc trưng khác nhau (hay còn gọi
là bộ lọc, hay là nhân). Mỗi bản đồ được thể hiện là một hình khối kích thước 5 × 5,
tương ứng với 5 × 5 trọng số trong trường tiếp nhận cục bộ. Khối trắng có nghĩa là
một trọng số nhỏ hơn, vì vậy các bản đồ đặc trưng đáp ứng ít hơn để tương ứng với
điểm ảnh đầu vào. Khối sẫm màu hơn có nghĩa là trọng số lớn hơn, do đó, các bản
đồ đặc trưng đáp ứng nhiều hơn với các điểm ảnh đầu vào tương ứng. Những hình
ảnh trên cho thấy các kiểu đặc trưng mà lớp tích chập đáp ứng.
Một ưu điểm quan trọng của trọng số và độ lệch chia sẻ là nó làm giảm đáng
kể số lượng các tham số liên quan đến một mạng tích chập. Đối với mỗi bản đồ đặc
trưng chúng ta cần 25 = 5 × 5 trọng số chia sẻ và một độ lệch chia sẻ duy nhất. Vì
vậy, mỗi bản đồ đực trưng cần 26 tham số. Nếu chúng ta có 20 bản đồ đặc trưng thì
cần 20 x 26 = 520 tham số để xác định lớp tích chập. Bây giờ chúng ta hãy làm phép
so sánh, giả sử chúng ta có lớp đầu tiên kết nối đầy đủ, tức là có 784 = 28 ×
28. 784 = 28 × 28 nơron đầu vào, và số nơron lớp ẩn khiêm tốn là 30, như chúng ta
sử dụng trong rất nhiều các ví dụ trước đó trong cuốn sách. Như vậy cần 784 × 30 lOMoARcPSD| 59629529
trọng số, cộng thêm 30 sai lệch (bias), tổng số 23,550 tham số (parameter). Nói cách
khác, lớp kết nối đầy đủ (fully – connected layer) sẽ cần số lượng tham số nhiều gấp
40 lần so với lớp tích chập (convolutional layer).
Tất nhiên, chúng ta không thể thực sự làm một so sánh trực tiếp giữa số lượng
các tham số, bởi vì hai mô hình này khác nhau. Nhưng về trực giác dường như việc
sử dụng bất biến dịch của các lớp tích chập sẽ giảm số lượng các tham số cần thiết
mà vẫn đạt được hiệu quả giống như các mô hình kết nối đầy đủ. Mô hình mạng tích
chập sẽ cho kết quả huấn luyện nhanh hơn giúp chúng ta xây dựng mạng sâu hơn sử
dụng các lớp tích chập.
Cái tên “convolutional” xuất phát là các hoạt động trong phương trình đôi khi
được biết đến như convolution. Chính xác hơn một chút, người ta đôi khi viết phương
trình như a1 = σ (b + w * a0), trong đó a1 là tập kích hoạt đầu ra từ một bản đồ đặc
trưng, a0 là tập hợp các kích hoạt đầu vào, và * được gọi là phép toán chập.
2.4.3. Lớp chứa hay lớp tổng hợp
Lớp chứa hay lớp tổng hợp (Pooling layer): Ngoài các lớp tích chập vừa mô
tả, mạng nơron tích chập cũng chứa các lớp pooling. Lớp pooling thường được sử
dụng ngay sau lớp tích chập. Những gì các lớp pooling làm là đơn giản hóa các thông
tin ở đầu ra từ các lớp tích chập.
Ví dụ, mỗi đơn vị trong lớp pooling có thể thu gọn một vùng 2 × 2 nơron trong
lớp trước. Một thủ tục pooling phổ biến là max-pooling. Trong maxpooling, một đơn
vị pooling chỉ đơn giản là kết quả đầu ra kích hoạt giá trị lớn nhất trong vùng đầu vào
2 × 2, như minh họa trong sơ đồ sau: lOMoARcPSD| 59629529
Lưu ý rằng bởi vì chúng ta có 24 × 24 nơron đầu ra từ các lớp tích chập, sau
khi pooling chúng ta có 12 × 12 nơron.
Như đã đề cập ở trên, lớp tích chập thường có nhiều hơn một bản đồ đặc trưng.
Chúng ta áp dụng max-pooling cho mỗi bản đồ đặc trưng riêng biệt. Vì vậy, nếu có
ba bản đồ đặc trưng, các lớp tích chập và max-pooling sẽ kết hợp như sau:
Chúng ta có thể hiểu max-pooling như là một cách cho mạng để hỏi xem một
đặc trưng nhất được tìm thấy ở bất cứ đâu trong một khu vực của ảnh. Sau đó nó bỏ
đi những thông tin định vị chính xác. Trực giác là một khi một đặc trưng đã được tìm
thấy, vị trí chính xác của nó là không quan trọng như vị trí thô của nó so với các đặc
trưng khác. Một lợi ích lớn là có rất nhiều tính năng gộp ít hơn (fewer pooled features),
và vì vậy điều này sẽ giúp giảm số lượng các tham số cần thiết trong các lớp sau. lOMoARcPSD| 59629529
Max-pooling không phải là kỹ thuật duy nhất được sử dụng để pooling. Một
phương pháp phổ biến khác được gọi là L2 pooling. Ở đây, thay vì lấy giá trị kích
hoạt tối đa (maximum activation) của một vùng 2 × 2 nơron, chúng ta lấy căn bậc hai
của tổng các bình phương của kích hoạt trong vùng 2 × 2. Trong khi các chi tiết thì
khác nhau, nhưng về trực giác thì tương tự như max-pooling: L2 pooling là một cách
để cô đọng thông tin từ các lớp tích chập. Trong thực tế, cả hai kỹ thuật đã được sử
dụng rộng rãi. Và đôi khi người ta sử dụng các loại pooling khác. lOMoARcPSD| 59629529
CHƯƠNG 3: CÀI ĐẶT CHƯƠNG TRÌNH THỬ NGHIỆM
3.1. Dữ liệu thực nghiệm
Bộ dữ liệu A-Z Handwritten Alphabet là một tập hợp dữ liệu được sử dụng phổ biến
trong lĩnh vực nhận diện chữ viết tay.
Nguồn gốc: Bộ dữ liệu này được tổng hợp và cung cấp bởi Kaggle, một nền tảng nổi
tiếng về khoa học dữ liệu và học máy.
Nội dung: Bộ dữ liệu chứa các hình ảnh về các chữ cái viết tay từ A đến Z.
Đặc điểm của bộ dữ liệu
Số lượng mẫu: Bộ dữ liệu bao gồm khoảng 372,450 mẫu, với mỗi chữ cái từ A đến Z có khoảng 13,850 mẫu.
Định dạng hình ảnh: Các hình ảnh trong bộ dữ liệu có kích thước 28x28 pixels và
được lưu trữ dưới dạng các mảng số.
Màu sắc: Các hình ảnh là ảnh xám (grayscale), tức là chỉ có một kênh màu. Cấu trúc của dữ liệu
Các thuộc tính: Mỗi mục trong bộ dữ liệu bao gồm một hình ảnh của một chữ cái viết
tay và nhãn tương ứng cho biết chữ cái đó.
Định dạng lưu trữ: Bộ dữ liệu thường được cung cấp dưới dạng tệp CSV, trong đó
mỗi hàng đại diện cho một hình ảnh. Các cột đầu tiên chứa nhãn (chữ cái), và các
cột còn lại chứa các giá trị pixel của hình ảnh đó.