Bài tập lớn: Xây dựng mô hình CNN nhận dạng chữ viết tay MNIST

Bài tập lớn môn học sâu: Xây dựng mô hình nhận dạng chữ viết tay sử dụng mạng CNN trên dataset MNIST. Ứng dụng CNN để giải quyết bài toán nhận dạng ảnh.

Chuyên ngành

Công nghệ thông tin

Người đăng

Ẩn danh

Thể loại

Bài tập lớn

2024

41
11
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CAM ĐOAN

LỜI CẢM ƠN

1. CHƯƠNG 1: GIỚI THIỆU BÀI TOÁN

1.1. Giới thiệu bài toán nhận dạng chữ viết tay

1.2. Vai trò của nhận dạng chữ viết tay trong các ứng dụng thực tế

1.3. Giới thiệu dataset MNIST

1.4. Mục tiêu của bài tập

1.5. Giới thiệu về CNN (Convolutional Neural Network)

1.6. Khái niệm về CNN và ứng dụng trong xử lý hình ảnh

1.7. Các thành phần chính của CNN

1.8. Tóm tắt quy trình xây dựng CNN

1.9. Các khái niệm chính trong CNN

1.10. Mô hình kiến trúc đề xuất

1.11. Cấu trúc tổng quan của mô hình CNN

1.12. Giải thích vai trò của từng thành phần

1.13. Mô hình CNN chi tiết

1.14. Giải thích mã nguồn

1.15. Hàm mất mát và thuật toán tối ưu

1.16. Hàm mất mát (Loss Function): Cross-Entropy Loss

1.17. Thuật toán tối ưu (Optimizer): Adam Optimizer

1.18. Lý thuyết về tinh chỉnh tham số (Hyperparameter Tuning)

1.19. Tiền xử lý và thăm dò dữ liệu

1.20. Xây dựng mô hình CNN

1.21. Huấn luyện và đánh giá mô hình

1.22. Tinh chỉnh tham số (Hyperparameter Tuning)

1.23. Thử nghiệm phân loại chữ viết

TÀI LIỆU THAM KHẢO

DANH MỤC CÁC HÌNH VẼ

Tóm tắt

I. Hướng dẫn nhận dạng chữ viết tay MNIST bằng CNN từ A Z

Nhận dạng chữ viết tay là một bài toán nền tảng nhưng vô cùng quan trọng trong lĩnh vực thị giác máy tính (Computer Vision) và học sâu (Deep Learning). Việc xây dựng một mô hình có khả năng tự động đọc và phân loại các chữ số viết tay mở ra nhiều ứng dụng thực tiễn, từ tự động hóa quy trình ngân hàng đến số hóa tài liệu. Trong số các phương pháp hiện đại, Mạng nơ-ron tích chập (CNN) đã chứng minh hiệu quả vượt trội nhờ khả năng trích xuất đặc trưng hình ảnh một cách tự động và hiệu quả. Bài viết này sẽ cung cấp một hướng dẫn toàn diện về cách xây dựng mô hình nhận dạng chữ viết tay MNIST bằng CNN, từ việc tìm hiểu bộ dữ liệu, phân tích kiến trúc mô hình, đến các bước triển khai thực tế bằng Python cho học máy. Mục tiêu là cung cấp một cái nhìn sâu sắc và dễ tiếp cận cho cả người mới bắt đầu và những người đã có kinh nghiệm trong lĩnh vực này, dựa trên các kết quả nghiên cứu đã được kiểm chứng.

1.1. Khám phá tập dữ liệu MNIST và vai trò của nó

Tập dữ liệu MNIST (Modified National Institute of Standards and Technology) là một bộ dữ liệu tiêu chuẩn, đóng vai trò như "Hello World" trong lĩnh vực phân loại ảnh. Nó bao gồm tổng cộng 70.000 hình ảnh đen trắng về các chữ số viết tay từ 0 đến 9. Bộ dữ liệu này được phân chia thành 60.000 ảnh cho tập huấn luyện và 10.000 ảnh cho tập kiểm tra. Mỗi hình ảnh có kích thước chuẩn hóa là 28x28 pixel. Giá trị của mỗi pixel dao động từ 0 đến 255, biểu thị cường độ màu xám. Sự phổ biến của MNIST đến từ việc nó đủ đơn giản để các mô hình có thể huấn luyện nhanh chóng nhưng cũng đủ phức tạp để kiểm tra và so sánh hiệu suất của các thuật toán phân loại ảnh khác nhau. Dữ liệu đã được tiền xử lý và chuẩn hóa, giúp người nghiên cứu tập trung vào việc xây dựng và tối ưu kiến trúc mô hình thay vì tốn thời gian cho việc làm sạch dữ liệu.

