- vừa được xem lúc

Đôi dòng về Pseudo Labeling trong Machine Learning

0 0 11

Người đăng: Trung Đức

Theo Viblo Asia

Giới thiệu

Nhân một ngày đang hì hục với cái đồ án môn học mà chưa biết xử lý thế nào khi muốn cải tiến kết quả với dataset nhỏ, lại được ngồi nghe Seminar của anh Leader, mình có cảm hứng để viết bài viết này chia sẻ kiến thức cho chính bản thân cũng như mọi người về việc sử dụng pseudo labeling trong các bài toán Machine Learning.

Có thể nói việc sử dụng Pseudo Label có vai trò rất to lớn trong các vấn đề về small dataset. Hãy tưởng tượng bạn có một bài toán mà có cả dữ liệu có nhãn và không có nhãn, thì việc sử dụng pseudo label là một giải pháp tương đối ổn áp. Chúng ta bắt gặp ứng dụng của Pseudo labeling trong các app như Google photos khi nó nhận dạng các khuôn mặt trong ảnh, và tạo ra một tên gợi ý dựa trên những dữ liệu đã lưu trước đó.

Chúng ta cùng điểm qua một vài nội dung chính liên quan đến Pseudo Labeling nào!

Semi-Supervised Learning

Chắc hẳn chúng ta đã quá quen thuộc với 2 cái tên Supervised Learning và Unsupervised Learning, phân biệt dễ nhất giữa chúng là dữ liệu bài toán có nhãn và không có nhãn.

Vậy Semi-Supervised Learning là gì?

Trước hết để mình dẫn dắt một chút. Yoshua Bengio's đã từng trả lời cho câu hỏi của Quora:"Why is Unsupervised Learning important? ". Yoshua Bengio's trả lời nôm na như sau: Với học có giám sát, chúng ta dạy cho máy tính "học" như con người bằng các dữ liệu có nhãn. Tuy nhiên đây không phải cách học có của con người. Ừ thì nhờ ngôn ngữ chúng ta có được các cái tên minh họa cho các sự vật hiện tượng, nhưng phần lớn những gì chúng ta quan sát ban đầu đều không được gán nhãn, ít nhất là lúc đầu.

Việc đánh nhãn dữ liệu là vô cùng tốn kém và mất thời gian, đơn giản việc ứng dụng AI trong sinh học (tinh sinh học), để có được dữ liệu có nhãn cho các bài toán chuẩn đoán, yêu cầu phải là những người bác sĩ có chuyên môn. Vậy giải pháp ở đây là gì? Hiển nhiên là một cách sao cho:

  • Thuật toán Machine Learning hoạt động mà không cần nhãn dữ liệu (Unsupervised Learning).
  • Tự động gán nhãn dữ liệu hoặc sử dụng số lượng lớn dữ liệu không nhãn kết hợp số lượng nhỏ dữ liệu có nhãn (Chính là Semi-Supervised Learning).

Các bài toán khi chúng ta có một lượng lớn dữ liệu X nhưng chỉ một phần trong chúng được gán nhãn được gọi là Semi-Supervised Learning. Những bài toán thuộc nhóm này nằm giữa hai nhóm Supervised và Unsupervised .

Dữ liệu không nhãn có ích gì?

  • Dữ liệu có nhãn tương đối đắt và khó lấy hơn rất nhiều so với dữ liệu không có nhãn.
  • Dữ liệu không có nhãn cải thiện độ chắc chắn của mô hình bằng ranh giới quyết định chính xác hơn.

Pseudo Labeling là gì?

Để hiểu qua Pseudo Labeling là gì, mời bạn đọc xem qua hình vẽ dưới đây

Pseudo labeling hiểu đơn giản là bạn dùng một mô hình sau khi huấn luyện với dữ liệu có nhãn để dự đoán “nhãn giả” cho các dữ liệu không nhãn, sau đó sử dụng dữ liệu có nhãn ban đầu với dữ liệu có nhãn giả vừa tạo để huấn luyện lại mô hình. Bổ sung một chút là khi tạo các nhãn giả, lọc ra những dự đoán có độ tin cậy cao (ví dụ như xác suất đáng tin cậy, cao hơn 1 ngưỡng (threshold) nào đó) Pseudo Labeling là một phương pháp hiệu quả giúp cải thiện độ chính xác của bài toán phân loại, đặc biệt là trong trường hợp ít dữ liệu. Ví dụ ở đây là một idea tác giả đã sử dụng pseudo-labeling để chiến thắng trong cuộc thi "Santander's Customer Transaction competition".

