Tổng số lượt xem trang

Thứ Hai, 15 tháng 5, 2017

Khi nào thì sử dụng Máy học?

        
Nhận ra những pattern từ rất nhiều thông tin (ảnh lấy từ [17]).


        Ở bài trước đã trình bày một ví dụ mà chỉ có Máy học mới có thể áp dụng để phân biệt Chó và Mèo.  Có rất nhiều chương trình khác hiện nay đang được sử dụng mà chúng ta không biết. Ví dụ như chương trình lọc thư rác (dùng trong Gmail), nhận dạng mặt [14], dùng điện thoại bằng giọng nói, dịch thuật với nhiều ngôn ngữ (translate.google.com), chống các giao dịch giả trong tài chính, bảo vệ loại động vật (trường đại học Cornell sử dụng Máy học để nhận diện cá voi dựa trên giọng nói để các tàu tránh)[12], dùng trong y học dựa trên các hồ sơ bệnh án (IBM Watson), dùng trong hệ gợi ý (Amazone gợi ý cho người đọc mua cuốn sách phù hợp trong hàng triệu cuốn sách), trong dự đoán hỗ trợ phân tích tài chính trên thị trường chứng khoán, trong xử lý ngôn ngữ, y sinh học, search engines [15].
        Tới lúc này, có thể bạn cảm nhận sức mạnh và hữu ích của Máy học. Và nảy sinh một câu hỏi thú vị:  khi nào thì có thể áp dụng máy học? Nói một cách khác, có điều kiện nào để Máy học có thể áp dụng được hay không? Các tác giả trong cuốn sách Learning from Data [16] đã chỉ ra 3 điều kiện để có thể sử dụng Máy học:
  1. Phải tồn tại pattern (dạng/mẫu);
  2. Chúng ta không thể đưa ra các công thức, luật, hay câu lệnh rõ ràng;
  3. Phải có dữ liệu.
        Điều kiện thứ nhất liên quan tới Pattern. Pattern ở đây có thể hiểu là một mẫu, một hình dạng, hay một đặc điểm chung nào đó. Ví dụ nếu cho một dãy số A như sau: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, … Bạn có thấy có quy luật gì đặc biệt ở dãy số này không? Có nhiều bạn sẽ nhận ra ngay đây là dãy số Fibonaci, ở dãy số này từ số thứ 3 trở đi sẽ bằng tổng của hai số trước cộng lại. 
Bạn hãy xem dãy số B này: 3, 51, 24, 33, 14, 8, 44, 86, 12, 76, 38, 71, 57, 9, … Bạn có thấy quy luật, hay điều gì đặc biệt ở dãy số này không? Chúng tôi phải xin lỗi nếu bạn cố gắng để tìm ra (không tìm ra) quy luật. Vì đây là dãy số được tạo ra ngẫu nhiên trong khoảng [1,100]. 
Như chúng ta thấy, dãy A được xem như là tồn tại pattern, còn dãy B thì không. Điều này được xem như là điều kiện tiên quyết để Máy học có thể áp dụng. Đây cũng là điều dễ hiểu vì không thể có bất kì một chương trình nào (Máy học) hay ngay bản thân chúng ta có thể học được khi vấn đề chúng ta quan tâm không có ý nghĩa (xét trong góc độ tồn tại pattern).
Tuy nhiên nếu tồn tại pattern như dãy A ở trên thì chúng ta có thể dễ dàng toán học hóa nó, vậy thì cần gì tới Máy học? Đây là lúc chúng ta bàn tới điều kiện thứ hai.
        Điều kiện thứ hai là trong vấn đề chúng ta giải quyết, chúng ta rất khó (nếu không nói là không thể) đưa ra các công thức, luật, hay câu lệnh rõ ràng cho các pattern tồn tại. Nói một cách khác là chúng ta không thể tiếp cận bằng lập trình truyền thống. Ví dụ như việc phân biệt chó và mèo. Rõ ràng là chúng có pattern để một trẻ nhỏ hay một chương trình Máy học có thể phân biệt được chính xác, mặc dù chúng ta không thể đưa ra được đầy đủ các quy luật để chỉ rõ điều đó. Cũng như vậy, chúng ta không thể viết một chương trình nhận ra thư rác chỉ bằng cách đưa ra quy luật đơn giản là các từ (mang ý nghĩa xấu, quảng cáo, chào hàng, v.v …) xuất hiện trong nó.
        Điều kiện thứ ba liên quan tới dữ liệu thể hiện pattern. Dữ liệu trong bài toán chó và mèo là các ảnh. Dữ liệu mà càng nhiều, chương trình càng được học nhiều và độ chính xác được tăng cao. 

        Bây giờ, chúng ta hãy xét lần lượt vai trò của từng điều kiện một:
  •  Nếu điều kiện thứ nhất không tồn tại thì sao? Khi đó, Máy học sẽ không có tác dụng gì. Thế nếu chúng ta cứ áp dụng Máy học khi chúng ta không biết bài toán có pattern hay không thì sao? Tất nhiên, sau khi xây dựng chương trình Máy học, chính chúng ta phải xác định xem bài toán có pattern hay không. Điều này có thể thực hiện thông qua tập dữ liệu kiểm tra. Do vậy mà khi bài toán không có pattern, thì không có vấn đề gì cả. 
  • Nếu điều kiện thứ hai không tồn tại thì sao? Không sao cả. Chương trình Máy học vẫn có tác dụng. Tuy nhiên nó không phải là công cụ được khuyến khích trong trường hợp này. Khi mà chúng ta có thể công thức hóa được bài toán thì lập trình truyền thống sẽ là một công cụ hiệu quả hơn. 
  • Nếu điều kiện thứ ba không tồn tại thì sao? Khi đó Máy học sẽ không có dữ liệu để học. Chúng ta sẽ không thể yêu cầu bất kì ai phân biệt giữa người Bồ Đào Nha và người Đức nếu người đó chưa từng gặp người Bồ Đào Nha và người Đức. 
        Tóm lại, chúng ta có thể hiểu nôm na như thế này: Hãy hình dung trường hợp nếu ai đó yêu cầu chúng ta mô tả rõ ràng bằng công thức hay bằng các luật (explicit knowledge) về một con mèo để họ (chưa gặp con mèo bao giờ) có thể nhận ra một con vật có là mèo hay không. Đây quả thực là một đề nghị không có câu trả lời!
        Thực tế, nếu chúng ta hỏi đứa trẻ 4 tuổi, đứa trẻ sẽ dễ dàng nhận ra đâu là con mèo. Tri thức mà đứa trẻ học được là do kinh nghiệm, và kinh nghiệm có được là do học từ rất nhiều lần nhìn thấy con mèo và nhận ra pattern của con mèo, mặc dù rất khó mô tả rõ ràng bằng công thức hay bằng các luật (tatcit knowledge). Máy học cũng như vậy! Máy học sẽ dùng cho những bài toán và ứng dụng dạng tatcit knowledge
        