1.2. Tại sao Mạng nơ ron tích chập CNN là lựa chọn tối ưu

So với các mạng nơ-ron truyền thống (như Multi-Layer Perceptron), Mạng nơ-ron tích chập (CNN) được thiết kế đặc biệt để xử lý dữ liệu có cấu trúc dạng lưới như hình ảnh. Ưu điểm chính của CNN nằm ở khả năng bảo toàn mối quan hệ không gian giữa các pixel thông qua việc sử dụng các bộ lọc (kernels). Thay vì xử lý từng pixel riêng lẻ, CNN học cách nhận diện các đặc trưng cục bộ như cạnh, góc, và các họa tiết nhỏ trong các lớp đầu tiên. Các lớp sâu hơn sau đó sẽ kết hợp những đặc trưng đơn giản này để hình thành các đặc trưng phức tạp hơn, chẳng hạn như hình dạng của một chữ số cụ thể. Kiến trúc này giúp giảm đáng kể số lượng tham số cần huấn luyện và làm cho mô hình có khả năng chống lại các biến thể nhỏ về vị trí hoặc góc xoay của đối tượng trong ảnh, một yếu tố quan trọng khi xử lý chữ viết tay.

II. Giải mã kiến trúc mô hình CNN cho bài toán phân loại ảnh

Một mô hình CNN hiệu quả cho bài toán nhận dạng chữ viết tay MNIST được xây dựng từ sự kết hợp của nhiều lớp khác nhau, mỗi lớp thực hiện một chức năng chuyên biệt. Cấu trúc này cho phép mô hình học các đặc trưng từ cấp thấp đến cấp cao một cách có hệ thống. Nền tảng của CNN là Lớp tích chập (Convolutional Layer), nơi các bộ lọc trượt qua ảnh để phát hiện các mẫu. Tiếp theo là Lớp gộp (Pooling Layer), giúp giảm kích thước dữ liệu và làm cho mô hình trở nên mạnh mẽ hơn. Các hàm kích hoạt như ReLU thêm tính phi tuyến, cho phép mô hình học các mối quan hệ phức tạp. Cuối cùng, các lớp kết nối đầy đủ (Fully Connected Layers) sẽ tổng hợp thông tin và đưa ra dự đoán cuối cùng thông qua hàm Softmax. Hiểu rõ vai trò của từng thành phần là chìa khóa để thiết kế và tối ưu một kiến trúc CNN mạnh mẽ.

2.1. Vai trò của Lớp tích chập Convolutional Layer và Lớp gộp

Lớp tích chập (Convolutional Layer) là trái tim của mạng CNN. Nó sử dụng các bộ lọc (kernels) để thực hiện phép tích chập trên ảnh đầu vào, tạo ra các bản đồ đặc trưng (feature maps). Mỗi bộ lọc được thiết kế để phát hiện một đặc trưng cụ thể, ví dụ như các cạnh dọc, cạnh ngang, hoặc các góc. Bằng cách sử dụng nhiều bộ lọc, một lớp tích chập có thể trích xuất một tập hợp đa dạng các đặc trưng từ ảnh. Ngay sau lớp tích chập thường là Lớp gộp (Pooling Layer), phổ biến nhất là Max Pooling. Lớp này có nhiệm vụ giảm kích thước không gian của các bản đồ đặc trưng, giúp giảm khối lượng tính toán và kiểm soát hiện tượng overfitting. Bằng cách giữ lại giá trị lớn nhất trong một vùng lân cận, Max Pooling đảm bảo rằng các đặc trưng quan trọng nhất vẫn được duy trì.

2.2. Tầm quan trọng của hàm kích hoạt ReLU và hàm Softmax

