Yêu cầu Jul 7th, 2020 3:57 a.m. 326 0 1
  • 326 0 1
+2

Thiếu dữ liệu để train mô hình dịch máy

Chia sẻ
  • 326 0 1

Mình đang tìm hiểu về phần machine transaltiom trong NLP, và gặp phải một câu hỏi mở rộng mang tính tổng hợp và yêu cầu kiến thức rộng: "Làm thể nào để giải quyết vấn đề thiếu dữ liệu học cho mô hình dịch máy nói riêng, hay rộng hơn là machine learning, deep learning nói chung?". Xin cảm ơn mọi người.

1 CÂU TRẢ LỜI


Đã trả lời Jul 7th, 2020 6:32 a.m.
Đã được chấp nhận
+4

Vấn đề thiếu dữ liệu gây ảnh hưởng lớn đến hiệu suất/độ chính xác của thuật toán là vấn đề chung cho cả các thuật toán Machine learning và Deep learning(đặc biệt deep learning sẽ cần một lượng lớn dữ liệu). Vậy làm thế nào để giải quyết vấn đề thiếu dữ liệu học cho mô hình học máy, machine learning, deep learning nói chung và bài toán Machine translation nói riêng?

Tổng quát, để đối phó với trường hợp thiếu dữ liệu, chúng sẽ đưa ra được một vài giải pháp(theo quan điểm cá nhân của mình):

  • Trước tiên, đặt câu hỏi "Dữ liệu huấn luyện có thể lấy ở đâu, có thể thu thập thêm được không?" Bước đầu tiên phải nghĩ đến là tăng tường dữ liệu bằng việc tìm kiếm và thu thập lượng dữ liệu thực. Ví dụ như bài toán Machine translation bạn hoàn toàn có thể crawl được lượng lớn dữ liệu từ các phim song ngữ, sách song ngữ, etc.
  • Câu hỏi tiếp theo, với dạng dữ liệu này, có thể augment data theo những phương thức nào, thư viện nào hỗ trợ không? Bạn làm về ML/DL chắc data augmentation là gì bạn đã biết rõ. Ví dụ như dữ liệu anh thì bạn có thể dùng https://github.com/albumentations-team/albumentations chẳng hạn.
  • Nếu dữ liệu của bạn quá ít augment không giúp được nhiều, mình cũng hay nghĩ đến việc tự sinh dữ liệu huấn luyện, câu hỏi đặt ra là có phương pháp nào có thể tổng hợp dữ liệu huấn luyện, fake dữ liệu giả mà giống như dữ liệu thực không? Cái này mình hay làm với bài toán OCR đặc biệt khi động tới dữ liệu ngân hàng thường được cung cấp rất ít và khó tìm kiếm.
  • 3 cách trên là tác động về mặt dữ liệu, còn về mặt mô hình/thuật toán thì sao? Câu trả lời là áp dụng transfer learning và representation learning. Transfer learning chính là việc bạn sử dụng các mô hình đã được train sẵn(pre-trained) từ task khác, tương tự với task hiện tại để fine-tune lại mô hình của mình với dữ liệu mới. Hoặc bạn cũng có thể lấy biểu diễn ngôn ngữ từ các mô hình đã được huấn luyện sẵn để làm đầu vào cho mô hình của mình, cái này là representation learning. Ví dụ như thay vì đầu vào của bạn là một câu tiếng anh được embed bằng one-hot-encoding thì bạn có thể dùng các embedding model sẵn cho tiếng Anh như Word2vec, FastText, Elmo, BERT, etc. Vì các pre-trained model cũng đã được học từ rất nhiều dữ liệu trước đó và tìm được biểu diễn ngữ nghĩa tốt hơn cho ngôn ngữ nên nó khá hiệu quả khi transfer sang các task ít dữ liệu.

Đấy là những cách cơ bản mình hay nghĩ đến và thường dùng. Còn thiếu sót gì hay còn những phương pháp nào ngầu hơn xin nhường lại cho các tay to góp ý và mình hóng 😦(

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí