Cải thiện chất lượng mô hình CNN

classification
deep-learning
nlp

#1

Em chào mọi người, Mọi người cho em hỏi làm sao để cải thiện chất lượng mô hình CNN ở trên ạ!. Em chạy mà accuracy toàn 10%


#2

Thứ nhất, bạn xem lại bước tiền xử lý. Ở đây là văn bản Tiếng Việt thì không dùng Tokenizer được. Bạn phải dùng các bộ tokenizer cho Tiếng Việt (underthesea, vnpcore…)

Thứ hai, nếu dữ liệu của bạn nhiều có thể tự học embedding (không dùng Glove) xem sao.

Thứ ba, sử dụng một phương pháp baseline trước để có cái mốc mà so sánh. Ví dụ dùng SVM.

Thứ tư, bạn xem lại kiến trúc mạng. Tạm thời không dùng Dropout để xem có overfit được không đã rồi mới tính.

Kết luận: nói chung đừng vội đâm đầu vào huấn luyện mô hình. Trước tiên hãy phân tích input của mình trước đã, xem nó tròn méo ra sao, có nhiễu nhiều không, để biết cách tiền xử lý.


#3

Vâng, em cảm ơn góp ý của anh ạ. Anh cho em hỏi thêm về ý thứ hai dữ liệu tự học embedding là sao ạ ? Và làm sao để dữ liệu tự học embedding ạ?


#4

Ý mình là nếu dữ liệu của bạn nhiều thì hoàn toàn có thể không cần dùng embeđing có sẵn của Glove. Bởi Glove nó train với dataset tổng quát, có thể không phù hợp với trường hợp của bạn. Muốn làm như vậy thì bạn chỉ việc bỏ đoạn embeđing_initializer đi là được. Mô hình sẽ tự học các embedding này trong lúc train luôn.


#5

Với bài toán Text Classification, Google có một bài hướng dẫn rất chi tiết ở đây để bạn tham khảo: https://developers.google.com/machine-learning/guides/text-classification

Khi train model, bạn có thể tăng số lượng epochs lên thật cao và dùng early stopping dựa trên validation loss. Mô hình CNN của bạn dùng khá đơn giản, nên có thể performance không cao. Bạn thử dùng sepCNN như gợi ý trong link phía trên. Nếu không bắt buộc phải dùng neural networks, bạn cũng nên thử với các thuật toán ML như SVM trước để so sánh như bạn mangekyou_sharingan đã nói.


#6

các bạn comments chuẩn rồi, mình thêm 1 ý cho bạn là CNN để lại rất nhiều tuỳ chọn cho người sử dụng và mỗi cấu hình CNN chỉ đúng với vài trường hợp cụ thể. Do vậy sau khi tiền xử lý dữ liệu, biến đổi dữ liệu để có tập features,… cần phải tuning các tham số của CNN về cấu hình như bao nhiêu block, network deep, cross layer không, và tham số liên quan đến learning như regulation, momentum,… Nếu bạn sử dụng 1 cấu trúc CNN định nghĩa trước thì nhiều khả năng là performance thấp. Nếu vẫn muốn sử dụng cấu định nghĩa trước bạn nên quan tâm đến các cấu trúc leNet, googleNet,… để khai thác phần tranferred learning.


#7

Vâng, em hiểu rồi ạ! Em mới lần đầu làm quen với mô hình CNN và bài toán này nên nhiều khái niệm em cũng không hiểu rõ lắm. Em cảm ơn anh nhiều nhé!


#8

Vâng,em cảm ơn góp ý của anh a!. Em cũng thử với thuật toán ML trước đó rồi nên khi thấy accuracy mô hình này thấp quá em mới hoang mang. Em cảm ơn anh ạ!


#9

Vâng, cảm ơn anh đã góp ý, thật ra trong góp ý của anh có nhiều khái niệm em chưa biết, em sẽ tìm hiểu kĩ lại. Em cảm ơn anh nhiều ạ!