Các hàm kích hoạt đóng vai trò giới thiệu tính phi tuyến vào mô hình, cho phép mạng học các hàm phức tạp hơn là các phép biến đổi tuyến tính đơn thuần. Hàm kích hoạt ReLU (Rectified Linear Unit) là một trong những lựa chọn phổ biến nhất trong các mô hình học sâu hiện đại. Nó trả về giá trị đầu vào nếu giá trị đó dương và trả về 0 nếu ngược lại. ReLU giúp giải quyết vấn đề triệt tiêu gradient (vanishing gradient) và tăng tốc độ hội tụ của quá trình huấn luyện. Ở lớp đầu ra của bài toán phân loại đa lớp như MNIST, hàm Softmax được sử dụng. Hàm này chuyển đổi một vector các giá trị số thực thành một vector phân phối xác suất, trong đó mỗi giá trị đại diện cho xác suất mà ảnh đầu vào thuộc về một lớp tương ứng. Tổng các xác suất này luôn bằng 1, giúp việc đưa ra dự đoán cuối cùng trở nên rõ ràng.

2.3. Cấu trúc mô hình LeNet 5 và các kiến trúc đề xuất khác

Kiến trúc LeNet-5, do Yann LeCun phát triển, là một trong những kiến trúc CNN tiên phong và có ảnh hưởng lớn, được thiết kế đặc biệt cho bài toán nhận dạng chữ viết tay. Nó bao gồm hai cặp lớp tích chập và lớp gộp, theo sau là các lớp kết nối đầy đủ. Cấu trúc này đã đặt nền móng cho nhiều kiến trúc CNN hiện đại. Dựa trên tài liệu nghiên cứu, mô hình đề xuất cho MNIST cũng tuân theo nguyên tắc tương tự: bắt đầu với hai Lớp tích chập, mỗi lớp đi kèm với hàm kích hoạt ReLU và một Lớp gộp. Các lớp này có nhiệm vụ trích xuất đặc trưng. Sau đó, dữ liệu được làm phẳng và đưa vào hai lớp kết nối đầy đủ (Fully Connected). Kỹ thuật Dropout cũng được thêm vào để giảm overfitting. Lớp cuối cùng sử dụng hàm Softmax để đưa ra dự đoán cho 10 chữ số.

III. Cách xây dựng mô hình CNN với Python Keras TensorFlow

Việc triển khai một mô hình nhận dạng chữ viết tay MNIST bằng CNN trở nên dễ dàng hơn bao giờ hết nhờ các thư viện học sâu mạnh mẽ như TensorFlowKeras (hoặc PyTorch). Quy trình này bắt đầu bằng việc chuẩn bị môi trường và tải dữ liệu. Bước tiếp theo và quan trọng nhất là tiền xử lý dữ liệu, bao gồm chuẩn hóa giá trị pixel và định dạng lại dữ liệu cho phù hợp với đầu vào của mô hình. Sau đó, mô hình CNN được xây dựng tuần tự bằng cách thêm các lớp như Conv2D, MaxPooling2D, Dropout và Dense. Cuối cùng, mô hình được biên dịch với một trình tối ưu (optimizer), một hàm mất mát (loss function), và các chỉ số đo lường trước khi bắt đầu quá trình huấn luyện mô hình (model training). Việc hiểu rõ từng bước code sẽ giúp kiểm soát và tùy chỉnh mô hình một cách hiệu quả.

3.1. Quy trình tiền xử lý dữ liệu MNIST để tối ưu hiệu suất

Tiền xử lý dữ liệu là một bước không thể thiếu để đảm bảo mô hình học tập hiệu quả. Đối với tập dữ liệu MNIST, các bước tiền xử lý cơ bản bao gồm: (1) Tải dữ liệu từ các thư viện như torchvision hoặc tensorflow.keras.datasets. (2) Chuẩn hóa giá trị pixel bằng cách chia tất cả các giá trị cho 255.0 để đưa chúng về khoảng [0, 1]. Việc này giúp quá trình huấn luyện ổn định hơn. (3) Định hình lại (reshape) mảng dữ liệu đầu vào để có thêm một chiều cho kênh màu (ví dụ, từ (60000, 28, 28) thành (60000, 28, 28, 1)), vì CNN yêu cầu đầu vào 4D. (4) Chuyển đổi nhãn (labels) từ dạng số nguyên (0-9) sang dạng one-hot encoding. Ví dụ, nhãn 5 sẽ trở thành một vector [0, 0, 0, 0, 0, 1, 0, 0, 0, 0]. Điều này là cần thiết khi sử dụng hàm mất mát categorical cross-entropy.

3.2. Các bước code và triển khai mô hình học sâu chi tiết

