GIỚI THIỆU BÀI TOÁN PHÂN LOẠI CÂU CHỨA GỢI Ý
Giới thiệu về xử lý ngôn ngữ tự nhiên
Xử lý ngôn ngữ tự nhiên (NLP) là một lĩnh vực của trí tuệ nhân tạo, chuyên nghiên cứu các phương pháp và kỹ thuật để máy tính có thể hiểu và xử lý ngôn ngữ tự nhiên Mục tiêu của NLP là phát triển các chương trình và hệ thống máy tính có khả năng tương tác với ngôn ngữ của con người một cách hiệu quả.
Xử lý ngôn ngữ tự nhiên được áp dụng trong nhiều bài toán và ứng dụng thực tế, trong nhiều lĩnh vực:
Nhận dạng tiếng nói là quá trình chuyển đổi âm thanh thành văn bản, giúp người dùng thao tác nhanh chóng và dễ dàng hơn trên các thiết bị Đây là bước quan trọng trong việc phát triển giao tiếp giữa con người và robot Ngoài ra, công nghệ này còn hỗ trợ đáng kể cho người khiếm thị, mang lại nhiều lợi ích trong cuộc sống hàng ngày của họ.
Tổng hợp tiếng nói là quá trình chuyển đổi văn bản thành âm thanh, đóng vai trò quan trọng trong việc hỗ trợ người khiếm thị Cùng với nhận dạng tiếng nói, tổng hợp tiếng nói không chỉ cải thiện khả năng giao tiếp mà còn là bước cuối cùng trong việc tương tác giữa robot và con người.
Dịch máy (machine translate): Như tên gọi đây là chương trình dịch tự động từ ngôn ngữ này sang ngôn ngữ khác
Tìm kiếm và truy xuất thông tin ngày nay trở nên dễ dàng hơn nhờ internet, nhưng thách thức lớn nhất là xác định thông tin chính xác và đáng tin cậy giữa vô vàn dữ liệu Đặt câu hỏi đúng cách giúp chương trình tìm ra nội dung phù hợp nhất, đáp ứng nhu cầu thông tin ngày càng gia tăng.
Tóm tắt văn bản: Từ một văn bản dài tóm tắt thành một văn bản ngắn hơn theo mong muốn nhưng vẫn chứa những nội dung thiết yếu nhất.
Khai phá dữ liệu văn bản là quá trình phát hiện tri thức mới từ nhiều tài liệu khác nhau Tuy nhiên, việc này rất khó khăn, gần giống như quá trình học tập và khám phá khoa học của con người Đây là một lĩnh vực đang trong giai đoạn đầu phát triển.
Trích chọn thông tin là quá trình phân tích và xử lý dữ liệu nhằm thu thập các thông tin hữu ích và có cấu trúc từ các nguồn thông tin phi cấu trúc hoặc bán cấu trúc Quy trình này thường diễn ra qua ba bước chính: xác định thực thể, xác định mối liên hệ và trích xuất sự kiện.
Khai phá quan điểm là lĩnh vực nghiên cứu nhằm tự động xác định quan điểm của con người từ văn bản viết bằng ngôn ngữ tự nhiên Nó tập trung vào việc phân tích ý kiến, tình cảm, quan niệm chủ quan, đánh giá, thái độ, thẩm định và cảm xúc được thể hiện trong văn bản.
Bài toán phát hiện câu chứa gợi ý trên diễn đàn trực tuyến
1.2.1 Phân loại dữ liệu văn bản
Phân loại dữ liệu văn bản là quá trình gán nhãn cho các đối tượng dữ liệu vào một hoặc nhiều lớp nhất định Quá trình này sử dụng một mô hình phân lớp được xây dựng từ một tập dữ liệu đã được gán nhãn trước, gọi là tập dữ liệu học.
Các bài toán phân loại dữ liệu văn bản thường thấy :
- Phân loại dữ liệu văn bản theo chủ đề văn hóa, xã hội, chính trị, thể thao,…
- Phân loại câu : phân loại quan điểm, câu chứa quan điểm ( tích cực, tiêu cực)
- Phân loại câu hoặc văn bản theo cảm xúc như: vui buồn, yêu , ghét, tức, giận…
- Phân loại câu theo chức năng ngữ pháp: Câu bị động, câu chủ động, câu so sánh…
- Phát hiện ý định người dùng
Trong nội dung luận văn này sẽ tập trung vào bài toán phát hiện câu chứa gợi ý trên diễn đàn trực tuyến.
1.2.2 Phát biểu bài toán phân loại phát hiện câu chứa gợi ý
Bài toán phân loại câu và văn bản trong NLP thường liên quan đến việc phát hiện các câu chứa gợi ý trên diễn đàn trực tuyến Gợi ý được định nghĩa là những mẹo, lời khuyên hoặc khuyến nghị được trích xuất từ văn bản phi cấu trúc Các câu chứa gợi ý thường thể hiện ý kiến, góp ý về con người, thương hiệu, sản phẩm, hoặc dịch vụ, và thường xuất hiện trong đánh giá trực tuyến, blog, diễn đàn thảo luận và mạng xã hội Ví dụ, đánh giá sản phẩm có thể chứa gợi ý về cải tiến hoặc chất lượng sản phẩm từ những người đã trải nghiệm Khai thác gợi ý là một lĩnh vực mới mẻ, đặc biệt với sự phát triển của các phương pháp dựa trên mạng nơ-ron Nghiên cứu trong lĩnh vực này có thể thúc đẩy sự tham gia từ các doanh nghiệp và cộng đồng nghiên cứu, liên quan đến khai thác ý kiến và các phương pháp học máy Nhiệm vụ khai thác gợi ý được coi là phân loại câu, trong đó mỗi câu trong văn bản được dự đoán là "gợi ý" hoặc "không gợi ý".
Để phát hiện câu chứa gợi ý, cần nghiên cứu và xây dựng một mô hình thuật toán hiệu quả Các thuật toán như CNN, RNN và LSTM trong mạng Nơ-ron đã chứng tỏ khả năng phân loại chính xác cao cho nhiệm vụ này Tuy nhiên, việc áp dụng mạng Nơ-ron để nhận diện câu gợi ý trên diễn đàn trực tuyến gặp nhiều thách thức, bao gồm câu dài, từ viết tắt, lỗi chính tả, ký hiệu sai và cú pháp không chính xác, dẫn đến chất lượng và độ tin cậy thấp trong phát hiện Những yếu tố này làm giảm hiệu quả của các phương pháp xử lý truyền thống.
Bài toán phát hiện câu chứa gợi ý yêu cầu dự đoán nhãn L cho câu S, trong đó L có thể là "có chứa gợi ý" hoặc "không chứa gợi ý" Để thực hiện điều này, cần có một tập dữ liệu huấn luyện bao gồm các câu S đã được phân loại và gán nhãn L Sau khi thu thập dữ liệu, các thuật toán sẽ được áp dụng để tiến hành quá trình huấn luyện.
Đầu vào : Cho một câu trên diễn đàn trực tuyến
Đầu ra : L ∈ {có chứa gợi ý, không chứa gợi ý }.
Câu chứa gợi ý: ‘‘Hãy để thêm một bình hoa trong phòng, phòng sẽ đẹp hơn’’ Câu không chứa gợi ý: ‘‘Bình hoa này trong phòng rất đẹp”
Phát hiện câu chứa gợi ý có thể ứng dụng trong việc thu thập nhu cầu liên quan đến suy luận ngữ nghĩa trong ngôn ngữ tự nhiên, đặc biệt là trong việc phân tích ý kiến người tiêu dùng về thương hiệu, dịch vụ và sản phẩm thông qua các đánh giá trực tuyến, blog, diễn đàn và mạng xã hội Mặc dù nhiều nghiên cứu quốc tế đã áp dụng mô hình mạng Nơ-ron cho phát hiện này, như tại Semeval2019Task9/Subtask-A, Việt Nam vẫn còn thiếu các dự án nghiên cứu và triển khai thực tế trong lĩnh vực này.
Các nghiên cứu liên quan
Trong những năm gần đây, nhiều nghiên cứu trên thế giới đã sử dụng mô hình mạng Nơ-ron để phát hiện câu chứa gợi ý, như tại Semeval2019Task9/Subtask-A Tuy nhiên, tại Việt Nam, số lượng dự án nghiên cứu và ứng dụng vẫn còn hạn chế Một nghiên cứu đáng chú ý là của tác giả Ahmed Husseini Orabi và cộng sự, với đề tài “Học sâu để phát hiện trầm cảm của người dùng Twitter”, trong đó họ đã áp dụng xử lý ngôn ngữ tự nhiên trên Twitter và so sánh hiệu quả của ba mô hình CNN và một mô hình RNN Nghiên cứu này không chỉ cung cấp cái nhìn sâu sắc về rối loạn tâm thần mà còn mở ra hướng phát triển hệ thống phát hiện hành vi và cảm xúc tiêu cực của người dùng trực tuyến.
Bài viết “Phân tích ý định của người dùng trong văn bản ngôn ngữ tự nhiên” của tác giả Krüll, M và Strohmaier, M (2009) trình bày tại hội nghị kỷ yếu lần thứ 15 về thu thập tri thức, nhấn mạnh tầm quan trọng của việc phân tích và phân loại ý định cụ thể của người dùng Nội dung này không chỉ giúp hiểu rõ hơn về hành vi của người dùng mà còn hỗ trợ trong việc cải thiện các hệ thống tìm kiếm và tương tác người-máy.
Bên cạnh đó đã có rất nhiều công trình nghiên cứu của các tác giả [8], [9],
Việc khai thác quan điểm và phân tích ý định từ nhiều nguồn dữ liệu đang trở thành xu hướng nổi bật, với các phương pháp tiên tiến như SVM, mạng nơron hồi quy và mạng nơron tích chập Những nghiên cứu này đã cho thấy kết quả khả quan, hứa hẹn sẽ phát triển mạnh mẽ và bùng nổ trong những năm tới.
Luận văn sẽ nghiên cứu và giới thiệu các phương pháp phổ biến để phát hiện câu chứa gợi ý trên diễn đàn trực tuyến, đồng thời áp dụng các phương pháp này để đánh giá và đề xuất giải pháp Những đóng góp ban đầu bao gồm xử lý tiền dữ liệu và phân lớp dữ liệu trên nhiều phương pháp khác nhau, tạo nền tảng cho việc đánh giá và lựa chọn các phương pháp cũng như mô hình học máy phù hợp, từ đó mở ra cơ hội cho các ứng dụng tự động và phân tích dữ liệu trong tương lai.
Kết luận chương
Chương 1 của luận văn trình bày tổng quan về xử lý ngôn ngữ tự nhiên, đặc biệt là vấn đề phân loại câu và văn bản Luận văn cũng giới thiệu bài toán phát hiện câu chứa gợi ý trên diễn đàn trực tuyến, đồng thời nêu rõ những vấn đề cần được làm rõ và giải quyết trong nghiên cứu này.
Trong chương 2, luận văn sẽ tập trung vào việc giải quyết bài toán phát hiện câu chứa gợi ý, đồng thời trình bày chi tiết các phương pháp sẽ được áp dụng để thực hiện nhiệm vụ này.
PHƯƠNG PHÁP PHÁT HIỆN CÂU CHỨA GỢI Ý SỬ DỤNG HỌC MÁY
Phương pháp giải quyết bài toán
Trong quá trình nghiên cứu, chúng tôi đã thu thập các dòng trạng thái từ các diễn đàn trực tuyến, đặc biệt là từ bộ dữ liệu Semeval2019Task9/Subtask-A, với khoảng 833 câu Mục tiêu của nghiên cứu là xác định xem các câu này có chứa gợi ý hay không Luận văn đã tham khảo và đề xuất các bước thực hiện để xây dựng phương pháp giải quyết bài toán phát hiện câu chứa gợi ý, được chia thành hai giai đoạn chính.
Giai đoạn phân lớp. a, Giai đoạn huấn luyện:
Trong giai đoạn này, chúng ta sử dụng tập dữ liệu huấn luyện bao gồm các nội dung văn bản đã được gán nhãn Sau khi tiến hành xử lý dữ liệu và áp dụng các thuật toán huấn luyện, kết quả thu được sẽ là một mô hình phân loại.
Hình 2.1 Mô hình giai đoạn huấn luyện
XỬ LÝ TIỀN XỬ LÝ
MẠNG NƠ-RON (CNN,RNN,LSTM)
Trong đó các bước cụ thể sau :
Tiền xử lý: Chuyển đổi các dòng trạng thái trong tập dữ liệu thành một hình thức phù hợp để phân loại.
Dữ liệu sau khi xử lý: Tập dữ liệu đã được xử lý ở bước tiền xử lý như : lọc nhiễu, loại bỏ các thông tin dư thừa…
Trong quá trình huấn luyện mô hình, chúng tôi áp dụng các thuật toán học máy để tối ưu hóa các tham số, bao gồm Mạng Nơ-Ron tích chập (CNN), Mạng Nơ-Ron hồi qui (RNN) và Mạng Nơ-Ron có bộ nhớ ngắn dài (LSTM) Giai đoạn phân lớp là bước quan trọng để xác định các đặc trưng và phân loại dữ liệu một cách chính xác.
Nhận đầu vào là nội dung trạng thái của người dùng dưới dạng ngôn ngữ tự nhiên Sau khi xử lý và áp dụng mô hình phân loại, hệ thống sẽ cung cấp nhãn phân loại cho câu dữ liệu văn bản đầu vào Sơ đồ minh họa quá trình này được trình bày rõ ràng.
Hình 2.2: Mô hình giai đoạn phân lớp
Tương tự như các bước trong giai đoạn huấn luyện, giai đoạn phân lớp có nhiệm vụ cụ thể:
Tiền xử lý dữ liệu là bước quan trọng trong việc chuyển đổi các dòng trạng thái thành định dạng phù hợp cho phân loại Quá trình này bao gồm việc lọc nhiễu và loại bỏ các từ không mang ý nghĩa, nhằm cải thiện chất lượng dữ liệu đầu vào.
Mô hình phân lớp: Sử dụng các thuật toán như Mạng Nơ-Ron tích chập
(CNN), mạng Nơ-ron hồi qui (RNN), Mạng Nơ-Ron có bộ nhớ ngắn dài (LSTM) để tiến hành phân loại và gán nhãn ý định.
Dựa vào sơ đồ 2.1 và 2 2 trên ta có thể dễ dàng nhận thấy:
MÔ HÌNH PHÂN TIỀN XỬ LÝ LỚP
Mô hình kiến trúc hệ thống tổng quát cho bài toán phân loại câu chứa gợi ý bao gồm nhiều bước chính Bài viết sẽ trình bày chi tiết các thành phần quan trọng liên quan đến bài toán này, cũng như phân loại văn bản nói chung Dữ liệu được thu thập từ trang trực tuyến với 833 dòng trạng thái và được lưu trữ trong file dữ liệu.
2.1.1 Tiền xử lý dữ liệu
Tiền xử lý dữ liệu là bước thiết yếu trong phân loại dữ liệu, bao gồm các kỹ thuật như xử lý dữ liệu bị khuyết, mã hóa biến nhóm, chuẩn hóa và co giãn dữ liệu Những lỗi phổ biến trong thu thập dữ liệu như tính không đủ chặt chẽ và logic dẫn đến việc dữ liệu có giá trị vô nghĩa, như số, ký tự đặc biệt hay hashtag Việc xử lý những dữ liệu này là cần thiết vì chúng được coi là thông tin dư thừa và không có giá trị Nếu không được làm sạch, dữ liệu này có thể gây ra những kết quả sai lệch nghiêm trọng.
Trước khi xây dựng dữ liệu thực nghiệm, chúng tôi sẽ lọc và loại bỏ những dữ liệu không cần thiết từ tập dữ liệu thu thập từ các diễn đàn trực tuyến.
2.1.2 Lọc nhiễu (loại bỏ từ không mang nghĩa)
Các từ không có nghĩa ở đây là các con số, các ký tự đặc biệt và không mang nghĩa Ví dụ: “@@”, “!! “EU !!!!!!!!!!!!!!!!!!!!!!!!!!!!!, #2@”,
2.1.3 Loại bỏ các từ phổ biến (stop word):
Ngôn ngữ có thể được so sánh với một đống gạo lẫn thóc, trong đó cần chọn ra những hạt gạo chất lượng tốt nhất Những từ không có ý nghĩa quan trọng trong việc phân loại được gọi là stop words Để tiết kiệm không gian lưu trữ và tăng tốc độ xử lý, các từ quá phổ biến và chung chung sẽ không được ghi nhận, và những từ này được định nghĩa là stop words.
Giới thiệu chung mô hình mạng Nơ-ron
Hình 2.3: Một số stopword trong tiếng Anh [18]
Phần tiếp theo sẽ trình bày các mô hình mạng Nơ-ron được sử dụng trong luận văn.
2.2 Giới thiệu chung mô hình mạng Nơ-ron:
2.2.1 Mạng Nơ-ron nhân tạo (ANN)
Mạng neural nhân tạo (Artificial Neural Network - ANN) là mô hình xử lý thông tin mô phỏng hoạt động của hệ thống thần kinh sinh vật, bao gồm nhiều Neuron kết nối để xử lý dữ liệu Giống như bộ não con người, ANN học từ kinh nghiệm qua huấn luyện và lưu giữ tri thức để dự đoán và phân loại dữ liệu chưa biết Từ những năm 1980, ANN đã được áp dụng rộng rãi trong nhiều lĩnh vực khoa học Một số kiến trúc mạng nơ ron phổ biến bao gồm mạng nơ ron tích chập (CNN), mạng nơ ron hồi quy (RNN), mạng nơ ron sâu (DNN) và mạng bộ nhớ ngắn dài (LSTM).
2.2.2 Mạng nơ-ron sinh học
Hệ thống thần kinh là một tổ chức vật chất phức tạp, chủ yếu được cấu tạo từ nơ-ron, đơn vị cơ bản của nó Trong não người có khoảng 10^11 đến 10^12 tế bào thần kinh, hay còn gọi là nơ-ron, mỗi nơ-ron kết nối với khoảng 10^4 nơ-ron khác thông qua các khớp nối thần kinh (synapse).
Mỗi nơ-ron có cấu tạo bao gồm thân nơ-ron và các liên kết giữa các nơ-ron Thân nơ-ron được bao bọc bởi lớp màng và chứa nhân bên trong, là nơi tiếp nhận, tổng hợp và phát ra các xung thần kinh Tại thân nơ-ron, có nhiều nhánh gọi là rễ, được chia thành hai loại: rễ đầu vào nhận thông tin từ các nơ-ron khác qua axon và rễ đầu ra truyền thông tin đến các nơ-ron khác Hình 2.4 minh họa quá trình truyền thông tin từ nơ-ron 1 đến nơ-ron 2 qua axon.
Hình 2.4: Mô hình mạng nơ ron sinh học[24]
(Nguồn: https://cs231n.github.io/)
Quá trình hoạt động của nơ-ron là một quá trình điện hóa tự nhiên, phản ứng với tác động bên ngoài Khi nơ-ron lớp đầu tiên nhận tín hiệu vượt mức cân bằng, nó sẽ ở trạng thái kích thích và tạo ra thế năng Thế năng này được truyền qua axon đến các nơ-ron tiếp theo, có khả năng kích thích hoặc ức chế các nơ-ron khác trong mạng Một đặc điểm quan trọng của mạng nơ-ron sinh học là khả năng đáp ứng và thay đổi theo thời gian Thế năng kích thích có thể gia tăng, giảm đi hoặc biến mất khi đi qua các lớp nơ-ron Sự liên kết chặt chẽ giữa các nơ-ron tạo ra một mạng lưới đáp ứng, liên tục thay đổi trạng thái, ảnh hưởng đến toàn bộ mạng.
Các nhà khoa học đã tìm hiểu và lấy nguyên lý cấu trúc của mạng nơ-ron sinh học để xây dựng thành mô hình mạng neural nhân tạo.
2.2.3 Kiến trúc tổng quát của mạng neural nhân tạo:
Mạng neural nhân tạo (ANN) là mô hình xử lý thông tin được phát triển dựa trên cách thức hoạt động của hệ thống nơ-ron sinh học Nó bao gồm nhiều phần tử gọi là neural, được kết nối qua các trọng số liên kết Mạng này thường được huấn luyện từ tập mẫu, trong đó các trọng số sẽ được điều chỉnh để giảm thiểu giá trị lỗi ANN bao gồm ba kiểu tầng chính.
Tầng vào (input layer): Là tầng bên trái cùng của mạng thể hiện cho các đầu vào của mạng.
Tầng ra (output layer): Là tầng bên phải cùng của mạng thể hiện cho các đầu ra của mạng.
Tầng ẩn (hidden layer): Là tầng nằm giữa tầng vào và tầng ra thể hiện cho việc suy luận logic của mạng.
Mạng neural nhân tạo (ANN) có cấu trúc gồm một tầng vào, một tầng ra và nhiều tầng ẩn, trong đó mỗi nơ-ron tiếp nhận đầu vào từ các nơ-ron ở tầng trước Để tính toán đầu ra, các nơ-ron sử dụng các hàm kích hoạt phi tuyến như sigmoid, ReLU và tanh Hình 2.5 minh họa một ví dụ về cấu trúc của ANN.
Hình 2.5: Mạng neural 2 lớp ẩn[24]
(Nguồn: https://cs231n.github.io/)
Kiến trúc của mạng nơ-ron nhân tạo (ANN) bao gồm ba thành phần chính: lớp đầu vào (input layer), lớp ẩn (hidden layer) và lớp đầu ra (output layer) Lớp ẩn chứa các nơ-ron nhận dữ liệu từ lớp trước và chuyển đổi thông tin này cho các lớp xử lý tiếp theo, tạo nên quá trình xử lý thông tin của ANN.
Hình 2.6: Mô hình cấu tạo một neural
(Nguồn: https://tiendv.wordpress.com/2016/11/19/neural-networks/)
Trong ứng dụng ngân hàng, mỗi đầu vào tương ứng với một thuộc tính của khách hàng như thu nhập, nghề nghiệp, tuổi và số conv Đầu ra là giải pháp cho vấn đề chấp nhận cho khách hàng vay tiền, với kết quả có thể là "yes" (cho vay) hoặc "no" (không cho vay).
Trọng số liên kết (Connection Weights) là yếu tố quan trọng trong mạng nơ-ron nhân tạo (ANN), thể hiện mức độ ảnh hưởng của dữ liệu đầu vào trong quá trình xử lý thông tin Quá trình học (Learning Processing) của ANN thực chất là việc điều chỉnh các trọng số (Weight) của dữ liệu đầu vào nhằm đạt được kết quả mong muốn Hàm tổng (Summation Function) được sử dụng để tính tổng trọng số của tất cả các đầu vào trong mỗi nơ-ron, với n đầu vào được tính theo công thức cụ thể.
Hình 2.7 : Công thức tính hàm tổng của một Nơ-ron
Kết quả từ hình 2.7 cho thấy khả năng kích hoạt của các nơ-ron trong mạng nơ-ron nhân tạo (ANN) Các nơ-ron này có thể tạo ra đầu ra hoặc không, tùy thuộc vào hàm chuyển đổi (Transfer Function) mà chúng sử dụng Việc lựa chọn hàm chuyển đổi có ảnh hưởng lớn đến hiệu quả của ANN, vì đầu ra tại các nơ-ron thường là tổng hợp lớn Do đó, hàm chuyển đổi được áp dụng để xử lý đầu ra trước khi chuyển đến lớp tiếp theo Hàm sigmoid, một hàm chuyển đổi phi tuyến, là một trong những hàm phổ biến nhất được sử dụng trong ANN.
Hinh 2.8 : Công thức tính hàm chuyển đổi
Hàm Sigmoid Function, với giá trị nằm trong khoảng [0, 1], được gọi là hàm chuẩn hóa (Normalized Function) Thay vì sử dụng hàm chuyển đổi, tôi thường áp dụng giá trị ngưỡng (Threshold value) để kiểm soát đầu ra của các nơ-ron trong một lớp trước khi chuyển chúng đến các lớp tiếp theo; nếu đầu ra của nơ-ron nhỏ hơn ngưỡng, nó sẽ không được chuyển tiếp Mạng nơron nhân tạo đã chứng minh hiệu quả trong việc giải quyết nhiều bài toán thuộc các lĩnh vực khác nhau, với nhiều ứng dụng nổi bật.
Bài toán phân lớp (classification): Phân loại các đối tượng quan thành thành các nhóm Ví dụ: phân loại chữ viết, nhận diện hình ảnh
Mạng nơ-ron nhân tạo đã chứng minh hiệu quả trong việc xây dựng các mô hình dự đoán bằng cách sử dụng dữ liệu quá khứ để dự báo các sự kiện trong tương lai, như thiên tai và thị trường chứng khoán.
Mạng nơ-ron nhân tạo đã chứng tỏ khả năng vượt trội trong việc học và xấp xỉ hàm, từ đó được ứng dụng rộng rãi trong các hệ thống điều khiển tự động Bên cạnh đó, nó cũng đóng vai trò quan trọng trong việc giải quyết các bài toán tối ưu trong thực tế.
Mạng nơron tích chập CNN
Mạng Nơ-ron Tích Chập (CNN) được phát triển để khắc phục nhược điểm của mạng nơ-ron sâu truyền thống, với sự giới thiệu của Bengio, Le Cun, Bottou và Haffner vào năm 1998 Là một trong những mô hình học sâu tiên tiến nhất, CNN nổi bật trong lĩnh vực nhận diện và xử lý ảnh nhờ vào tốc độ xử lý nhanh và độ chính xác cao Khác với mạng nơ-ron truyền thống có cấu trúc một chiều, CNN có cấu trúc ba chiều với chiều cao, chiều rộng và chiều sâu Hai khái niệm quan trọng trong CNN là kết nối cục bộ và chia sẻ tham số, giúp giảm số lượng trọng số cần huấn luyện và tăng tốc độ tính toán.
Mạng nơron tích chập gồm có 3 tầng chính:
3.Tầng được kết nối đầy đủ (fully-connected).
Tầng kết nối đầy đủ trong mạng nơron hoạt động tương tự như các mạng nơron thông thường, trong khi tầng tích chập thực hiện nhiều phép tích chập trên đầu vào từ tầng trước Tầng gộp giúp giảm kích thước mẫu bằng cách xử lý từng khối 2x2 của tầng trước đó Kiến trúc mạng nơron tích chập thường kết hợp ba loại tầng này để tạo nên cấu trúc toàn diện Thuật toán CNN đã chứng minh được hiệu quả cao trong nhiều bài toán phân loại văn bản.
Trong xử lý ngôn ngữ tự nhiên (NLP), các câu hay văn bản được chuyển đổi thành một ma trận đầu vào, với mỗi dòng tương ứng với một token, có thể là một từ hoặc một ký tự Mỗi dòng trong ma trận đại diện cho một vector của từ, thường là word embedding như word2vec hay GloVe, hoặc có thể là one-hot vector, dùng để đánh chỉ số sự xuất hiện của từ trong dữ liệu từ điển.
Sau khi nghiên cứu và tham khảo, luận văn quyết định áp dụng mô hình CNN trong điều kiện thiết bị thực nghiệm còn hạn chế.
Hình 2.9: Mô hình thuật toán CNN [15]
(Nguồn: Zhang, Y., & Wallace, B (2015) A Sensitivity Analysis of (and Practitioners’
Guide to) Convolutional Neural Networks for Sentence Classification.)
Mô hình Mạng Nơ-ron Tích chập (Convolutional Neural Network) sử dụng 3 bộ lọc với kích thước 2, 3, và 4, mỗi kích thước có 2 bộ lọc khác nhau Các bộ lọc này thực hiện phép nhân tích chập trên ma trận câu văn đầu vào, tạo ra 6 bản đồ đặc trưng (features map) Mỗi bản đồ đặc trưng sau đó sẽ trải qua quá trình 1-max pooling, trong đó giá trị lớn nhất từ mỗi bản đồ được lưu lại.
Mỗi map đặc trưng tạo ra một vector với một phần tử, và các giá trị này được kết hợp để tạo thành lớp áp chót Cuối cùng, kết quả này được đưa qua hàm softmax để nhận được một vector đặc trưng, từ đó dùng để dự đoán nhãn cho văn bản Trong ví dụ này, chúng tôi giả định đây là bài toán phân loại văn bản với 2 lớp (phân loại nhị phân), do đó đầu ra chỉ có 2 trạng thái.
Câu "I like this movie very much!" bao gồm 6 từ và một dấu câu, được xem như một từ.
Trong bài viết này, tôi đã chọn kích thước chiều của vector từ là 5, nghĩa là mỗi từ sẽ được biểu diễn dưới dạng một vector 1×5 Nếu gọi d là số chiều của vector từ, kích thước ma trận cho cả câu văn sẽ là 7 x 5.
Trong trường hợp này, dấu câu được xem là một đặc trưng tùy thuộc vào từng bài toán cụ thể Việc coi dấu câu là đặc trưng hay không phụ thuộc vào tính hữu dụng của nó trong việc tăng độ chính xác Do đó, trong nhiều trường hợp, dấu câu có thể bị loại bỏ nếu không mang lại lợi ích.
Thuật toán CNN trong xử lý ảnh có đặc điểm giữ được tính không gian 2 chiều, tương tự như văn bản, nhưng văn bản chỉ có một chiều là các chuỗi từ liên tiếp Mỗi từ trong ví dụ được biểu diễn bằng một vector 5 chiều, do đó, kích thước bộ lọc cần được cố định để phù hợp với số chiều của từ, với kích thước bộ lọc là (? x 5), trong đó dấu ? đại diện cho số từ (số hàng) mà chúng ta muốn đưa vào.
Hình 2.9 minh họa cho các bộ lọc #filters, không phải là bộ lọc để loại bỏ các phần tử khỏi ma trận Tác giả sử dụng 6 bộ lọc với kích thước (2, ), điều này sẽ được giải thích chi tiết hơn trong đoạn tiếp theo.
Trong đoạn này, chúng tôi sẽ từng bước giải thích cách bộ lọc nhân tích chập(convolutions / filtering).
Hình 2.10 minh họa cách thực hiện phép nhân tích chập giữa ma trận đầu vào và bộ lọc Ảnh trên cho thấy bộ lọc có kích thước 2x5 đang tính toán với hai hàng đầu tiên của văn bản "I, like" Bộ lọc màu vàng thực hiện phép nhân từng thành phần để thu được kết quả.
Bộ lọc màu vàng vẫn được giữ nguyên, nhưng lần này áp dụng tích chập với ma trận văn bản của hai từ "like" và "this" theo cách tương tự.
Ma trận bộ lọc (màu vàng) sẽ di chuyển xuống từng dòng cho đến khi phủ kín toàn bộ ma trận văn bản Kết quả cuối cùng sẽ tạo ra một ma trận có kích thước tương ứng.
Để đảm bảo giá trị của ma trận đặc trưng, việc sử dụng hàm kích hoạt như ReLU là cần thiết Áp dụng hàm ReLU sẽ cho ra ma trận có kích thước 6 x 1.
Mạng nơron hồi quy RNN
a Giới thiệu mạng nơron hồi quy RNN:
Mạng nơ-ron hồi quy (RNN) là một mô hình Deep Learning quan trọng trong trí tuệ nhân tạo, được thiết kế để lưu trữ thông tin từ các bước tính toán trước đó nhằm đưa ra dự đoán chính xác cho bước hiện tại RNN hoạt động dựa trên nguyên tắc sử dụng bộ nhớ, cho phép nó xử lý dữ liệu theo chuỗi và duy trì thông tin qua các vòng lặp bên trong mạng.
RNN (Mạng nơ-ron hồi tiếp) được phát triển để giải quyết vấn đề mô phỏng dữ liệu chuỗi theo thời gian, làm cho nó trở thành công cụ lý tưởng cho việc xử lý ngôn ngữ Mỗi từ trong chuỗi đầu vào được liên kết với một bước thời gian cụ thể, và số bước thời gian tương ứng với độ dài tối đa của chuỗi.
Hình 2.11: Mô hình mạng RNN không kiểm soát[21]
Mô hình RNN xử lý thông tin dạng chuỗi theo thời gian, với từng từ được đưa vào tại mỗi thời điểm t Mỗi mốc thời gian tương ứng với một thành phần vector ẩn ht, gói gọn thông tin đã đọc từ các bước trước đó Vector xt đại diện cho thông tin của từ cụ thể được đưa vào mô hình tại thời điểm t RNN có nhiều ứng dụng, bao gồm nhận dạng giọng nói, mô hình hóa ngôn ngữ, dịch thuật và nhận dạng ảnh.
Tuy nhiên, mạng RNN có vấn đề lưu trữ thông tin ngữ cảnh phụ thuộc lâu dài Xét 2 ví dụ sau đây:
Ví dụ 1: Trên đường phố rất nhiều cây xanh.
Trong ví dụ 2, nhân vật lớn lên ở Hà Tĩnh và nhớ rõ các con phố tại đây, cho thấy thông tin ngữ cảnh quan trọng để dự đoán từ tiếp theo, có thể liên quan đến tên thành phố Khoảng cách giữa hai phụ thuộc trong ví dụ này lớn hơn so với ví dụ 1, yêu cầu mạng RNN phải lưu trữ toàn bộ từ trong bộ nhớ Khi khoảng cách phụ thuộc thấp, việc này khả thi, nhưng với khoảng cách lớn trong đoạn văn dài, việc lưu trữ thông tin của RNN trở nên nặng nề và không hợp lý, dẫn đến vấn đề lưu trữ thông tin phụ thuộc lâu dài.
Vector trạng thái ẩn ht được xác định bởi cả từ vựng hiện tại và vector trạng thái ẩn từ bước trước Hàm kích hoạt Sigma thường được sử dụng là hàm sigmoid hoặc tanh.
Hình 2.12: Công thức tính vector trạng thái ẩn tại thời điểm t
Trong công thức, ma trận trọng số W H và W X đóng vai trò quan trọng Ma trận W X được sử dụng để nhân với vector đầu vào xt, trong khi ma trận W H nhân với vector trạng thái ẩn từ thời điểm trước đó W H là ma trận cố định trong tất cả các bước thời gian, trong khi W X có giá trị thay đổi cho từng đầu vào khác nhau.
Giá trị của vector ẩn ht tại thời điểm t phụ thuộc vào giá trị của vector xt hiện tại và vector ẩn ht-1 từ trạng thái trước đó Nếu ma trận W H có giá trị lớn trong khi W X có giá trị nhỏ, ht sẽ chịu ảnh hưởng nhiều hơn từ ht-1 và ít bị tác động bởi xt Điều này cho thấy rằng thông tin từ xt tại thời điểm t có thể không quan trọng đối với ngữ cảnh tổng thể, dẫn đến ht gần giống với ht-1.
Ma trận trọng số W được cập nhật qua quá trình tối ưu hóa hàm lỗi trong bước lan truyền ngược Vector trạng thái ẩn cuối cùng được sử dụng trong hàm phân loại, thường được gọi là full connection Tại đây, vector trạng thái ẩn được nhân với ma trận trọng số và đưa vào hàm softmax để tạo ra các giá trị cho lớp phân loại Trong bài toán trích xuất thông tin quan điểm, tôi xác định giá trị đầu ra của hàm softmax cho hai phân lớp tích cực và tiêu cực.
Hàm softmax thường được sử dụng để tính xác suất thuộc phân lớp i trong bài toán phân loại, với C là số lớp được phân loại Ưu điểm của hàm softmax là các xác suất ai đều dương và có tổng bằng 1, giúp đảm bảo tính hợp lý của kết quả phân loại.
Trong bài viết này, chúng ta xem xét câu hỏi: “Số thứ nhất bằng 1, chiếc xe đang chạy trên đường, số thứ hai bằng 3, tổng của hai số bằng mấy?” Mạng RNN có khả năng lưu trữ toàn bộ thông tin của bốn câu này ở mức độ cao Sau đó, RNN xác định ngữ cảnh của câu hỏi và giá trị của hai số, giúp đưa ra câu trả lời chính xác.
Trong ngữ cảnh này, câu "Chiếc xe đang chạy trên đường" không mang giá trị và có thể gây nhiễu cho kết quả trả lời Để có thể đưa ra câu trả lời chính xác, mạng RNN cần phải lưu trữ toàn bộ thông tin liên quan.
Trong việc lưu trữ thông tin, RNN gặp khó khăn khi phải xử lý các câu dài với nhiều thông tin quan trọng bị phân tán Khi đoạn văn chứa từ 4 đến 10 câu, việc lưu trữ có thể thực hiện hiệu quả Tuy nhiên, nếu thông tin quan trọng bị ngắt quãng bởi các câu nhiễu, khả năng lưu trữ của RNN trở nên nặng nề và không hợp lý Điều này dẫn đến vấn đề về việc lưu trữ thông tin phụ thuộc lâu dài, ảnh hưởng đến hiệu suất của mô hình.
Mạng RNN lý thuyết có khả năng lưu trữ phụ thuộc dài, nhưng thực tế gặp khó khăn trong việc này Hochreiter (1991) đã chỉ ra thách thức này đối với mạng RNN Mạng Long short-term memory (LSTM), được phát triển vào năm 1997, đã giải quyết hiệu quả vấn đề lưu trữ phụ thuộc dài.
Mạng nơ-ron có bộ nhớ ngắn dài LSTM
Mạng nơ-ron LSTM (Long Short-Term Memory) là một loại RNN (Recurrent Neural Network) được cải tiến để giải quyết vấn đề lưu trữ thông tin ngữ cảnh và học các phụ thuộc dài Khác với mô hình RNN tiêu chuẩn, trong đó giá trị của vector ẩn ht tại thời điểm t chỉ được tính bằng một hàm tanh đơn giản, LSTM có cấu trúc phức tạp hơn, cho phép nó xử lý thông tin hiệu quả hơn trong các tác vụ yêu cầu lưu giữ thông tin lâu dài.
Hình 2.14: Module xử lý tính ht của RNN [21]
LSTM có cấu trúc mắt xích tương tự như chuỗi, nhưng các module lặp của nó lại khác biệt với bốn lớp mạng nơ ron tương tác theo một cấu trúc đặc biệt.
Hình 2.15: Module lặp lại của mạng LSTM chứa 4 lớp tương tác[21]
Các ký hiệu sử dụng trong mạng LSTM gồm có:
- Hình chữ nhật là các lớp ẩn của mạng nơ-ron
- Hình tròn biểu diễn toán tử Pointwise
- Đường kẻ gộp lại với nhau biểu thị phép nối các toán hạng
Đường rẽ nhánh trong LSTM biểu thị sự sao chép thông tin từ vị trí này sang vị trí khác Trạng thái nhớ Cell state, được thể hiện bằng đường kẻ ngang ở trên cùng của hình 2.13, đóng vai trò quan trọng trong việc duy trì thông tin Cell state chạy xuyên suốt toàn bộ mắt xích như một băng chuyền, cho phép chỉ một vài tương tác nhỏ tuyến tính diễn ra, giúp thông tin được truyền đi một cách ổn định và ít bị thay đổi trong quá trình lan truyền.
Hình 2.16: Cell state trong LSTM giống như một băng chuyền[21]
LSTM có khả năng điều chỉnh thông tin trong cell state thông qua các cấu trúc gọi là cổng (gate), cho phép loại bỏ hoặc thêm bớt thông tin Các cổng này được thiết kế để kiểm soát thông tin đi qua, được tạo ra bởi lớp mạng thần kinh sigmoid kết hợp với các thao tác toán học pointwise.
Lớp sigmoid xuất giá trị trong khoảng từ 0 đến 1, thể hiện mức độ thông tin mà các thành phần được phép truyền qua tại mỗi lớp mạng Giá trị 0 có nghĩa là "không cho phép bất kỳ thông tin nào đi qua", trong khi giá trị 1 có nghĩa là "cho phép mọi thứ đi qua" Một mạng LSTM có ba cổng như vậy để bảo vệ và điều chỉnh kiểm soát trạng thái của cell state.
Quá trình hoạt động của LSTM bắt đầu bằng việc xác định thông tin nào cần loại bỏ khỏi cell state Bước này được thực hiện thông qua cổng quên (forget gate layer) với đầu vào là h t-1 và x t Cổng này tạo ra một giá trị nằm trong khoảng [0, 1] cho cell state C t+1, trong đó 1 biểu thị việc "giữ lại thông tin" và 0 thể hiện "loại bỏ thông tin".
Hình 2.7: Cổng chặn ft[21]
Bước thứ hai trong quá trình xử lý thông tin tại cell state là quyết định thông tin nào cần được lưu giữ Điều này được thực hiện thông qua hai thành phần: một lớp sigmoid đơn, gọi là "input gate layer", có nhiệm vụ xác định các giá trị cần cập nhật Sau đó, một lớp tanh sẽ tạo ra một vector mới Ct̃, được thêm vào cell state.
Hình 2.8: Cổng vào it và tanh[21]
Bước thứ ba là kết hợp hai thành phần để cập nhật cell state Khi cập nhật từ cell state cũ C t-1 sang cell state mới C t, hàm f t sẽ được sử dụng để quên đi những thông tin trước đó Tiếp theo, giá trị mới (i t * C t) sẽ được thêm vào, điều này cho phép điều chỉnh số lượng giá trị cần cập nhật cho mỗi state.
Hình 2.9: Giá trị state Ct [21]
Bước cuối cùng trong quá trình xử lý dữ liệu là xác định thông tin đầu ra, dựa trên trạng thái của cell state nhưng cần lọc bớt thông tin Đầu tiên, áp dụng lớp sigmoid để xác định phần nào của cell state sẽ được xuất ra Sau đó, cell state sẽ được đưa qua hàm tanh để điều chỉnh giá trị trong khoảng từ -1 đến 1, và nhân với cổng ra sigmoid nhằm giữ lại những phần cần thiết cho đầu ra.
Hình 2.10: Giá trị cổng ra và vector trạng thái ẩn ht[21]
Mạng bộ nhớ ngắn dài LSTM hoạt động thông qua các công thức lặp lại tại từng thời điểm t, với thông tin của cell state được quản lý bởi các cổng chặn ft, cổng vào it và cổng ra ot Cổng chặn ft đóng vai trò quan trọng trong việc kiểm soát lượng thông tin đầu vào ht-1 từ các thời điểm trước, giúp mạng LSTM duy trì và điều chỉnh thông tin hiệu quả.
Mô hình LSTM được sử dụng trong luận văn này nổi bật với khả năng lưu trữ thông tin dài hạn Cấu trúc của mô hình, như mô tả trong hình 2.19, bao gồm một lớp LSTM duy nhất, theo sau là một lớp tổng hợp trung bình (full-connection) và một lớp hồi quy logistic.
Hình 2.11: Mô hình LSTM luận văn sử dụng
( http://hoctructuyen123.net/tong-quan-ve-phan-tich-cam-xuc-trong-tieng-viet/ )
Từ chuỗi đầu vào x0, x1,… xn, các cơ chế tính toán của cổng vào, cổng ra và cổng chặn sẽ tính toán giá trị vector trạng thái ẩn h0, h1,…hn Giá trị vector trạng thái ẩn được tính trung bình trên tất cả các dấu thời gian để tạo ra vector trạng thái h, đại diện cho câu đang xét Cuối cùng, vector h được đưa vào lớp hồi quy để thực hiện gán nhãn và phân loại kết quả đầu ra.
THỰC NGHIỆM VÀ ĐÁNH GIÁ
Thông tin về bộ dữ liệu
Luận văn sử dụng dữ liệu thực nghiệm từ Bộ dữ liệu tiếng Anh Semeval2019Task9/Subtask-A, được thu thập từ các câu trên diễn đàn trực tuyến về sự phát triển nền tảng Windows Dữ liệu bao gồm 8500 câu cho việc huấn luyện và 833 câu cho kiểm thử, với mỗi câu được gán nhãn phân loại thành hai mục: “có gợi ý” và “không gợi ý” Việc sử dụng dữ liệu này giúp huấn luyện mạng neural cho máy.
Mô tả file dữ liệu gồm:
Bảng 3.1: Mô tả dữ liệu thực nghiệm
Số thứ tự Tên cột Ghi chú
2 Classification Phân loại câu: Giá trị sẽ là “có gợi ý” hay “không gợi ý”
3 Sentence Nội dung của câu (tối đa 140 ký tự)
(Nguồn: https://github.com/Semeval2019Task9/Subtask-A )
Bộ dữ liệu tiếng Anh Semeval2019Task9/Subtask-A [5] này gồm các thư mục để huấn luyện, kiểm thử và cho kết quả
File “V1.4_Training_new.csv” sử dụng cho huấn luyện
File “SubtaskA_EvaluationData_labeled.csv” sử dụng cho kiểm thử
Bảng 3.2: Mô tả phân loại nhãn cho các tập dữ liệu thực nghiệm
Tập dữ liệu Câu Có gợi ý Câu Không gợi ý Tổng cộng
Môi trường thực nghiệm
3.2.1 Ngôn ngữ lập trình python:
Python, ngôn ngữ lập trình thông dịch do Guido van Rossum phát triển vào năm 1990, nổi bật với kiểu dữ liệu động và cơ chế cấp phát bộ nhớ tự động Ngôn ngữ này tương tự như Perl, Ruby, Scheme, Smalltalk và Tcl Python được phát triển trong khuôn khổ dự án mã nguồn mở, dưới sự quản lý của tổ chức phi lợi nhuận Python Software Foundation.
Sau đây là các đặc điểm của Python:
Ngữ pháp đơn giản, dễ đọc.
Vừa hướng thủ tục (procedural-oriented), vừa hướng đối tượng (object- oriented)
Hỗ trợ module và hỗ trợ gói (package)
Xử lý lỗi bằng ngoại lệ (Exception)
Kiểu dữ liệu động ở mức cao.
Có các bộ thư viện chuẩn và các module ngoài, đáp ứng tất cả các nhu cầu lập trình.
Có khả năng tương tác với các module khác viết trên C/C++ (Hoặc Java cho Jython, hoặc Net cho IronPython).
Có thể nhúng vào ứng dụng như một giao tiếp kịch bản (scripting interface).
Hình 3.1: Mô tả cú pháp, các dòng lệnh trong Python
(Nguồn: https://www.python.org/)
Hiện nay ngôn ngữ Python được xếp hạng thứ 3 trong Top 10 các ngôn ngữ lập trình phổ biến nhất đang được thế giới sử dụng:
Bảng 3.3: Bảng xếp hạng các ngôn ngữ lập trình năm 2020
(Nguồn: https://www.tiobe.com/)
3.2.2 Giới thiệu về thư viện TensorFlow
TensorFlow là một thư viện mã nguồn mở được phát triển bởi nhóm Google Brain và ra mắt vào tháng 11 năm 2015 Thư viện này được ứng dụng rộng rãi trong nhiều sản phẩm thương mại của Google và hiện nay đóng vai trò quan trọng trong việc hiện thực hóa mạng nơ-ron trong lĩnh vực Deep Learning.
Các khái niệm cơ bản:
Tensor: Tensor là khái niệm cơ bản nhất trong TensorFlow.
Tensor là cấu trúc dữ liệu cơ bản trong TensorFlow, đại diện cho mọi loại dữ liệu Nói cách khác, mọi loại dữ liệu đều được biểu diễn dưới dạng tensor.
Việc trao đổi dữ liệu trong quá trình xử lý chỉ thông qua tensor.
Hiểu đơn giản thì tensor là mảng n chiều hay list cộng thêm 1 vài thứ thú vị khác.
Tensor có 3 thuộc tính là Rank, Shape, Type Rank: là số chiều của dữ liệu.
Bảng 3.4: Mô tả rank của tensor [23]
Rank đơn vị số học Ví dụ Python
Shape: là chiều của tensor.
Ví dụ: t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] có shape là [3, 3].
Bảng 3.5: Mô tả cú pháp shape của tensor [23]
3 [D0, D1, D2] 3-D A 3-D tensor with shape [1, 4, 3]. n [D0, D1, … Dn-1] n-D A tensor with shape [D0, D1, … Dn-1].
Bảng 3.6: Mô tả kiểu dữ liệu trong tensorflow [23]
Loại dữ liệu Loại python
DT_FLOAT tf.float32 32 bits floating point.
DT_DOUBLE tf.float64 64 bits floating point.
DT_INT8 tf.int8 8 bits signed integer.
DT_INT16 tf.int16 16 bits signed integer.
DT_INT32 tf.int32 32 bits signed integer.
DT_INT64 tf.int64 64 bits signed integer.
DT_UINT8 tf.uint8 8 bits unsigned integer.
DT_STRING tf.string Variable length byte arrays Each element of a
DT_BOOL tf.bool Boolean.
Complex number made of two 32 bits floating points: real and imaginary parts.
DT_QINT8 tf.qint8 8 bits signed integer used in quantized Ops.
DT_QINT32 tf.qint32 32 bits signed integer used in quantized Ops.
DT_QUINT8 tf.quint8 8 bits unsigned integer used in quantized Ops.
Variable: lưu trạng thái (state) sau khi tính toán graph.
Phương pháp thực nghiệm
Trong quá trình phát triển mô hình, dữ liệu được chia thành hai tập: training data và test data Từ tập training data, một tập con nhỏ được trích ra để đánh giá mô hình, gọi là validation set, trong khi phần còn lại của training set được sử dụng để huấn luyện Lỗi huấn luyện (train error) được tính trên tập training set mới, và lỗi xác thực (validation error) được xác định trên tập validation.
Để đảm bảo cả lỗi huấn luyện và lỗi xác thực đều ở mức thấp, từ đó dự đoán lỗi kiểm tra cũng sẽ nhỏ, các nhà phát triển thường áp dụng nhiều mô hình khác nhau Mô hình có lỗi xác thực thấp nhất sẽ được xem là mô hình tối ưu nhất.
Bắt đầu với một mô hình đơn giản và dần dần tăng độ phức tạp Khi validation error bắt đầu tăng, hãy chọn mô hình ngay trước đó Mô hình phức tạp hơn thường có train error nhỏ hơn.
Hình 3.2 mô tả ví dụ phía trên với bậc của đa thức tăng từ 1 đến 8 Tập validation bao gồm 10 điểm được lấy ra từ tập training ban đầu
Hình 3.2: Lựa chọn mô hình dựa trên validation[26]
Khi phân tích hai đường màu lam và đỏ, tương ứng với train error và validation error, ta thấy rằng khi bậc của đa thức tăng lên, train error có xu hướng giảm do dữ liệu được fit tốt hơn Đặc biệt, với bậc đa thức là 3 hoặc 4, validation error đạt mức thấp nhất trước khi tăng dần Điều này cho thấy bậc tối ưu nên chọn là 3 hoặc 4 Hơn nữa, đường màu lục tương ứng với test error cũng cho kết quả tương tự, khi bậc bằng 3 hoặc 4, test error đạt giá trị nhỏ nhất trước khi tăng lên, củng cố thêm cho sự lựa chọn này.
Việc không sử dụng dữ liệu kiểm tra trong quá trình lựa chọn mô hình có thể dẫn đến kết quả khả quan, vì ta giả định rằng dữ liệu xác thực và dữ liệu kiểm tra có những đặc điểm chung Khi cả hai tập dữ liệu này đều chưa được thấy trước, sai số trên chúng sẽ có sự tương đồng nhất định.
Nhắc lại rằng, khi bậc nhỏ (bằng 1 hoặc 2), cả ba error đều cao, ta nói mô hình bị underfitting.
Để hạn chế số lượng dữ liệu trong việc xây dựng mô hình, việc sử dụng quá nhiều dữ liệu từ tập huấn luyện cho tập xác thực có thể dẫn đến việc tập huấn luyện không đủ để tạo ra mô hình chính xác Do đó, tập xác thực cần phải nhỏ để đảm bảo lượng dữ liệu cho huấn luyện vẫn đủ lớn Tuy nhiên, nếu tập xác thực quá nhỏ, hiện tượng overfitting có thể xảy ra với tập huấn luyện còn lại Để khắc phục vấn đề này, chúng ta có thể áp dụng phương pháp kiểm chứng chéo (Cross validation).
Cross validation là một phương pháp cải tiến so với validation truyền thống, cho phép đánh giá chất lượng mô hình trên nhiều tập validation khác nhau, mặc dù kích thước của tập validation có thể nhỏ Phương pháp phổ biến là chia tập training thành k tập con không chồng lấn và có kích thước tương đương Trong mỗi lần kiểm thử, một trong k tập con sẽ được sử dụng làm tập validation, trong khi mô hình được xây dựng từ k−1 tập con còn lại Mô hình cuối cùng được xác định dựa trên trung bình của các lỗi huấn luyện và lỗi validation, và phương pháp này thường được gọi là k-fold cross validation.
Khi k bằng với số lượng phần tử trong tập training ban đầu, tức mỗi tập con có đúng 1 phần tử, ta gọi kỹ thuật này là leave-one-out.
Sklearn hỗ trợ rất nhiều phương thức cho phân chia dữ liệu và tính toán scores của các mô hình
Kỹ thuật k-fold cross-validation sử dụng tham số k, đại diện cho số nhóm mà dữ liệu được chia Giá trị k được chọn sẽ được sử dụng trực tiếp trong tên phương pháp đánh giá, ví dụ như 10-fold cross-validation khi k bằng 10.
Kỹ thuật này thường bao gồm các bước như sau:
Xáo trộn dataset một cách ngẫu nhiên
Sử dụng nhóm hiện tại để đánh giá hiệu quả mô hình
Các nhóm còn lại được sử dụng để huấn luyện mô hình
Đánh giá và sau đó hủy mô hình
Tổng hợp hiệu quả của mô hình dựa từ các số liệu đánh giá
Kết quả tổng hợp thường được tính bằng cách lấy trung bình của các lần đánh giá Bên cạnh đó, việc bổ sung thông tin về phương sai và độ lệch chuẩn vào kết quả tổng hợp cũng là một thực tiễn phổ biến.
Giá trị k là thông số quan trọng để có thể đánh giá chính xác mô hình, vậy thì lựa chọn thông số này như thế nào?
Ba cách phổ biến để lựa chọn k:
Đại diện: Giá trị của k được chọn để mỗi tập train/test đủ lớn, có thể đại diện về mặt thống kê cho dataset chứa nó.
Giá trị k được cố định ở mức 10, một con số phổ biến đã được thực nghiệm chứng minh là mang lại sai số nhỏ và phương sai thấp.
Giá trị của k trong phương pháp này được gán cố định bằng n, với n là kích thước của tập dữ liệu Điều này có nghĩa là mỗi mẫu sẽ được sử dụng để đánh giá mô hình một lần, và phương pháp này còn được gọi là leave-one-out cross-validation.
Giá trị k là một cấu hình rất phổ biến
Sau quá trình nghiên cứu và tìm hiểu các phương pháp đánh giá thực nghiệm, luận văn đề xuất sử dụng phương pháp K-fold Cross Validation.
3.3.2 Cách thức đánh giá: Để đánh giá hiệu quả phân lớp luận văn sử dụng các độ đo F-score Giá trị F-Score phụ thuộc vào Precision và Recall Trong đó, Precision là độ đo thể hiện độ chính xác của bộ phân lớp, được xác định bằng số bình luận được phân lớp đúng trên tổng số bình luận được phân vào lớp đó Recall là độ đo thể hiện khả năng không phân lớp sai các bình luận, được xác định bằng số bình luận được phân lớp đúng trên tổng số bình luận thực tế thuộc lớp đó F-score là độ được xác định thông qua Precision và Recall (giá trị của các độ đo này càng cao thì bộ phân lớp càng có hiệu quả phân lớp tốt) Cụ thể:
Hình 3.3: Công thức tính độ đo
TP (True Positive): là số bình luận được phân lớp là y và việc phân lớp này là đúng.
FP (False Positive): là số bình luận được phân lớp là y nhưng việc phân lớp này là sai
FN (False Negative): là số bình luận thuộc lớp y nhưng bị gán nhãn vào lớp khác. Quá trình thực nghiệm thuật toán gồm các giai đoạn chính:
Tiền xử lý dữ liệu: Loại bỏ các dư thừa, các từ vô nghĩa trong câu.
Xây dựng bộ phân lớp dữ liệu: Sử dụng CNN, RNN và LSTM
Tiền xử lý dữ liệu: Luận văn sử dụng ngôn ngữ python để xử lý các dữ liệu
Mô hình phân lớp được luận văn áp dụng bao gồm các kiến thức từ mô hình CNN được trình bày ở phần 2.3, mô hình RNN ở phần 2.4, và mô hình LSTM ở phần 2.5.
Nghiên cứu này tập trung vào việc phát triển mạng nơ ron nhằm phát hiện các câu chứa gợi ý trên diễn đàn trực tuyến, sử dụng các kiến trúc như CNN, RNN và LSTM Các mô hình được huấn luyện để xác định câu chứa gợi ý và sử dụng lớp softmax để phân loại chúng Mạng neural sâu được đào tạo dựa trên các từ nhúng (embedding words) từ trước, kết hợp với các số liệu thông thường để thu thập thông tin hiệu quả.
Bài viết này tập trung vào việc xây dựng chương trình thực nghiệm cho phân loại câu chứa gợi ý trên diễn đàn trực tuyến, dựa trên các mô hình mạng neural Chúng tôi thiết kế các mạng neural như CNN, RNN, và LSTM bằng ngôn ngữ Python, đồng thời thực hiện huấn luyện và kiểm thử với các tập dữ liệu Kết quả cuối cùng là độ chính xác của các thuật toán, giúp xác định thuật toán nào mang lại dự đoán tốt nhất.
A neural network mixed (CNN, RNN) for text classification
Uses an embedding layer, followed by a convolutional, max-pooling and softmax layer
Uses an embedding layer, GRUCell and output states of RNN
""" def init (self, sequence_length, num_classes, vocab_size, embedding_size, filter_sizes, num_filters, hidden_unit, l2_reg_lambda =0.0):
Tiến hành thực nghiệm
3.4.1 Xây dựng các thành phần chung cho các mô hình:
Xây dựng class và khai báo tham số đầu vào cho các mô hình mạng:
Mỗi mô hình mạng neural được định nghĩa bởi một class với hàm init để khởi tạo các tham số đầu vào Các tham số này bao gồm: sequence_length, là chiều dài của tin nhắn đã được padding để đồng nhất; num_classes, số phân loại cho lớp đầu ra; vocab_size, kích thước từ vựng cần thiết cho lớp nhúng; embedding_size, số chiều của từ nhúng (thường là 300); filter_sizes, số từ tích chập trong bộ lọc; num_filters, số lượng bộ lọc cho mỗi kích thước (thường là 128); hidden_unit, số lớp ẩn trong mạng neural tái phát (cũng là 128); và l2_reg_lambda, tỉ lệ thất bại với giá trị mặc định 0.0 (thường sử dụng 1.0 trong nghiên cứu).
In TensorFlow, placeholders are defined for various inputs and parameters essential for model training The `input_x` placeholder is set to accept integer sequences of a specified length, while `input_y` is designed for floating-point labels corresponding to the number of classes Dropout probabilities for CNN and RNN layers are managed through `dropout_keep_prob_cnn` and `dropout_keep_prob_rnn` placeholders, respectively Additionally, `batch_size` is specified as a placeholder to manage the number of training examples processed at once For padding purposes, a placeholder called `pad` is created to accommodate embeddings, and `real_len` is utilized to capture the actual lengths of the input sequences.
In this article, we discuss the implementation of an embedding layer using TensorFlow By utilizing `tf.device('/cpu:0')` and `tf.name_scope("embedding")`, we create a weight variable `self.W` initialized with random values within a specified range, defined by the vocabulary size and embedding size The embedded characters are obtained through `tf.nn.embedding_lookup`, which retrieves the corresponding embeddings for the input data Finally, we expand the dimensions of the embedded characters using `tf.expand_dims`, preparing them for further processing in the neural network.
To achieve zero padding in convolutional output, the dimensions are structured as batch x sequence_length x emb_size x channel The number of prior padding (num_prio) is calculated using the formula (filter_sizes[0] - 1) // 2, while the number of posterior padding (num_post) is determined by (filter_sizes[0] - 1) - num_prio Prior padding (pad_prio) is created by concatenating the padding tensor multiple times, and similarly, posterior padding (pad_post) is generated This approach ensures that the embedded characters maintain their intended dimensions.
= tf.concat([pad_prio, emb, pad_post], 1, name="embedded_chars_pad")
Dữ liệu đầu vào cho mô hình mạng được định nghĩa thông qua tf.placeholder, tạo ra một biến vị trí để đưa vào mạng trong quá trình huấn luyện hoặc kiểm thử Tham số thứ hai xác định hình dạng của bộ dữ liệu đầu vào, với việc sử dụng None cho phép mạng xử lý các lô kích thước tùy ý.
Lớp nhúng (Embedding layer) tf.device('/cpu:0'): Buộc một hoạt động được thực hiện trên CPU Mặc định
TensorFlow sẽ ưu tiên thực hiện các hoạt động trên GPU nếu có sẵn Hàm tf.name_scope được sử dụng để tạo một phạm vi tên mới với tên "embedding", giúp tổ chức các hoạt động vào một nút cấp cao hơn, từ đó cải thiện khả năng hiển thị trong TensorBoard Biến self.W đại diện cho ma trận nhúng, được học trong quá trình huấn luyện.
The final scores and predictions are generated using a combination of CNN and GRNN, with the output stored in `outputs_final[0]` Within the TensorFlow variable scope designated for 'Output', the reuse of variables is enabled A tensor of ones is created, matching the hidden unit size The process iterates through the `outputs_final`, checking if the real length is less than the current index plus one, converting this condition into a float tensor This tensor is then expanded and used to perform matrix multiplication, allowing for a smooth blend of the previous output and the current output from `outputs_final` The final output is computed by adding the weighted contributions of the two tensors within the 'output' name scope.
In this implementation, we define a weight variable W using a truncated normal distribution with a standard deviation of 0.1, and a bias variable b initialized to 0.1 We incorporate L2 regularization by adding the L2 loss of both W and b The scores are computed using the tensor operation that combines the output with the weight and bias, and the final predictions are determined by taking the argmax of the scores.
Nghiên cứu khởi tạo mô hình bằng cách áp dụng phân bố ngẫu nhiên Hàm tf.nn.embedding_lookup được sử dụng để tạo ra hoạt động nhúng, cho ra kết quả là một ma trận có kích thước 3 chiều với dạng [None, sequence_length, embedding_size].
Hoạt động của tích chập conv2d trong TensorFlow yêu cầu một bộ kiểm soát 4 chiều với kích thước tương ứng là lô, chiều rộng, chiều cao và kênh Kết quả của mô hình nhúng không bao gồm kích thước kênh, do đó, nghiên cứu đã tạo ra hình dạng mới là [None, sequence_length, embedding_size, 1].
Tính các điểm số (scores) và dự đoán kết quả (predictions)
Sử dụng vector đặc trưng từ kết quả kết hợp của hai mạng, chúng ta nghiên cứu và đưa ra các dự đoán thông qua phép nhân và lựa chọn lớp có điểm số cao nhất.
Sử dụng tf.nn.xw_plus_b để thực hiện phép nhân ma trận W+b.
In the calculation of the mean cross-entropy loss, we utilize TensorFlow's name scope for organization The losses are derived using the softmax cross-entropy function applied to the logits and the true labels To obtain the final loss value, we compute the average of these losses and incorporate L2 regularization by adding a term that is a product of the L2 regularization lambda and the L2 loss.
# Accuracy with tf.name_scope("accuracy"): correct_predictions = tf.equal(self.predictions, tf.argmax(self.input_y, 1)) self.accuracy = tf.reduce_mean(tf.cast(correct_predictions, "float"), name="accuracy")
Tính tỉ lệ lỗi và độ chính xác:
Hàm tf.nn.softmax_cross_entropy_with_logits giúp tính toán tỷ lệ mất mát cho từng lớp dựa trên dự đoán và nhãn đầu vào chính xác Kết quả trả về là số lượng mất mát với kích thước lô và dữ liệu đào tạo, cho phép xác định số lượng chính xác cần theo dõi trong quá trình đào tạo và thử nghiệm.
3.4.2 Mã lệnh cài đặt các mô hình bằng ngôn ngữ Python trên Tensorflow:
3.4.2.1 Mô hình mạng neural CNN (Lớp tích chập và max-pooling)
Xây dựng lớp tích chập cho CNN và theo sau đó là max-pooling sử dụng bộ lọc có kích thước bằng 3.
Mô hình mạng trong TensorBoard:
Mô hình mạng CNN trong nghiên cứu sử dụng ma trận lọc W và áp dụng độ phi tuyến cho đầu ra xoắn h Các bộ lọc trượt qua toàn bộ nhúng mà không cần thêm bộ đệm nhờ vào padding "VALID", tạo ra đầu ra có hình dạng [1, sequence_length - filter_size + 1, 1, 1] Khi thực hiện max-pooling trên đầu ra với kích thước bộ lọc cụ thể, ta thu được một tensor có hình dạng [batch_size, 1, 1, num_filters] Kết quả cuối cùng là một vector đặc tính, trong đó kích thước cuối cùng tương ứng với các tính năng của mô hình có dạng [None, 1, 1, num_filters].
Hình 3.5: Mô hình conv-maxpool trong mạng CNN
3.4.2.2 Mô hình mạng neural RNN (Lớp ẩn sử dụng GRU cell)
The input data is a three-dimensional embedding word format of shape [None, sequence_length, embedding_size], which is converted into a two-dimensional vector format of [None, embedding_size] In the RNN, these two-dimensional vectors are processed recurrently from gru_cell_0 to gru_cell_38 Each cell produces dropout results, while also passing these results to subsequent cells The output of the RNN consists of a sequence of vectors in the format of [None, hidden_unit].
Mô hình mạng trong TensorBoard:
Hình 3.6: Mô hình mạng RNN nghiên cứu
Kết quả chạy thực nghiệm
Trong các mô hình mạng nơron như CNN, RNN và LSTM, các tham số Epoch và Batch size đóng vai trò quan trọng trong việc ảnh hưởng đến hiệu quả của mô hình Sự tương tác giữa các lớp ma trận gần nhau cho thấy rằng việc điều chỉnh các tham số này có thể cải thiện kết quả của quá trình đào tạo mô hình.
An epoch is a hyperparameter in artificial neural networks (ANN) that defines the number of times the learning algorithm processes the model A single epoch is completed when the entire training dataset has been fed into the neural network once, encompassing both the forward and backward steps necessary for updating the internal model parameters.
Thường chúng ta cần một số lượng lớn Epoch để training cho ANN (10,
100, 500, 1000…) tuy nhiên cũng còn tùy thuộc vào bài toán và tài nguyên máy tính Một cách khác là sử dụng Learning Curve để tìm số epoch.
A training dataset can be divided into smaller batches, each containing a set of training samples, with the quantity of these samples referred to as the batch size It is important to distinguish between batch size and the number of batches or iterations The variations in Gradient Descent (GD) depend on the chosen batch size.
● Batch Gradient Descent: Batch Size = Size of Training Dataset
● Stochastic Gradient Descent: Batch Size = 1
● Mini-Batch Gradient Descent: 1 < Batch Size < Size of Training Set
Mini-Batch Gradient Descent thường được ưa chuộng trong các bài toán tối ưu nhờ vào tính hội tụ ổn định hơn so với Stochastic Gradient Descent Dữ liệu được chọn ngẫu nhiên từ tập huấn luyện trước khi áp dụng hai phương pháp này Kích thước batch trong Mini-Batch Gradient Descent thường là lũy thừa của 2 (như 32, 64, 128, 256…) để tối ưu hóa tốc độ tính toán cho các thuật toán số học trên CPU và GPU Việc lựa chọn kích thước batch cũng phụ thuộc vào yêu cầu cụ thể của bài toán, và nếu số lượng batch size không chia hết cho tập huấn luyện, batch cuối cùng sẽ có số mẫu ít hơn so với các batch khác.
Tôi đã thiết lập mô hình với các cặp tham số Epoch và Batch size, trong đó Epoch được chạy với các giá trị 5, 10 và 20, còn Batch size được thử nghiệm với các giá trị 32, 64 và 128, giữ số lượng đặc trưng không đổi Kết quả thực nghiệm được thể hiện trong bảng sau.
Kết quả với mô hình CNN:
Bảng 3.7: Kết quả sử dụng mô hình CNN
Accuracy % 71.16 74.25 81.52 Độ đo Pre% Re% F1% Pre% Re% F1% Pre% Re% F1%
Dựa vào bảng kết quả 3.7 ta có thể thấy:
Với Epoch= 20 và Batch size = 128 cho kết quả cao nhất với độ chính xác accuracy là 81.52%
Với Epoch= 10 và Batch size = 64 cho kết quả thấp hơn với độ chính xác accuracy là 74.25%
Với Epoch= 5 và Batch size = 32 cho kết quả thấp nhất với độ chính xác accuracy là 71.16%
Chênh lệch độ chính xác accuracy giữa kết quả cao nhất và thấp nhất là
Độ chính xác cao nhất với cặp tham số Epoch= 20 và Batch size = 128 tập trung vào nhãn “Gợi ý” với độ đo trung bình điều hòa F1 là 81.45% , nhãn “
Không gợi ý ” với độ đo trung bình điều hòa F1 là 83.04%.
Với mô hình CNN, ta có thể thấy được kết quả khả quan nhất nếu sử dụng với cặp tham số Epoch= 20 và Batch size = 128
Kết quả với mô hình RNN:
Bảng 3.8: Kết quả sử dụng mô hình RNN
Accuracy % 69.46 71.28 76.81 Độ đo Pre% Re% F1% Pre% Re% F1% Pre% Re% F1%
Dựa vào bảng kết quả 3.8 ta có thể thấy:
Với Epoch= 20 và Batch size = 128 cho kết quả cao nhất với độ chính xác accuracy là 76.81%
Với Epoch= 10 và Batch size = 64 cho kết quả thấp hơn với độ chính xác accuracy là 71.28%
Với Epoch= 5 và Batch size = 32 cho kết quả thấp nhất với độ chính xác accuracy là 69.46%
Chênh lệch độ chính xác accuracy giữa kết quả cao nhất và thấp nhất là
Độ chính xác cao nhất với cặp tham số Epoch= 20 và Batch size = 128 tập trung vào nhãn “Gợi ý” với độ đo trung bình điều hòa F1 là 77.81% , nhãn “
Không gợi ý ” với độ đo trung bình điều hòa F1 là 78.88%.
Với mô hình RNN, ta có thể thấy được kết quả khả quan nhất nếu sử dụng với cặp tham số Epoch= 20 và Batch size = 128
Kết quả với mô hình LSTM:
Bảng 3.9: Kết quả sử dụng mô hình LSTM
Re% F1% Pre% Re% F1% Pre% Re% F1%
Dựa vào bảng kết quả 3.9 ta có thể thấy:
Với Epoch= 20 và Batch size = 128 cho kết quả cao nhất với độ chính xác accuracy là 83.26%
Với Epoch= 10 và Batch size = 64 cho kết quả thấp hơn với độ chính xác accuracy là 75.07%
Với Epoch= 5 và Batch size = 32 cho kết quả thấp nhất với độ chính xác accuracy là 72.42%
Chênh lệch độ chính xác accuracy giữa kết quả cao nhất và thấp nhất là
Độ chính xác cao nhất với cặp tham số Epoch= 20 và Batch size = 128 tập trung vào nhãn “Gợi ý” với độ đo trung bình điều hòa F1 là 82.29% , nhãn “
Không gợi ý ” với độ đo trung bình điều hòa F1 là 84.87%
Mô hình LSTM đạt được kết quả khả quan nhất khi sử dụng cặp tham số Epoch= 20 và Batch size = 128 So sánh kết quả thực nghiệm giữa ba mô hình CNN, RNN và LSTM cho thấy LSTM có hiệu suất vượt trội.
Kết quả tốt nhất được thu thập từ cặp tham số Epoch= 20 và Batch size 128 của các mô hình đã được so sánh, và được trình bày trong bảng dưới đây.
Bảng 3.10: Kết quả so sánh giữa các mô hình
Mô hình CNN RNN LSTM
Accuracy % 81.52 76.81 83.26 Độ đo Pre% Re% F1% Pre% Re% F1% Pre% Re% F1%
Sau khi thực hiện các thí nghiệm so sánh giữa các thuật toán CNN, RNN và LSTM, tôi đã tiến hành phân tích kết quả theo từng nhãn “Gợi ý”.
“Không gợi ý” được biểu diễn bằng các biểu đồ sau:
Hình 3.7: Biểu đồ so sánh giữa mô hình CNN, RNN, LSTM với nhãn “Gợi ý”
Dựa vào kết quả bảng 3.10 và hình 3.7 với nhãn “ Gợi ý ” ta thấy :
Thuật toán mô hình LSTM cho kết quả cao nhất với độ chính xác F1 là 82.29
Thuật toán mô hình CNN cho kết quả thấp hơn với độ chính xác F1 là 81.45%
Thuật toán mô hình RNN cho kết quả thấp hơn với độ chính xác F1 là 77.81%
Độ chênh lệch F1 giữa kết quả cao nhất và thấp nhất là: 4,48%
Với nhãn “ Gợi ý ” ta có thể thấy kết quả khả quan nếu sử dụng mô hình LSTM
Hình 3.8: Biểu đồ so sánh mô hình CNN, RNN, LSTM với nhãn “Không gợi ý”
Dựa vào kết quả bảng 3.10 và hình 3.8 với nhãn “ Không gợi ý ” ta thấy :
Thuật toán mô hình LSTM cho kết quả cao nhất với độ chính xác F1 là 84.87
Thuật toán mô hình CNN cho kết quả thấp hơn với độ chính xác F1 là 83.04%
Thuật toán mô hình RNN cho kết quả thấp hơn với độ chính xác F1 là
Độ chênh lệch F1 giữa kết quả cao nhất và thấp nhất là: 5.99%
Với nhãn “ Không gợi ý ” ta có thể thấy kết quả khả quan nếu sử dụng mô hình LSTM
Hình 3.9: Biểu đồ so sánh độ chính xác của các mô hình
Từ bảng kết quả hình 3.9 và bảng 3.10, tôi thấy rằng :
Mô hình LSTM có kết quả chính xác acuracy cao nhất là 83.26%,
Mô hình CNN có kết quả chính xác acuracy thấp hơn 81.52%
Mô hình RNN có kết quả chính xác acuracy thấp nhất 76.81%
Chênh lệch độ chính xác giữa kết quả cao nhất và thấp nhất là 6.45%, cho thấy sự khác biệt giữa các mô hình không quá lớn Mặc dù độ chính xác giữa hai mô hình chỉ chênh lệch không nhiều, nhưng phương pháp đã góp phần cải thiện đáng kể khả năng phân loại.
Nhận xét và đánh giá
Dựa trên các số liệu phân tích, mô hình LSTM cho thấy hiệu suất vượt trội trong việc phát hiện câu chứa gợi ý trên diễn đàn trực tuyến so với các thuật toán CNN và RNN Kết quả này chứng tỏ rằng LSTM là sự lựa chọn tối ưu cho đề tài nghiên cứu này.
Bên cạnh đó, các số liệu trung bình cũng như độ chênh lệch độ chính xác của mô hình LSTM cho kết quả khả quan nhất.
Các mô hình mạng neural như CNN, RNN và LSTM đã mở ra hướng đi mới trong phân loại câu văn bản và xử lý ngôn ngữ tự nhiên Bằng cách áp dụng học sâu và kết hợp các mô hình mạng neural, luận văn đã đưa ra những nhận xét, đánh giá và so sánh giữa các mô hình và bộ phân lớp khác nhau Kết quả là xác định được mô hình tối ưu cho việc phân loại câu chưa gợi ý người dùng trên diễn đàn trực tuyến.