Hướng tiếp cận Bài toán của đề tài được chia thành 2 nhiệm vụ chính đó là: + Nhiệm vụ thứ nhất: Trích xuất kí tự văn bản từ hình ảnh OCR + Nhiệm vụ thứ hai: Phân loại đoạn kí tự được tr
Giới thiệu tổng quan về đề tài
Bài toán về phân loại công văn bằng hình ảnh
Cách mạng công nghiệp 4.0 thúc đẩy việc ứng dụng các sản phẩm và ứng dụng công nghệ thông tin trí tuệ cao để tối ưu hóa các hoạt động nghiệp vụ trên nhiều lĩnh vực Đặc biệt, thủ tục giấy tờ ngày càng được số hóa và tích hợp với IoT (Internet vạn vật), AI (trí tuệ nhân tạo) và dữ liệu lớn (Big Data) Nhờ sự kết hợp này, các quy trình sẽ đạt tiêu chuẩn nhanh chóng, hiệu quả và tiết kiệm chi phí, đồng thời tăng cường tính chuẩn hóa, chính xác và minh bạch trong quản lý và phục vụ khách hàng.
Quyết định số 28/2018/QĐ-TTg ngày 7 tháng 12 năm 2018 của Thủ tướng Chính phủ về việc gửi và nhận đường truyền điện tử trong hệ thống hành chính công khẳng định đường truyền điện tử có giá trị pháp lý và hiệu lực thi hành, biến văn bản chính thức thành phương tiện liên lạc, trao đổi thông tin và truyền tải mệnh lệnh giữa các cơ quan, tổ chức; vì vậy các văn bản điện tử được số hóa và lưu trữ để đảm bảo khả năng tra cứu, bảo mật và quản trị thông tin hiệu quả trong quá trình vận hành hệ thống hành chính công.
Vì vậy, xây dựng mô hình trí tuệ nhân tạo giúp phân loại công văn và phục vụ số hóa tài liệu
Hình 1 1: Hình ảnh công văn
Mục tiêu thực hiện của đề tài
Bài toán được đặt ra ở đây là việc văn bản điện tử chính thức đã trở thành phương tiện liên lạc, trao đổi thông tin, truyển tải mệnh lệnh chính giữa các cơ quan, tổ chức và cần được số hóa, lưu trữ Thì yêu cầu mà hệ thống phân loại và lưu trữ các loại công văn phải có độ chính xác cao và tốc độ xử lý nhanh
Bài toán được mô tả như sau:
Input : Ảnh công văn đầu vào
Output: Tên công văn được phân loại
Điều kiện ràng buộc: đầu vào là file ảnh công văn(jpg, png, …)
Hướng tiếp cận và giải pháp cho bài toán phân loại
Bài toán của đề tài được chia thành 2 nhiệm vụ chính đó là:
+ Nhiệm vụ thứ nhất: Trích xuất kí tự văn bản từ hình ảnh (OCR)
+ Nhiệm vụ thứ hai: Phân loại đoạn kí tự được trích xuất (Text Classification) Đối với nhiệm vụ thứ nhất, bài toán OCR ( Optical Character Recognition) hay còn gọi là Nhận dạng ký tự bằng quang học Đây là công nghệ được áp dụng để đọc kí tự trên một tệp ảnh thành định dạng kí tự OCR ngày càng được sử dụng nhiều hơn để số hóa trong các ngành công nghiệp khác nhau nhằm cắt giảm khối lượng công việc thủ công Điều này làm cho việc trích xuất và lưu trữ thông tin từ các tài liệu kinh doanh, biên lai, hộ chiếu, v.v trở nên rất dễ dàng và hiệu quả Ngoài ra, khi bạn tải lên tài liệu của mình cho KYC ( Know Your Customer), OCR được sử dụng để trích xuất thông tin từ các tài liệu này và lưu trữ chúng để tham khảo trong tương lai Việc số hóa sử dụng OCR rõ ràng có những lợi thế rộng rãi như lưu trữ và thao tác văn bản dễ dàng, chưa kể đến lượng phân tích khó lường mà bạn có thể áp dụng cho dữ liệu này Ngoài những lợi ích của OCR đem lại cho bài toán thì cũng có một số khó khăn đối với đề tài như là kí tự văn Ảnh công văn đầu vào
Kĩ thuật xử lí ảnh
Mô hình trí tuệ nhân tạo
Kết quả phân loại công văn
Hình 1 2: Ứng dụng trí tuệ nhân tạo để tự động phân loại công văn và phục vụ số hóa tài liệu
10 bản là tiếng Việt, OCR chỉ nhận dạng được khoảng 80 – 90% trên hình ảnh rõ nét, khó có thể nhận dạng được chữ viết tay Đối với nhiệm vụ thứ hai, bài toán Text Classification hầu hết các phương pháp máy học áp dụng cho bài toán phân loại văn bản đều sử dụng cách biểu diễn văn bản dưới dạng véc tơ đặc trưng Điểm khác biệt duy nhất chính là không gian đặc trưng được chọn lựa Tuy nhiên ở đây ta thấy nảy sinh một số vấn đề cơ bản:
Số lượng từ xuất hiện trong văn bản sẽ rất lớn Như vậy, mỗi véc tơ có thể có hàng ngàn đặc trưng, hay nói cách khác mỗi véc tơ sẽ có số chiều rất lớn Do vậy các véc tơ sẽ không đồng nhất về kích thước Để giải quyết vấn đề thông thường chúng ta sẽ lựa chọn đặc trưng được đánh giá là hữu ích, bỏ đi những đặc trưng không quan trọng Đối với phân loại văn bản, quá trình này rất quan trọng bởi vì véc tơ văn bản có số chiều rất lớn, trong đó thành phần dư thừa cũng rất nhiều
Vì vậy các phương pháp chọn lựa đặc trưng rất hiệu quả trong việc giảm chiều của véc tơ đặc trưng văn bản, chiều của véc tơ văn bản sau khi được giảm đi nhưng không mất đi độ chính xác phân loại
Xây dựng hệ thống phân loại công văn phổ biến
- Áp dụng trí tuệ nhân tạo giúp phân loại công văn và phục vụ số hóa dựa trên hình ảnh
- Nghiên cứu các mô hình trí tuệ nhân tạo để rút trích thông tin ảnh
- Cài đặt, tích hợp, cấu hình hệ thống đề xuất cho cơ sơ dữ liệu ảnh thực tế.
Đóng góp của luận văn
Tính khoa học của đề tài:
- Áp dụng các mô hình máy học như: RandomForest, LSTM, XGBoost, vào nghiên cứu và ứng dụng cho đề tài
- Có độ chính xác và tốc độ xử lý nhanh với việc sử dụng framework Tesseract OCR
Luận văn xây dựng ứng dụng theo nhu cầu thực tế về việc số hóa hình ảnh và ứng dụng trí tuệ nhân tạo trong việc phân loại văn bản hay công văn khác nhau
Tình hình nghiên cứu hiện tại
Có nhiều phương pháp để phát triển phần mềm OCR và độ chính xác của các phương pháp này phụ thuộc vào công nghệ được ứng dụng Các kỹ thuật OCR này có độ tin cậy cao trên ảnh có chất lượng tốt đến vừa, nhưng việc rút trích văn bản vẫn là yếu tố quan trọng nhất Nhóm tác giả Kirill Safronov cho rằng một số sai sót trong quá trình chuyển đổi thường không quá nghiêm trọng, trừ các trường hợp đặc thù như rút trích số serial từ ảnh chụp Để khắc phục tình trạng kết quả OCR không chính xác, nhiều công nghệ mới đã ra đời; ví dụ tác giả A Vinutha M H đã ứng dụng định hướng robot dựa trên OCR (Optical Character Recognition Based Auto Navigation of Robot) Việc định hướng của robot dựa vào bảng tín hiệu như một cột mốc đánh dấu đường đi tiếp theo, và định hướng tự động của các robot trong một vùng rộng đòi hỏi nhiều bảng tín hiệu khác nhau với một mô hình nhận dạng nhất quán Ngoài ra, hệ thống này còn cho phép nhận diện vị trí riêng của từng robot.
Bên cạnh việc cải thiện độ chính xác, chúng ta cần có sự thay đổi kích thước của thiết bị nhận dạng, tác giả Ali Ahmadi [3] đã đề cập trong nghiên cứu của mình, tốc độ xử lý và độ chính xác cao là yêu cầu lớn hiện nay của các thiết bị nhận dạng kí tự nhỏ, ví dụ như bút biết nhận dạng
Cơ sở lý thuyết
Tổng quan về Tesseract
Nhận dạng ký tự quang học ( Optical Character Recognition, viết tắt là OCR), là phần mềm máy tính được tạo ra để chuyển các hình ảnh của chữ viết tay hoặc chữ đánh máy thành các văn bản tài liệu OCR được hình thành từ một lĩnh vực nghiên cứu về nhận dạng mẫu, trí tuệ nhân tạo và thị giác máy tính Những chuỗi dữ liệu được sinh ra từ việc nhận dạng ký tự quang học có thể được sử dụng cho nhiều việc, ví dụ: giúp số hóa các tài liệu cũ, dịch sang các ngôn ngữ khác hoặc để kiểm tra và xác minh văn bản Mặc dù công việc nghiên cứu học thuật vẫn tiếp tục, một phần công việc đã được chứng minh Bất cứ nơi nào có thể tìm thấy văn bản, OCR có thể được áp dụng Một ví dụ về OCR như dưới hình:
Hình 2 1: Xác định vị trí của text bằng OCR
OCR là một quy trình thường bao gồm một số quy trình phụ để thực hiện chính xác nhất có thể Các quy trình phụ thường bao gồm:
Tiền xử lý hình ảnh
Cục bố hóa văn bản
Tất nhiên, các quy trình phụ trong danh sách trên có thể khác nhau, nhưng đây là những bước gần như cần thiết để tiếp cận nhận dạng ký tự tự động Trong phần mềm OCR, mục đích chính là xác định và nắm bắt tất cả các từ duy nhất bằng các ngôn ngữ khác nhau từ các ký tự văn bản viết
Trong gần hai thập kỉ, hệ thống nhận dạng ký tự quang học đã đươc sử dụng rộng rãi để cũng cấp tính năng nhập văn bản tự dộng vào các hệ thống máy tính Tuy nhiên, trong suốt thời gian qua, các hệ thống OCR thông thường chưa bao giờ vượt qua được khả năng đọc nhiều hơn một số loại phông chữ và định dạng trang
Khác với những phần mềm vì mục tiêu thương mại, Tesseract là một thư viện không phải là chương trình nhận dạng kí tự quang học Nó có mã nguồn mở, được công khai dưới giấy phép Apache 2.0, và được phát triển dưới sự tài trợ của Google từ năm 2006 Tesseract được đánh giá là một trong số ít những thư viện nhân dạng kí tự quang học mã nguồn mở tốt nhất hiện nay Tesseract đã phát triển đến version 3.x và có thể hoạt động trên 3 hệ điều hành phổ biến là Window, Mac và Linux Công cụ này hỗ trợ nhận diện kí tự của hơn 100 ngôn ngữ khác nhau, bao gồm cả tiếng Việt
Tesseract 3.x phụ thuộc vào quy trình nhiều giai đoạn, ở đó chúng ta có thể phân biệt qua các bước:
Việc tìm kiếm từ được thực hiện bằng cách sắp xếp các dòng văn bản thành các đốm màu, các dòng và vùng được phân tích để tìm độ cao cố định hoặc văn bản theo tỷ lệ Các dòng văn bản được chia thành các từ khác nhau tùy theo loại khoảng cách kí tự Việc nhận dạng sẽ được tiến hành như một quá trình hai lần Trong lần vượt qua đầu tiên, một nỗ lực được thực hiện để nhận ra lần lượt từng từ Mỗi từ đạt yêu cầu được chuyển đến bộ phân loại thích ứng làm dữ liệu huấn luyện Sau đó, trình phân loại thích ứng sẽ có cơ hội nhận dạng chính xác hơn
Hình 2 3: Kiến trúc Tesseract OCR
Về sự hạn chế của Tesseract, chỉ hoạt động tốt nhất khi có sự phân đoạn rõ ràng của từ nền khỏi văn bản nền Trong thực tế, có thể cực kỳ khó khăn để đảm bảo các loại thiết lập này Có nhiều lý do khiến chúng ta không nhận được đầu ra chất lượng tốt từ Tesseract như việc hình ảnh bị nhiễu trên nền Chất lượng hình
15 ảnh càng tốt thì kết quả nhận dạng càng tốt Tesseract khá mạnh nhưng có những hạn chế sau:
OCR không chính xác như một số giải pháp thương mại có sẵn
Không hoạt động tốt với hình ảnh bị ảnh hưởng bởi hiện vật bao gồm tắt một phần, phối cảnh méo mó và nền phức tạp
Nó có thể không nhận dạng được và báo cáo đâu là đầu ra OCR
Không phải lúc nào việc phân tích thứ tự đọc tự nhiên của tài liệu cũng tốt
Bản quét chất lượng kém có thể tạo ra OCR chất lượng kém
Nó không tiết lộ thông tin về phông chữ thuộc họ văn bản nào.
Mạng nơ-ron hồi quy (RNN)
Trước tiên chúng ta cùng nhìn lại mô hình mạng nơ-ron dưới đây:
Hình 2 4: Mạng nơ-ron thông thường
Như đã biết thì mạng nơ-ron bao gồm 3 phần chính là Input layer, Hidden layer, Output layer, ta có thể thấy là đầu vào và đầu ra của mạng nơ-ron này là độc lập với nhau, Như vậy mô hình này không phù hợp với những bài toán dạng chuỗi mô tả, hình thành câu, vì những dự đoán tiếp theo như từ tiếp theo phụ thuộc vào vị trí của nó trong câu và những từ đằng trước nó Và như vậy RNN ra đời với ý tưởng chính là sử dụng một bộ nhớ để lưu lại thông tin từ bước tính toán xử lý trước để dựa vào nó đưa ra dự đoán chính xác nhất cho bước dự đoán hiện tại RNN được gọi là hồi quy (Recurent) bởi lẽ chúng thực hiện cùng một tác vụ cho tất cả các phần tử của một chuỗi với đầu ra phụ thuộc vào cả các phép tính trước đó Nói cách khác, RNN có khả năng nhớ các thông tin được tính toán trước đó Trên lý thuyết, RNN có thể sử dụng được thông tin của một văn bản rất
Mạng nơ-ron hồi quy (RNN) có dạng như sau; tuy nhiên, thực tế nó chỉ có thể nhớ được một vài bước trước đó mà thôi, cho thấy khả năng ghi nhớ ngắn hạn của RNN bị giới hạn khi xử lý các chuỗi thời gian.
Hình 2 5: Kiến trục của mạng RNN
Giải thích một chút: Nếu như mạng nơ-ron chỉ là input layer x đi qua hidden layer h và cho ra output layer y với full connected giữa các layer thì trong RNN, các input xt sẽ được kết hợp với hidden layer ht−1 bằng hàm fW để tính toán ra hidden layer ht hiện tại và output yt sẽ được tính ra từ ht, W là tập các trọng số và nó được ở tất cả các cụm, các L1,L2, ,Lt là các hàm mất mát sẽ được giải thích sau Như vậy kết quả từ các quá trình tính toán trước đã được "nhớ" bằng cách kết hợp thêm ht−1 tính ra ht để tăng độ chính xác cho những dự đoán ở hiện tại Cụ thể quá trình tính toán được viết dưới dạng toán như sau: ht=fW(ht−1,xt)
Hàm fW chúng ta sẽ xử dụng hàm tanh, công thức trên sẽ trở thành : ht=tanh(Whhht−1+Wxhxt) yt=Whyht Đến đây có 3 thứ mới xuất hiện: Wxh,Whh,Why Đối với mạng nơ-ron chỉ sử dụng một ma trận trọng số W duy nhất thì với RNN nó sử dụng 3 ma trận trọng số cho 2 quá trình tính toán: Whh kết hợp với "bộ nhớ trước" ht−1 và Wxh kết hợp với xt để tính ra "bộ nhớ của bước hiện tại" ht từ đó kết hợp với Why để tính ra yt
Ngoài mô hình Many to Many như ta thấy ở trên thì RNN còn rất nhiều dạng khác như sau:
Long short term memory (LSTM)
Mạng bộ nhớ dài-ngắn (Long Short Term Memory networks), thường được gọi là LSTM - là một dạng đặc biệt của RNN, nó có khả năng học được các phụ thuộc xa LSTM được giới thiệu bởi Hochreiter & Schmidhuber (1997) [4], và sau đó đã được cải tiến và phổ biến bởi rất nhiều người trong ngành Chúng hoạt động cực kì hiệu quả trên nhiều bài toán khác nhau nên dần đã trở nên phổ biến như hiện nay
LSTM được thiết kế để tránh được vấn đề phụ thuộc xa (long-term dependency) Việc nhớ thông tin trong suốt thời gian dài là đặc tính mặc định của chúng, chứ ta không cần phải huấn luyện nó để có thể nhớ được Tức là ngay nội tại của nó đã có thể ghi nhớ được mà không cần bất kì can thiệp nào
Mọi mạng hồi quy đều được cấu thành từ một chuỗi các mô-đun lặp đi lặp lại của mạng nơ-ron Trong một RNN chuẩn, các mô-đun này có cấu trúc rất đơn giản và thường chỉ là một tầng tanh Nhờ tính lặp lại của các mô-đun, mạng hồi quy có khả năng xử lý dữ liệu chuỗi theo thời gian và ghi nhớ thông tin từ các bước trước để áp dụng cho các bài toán dự báo chuỗi thời gian.
Hình 2 7: Mô-đun lặp lại trong RNN tiêu chuẩn chứa một lớp duy nhất
LSTM là một dạng kiến trúc chuỗi, có điểm khác biệt so với RNN chuẩn ở cách tổ chức các mô-đun bên trong Thay vì chỉ có một tầng mạng nơ-ron, LSTM tích hợp tới bốn tầng tương tác với nhau một cách đặc biệt, bao gồm các cổng điều khiển và trạng thái ẩn giúp lưu trữ và cập nhật thông tin theo thời gian hiệu quả Nhờ cơ chế này, LSTM có thể xử lý tốt các phụ thuộc dài hạn trong dữ liệu chuỗi, phù hợp cho các bài toán như dự báo, nhận diện ngữ cảnh và phân tích chuỗi thời gian.
Hình 2 8: Mô-đun lặp lại trong một LSTM chứa 4 lớp tương tác
Đừng hoang mang về các chi tiết bên trong lúc này; chúng ta sẽ khám phá chúng ở bước sau Điều quan trọng là làm quen với các kí hiệu mà chúng ta sẽ dùng ở phần dưới Trong sơ đồ, mỗi cạnh mang một véc-tơ từ đầu ra của một nút đến đầu vào của nút khác Các hình màu hồng biểu diễn các phép toán cơ bản, ví dụ như phép cộng véc-tơ, còn các ô màu vàng là những yếu tố được dùng để học trong mạng nơ-ron Các đường hợp lại cho thấy sự kết hợp, trong khi các đường rẽ nhánh cho biết nội dung được sao chép và chuyển tới nhiều vị trí khác nhau.
2.3.1 Ý tưởng cốt lõi của LSTM
Chìa khóa của LSTM là trạng thái tế bào (cell state) - chính đường chạy thông ngang phía trên của sơ đồ hình vẽ
Trạng thái tế bào là một dạng giống như băng truyền Nó chạy xuyên suốt tất cả các mắt xích (các nút mạng) và chỉ tương tác tuyến tính đôi chút
Vì vậy mà các thông tin có thể dễ dàng truyền đi thông suốt mà không sợ bị thay đổi
LSTM có khả năng bỏ đi hoặc thêm vào các thông tin cần thiết cho trạng thái tế báo, chúng được điều chỉnh cẩn thận bởi các nhóm được gọi là cổng (gate)
Các cổng là nơi sàng lọc thông tin đi qua nó, chúng được kết hợp bởi một tầng mạng sigmoid và một phép nhân
Tầng sigmoid là một lớp kích hoạt trong mạng nơ-ron, cho đầu ra là một giá trị nằm trong khoảng [0, 1], mô tả mức độ thông tin có thể được truyền qua từng nơ-ron Giá trị này đóng vai trò như xác suất hoặc mức mở của cổng thông tin, giúp mô hình quyết định xem thông tin có nên đi tiếp hay không Khi đầu ra bằng 0, nghĩa là không có thông tin nào được truyền qua; khi đầu ra bằng 1, nghĩa là toàn bộ thông tin có thể đi qua Nhờ đặc tính liên tục từ 0 đến 1, hàm kích hoạt sigmoid phù hợp với các bài toán nhị phân và ước lượng xác suất, đồng thời cung cấp đầu ra dễ tích hợp trong quá trình huấn luyện Tuy nhiên, với mạng sâu, cần lưu ý đến vấn đề gradient mất dần, do đó có thể cân nhắc dùng kỹ thuật tối ưu khác hoặc các hàm kích hoạt thay thế khi cần thiết.
Một LSTM gồm có 3 cổng như vậy để duy trì và điều hành trạng thái của tế bào
Bước đầu tiên của LSTM là quyết định xem thông tin nào cần bỏ đi từ trạng thái tế bào Quyết định này được đưa ra bởi tầng sigmoid - gọi là “tầng
20 cổng quên” (forget gate layer) Nó sẽ lấy đầu vào là ht−1 và xt rồi đưa ra kết quả là một số trong khoảng [0, 1][0,1] cho mỗi số trong trạng thái tế bào Ct−1 Đẩu ra là 11 thể hiện rằng nó giữ toàn bộ thông tin lại, còn 00 chỉ rằng toàn bộ thông tin sẽ bị bỏ đi
Quay trở lại với ví dụ mô hình ngôn ngữ dự đoán từ tiếp theo dựa trên tất cả các từ trước đó, với những bài toán như vậy, thì trạng thái tế bào có thể sẽ mang thông tin về giới tính của một nhân vật nào đó giúp ta sử dụng được đại từ nhân xưng chuẩn xác Tuy nhiên, khi đề cập tới một người khác thì ta sẽ không muốn nhớ tới giới tính của nhân vật nữa, vì nó không còn tác dụng gì với chủ thế mới này
Bước tiếp theo là quyết định xem thông tin mới nào ta sẽ lưu vào trạng thái tế bào Việc này gồm 2 phần Đầu tiên là sử dụng một tầng sigmoid được gọi là “tầng cổng vào” (input gate layer) để quyết định giá trị nào ta sẽ cập nhập Tiếp theo là một tầng tanhtanh tạo ra một véc-tơ cho giá trị mới \tilde{C_t}Ct~ nhằm thêm vào cho trạng thái Trong bước tiếp theo, ta sẽ kết hợp 2 giá trị đó lại để tạo ra một cập nhập cho trạng thái
Trong ví dụ về mô hình ngôn ngữ của chúng ta, ta sẽ muốn thêm thuộc tính giới tính của nhân vật mới vào trạng thái tế bào và đồng thời cập nhật giới tính của nhân vật trước đó khi ngữ cảnh yêu cầu Việc cập nhật này giúp trạng thái tế bào phản ánh đúng thông tin về giới tính theo từng bối cảnh, từ đó tăng tính nhất quán và khả năng mô phỏng của mô hình Bằng cách quản lý giới tính một cách có hệ thống trong trạng thái tế bào, mô hình có thể xử lý các biến thể ngôn ngữ liên quan đến giới tính một cách linh hoạt và hiệu quả.
Giờ là lúc cập nhập trạng thái tế bào cũ Ct−1 thành trạng thái mới Ct Ở các bước trước đó đã quyết định những việc cần làm, nên giờ ta chỉ cần thực hiện là xong
Ta sẽ nhân trạng thái cũ với ft để bỏ đi những thông tin ta quyết định quên lúc trước Sau đó cộng thêm it∗Ct~ Trạng thái mơi thu được này phụ thuộc vào việc ta quyết định cập nhập mỗi giá trị trạng thái ra sao
Mô hình ngôn ngữ (Language model)
Language Model (LM) là một mô hình ngôn ngữ đại diện cho kiến thức đã biết về một ngôn ngữ, trong đó kiến thức này có thể là từ vựng và các chuỗi từ có thể xuất hiện cùng với tần suất xuất hiện của chúng LM nắm bắt sự phổ biến của các từ và chuỗi từ, cho phép dự đoán từ tiếp theo dựa trên ngữ cảnh và mẫu ngôn ngữ đã học Nhờ đó, LM hỗ trợ xử lý ngôn ngữ tự nhiên và các ứng dụng như phân tích văn bản, sinh văn bản và tìm kiếm dựa trên mức độ liên quan giữa các từ và cụm từ.
LM được chia thành ba nhóm đó là Statistical LM (Count-based), Neural Network LM (Continuous-space) và Knowledge-based LM, Ngoài ra còn một số
LM khác chẳng hạn như KenLM,
2.4.1 Statistical Language Models ( Count-based)
Những mô hình thuộc nhóm này đều dựa trên việc đếm tần suất xuất hiện của từng từ hay chuỗi, do đó nó cần một lượng dữ liệu lớn, càng nhiều càng tốt
Statistical LM, hay mô hình ngôn ngữ thống kê, là một phân bố xác suất P(W) với W ∈ V+, được xác định trên tập hợp tất cả các chuỗi (câu văn) V+ có trong dữ liệu thuộc bộ từ vựng VV của một ngôn ngữ cụ thể Mô hình này cho phép ước lượng xác suất xuất hiện của từng chuỗi từ dựa trên dữ liệu huấn luyện, từ đó hỗ trợ các ứng dụng xử lý ngôn ngữ tự nhiên như dự báo từ tiếp theo và sinh văn bản Nói cách khác, Statistical LM tổng hợp thông tin về cách các từ ghép thành câu trong ngôn ngữ và là nền tảng cho nhiều công cụ NLP.
Trong đó, xác suất của một chuỗi có độ dài KK được tính như sau:
P(w1w2 wK)=P(w1)P(w2∣w1) P(wK∣w1w2 wK−1)=k=1∏KP(wk∣w1 w2 wk−1)
P(wk∣w1w2 wk−1) là xác suất của từ wk khi đã biết chuỗi w1w2 wk−1 và được tính bằng cách đếm chuỗi như sau:
P(wk∣w1w2 wk−1)=count(w1w2 wk−1)count(w1w2 wk)
Khi K càng lớn, tần suất xuất hiện của chuỗi K từ càng thấp và có thể dẫn đến xác suất P(wk|w1 wk−1) gần như bằng 0 vì chuỗi K từ ấy hiếm hoặc không có trong tập huấn luyện Điều này khiến chuỗi K từ hiếm gặp hoặc không bao giờ xuất hiện trong dữ liệu huấn luyện Giải pháp giảm thiểu vấn đề này là thay vì tính theo K−1, ta chỉ dùng N−1 từ dẫn trước, tức là xây dựng các mô hình ngôn ngữ N-gram để ước lượng xác suất chuỗi từ dựa trên các chuỗi ngắn hơn Nhờ đó, mô hình ngôn ngữ N-gram giảm hiện tượng sparsity và cải thiện khả năng dự đoán ngôn ngữ.
P(wk∣w1w2 wk−1)=P(wk∣wk−N+1wk−N+2 wk−1)
Như vậy ta sẽ có xác suất của một chuỗi là như sau:
PN(W)=k=1∏KP(wk∣wk−N+1wk−N+2 wk−1)
Thông thường người ta sẽ chọn N=1,2,3
Người ta còn gọi mô hình này với cái tên khác là (N-1)-order Markov
Nhưng mà, mô hình này có các nhược điểm như sau:
Sai điều kiện về sự phụ thuộc: Việc chuyển từ K−1 về N−1 ngay từ đầu đã không đúng rồi
Bão hoà (Saturation): Data càng nhiều thì model sẽ càng tốt nhưng sẽ đến lúc thêm data khác thì phân bố xác suất không thay đổi Điều này xảy ra với bigram, trigram khi số từ đạt tới hàng tỷ
Khả năng tổng quát hoá của mô hình ngôn ngữ bị hạn chế bởi sự đa dạng về thể loại, chủ đề và phong cách viết, tạo ra các kết hợp câu và từ ngữ khác nhau giữa các nguồn dữ liệu Vì vậy, chất lượng mô hình phụ thuộc lớn vào nguồn dữ liệu đào tạo và mức độ tương đồng giữa train và test; khi train và test có kiểu viết khác biệt, hiệu suất sẽ giảm đáng kể và có thể trở nên kém ổn định Để cải thiện tổng quát hoá, cần cân nhắc thiết kế dữ liệu đa dạng và áp dụng kỹ thuật thích ứng miền (domain adaptation) nhằm tăng độ tin cậy và hiệu quả của mô hình trên các nguồn dữ liệu khác nhau.
Thưa thớt dữ liệu (Data sparseness) là vấn đề quan trọng trong xử lý ngôn ngữ tự nhiên: khi dữ liệu thiếu hụt hoặc bị mất, các chuỗi xuất hiện trong tập kiểm tra có thể không có mặt trong tập huấn, khiến xác suất của chúng bằng 0 Các mô hình ngôn ngữ dựa trên N-gram có thể giảm bớt hiện tượng này, nhưng chúng chưa thể giải quyết hoàn toàn triệt để.
2.4.3 Neural Network Language Models (Continuous-space)
This type of language model was introduced to address the data sparsity problem in N-gram language models It comes in two main forms: Feedforward Neural Networks (FNNs) and Recurrent Neural Networks (RNNs).
Mọi mô hình kiểu này đều có input và output là:
Input: Word Embedding hay Character Embedding, là chuyển từ hay ký tự sang vector số thực trong một không gian n chiều (dimensions) cố định
Trong mỗi output unit, xác suất của một từ hoặc ký tự được tính dựa trên ngữ cảnh đã biết Ngữ cảnh tùy thuộc vào loại mô hình ngôn ngữ được sử dụng Với mạng nơ-ron feed-forward (FNN), ngữ cảnh là một chuỗi có độ dài cố định gồm các từ hoặc ký tự ngay trước ký tự đang xét, tương tự như cách các mô hình N-gram hoạt động Trong khi đó, với mạng nơ-ron hồi tiếp (RNN), ngữ cảnh có độ dài không cố định và cho phép mô hình xem xét thông tin từ quá khứ để vượt qua giới hạn ngữ cảnh của FNN, từ đó khắc phục nhược điểm của các mô hình N-gram.
Thực nghiệm và đánh giá kết quả
Cơ chế hoạt động của Tesseract
Hình 3 1: Kiến trúc nhận dạng văn bản chữ in trong Tesseract
Cũng giống như hầu hết các chương trình nhận dạng ký tự quang học, Tesseract có một kiến trúc điển hình từ trên xuống Bước đầu bằng chức năng tiền xử lý, một ngưỡng sẽ được chọn bởi bộ phân ngưỡng thông qua một quá trình phân tích các điểm trong ảnh với giải thuật như là Otsu, sau đó ngưỡng này sẽ được sử dụng để chuyển đổi ảnh màu hoặc ảnh xám đầu vào thành một ảnh nhị phân, giả thiết chứa các vùng văn bản hình dạng đa giác
Trong giai đoạn tiếp theo, ảnh nhị phân được đưa vào bộ Phân tích thành phần liên thông (Connected Component Analysis) nhằm nhận diện và phác thảo hình dạng của các thành phần liên thông Quá trình này là một bước phức tạp và mất nhiều thời gian, nhưng rất cần thiết để tách riêng các ký tự có trong hình và chuẩn bị cho các bước nhận diện ký tự tiếp theo.
Khối Tìm các dòng văn bản và từ (Find text lines and words) thực hiện các chức năng như xác định đường cơ sở và chiều cao chữ cho mỗi dòng, cắt gọn ký tự trước khi xác định vùng ký tự và nhận diện khoảng cách giữa chữ và số; nó lọc dãy dòng không chỉ để tìm ký tự trong từng dòng mà còn phát hiện các ký tự có độ cao chênh lệch như drop-cap, dấu câu và nhiễu Tuy nhiên, nếu ảnh chứa các dòng nghiêng hoặc cong thì quá trình nhận dạng sẽ phức tạp; để giảm mất thông tin khi xử lý ảnh nghiêng, ta áp dụng giải thuật biến đổi Hough để tìm góc nghiêng và hiệu chỉnh ảnh số trở về vị trí chuẩn, từ đó tăng độ chính xác nhận diện văn bản Trong trường hợp dòng có độ nghiêng phức tạp, các phương pháp tiền xử lý và phân tích đặc trưng bổ sung có thể được sử dụng để bảo toàn thông tin và cải thiện kết quả.
25 cong nào đó thì phải thiết lập các dòng cơ sở (Baseline) bằng cách sử dụng phương trình spline thích hợp cho nhiều phân đoạn
Hình 3 2: Đường cơ sở hình cong
Cắt gọn từ là quá trình xác định xem trong một từ có các ký tự liền nhau hay không Nếu có ký tự liền nhau, hệ thống sẽ phân tách và cắt nhỏ các ký tự thành các ký tự riêng lẻ để xử lý.
Hình 3 3: Cắt các ký tự liền nhau
Nhận diện khoảng cách giữa chữ và số là một bài toán phức tạp trong xử lý văn bản Do sự đa dạng của các phông chữ nên khoảng cách giữa chữ cái, chữ số và từ có thể biến đổi, khiến việc nhận diện gặp khó khăn Tesseract khắc phục điều này bằng cách đo khoảng cách ở một mức ngưỡng được chọn và coi đó như một giá trị mờ với sai số Sơ đồ nhận dạng một từ là quy trình phân tích từ được chia thành các ký tự để xác định từng ký tự và ghép lại thành từ hoàn chỉnh.
Hình 3 4: Sơ đồ nhận dạng từ
Mỗi ký tự cần nhận dạng có những đặc trưng riêng, có khoảng 50 tới 100 đặc trưng điển hình trong mỗi ký tự Mỗi đặc trưng chứa 3 tham số là hoành độ, tung độ, và góc xoay Trong khi đó mỗi ký tự mẫu có từ 10 tới 20 đặc trưng, mỗi đặc trưng có 4 tham số là hoành độ, tung độ, góc xoay, độ dài Văn bản luôn tồn tại độ dư thừa ký tự và từ vựng, vậy chức năng phân loại ký tự tạo ra danh sách rút gọn chứa các ký tự mà ký tự đối sánh có thể trùng khớp Các lớp ký tự mẫu sinh ra các lớp véc tơ bít tương ứng với những đặc trưng của từng ký tự
Đặc trưng nhận dạng ký tự được đối chiếu với lớp véc tơ bit của ký tự mẫu, từ đó tính toán sự khác biệt giữa các đặc trưng và ký tự tham chiếu Quá trình này cho phép đánh giá mức độ tương đồng giữa ký tự cần nhận diện và ký tự mẫu thông qua khoảng cách giữa các đặc trưng Bên cạnh đó, tham số thứ hai là độ dài của ký tự nhận dạng, đóng vai trò quan trọng trong việc điều chỉnh và tối ưu hóa kết quả nhận diện ký tự.
Hình 3 5: Các đặc trưng ký tự được nhận dạng
Hệ số đánh giá đối sánh là tích hai tham số trên, cặp đối sánh nào có hệ số nhỏ nhất thì xem như chúng là tương tự nhau Chức năng phân loại tĩnh (static classifier) phù hợp với các ký tự có phông chữ bất kỳ, nhưng nó chủ yếu được dùng để nhận dạng các ký tự riêng như ký tự chú giải, dấu ngăn cách hay kết thúc câu trong khi chức năng phân loại thích ứng (Adaptive classifier) dùng để nhận
27 dạng các ký tự theo phông chữ chuẩn Bộ từ điển dùng để lưu trữ dữ liệu cho quá trình phân loại và nhận dạng Mỗi ngôn ngữ có một bộ từ điển chứa các ký tự theo các phông chữ khác nhau với thuộc tính như chuẩn – normal , đậm – bold, nghiêng – italic và thuộc tính kết hợp Từ điển cũng lưu trữ các từ hay sử dụng, từ chữ cái, từ số, từ chữ hoa, từ chữ thường
3.1.1 Cài đặt Tesseract Để làm việc này, trước hết chúng ta cần phải install phần phềm Tesseract và gói thư viện bằng Python tương ứng
Tesseract là bộ công cụ OCR do Google tài trợ, hoạt động trên Linux và macOS Để nhận diện tiếng Việt hoặc các ngôn ngữ khác, bạn tải file huấn luyện vie.traineddata từ kho tessdata của Tesseract tại https://github.com/tesseractocr/tessdata/blob/master/vie.traineddata và sao chép nó vào thư mục tessdata của Tesseract để kích hoạt nhận diện cho tiếng Việt.
Các tập tin dữ liệu này được tạo ra bởi kỹ thuật LSTM (Long Short-Term Memory) trong Deep Learning;
Rồi install gói pytesseract và pillow
Trong đó Pillow viết tắt là PIL, là thư viện về ảnh viết bằng Python để quản lý (mở, xử lý, ghi, …) các dạng tập tin hình ảnh theo định dạng khác nhau trên Windows, macOS và cả Linux
Ngoài ra, có thể install thêm gói thư viện openCV để dùng một số hàm thư viện liên quan đến xử lý ảnh
3.1.2 Tiền xử lý cho Tesseract:
Chúng tôi đảm bảo hình ảnh được xử lý trước một cách thích hợp để đạt được mức độ chính xác mong muốn trong hệ thống Quá trình này bao gồm các bước tiền xử lý quan trọng như điều chỉnh kích thước (thay đổi tỷ lệ), áp dụng mã hóa nhị phân, loại bỏ nhiễu và giải mã, cùng với các kỹ thuật tiền xử lý khác nhằm tối ưu hóa hiệu suất và độ tin cậy của các thuật toán xử lý ảnh.
Dùng Tesseract để nhận dạng tiếng Việt
Xử lý dữ liệu văn bản đầu vào cho mô hình phân loại
Xử lý ngôn ngữ tự nhiên (NLP) là một nhánh của trí tuệ nhân tạo, tập trung vào các ứng dụng ngôn ngữ của con người Trong lĩnh vực AI, NLP được xem là một trong những phần khó nhất vì nó đòi hỏi phải hiểu sâu ý nghĩa của ngôn ngữ và là công cụ tối ưu cho tư duy cũng như giao tiếp.
Tiền xử lý là bước đầu tiên và không thể thiếu trong xử lý ngôn ngữ tự nhiên (NLP), vì văn bản vốn dĩ thiếu cấu trúc và ở trạng thái thô nên rất khó để xử lý Nếu để nguyên như vậy, hệ thống NLP sẽ gặp khó khăn trong nhận diện ý nghĩa, ngữ cảnh và từ khóa Đặc biệt với văn bản trên web có lẫn HTML tag và code, tiền xử lý càng quan trọng để loại bỏ hoặc chuẩn hóa các yếu tố này, giúp dữ liệu sạch, dễ phân tích và tối ưu cho các mô hình ngôn ngữ.
JS, đó chính là noise
Trong báo cáo này sẽ nêu rõ những bước tiền xử lý trong bài làm của tôi:
Trong bước này, mục tiêu chính là loại bỏ noise khỏi dữ liệu để nâng cao chất lượng xử lý Phần lớn noise đến từ các thẻ HTML và mã JavaScript, cùng với các thành phần dữ liệu thừa khác có thể làm sai lệch kết quả và làm mỏng thông tin quan trọng Nếu để noise tồn tại, quá trình xử lý sẽ gặp khó khăn và cho kết quả không đáng tin cậy Vì vậy, loại bỏ noise là bước thiết yếu giúp dữ liệu sạch hơn, giảm nhiễu và cải thiện hiệu quả khai thác thông tin.
Thông thường chúng ta hay loại bỏ noise là các thẻ HTML và JS như trên tuy nhiên thực tế noise có thể không chỉ là HTML, JS, cũng có thể là những cụm từ không cần thiết, hay ký tự không có ý nghĩa ($%#")
Trong tiếng Việt, dấu cách (space) không được sử dụng như 1 kí hiệu phân tách từ, nó chỉ có ý nghĩa phân tách các âm tiết với nhau Vì thế, để xử lý tiếng Việt, công đoạn tách từ (word segmentation) là 1 trong những bài toán cơ bản và quan trọng bậc nhất
Ví dụ : từ “đất nước” được tạo ra từ 2 âm tiết “đất” và “nước”, cả 2 âm tiết này đều có nghĩa riêng khi đứng độc lập, nhưng khi ghép lại sẽ mang một nghĩa khác Vì đặc điểm này, bài toán tách từ trở thành 1 bài toán tiền đề cho các ứng dụng xử lý ngôn ngữ tự nhiên khác như phân loại văn bản, tóm tắt văn bản, máy dịch tự động, …
Việc tách từ chính xác là nền tảng quan trọng trong xử lý ngôn ngữ tự nhiên và các hệ thống phân tích văn bản Nếu quá trình tách từ diễn ra không chuẩn, ý nghĩa câu có thể bị sai lệch, làm giảm độ chính xác của kết quả phân tích và thông tin cung cấp Do đó, độ chính xác của tách từ ảnh hưởng trực tiếp tới tính đúng đắn của chương trình Để đảm bảo chất lượng và tối ưu hóa cho SEO, cần áp dụng các phương pháp tách từ hiện đại, kiểm thử kỹ lưỡng và tối ưu quy trình xử lý ngữ liệu để duy trì sự nhất quán và ngữ nghĩa chuẩn xác.
Về phương pháp cho bài toán, tôi sử dụng thư viện Underthesea để tách từ ngoài ra có một số thư viện cũng khá tốt sử dụng cho ngôn ngữ tự nhiên tiếng Việt như vn.vik, pyvi
StopWords là những từ xuất hiện nhiều trong ngôn ngữ tự nhiên, tuy nhiên lại không mang nhiều ý nghĩa Ở tiếng việt StopWords là những từ như: để, này, kia Tiếng anh là những từ như: is, that, this Tham khảo thêm tại danh sách stopwords trong tiếng việt
Có rất nhiều cách để loại bỏ StopWords nhưng có 2 cách chính là:
Cách này đơn giản nhất, chúng ta tiến hành filter văn bản, loại bỏ những từ xuất hiện trong từ điển StopWords:
Dựa theo tần suất xuất hiện của từ:
Với cách này, chúng ta tiến hành đếm số lần xuất hiện của từng từ trong data sau đó sẽ loại bỏ những từ xuất hiện nhiều lần (cũng có thể là ít lần) Khoa học đã chứng minh những từ xuất hiện nhiều nhất thường là những từ không mang nhiều ý nghĩa
Có thể mọi người đã từng nghe đến phương pháp TF-IDF (Term Frequency - Inverse Document Frequency), đây là một phương pháp cực kì phổ biến trong xử lý văn bản Nó được tính theo công thức dưới đây:
TF(t) = (Số lần xuất hiện từ t trong văn bản) / (Tổng số từ trong văn bản)
IDF(t,D) = log_e(Tổng số từ trong văn bản trong tập D/ Số văn bản trong tập D có chứa từ t)
Mục tiêu của bước này là vector hoá từ theo từng câu thay vì vector hoá cả đoạn văn Thông thường nên thực hiện vector hoá theo câu để tránh tạo ra các vector có quá nhiều chiều khi xử lý một đoạn văn dài Dữ liệu ở dạng cao chiều sẽ làm giảm tính chính xác và khiến quá trình xử lý trở nên khó khăn Vì vậy, vector hoá theo từng câu giúp duy trì độ chính xác, giảm bớt số chiều và cải thiện hiệu suất xử lý dữ liệu.
Sau khi thực hiện TF-IDF, chúng ta dễ dàng nhận thấy rằng, ma trận mà chúng ta thu được có kích thước rất lớn, và việc xử lý tính toán với ma trận này đòi hỏi thời gian và bộ nhớ khá tốn kém Giả sử, chúng ta có 100.000
32 văn bản và bộ từ điển bao gồm 50000 từ, khi đó ma trận mà chúng ta thu được sẽ có kích thước là 100000 * 50000 Giả sử mỗi phần tử được lưu dưới dạng float32 - 4 byte, bộ nhớ mà chúng ta cần sử dụng là:
100000×50000×4 000000000 byte tức là chúng ta tốn tầm 18.63GB bộ nhớ, khó có thể lưu hết vào RAM để thực hiện tính toán Trong thực tế, với số lượng văn bản khổng lồ và từ điển lên đến hàng trăm nghìn từ, bộ nhớ mà chúng ta sử dụng còn tốn kém hơn rất nhiều Để xử lý vấn đề này, chúng ta sẽ sử dụng thuật toán SVD (singular value decomposition) nhằm mục đích giảm chiều dữ liệu của ma trận mà chúng ta thu được, mà vẫn giữ nguyên được các thuộc tính của ma trận gốc ban đầu.
Các mô hình được huấn luyện
XGBoost là một triển khai mạnh mẽ và hiệu quả của thuật toán tổng thể tăng cường độ dốc
Có thể là một thách thức để định cấu hình các siêu tham số của các mô hình XGBoost, điều này thường dẫn đến việc sử dụng các thử nghiệm tìm kiếm lưới lớn vừa tốn thời gian vừa tốn kém về mặt tính toán
Một cách tiếp cận thay thế để định cấu hình mô hình XGBoost là đánh giá hiệu suất của mô hình mỗi lần lặp lại thuật toán trong quá trình đào tạo và vẽ biểu đồ kết quả dưới dạng đường cong học tập Các đồ thị đường cong học tập này cung cấp một công cụ chẩn đoán có thể được giải thích và đề xuất những thay đổi cụ thể đối với siêu tham số của mô hình có thể dẫn đến những cải tiến trong hiệu suất dự đoán
Tăng cường là một lớp các thuật toán học máy tập hợp được dùng cho các bài toán phân loại hoặc mô hình dự đoán hồi quy Các nhóm được xây dựng từ các cây quyết định; các cây được thêm lần lượt vào quần thể để sửa các lỗi dự đoán do các mô hình trước đó mắc phải Đây là một loại mô hình học máy tập hợp được gọi là tăng cường Các mô hình được huấn luyện bằng cách tối ưu một hàm mất mát khả vi bất kỳ và bằng thuật toán tối ưu hóa theo gradient, và chính đặc tính này đã khiến kỹ thuật này được gọi là gradient boosting.
“tăng cường độ dốc”, vì độ dốc mất mát được giảm thiểu khi mô hình vừa vặn, giống như một mạng nơ-ron
Extreme Gradient Boost, hay viết tắt là XGBoost, là một cách triển khai mã nguồn mở hiệu quả của thuật toán tăng độ dốc Như vậy, XGBoost là một thuật toán, một dự án mã nguồn mở và một thư viện Python
Ban đầu nó được phát triển bởi Tianqi Chen và được Chen và Carlos Guestrin mô tả trong bài báo năm 2016 của họ có tiêu đề “XGBoost: A Scalable Tree Boosting System.” [5]
Nó được thiết kế để vừa hiệu quả về mặt tính toán (ví dụ như nhanh chóng thực thi) vừa có hiệu quả cao, có lẽ hiệu quả hơn các triển khai mã nguồn mở khác Hai lý do chính để sử dụng XGBoost là tốc độ thực thi và hiệu suất mô hình
Sau đây là những kết quả thu được qua từng quá trình học tập của mô hình: a) Mô hình ban đầu Đầu tiên, hiệu suất của mô hình được báo cáo, cho thấy rằng mô hình đạt được độ chính xác phân loại khoảng 97% trong bộ thử nghiệm tạm dừng
Biểu đồ hiển thị các đường cong học tập cho tập dữ liệu huấn luyện và thử nghiệm trong đó trục x là số lần lặp lại của thuật toán (hoặc số cây được thêm vào tập hợp) và trục y là logloss của mô hình Mỗi dòng hiển thị nhật ký mỗi lần lặp cho một tập dữ liệu nhất định
Từ các đường cong học tập, chúng ta có thể thấy rằng hiệu suất của mô hình trên tập dữ liệu huấn luyện (đường màu xanh lam) tốt hơn hoặc có tổn thất thấp hơn hiệu suất của mô hình trên tập dữ liệu thử nghiệm (đường màu cam), như chúng ta thường mong đợi
Hình 3 6: Đường cong học tập cho mô hình XGBoost ban đầu
34 b) Mô hình được điều chỉnh bằng đường cong học tập:
Chúng ta có thể xem đường cong học tập như một công cụ chẩn đoán hiệu quả cho quá trình huấn luyện mô hình Bằng cách giải thích và phân tích đường cong học tập, chúng ta có thể nhận diện các vấn đề tiềm ẩn và làm cơ sở để đề xuất các thay đổi cụ thể đối với cấu hình mô hình, từ đó tối ưu hóa hiệu suất và đạt được kết quả tốt hơn.
Mô hình và kết quả trong phần trước có thể được sử dụng làm đường cơ sở và điểm xuất phát
Nhìn vào biểu đồ, chúng ta có thể thấy rằng cả hai đường cong đều dốc xuống và cho thấy rằng việc lặp lại nhiều hơn (thêm nhiều cây hơn) có thể dẫn đến giảm tổn thất hơn nữa
Chúng ta có thể tăng số lần lặp lại thuật toán thông qua siêu tham số
“ n_estimators ” được đặt mặc định là 100 Hãy tăng nó lên 500
Việc tăng siêu tham số n_estimators khiến độ chính xác đạt khoảng 96,5%, dù thấp hơn so với lần chạy đầu tiên Tuy nhiên, từ các đường cong học tập có thể thấy các lần lặp bổ sung của thuật toán đã giúp các đường cong tiếp tục giảm và sau khoảng 150 lần lặp, chúng dần san bằng và ổn định ở mức hợp lý.
Hình 3 7: Đường cong học tập của mô hình XGBoost sau khi tăng siêu tham số n_estimators
Các đường cong học tập phẳng cho thấy thuật toán đang học quá nhanh và chúng ta có thể được lợi từ việc làm chậm nó Điều này có thể đạt được bằng cách điều chỉnh tỷ lệ học tập và giới hạn đóng góp của mỗi cây được thêm vào quần thể, giúp kiểm soát quá trình huấn luyện Siêu tham số eta quyết định mức độ làm chậm và mặc định là 0,3, nhưng chúng ta có thể thử giá trị nhỏ hơn, chẳng hạn như 0,05, để cải thiện khả năng tổng quát của mô hình.
Chúng ta có thể thấy rằng việc bổ sung quy định đã dẫn đến sự cải thiện hơn nữa, tăng độ chính xác từ khoảng 96,4% lên khoảng 97,07%
Những đường cong cho thấy chính quy hóa có thể làm chậm quá trình học, gợi ý rằng tăng số lần lặp lại có thể mang lại nhiều cải tiến hơn nữa cho hiệu suất của mô hình Để tối ưu hóa quá trình huấn luyện và kiểm soát overfitting, cần cân nhắc kỹ giữa mức độ chính quy và số lượt lặp lại, vì sự điều chỉnh này có thể giúp đạt được kết quả học tốt hơn mà vẫn đảm bảo tính ổn định và đáng tin cậy của mô hình.
Hình 3 8: Đường cong học tập của mô hình XGBoost sau khi tăng siêu tham số n_estimators và giảm siêu tham số eta
Một cách tiếp cận khác để làm chậm quá trình học là áp dụng chính quy hóa ở dạng giảm số lượng mẫu và số tính năng (hàng và cột) được sử dụng để xây dựng từng cây trong tập hợp các cây quyết định Việc giới hạn dữ liệu (mẫu) và thuộc tính (tính năng) giúp kiểm soát độ phức tạp của mô hình và làm chậm quá trình huấn luyện, từ đó giảm nguy cơ quá khớp và cải thiện khả năng tổng quát của ensemble.
Trong trường hợp này, chúng tôi sẽ thử giảm một nửa số lượng mẫu và tính năng tương ứng thông qua siêu tham số “ subsample ” và “ colsample_bytree ”
Chúng ta có thể thấy rằng việc bổ sung quy định đã dẫn đến sự cải thiện hơn nữa, tăng độ chính xác từ khoảng 97,07% lên khoảng 97,2%
Hình 3 9: Đường cong học tập của mô hình XGBoost sau khi thay đổi các siêu tham số n_estimator, eta, submaple và colsample_bytree
3.3.2 Mô hình Random Forest Classifer
Kết quả phân loại và so sánh các mô hình
Sau đây là kết quả thu được khi đưa một ảnh công văn mới và sử dụng 3 mô hình nêu trên để dự đoán Ảnh công văn mới thuộc loại chỉ đạo:
Hình 3 19: Công văn chỉ đạo
Và đây là kết quả từ 3 mô hình thực hiện:
Theo như kết quả thì, mô hình XGBoost và LSTM có dự đoán chính xác so với mô hình RandomForestClassifier