Bạn đọc có thể tham khảo thêm source code về Pseudo Labeling ví dụ ở đây, được implement bằng pytorch bởi tác giả Anirudh Shenoy

Một số lưu ý khi dùng Pseudo Labeling

  • Không nên trộn lẫn dữ liệu có nhãn với dữ liệu nhãn giả, nên tách biệt dữ liệu nhãn thật và nhãn giả để ta có 2 hàm loss, với trọng số hàm loss đối với dữ liệu nhãn giả thấp hơn để làm giảm phần nào ảnh hưởng của dữ liệu nhãn giả.
    • Loss_per_batch = labeled_los_batch + weight * pseudolabel_loss_batch
  • Bạn cũng có thể trộn lẫn 2 loại dữ liệu này để xem kết quả thế nào, sau cùng chúng ta sẽ đánh giá mô hình dự trên tập test

Tóm lại

  • Theo cá nhân mình thấy thì đay là một kỹ thuật tương đối đơn giản mà hiệu quả trong 1 số trường hợp lại tương đối cao, đặhc biệt trong các bài toán phân loại mà dữ liệu thì ít (phân loại 2,3 nhãn thì đẹp). Cá nhân mình cũng đang thử trong đồ án môn học thử xem, có gì mình sẽ cập nhật kết quả cũng như nội dung đồ án trong các bài viết sau nhé. Cảm ơn mọi người đã đọc đến những dòng cuối cùng này. Cho mình một upvote và một vài comment để mình có động lực chia sẻ thêm nhé ^^

References

Bình luận

Bài viết tương tự

- vừa được xem lúc

Hành trình AI của một sinh viên tồi

Mình ngồi gõ những dòng này vào lúc 2h sáng (chính xác là 2h 2 phút), quả là một đêm khó ngủ. Có lẽ vì lúc chiều đã uống cốc nâu đá mà giờ mắt mình tỉnh như sáo, cũng có thể là vì những trăn trở về lý thuyết chồng chất ánh xạ mình đọc ban sáng khiến không tài nào chợp mắt được hoặc cũng có thể do mì

0 0 146

- vừa được xem lúc

[Deep Learning] Key Information Extraction from document using Graph Convolution Network - Bài toán trích rút thông tin từ hóa đơn với Graph Convolution Network

Các nội dung sẽ được đề cập trong bài blog lần này. . Tổng quan về GNN, GCN. Bài toán Key Information Extraction, trích rút thông tin trong văn bản từ ảnh.

0 0 219

- vừa được xem lúc

Tìm hiểu về YOLO trong bài toán real-time object detection

1.Yolo là gì. . Họ các mô hình RCNN ( Region-Based Convolutional Neural Networks) để giải quyết các bài toán về định vị và nhận diện vật thể.

0 0 284

- vừa được xem lúc

Encoding categorical features in Machine learning

Khi tiếp cận với một bài toán machine learning, khả năng cao là chúng ta sẽ phải đối mặt với dữ liệu dạng phân loại (categorical data). Khác với các dữ liệu dạng số, máy tính sẽ không thể hiểu và làm việc trực tiếp với categorical variable.

0 0 259

- vừa được xem lúc

TF Lite with Android Mobile

Như các bạn đã biết việc đưa ứng dụng đến với người sử dụng thực tế là một thành công lớn trong Machine Learning.Việc làm AI nó không chỉ dừng lại ở mức nghiên cứu, tìm ra giải pháp, chứng minh một giải pháp mới,... mà quan trọng là đưa được những nghiên cứu đó vào ứng dụng thực tế, được sử dụng để

0 0 72

- vừa được xem lúc

Xây dựng hệ thống Real-time Multi-person Tracking với YOLOv3 và DeepSORT

Trong bài này chúng ta sẽ xây dựng một hệ thống sử dụng YOLOv3 kết hợp với DeepSORT để tracking được các đối tượng trên camera, YOLO là một thuật toán deep learning ra đời vào tháng 5 năm 2016 và nó nhanh chóng trở nên phổ biến vì nó quá nhanh so với thuật toán deep learning trước đó, sử dụng YOLO t

0 0 316