Chúng tôi rất vui lòng khi nhận được sự chia sẻ của mọi người.
Bài sau chúng tôi sẽ trả lời câu hỏi: Vậy Máy học là gì?

Tham khảo:

1. https://www.coursera.org/learn/machine-learning
2. Pedro Domingos. A few useful things to know about machine learning, Published by ACM 2012 Article. Volume 55 Issue 10, October 2012, pages 78-87.
3. http://gerardnico.com/wiki/data_mining/bias_trade-off
4. Trevor Hastie. Robert Tibshirani. Jerome Friedman. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. Springer; 2nd ed. 2009. Corr. 7th printing 2013 edition, 745 pages
5. Tom Mitchell. Machine Learning. McGraw-Hill Education; 1st edition, March 1997, 432 pages
6. Stephen Marsland. Machine Learning: An Algorithmic Perspective. Chapman and Hall/CRC; 1st edition April 2009, 406 pages
7. http://drewconway.com/zia/2013/3/26/the-data-science-venn-diagram
8. 10 Machine Learning based Products You MUST see: https://www.youtube.com/watch?v=dcZvhP-IqY4
9. https://sebastianraschka.com/faq/docs/datascience-ml.html
10. https://www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition
11. http://adilmoujahid.com/posts/2016/06/introduction-deep-learning-python-caffe
12. http://www.forbes.com/sites/85broads/2014/01/06/six-novel-machine-learning-applications/
13. http://yann.lecun.com/exdb/mnist/
14. https://www.youtube.com/watch?v=wr4rx0Spihs
15. https://en.wikipedia.org/wiki/Machine_learning
16. Yaser  S. Abu-Mostafa, Malik Magdon-Ismail, Hsuan-Tien Lin. Learning From Data. AMLBook (March 27, 2012), 213 pages. 
17. https://martechtoday.com/heck-machine-learning-care-193323

3 nhận xét:

balvpro nói...

Ở trên Thầy có nói Nếu điều kiện thứ nhất không tồn tại thì sao? Khi đó, Máy học sẽ không có tác dụng gì và sau khi xây dựng chương trình Máy học chúng ta mới xác định được xem bài toán có pattern hay không. ==>Câu hỏi đặt ra ở đây là nếu như vậy đồng nghĩa với việc mình chấp nhận bỏ resources trong một số trường hợp để cài đặt máy học mà sau đó có thể không có hiệu quả gì, sẽ rất lãng phí trong các bài toán lớn. Do đó có cách nào xác định được bài toàn không có pattern từ trước khi thực sự cài đặt machine learning không ạ?

Unknown nói...

Nếu như trả lời phù hợp nhất cho câu hỏi của Ba là: KHÔNG. Vì việc xác định được bài toán có Pattern mà ko dùng Máy học thì nó đi ngược lại điều kiện 2. Tức là khi đó chúng ta đã tự xác định được pattern thông qua các công thức hay luật mô tả.

balvpro nói...

Vâng e hiểu rồi ạ. Em cảm ơn Thầy :)