Phân loại chữ số viết tay với Perceptron nhiều lớp (MLP)

Nhờ những tiến bộ về khoa học kỹ thuật, việc lưu trữ thông tin và xử lý dữ liệu của con người phần lớn được thực hiện thông qua các công cụ hỗ trợ trên thiết bị thông minh. Tuy nhiên, hiện nay vẫn tồn tại khối lượng lớn tài liệu viết tay cần được số hóa để phù hợp với yêu cầu lưu trữ của người dùng. Chu trình này thường gây hao tốn thời gian và sức lực do phải tiến hành nhập liệu lại từ đầu. Để giải quyết vấn đề này, các nhà nghiên cứu đã phát triển các thuật toán trích xuất thông tin từ các văn bản chữ viết tay thành định dạng văn bản phù hợp với các thiết bị, máy móc. Bài viết dưới đây giới thiệu đến bạn đọc một công cụ phân loại chữ viết tay tương đối tối ưu: Perceptron nhiều lớp (Multilayer Perceptron Classifier – MLP).

Perceptron nhiều lớp (Multilayer Perceptron Classifier – MLP) là gì?

Multilayer Perceptron (Perceptron nhiều lớp) là một thuật toán học máy có giám sát (Machine Learning) thuộc lớp Mạng nơ-ron nhân tạo, là tập hợp của các perceptron chia làm nhiều nhóm, mỗi nhóm tương ứng với một layer. Thuật toán về cơ bản được đào tạo trên dữ liệu để học một hàm phi tuyến tính nhằm mục đích phân loại hay hồi quy, với một tập hợp các tính năng và một biến mục tiêu (ví dụ: nhãn). Bài viết này tập trung vào trường hợp phân loại.

Minh họa Perceptron nhiều lớp: Một Mạng nơ-ron nhân tạo (Artificial Neural Network- ANN) với 3 lớp: Input layer (lớp đầu vào), Output layer (lớp đầu ra) và Hidden layer (lớp ẩn).

Phân biệt Perceptron nhiều lớp (MLP) và hồi quy logistics (Logistic Regression)

Hồi quy logistic chỉ có hai lớp, bao gồm lớp đầu vào (input) và đầu ra (output), còn với MLP, ngoài lớp Input và Output ra thì các lớp nơ-ron ở giữa được gọi chung là lớp Hidden (lớp ẩn). Do tính chất phi tuyến tính này, MLP có thể học các hàm phi tuyến tính phức tạp và phân biệt dữ liệu không thể phân tách tuyến tính. Tuy nhiên, MLP cũng có 1 số nhược điểm, chẳng hạn như hàm bị phân tách cho lớp ẩn (hidden) dẫn đến vấn đề tối ưu hóa không lồi và tồn tại cực tiểu cục bộ. Vì vậy việc khởi tạo khối lượng đầu vào khác nhau có thể dẫn đến đầu ra với các kết quả khác nhau. Ngoài ra, MLP sử dụng một số siêu tham số, bao gồm số lượng tế bào nơ-ron ẩn hay thông tin các lớp cần được điều chỉnh, phân tích các siêu tham số này dễ dẫn đến tốn thời gian và nguồn lực. Đặc biệt, MLP có thể nhạy cảm với việc mở rộng tính năng.

Một MLP với một lớp ẩn và với đầu ra vô hướng. Hình ảnh phỏng theo tài liệu về scikit-learning.

Phân loại chữ số viết tay trong Python bằng cách sử dụng scikit-learning

Chuẩn bị cơ sở dữ liệu

Ở đây cơ sở dữ liệu được sử dụng là MNIST, bao gồm đa dạng dữ liệu chữ số viết tay phổ biến nhằm đào tạo một số mô hình học máy (Machine Learning). Có 10 hình viết tay gồm 10 chữ số khác nhau nên số lớp được mặc định là 10.

Hình ảnh các chữ số viết tay được thể hiện bằng các mảng 2D và kích thước ban đầu của dữ liệu là 28×28 cho mỗi hình ảnh (28×28 pixel). Các hình ảnh 2D sau đó được làm phẳng và biểu diễn bằng các vectơ. Mỗi hình ảnh 2D được chuyển hóa thành một vectơ 1D với kích thước [1, 28×28] = [1, 784].

Một số mẫu từ tập dữ liệu MNIST

Nhập và chuẩn bị dữ liệu

Mỗi hình ảnh 2D đầu vào được chuyển đổi thành một vectơ 1D với kích thước [1, 28×28] = [1, 784]. Điều này trả ra kết quả 70 000 hình ảnh phẳng (mẫu), mỗi hình ảnh chứa 784 pixel (28×28 = 784). Do đó, ma trận trọng số của lớp đầu vào sẽ có hình dạng 784 x #neurons_in_1st_hidden_layer. Ma trận trọng số của lớp đầu ra sẽ có hình dạng #neurons_in_3rd_hidden_layer x #number_of_classes

Đào tạo mô hình

Bước này tiến hành quá trình xây dựng mô hình, đào tạo và thực hiện phân loại, thông qua sử dụng 3 lớp ẩn với lần lượt 50, 20 và 10 nơ-ron mỗi lớp. Đặt số lần lặp tối đa là 100 và tốc độ tự học là 0,1. 

Đánh giá mô hình Perceptron nhiều lớp (MLP)

Đánh giá mô hình dựa trên ước tính độ chính xác trung bình của dữ liệu và nhãn đào tạo để kiểm tra. Sau đó hình dung sự phát triển của hàm chi phí và tính toán sự mất mát trong quá trình đào tạo. Tiếp theo, thuật toán lan truyền ngược được sử dụng để cập nhật trọng số để giảm thiểu hàm chi phí. 

Perceptron nhiều lớp (MLP) là một mô hình mạng nơ-ron rất mạnh mẽ cho phép học các hàm phi tuyến tính đối với dữ liệu phức tạp. Phương pháp này đặc biệt phù hợp với các tài liệu chữ, số viết tay, hỗ trợ phân loại và trích xuất nhanh chóng.

Trích xuất văn bản viết tay là một tính năng đang được VinBigData phát triển trong hệ thống Nhận dạng ký tự quang học – VinOCR. VinOCR báo cáo kết quả với độ chính xác cao tới 96%, tốc độ xử lý chưa đến 0,1s. Hệ thống ứng dụng cụ thể trong đa lĩnh vực, số hóa trải nghiệm người dùng, tăng tỉ lệ chuyển đổi, giảm rủi ro cho các doanh nghiệp.

Nguồn tham khảo: Towards Data Science 

Bài viết liên quan

    Cảm ơn bạn đã quan tâm và ủng hộ.

    File hiện tại không thể tải xuống
    Vui lòng liên hệ hỗ trợ.

    VinOCR eKYC

    Chọn ảnh từ máy của bạn

    Chọn ảnh demo dưới đây hoặc tải ảnh lên từ máy của bạn

    Tải lên ảnh CMND/CCCD/Hộ chiếu,...

    your image
    Chọn ảnh khác
    Tiến hành xử lý

    Thông tin đã được xử lý

    Mức độ tin cậy: 0%

    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -

    Xác thực thông tin thẻ CMND/CCCD

    Vui lòng sử dụng giấy tờ thật. Hãy đảm bảo ảnh chụp không bị mờ hoặc bóng, thông tin hiển thị rõ ràng, dễ đọc.

    your image
    Chọn ảnh khác

    Ảnh mặt trước CMND/CCCD

    your image
    Chọn ảnh khác

    Ảnh mặt sau CMND/CCCD

    your image
    Chọn ảnh khác

    Ảnh chân dung

    This site is registered on wpml.org as a development site.