Sử dụng Keras hoặc PyTorch, việc xây dựng mô hình CNN rất trực quan. Đầu tiên, khởi tạo một mô hình tuần tự (Sequential model). Sau đó, thêm các lớp theo đúng kiến trúc đã thiết kế. Ví dụ, một mô hình đơn giản có thể bắt đầu bằng một Lớp tích chập (Conv2D) với 32 bộ lọc kích thước 3x3 và hàm kích hoạt ReLU. Tiếp theo là một Lớp gộp (MaxPooling2D) với kích thước 2x2. Lặp lại cấu trúc này với một lớp Conv2D khác có 64 bộ lọc. Trước khi đưa vào lớp kết nối đầy đủ, cần thêm một lớp Flatten để chuyển đổi ma trận đặc trưng 2D thành vector 1D. Cuối cùng, thêm các lớp Dense (Fully Connected) và lớp đầu ra với 10 nơ-ron cùng hàm kích hoạt Softmax. Sau khi định nghĩa kiến trúc, mô hình được biên dịch bằng cách chỉ định trình tối ưu (ví dụ: 'Adam') và hàm mất mát (ví dụ: 'categorical_crossentropy').

IV. Bí quyết huấn luyện và tối ưu độ chính xác mô hình CNN

Sau khi xây dựng kiến trúc, quá trình huấn luyện mô hình là giai đoạn quyết định hiệu suất. Giai đoạn này bao gồm việc đưa dữ liệu huấn luyện vào mô hình và điều chỉnh trọng số thông qua thuật toán lan truyền ngược để giảm thiểu hàm mất mát. Việc theo dõi các chỉ số như độ chính xác (accuracy) và loss trên cả tập huấn luyện và tập kiểm định là rất quan trọng để phát hiện sớm hiện tượng overfitting. Để đạt được độ chính xác cao nhất, cần áp dụng các kỹ thuật tinh chỉnh tham số (Hyperparameter Tuning). Quá trình này bao gồm việc thử nghiệm với các giá trị khác nhau của tốc độ học (learning rate), kích thước lô (batch size), và số lượng epoch để tìm ra cấu hình tối ưu. Kết quả nghiên cứu cho thấy, việc tinh chỉnh cẩn thận có thể cải thiện độ chính xác từ 97% lên đến hơn 99%.

4.1. Phân tích hàm mất mát loss function và độ chính xác

Hàm mất mát (loss function) là một thước đo cho thấy mô hình dự đoán sai lệch như thế nào so với nhãn thực tế. Đối với bài toán phân loại đa lớp như MNIST, hàm Cross-Entropy Loss là lựa chọn tiêu chuẩn. Nó phạt nặng các dự đoán sai và có độ tin cậy thấp, thúc đẩy mô hình tạo ra các xác suất cao cho lớp đúng. Trong khi đó, độ chính xác (accuracy) là tỷ lệ phần trăm các dự đoán đúng trên tổng số mẫu. Trong quá trình huấn luyện, mục tiêu là giảm giá trị của hàm mất mát. Biểu đồ loss giảm dần và biểu đồ accuracy tăng dần là dấu hiệu cho thấy mô hình đang học tốt. Tài liệu phân tích cho thấy, mô hình đạt độ chính xác ban đầu là 97.62% và sau khi tinh chỉnh đã tăng lên 99.31%, chứng tỏ hiệu quả của việc tối ưu hóa.

4.2. Kỹ thuật tinh chỉnh tham số để đạt hiệu quả vượt trội

Tinh chỉnh siêu tham số (Hyperparameter Tuning) là nghệ thuật tìm kiếm bộ cấu hình tốt nhất cho mô hình. Các tham số quan trọng cần tinh chỉnh bao gồm: (1) Learning Rate: Tốc độ học quá cao có thể khiến mô hình không hội tụ, trong khi quá thấp sẽ làm quá trình huấn luyện rất chậm. Nghiên cứu cho thấy việc giảm learning rate từ 0.01 xuống 0.001 giúp cải thiện kết quả. (2) Batch Size: Kích thước lô (ví dụ: 32, 64) ảnh hưởng đến sự ổn định của gradient và tốc độ huấn luyện. Batch size 64 thường là một lựa chọn cân bằng. (3) Số lượng epoch: Số lần lặp qua toàn bộ tập dữ liệu. Cần sử dụng kỹ thuật Early Stopping để dừng huấn luyện khi hiệu suất trên tập kiểm định không còn cải thiện, nhằm tránh overfitting. (4) Kiến trúc mạng: Thử nghiệm thêm hoặc bớt các Lớp tích chập cũng là một cách để cải thiện hiệu suất.

4.3. Đánh giá kết quả qua ma trận nhầm lẫn Confusion Matrix

Trong khi độ chính xác cung cấp một cái nhìn tổng quan, ma trận nhầm lẫn (Confusion Matrix) cho phép phân tích sâu hơn về hiệu suất của mô hình trên từng lớp cụ thể. Ma trận này trực quan hóa số lượng các dự đoán đúng và sai cho mỗi chữ số. Ví dụ, phân tích từ tài liệu gốc chỉ ra rằng mô hình thường nhầm lẫn giữa các cặp số có hình dạng tương tự, như '4' và '9', hoặc '3' và '5'. Cụ thể, có 18 mẫu số '4' bị dự đoán nhầm thành '9'. Ngược lại, các chữ số có hình dạng khác biệt rõ ràng như '0', '1', và '7' đạt tỷ lệ nhận dạng đúng rất cao. Việc phân tích ma trận nhầm lẫn giúp xác định điểm yếu của mô hình và là cơ sở để đề xuất các cải tiến, chẳng hạn như thu thập thêm dữ liệu cho các lớp dễ bị nhầm lẫn hoặc áp dụng các kỹ thuật tăng cường dữ liệu (data augmentation).

V. Đánh giá mô hình CNN MNIST Hạn chế và hướng phát triển

Mô hình nhận dạng chữ viết tay MNIST bằng CNN đã chứng tỏ hiệu quả vượt trội với độ chính xác lên tới 99.31%. Kết quả này khẳng định sức mạnh của kiến trúc Mạng nơ-ron tích chập trong các bài toán thị giác máy tính. Tuy nhiên, mô hình vẫn tồn tại một số hạn chế nhất định, chẳng hạn như nguy cơ overfitting và hiệu suất có thể giảm khi áp dụng trên dữ liệu thực tế có nhiều nhiễu và biến thể hơn so với bộ dữ liệu MNIST đã được chuẩn hóa. Việc nhận thức rõ những hạn chế này là rất quan trọng để đề ra các hướng phát triển trong tương lai, bao gồm việc mở rộng mô hình để nhận dạng bộ ký tự phức tạp hơn, áp dụng các kiến trúc học sâu tiên tiến, và triển khai thành các ứng dụng thực tiễn có giá trị.

5.1. Thảo luận các hạn chế của mô hình và hiện tượng overfitting

Mặc dù đạt kết quả ấn tượng trên tập kiểm tra của MNIST, mô hình có thể gặp khó khăn khi đối mặt với dữ liệu không chuẩn. Chữ viết tay trong thực tế đa dạng hơn rất nhiều, có thể bị nghiêng, méo, hoặc viết trên nền có nhiễu. Mô hình được huấn luyện trên MNIST có thể không đủ khả năng tổng quát hóa cho những trường hợp này. Một thách thức khác là overfitting, tình trạng mô hình học thuộc lòng dữ liệu huấn luyện thay vì học các quy luật tổng quát. Mặc dù các kỹ thuật như Dropout đã được sử dụng để giảm thiểu, nguy cơ này vẫn tồn tại, đặc biệt với các mô hình phức tạp. Để giải quyết, cần áp dụng các phương pháp tăng cường dữ liệu (Data Augmentation) mạnh mẽ hơn như xoay, dịch chuyển, và thêm nhiễu vào ảnh huấn luyện để mô hình trở nên bền vững hơn.

5.2. Tương lai của thị giác máy tính và các ứng dụng thực tiễn

Thành công với MNIST là nền tảng vững chắc cho các dự án tham vọng hơn. Hướng phát triển tự nhiên là mở rộng mô hình để nhận dạng không chỉ chữ số mà còn cả bảng chữ cái và các ký tự đặc biệt, sử dụng các bộ dữ liệu phức tạp hơn như EMNIST. Ngoài ra, việc khám phá các kiến trúc CNN tiên tiến như ResNet, DenseNet, hoặc thậm chí là Vision Transformers (ViT) có thể mang lại những cải thiện đáng kể về hiệu suất và khả năng tổng quát hóa. Về mặt ứng dụng, mô hình này có thể được triển khai trong các hệ thống thực tế như: tự động đọc số tiền trên séc, số hóa phiếu trắc nghiệm, nhận dạng mã bưu chính, hoặc tích hợp vào các ứng dụng ghi chú trên máy tính bảng để chuyển đổi chữ viết tay thành văn bản số. Tương lai của thị giác máy tính trong lĩnh vực này là vô cùng hứa hẹn.

11/09/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1: GIỚI THIỆU BÀI TOÁN 1. Giới thiệu bài toán nhận dạng chữ viết tay Nhận dạng chữ viết tay là một bài toán quan trọng trong lĩnh vực trí tuệ nhân tạo (AI) và thị giác máy tính. Nó liên quan đến việc phân tích và xác định các ký tự hoặc số được viết tay trên hình ảnh đầu vào. Mục tiêu là phát triển một hệ thống tự động có khả năng nhận dạng chính xác các ký tự viết tay mà không cần sự can thiệp của con người.

Thách thức của bài toán: • Sự đa dạng trong cách viết của mỗi người. • Chất lượng hình ảnh có thể bị ảnh hưởng bởi độ nhiễu, ánh sáng hoặc độ phân giải. • Hình dạng chữ viết tay không đồng nhất, phụ thuộc vào phong cách cá nhân. Vai trò của nhận dạng chữ viết tay trong các ứng dụng thực tế Nhận dạng chữ viết tay có ứng dụng rộng rãi trong nhiều lĩnh vực, góp phần tự động hóa các quy trình thủ công.

Một số ứng dụng phổ biến bao gồm: • Ngân hàng: Nhận dạng số trên phiếu gửi tiền, séc hoặc mã số tài khoản. • Bưu chính: Tự động đọc mã bưu điện, địa chỉ trên bưu phẩm. • Giáo dục: Xử lý phiếu trắc nghiệm hoặc chấm điểm tự động từ các bài kiểm tra viết tay. • Hệ thống nhận dạng thông minh: Áp dụng trong các thiết bị đầu vào như máy tính bảng hoặc điện thoại, hỗ trợ chuyển đổi chữ viết tay thành văn bản số.

Giới thiệu dataset MNIST Dataset MNIST (Modified National Institute of Standards and Technology) là một tập dữ liệu tiêu chuẩn trong lĩnh vực học máy, thường được sử dụng để kiểm tra và đánh giá hiệu quả của các mô hình nhận dạng chữ viết tay. Đặc điểm của dataset MNIST: • Quy mô dữ liệu: Tổng cộng có 70.000 hình ảnh, được chia thành: o 60.000 hình ảnh cho tập huấn luyện (training set).000 hình ảnh cho tập kiểm tra (test set). • Định dạng hình ảnh: o Hình ảnh đen trắng kích thước 28x28 pixel. o Giá trị của mỗi pixel nằm trong khoảng từ 0 (đen hoàn toàn) đến 255 (trắng hoàn toàn).

o Hình ảnh được tiền xử lý để cân chỉnh kích thước và tập trung số viết tay vào vùng trung tâm. • Nhãn (labels): Mỗi hình ảnh tương ứng với một chữ số từ 0 đến 9, giúp mô hình học cách phân loại đúng chữ số. Dataset MNIST là lựa chọn lý tưởng cho các bài toán học máy vì: • Dữ liệu đã được chuẩn hóa, dễ sử dụng và không yêu cầu xử lý phức tạp. • Là tiêu chuẩn để so sánh các mô hình và thuật toán khác nhau.

Mục tiêu của bài tập Bài tập này nhằm xây dựng một mô hình dựa trên mạng nơ-ron tích chập (Convolutional Neural Network - CNN) để giải quyết bài toán nhận dạng chữ viết tay trên dataset MNIST. Các mục tiêu cụ thể: 1. Xây dựng mô hình CNN o Thiết kế kiến trúc CNN phù hợp để nhận dạng chính xác chữ số viết tay. o Huấn luyện mô hình trên tập dữ liệu MNIST để tối ưu hóa khả năng phân loại.

Đánh giá hiệu quả của mô hình o Sử dụng các chỉ số đánh giá để kiểm tra hiệu suất mô hình: ▪ Độ chính xác (Accuracy): Phần trăm số lần mô hình dự đoán đúng so với tổng số dự đoán. ▪ Độ nhạy (Sensitivity): Khả năng mô hình nhận diện đúng các chữ số thực sự có trong ảnh. 8 ▪ Độ đặc hiệu (Specificity): Mức độ mô hình không nhận nhầm các chữ số khác nhau. Ứng dụng thực tế o Tích hợp mô hình vào một hệ thống đơn giản, kiểm thử khả năng dự đoán chữ viết tay trên dữ liệu mới (ví dụ: chữ viết do người dùng tạo ra).

Giới thiệu về CNN (Convolutional Neural Network) 1. Khái niệm về CNN và ứng dụng trong xử lý hình ảnh • CNN là một loại mạng nơ-ron chuyên biệt để xử lý dữ liệu dạng hình ảnh, âm thanh hoặc video. • CNN có khả năng học các đặc trưng quan trọng từ hình ảnh thông qua các tầng chập (Convolutional Layers) và tầng gộp (Pooling Layers). • Ứng dụng: o Phân loại hình ảnh (Image Classification).

o Nhận diện đối tượng (Object Detection). o Phân đoạn ảnh (Image Segmentation). o Các lĩnh vực như thị giác máy tính (Computer Vision), xe tự hành, thương mại điện tử. Các thành phần chính của CNN CNN được xây dựng từ nhiều lớp khác nhau, mỗi lớp thực hiện một nhiệm vụ cụ thể trong quá trình trích xuất và xử lý đặc trưng từ dữ liệu đầu vào.

Cấu trúc điển hình của CNN bao gồm bốn loại lớp chính: Convolutional Layer, Activation Layer, Pooling Layer, và Fully Connected Layer. Mỗi lớp có vai trò cụ thể và cùng nhau tạo thành một mạng CNN mạnh mẽ. Hình 1: Cấu trúc của mô hình CNN 1. Lớp tích chập (Convolutional Layer) Lớp tích chập là nền tảng cốt lõi của CNN, chịu trách nhiệm trích xuất các đặc trưng từ hình ảnh đầu vào.

Bộ lọc (filter) sẽ trượt qua ảnh và tính toán phép tích chập giữa ảnh 10 và bộ lọc đó. Công thức của phép tích chập hai chiều: Trong đó: • X: Ma trận đầu vào biểu diễn hình ảnh. • K: Ma trận kernel (bộ lọc). • Y[i,j]: Giá trị đầu ra tại vị trí (i,j) sau khi thực hiện phép tích chập.

Lớp kích hoạt (Activation Function) Sau khi thực hiện phép tích chập, dữ liệu sẽ đi qua lớp kích hoạt để thêm tính phi tuyến vào mô hình. Hàm kích hoạt phổ biến nhất là ReLU (Rectified Linear Unit): ReLU(x)=max(0,x) ReLU giúp loại bỏ các giá trị âm trong đầu ra của phép tích chập, giữ lại các giá trị dương và giúp tăng tốc quá trình huấn luyện. Lớp gộp (Pooling Layer) Lớp gộp có nhiệm vụ giảm kích thước không gian của bản đồ đặc trưng, giúp giảm số lượng tham số và tính toán trong mạng. Lớp gộp còn làm cho mô hình bền vững hơn với các phép biến đổi như dịch chuyển hoặc xoay ảnh.

Phổ biến nhất là Max Pooling, với công thức: Y[i,j]=max(X[i:i+f,j:j+f]) Trong đó f là kích thước của cửa sổ gộp. Lớp dồn đầy (Fully Connected Layer) Sau khi đi qua nhiều lớp tích chập và gộp, các bản đồ đặc trưng sẽ được làm phẳng thành một vector một chiều và đưa vào các lớp hoàn toàn kết nối. Lớp này sử dụng hàm kích hoạt softmax cho các bài toán phân loại đa lớp: 11 Trong đó: • zi: Đầu ra của nơ-ron tại lớp fully connected. • n: Số lớp phân loại đầu ra.

Backpropagation Quá trình huấn luyện CNN sử dụng thuật toán lan truyền ngược để tối ưu hóa các tham số bằng cách giảm thiểu hàm mất mát (loss function). Hàm mất mát phổ biến cho bài toán phân loại là cross-entropy: 1. Tóm tắt quy trình xây dựng CNN • Kết hợp các lớp trên trong một kiến trúc CNN hoàn chỉnh: 1. Lớp tích chập: Trích xuất đặc trưng.

Lớp kích hoạt: Đưa phi tuyến tính vào mạng. Lớp gộp: Giảm kích thước không gian. Lớp dồn đầy: Tích hợp thông tin và đưa ra dự đoán. Các khái niệm chính trong CNN 1.

Stride Stride là bước nhảy của cửa sổ tích chập khi nó di chuyển qua ảnh đầu vào. Giá trị stride quyết định tốc độ di chuyển của cửa sổ. Nếu stride bằng 1, cửa sổ tích chập sẽ di chuyển từng bước một qua các pixel, còn nếu stride bằng 2, cửa sổ sẽ di chuyển cách 2 pixel một lần. Hình 2 Sơ đồ mô tả Stride 12 Giá trị stride càng lớn, kích thước của đầu ra sẽ nhỏ hơn vì cửa sổ tích chập sẽ bỏ qua nhiều pixel hơn.

Điều này có thể làm giảm độ phân giải của đầu ra, nhưng đồng thời giảm thiểu khối lượng tính toán. Padding Padding là kỹ thuật thêm các pixel giả (thường là giá trị 0, gọi là zero padding) xung quanh biên của ảnh đầu vào. Điều này giúp duy trì kích thước đầu ra sau khi tích chập. Hình 3 Sơ đồ mô tả Padding Trong nhiều trường hợp, người ta thêm padding để kích thước đầu ra của lớp tích chập không bị giảm.

Ví dụ, nếu không có padding, mỗi lần tích chập có thể làm giảm kích thước không gian của ảnh đầu ra. Filters (Kernels) Filters hay còn gọi là kernels là các ma trận nhỏ được áp dụng lên ảnh đầu vào trong quá trình tích chập. Các bộ lọc này thực hiện việc quét qua toàn bộ ảnh đầu vào, tính toán các giá trị mới dựa trên phép nhân tích chập giữa bộ lọc và các phần tương ứng của ảnh. Sơ đồ Filter Mỗi bộ lọc sẽ phát hiện các đặc trưng cụ thể, chẳng hạn như cạnh, đường nét, hoặc chi tiết phức tạp hơn ở các lớp sâu.

Mỗi lớp tích chập trong mạng CNN có thể sử dụng nhiều bộ lọc để phát hiện nhiều đặc trưng khác nhau. Feature Maps Feature Maps (Bản đồ đặc trưng) là kết quả đầu ra của một lớp tích chập sau khi áp dụng các bộ lọc lên ảnh đầu vào. Đây là nơi lưu trữ các đặc trưng đã được phát hiện bởi các bộ lọc trong quá trình tích chập. Feature maps thể hiện sự hiện diện của các đặc trưng (như cạnh, góc) trong một bức ảnh tại các vị trí không gian khác nhau.

Các feature maps càng sâu trong mạng CNN thì chứa các đặc trưng càng phức tạp, trừu tượng hơn. Mô hình kiến trúc đề xuất 2. Cấu trúc tổng quan của mô hình CNN Kiến trúc tổng quát: • Đầu vào: Hình ảnh grayscale kích thước 28×28. • Các thành phần chính: 1.

Lớp tích chập (Convolutional Layers): Trích xuất đặc trưng từ hình ảnh. Lớp gộp (Pooling Layers): Giảm kích thước không gian, giảm số lượng tham số và tính toán. Dropout Layers: Loại bỏ một số nơ-ron ngẫu nhiên để giảm hiện tượng overfitting. Lớp dồn đầy (Fully Connected Layers): Dự đoán nhãn của hình ảnh thông qua hàm softmax.

Cấu trúc đề xuất: 1. Lớp 1: o Tích chập 3×3, đầu ra 32 kênh. o Kích hoạt ReLU. Lớp 2: o Tích chập 3×3, đầu ra 64 kênh.

o Kích hoạt ReLU. o Dropout (tỉ lệ p=0. Lớp 3: o Fully Connected Layer 1: 128 nơ-ron, kích hoạt ReLU. o Dropout (tỉ lệ p=0.

o Kích hoạt Softmax để tính xác suất các lớp. Giải thích vai trò của từng thành phần 1. Lớp tích chập (Convolutional Layers): o Trích xuất các đặc trưng cục bộ từ hình ảnh, ví dụ: cạnh, góc, mẫu hình. o Các bộ lọc (filter/kernel) giúp phát hiện đặc trưng ở nhiều cấp độ trừu tượng khác nhau.

Lớp gộp (Pooling Layers): o Giảm kích thước không gian của đặc trưng mà vẫn giữ lại thông tin quan trọng. o MaxPooling giúp tập trung vào các đặc trưng mạnh nhất trong vùng ảnh. Dropout Layers: o Loại bỏ ngẫu nhiên một số nơ-ron trong quá trình huấn luyện để tránh overfitting. Lớp dồn đầy (Fully Connected Layers): o Tích hợp toàn bộ thông tin đặc trưng đã học để đưa ra dự đoán cuối cùng.

o Softmax chuyển đổi đầu ra thành xác suất để phân loại.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