Cuộc cách mạng khoa học công nghiệp lần thứ 4

Chúng ta không thể biết trước điều gì sẽ xảy ra trong thế giới này, ngoại trừ: Máy học đang dần thống trị!

Tổng số lượt xem trang

Thứ Hai, 22 tháng 5, 2017

Máy học là gì?

Ở trong 2 bài trước, chúng tôi đã đề cập tới 2 câu hỏi: tại sao (WHY) và khi nào (WHEN) chúng ta sử dụng Máy học. Trong bài này, chúng tôi trả lời câu hỏi WHAT: vậy Máy học là gì?

Trước hết chúng tôi sẽ giới thiệu qua về Lịch sử Máy học.
------

Lịch sử Máy học
Máy học được đưa ra năm 1959 bởi Arthur Samuel: “là một lĩnh vực nhằm giúp máy tính có khả năng học mà không được lập trình/chỉ định rõ ràng”. Điều này có nghĩa là kiến thức được máy tính hấp thụ “tự động” mà không cần phải lập trình cho nó. Rất nhiều người nhầm hiểu rằng sự thông minh của máy tính là do con người lập trình. Nếu cặn kẽ, thì có thể nói rằng, con người lập trình để máy tính có thể “tự học”. Giống như chúng ta hướng dẫn một đứa trẻ học vậy, còn trí thông minh là do trẻ tự học mà có được. Do lịch sử, mặc dù những thuật toán Máy học đã có từ rất lâu nhưng gần đây mới thực sự được ứng dụng rộng rãi. Ví dụ Vladimir Vapnik là nhà khoa học thuộc Liên Xô cũ đã đưa ra thuật toán Support Vector Machine (SVM) năm 1963 nhưng không được chú ý cho tới những năm 1990 khi Vapnick sang Mỹ và nghiên cứu ở Bell Labs. Tương tự thuật toán Neuron Netwok được đưa ra những năm 1940, nhưng máy tính lúc đó quá chậm để có thể thực hiện thuật toán. Quan niệm về Máy học đã nhiều lần thay đổi. Mỗi lần như vậy người ta lại nghĩ Máy học chỉ là một hiện tượng tạm thời. Cho tới những năm gần đây, các nền tảng phần cứng phát triển (định luật Moore) đã giúp các nhà khoa học và cả xã hội nhận thấy Máy học là một công cụ thực sự quan trọng và hữu ích. Nó dần khẳng định vai trò không thể thay thế trong nhiều lĩnh vực của xã hội [8].

 Máy học là gì?
Ngoài định nghĩa rất hay nhưng mang tính hình thức của Tom Mitchell trong cuốn sách Machine Learning nổi tiếng [5], ông có đưa ra khái niệm dễ hiểu về Máy học: “Máy học liên quan tới gốc rễ của vấn đề làm thế nào để xây dựng các chương trình máy tính sao cho nó có thể tự động cải thiện bằng kinh nghiệm”.
Trong cuốn sách [4], ba tác giả là ba nhà thống kê (statisticians) của Standford đã đưa ra một định nghĩa về Máy học:  “Một lượng rất lớn dữ liệu được sinh ra bởi nhiều lĩnh vực khác nhau, công việc của các nhà thống kê là tìm ra ý nghĩa của các dữ liệu đó, bằng cách: trích xuất và tìm ra các mẫu (pattern) và các xu hướng, và để hiểu ‘dữ liệu đang nói gì’. Như vậy là chúng ta đang học từ dữ liệu”.
Marsland đã cung cấp một nhận định đáng giá trong cuốn sách [6]: “Một trong những đặc trưng thú vị của Máy học là nó là sự giao thoa của các ngành ngành: khoa học máy tính, thống kê học, toán học, và kĩ thuật”.
Trong biểu đồ Hình 1 có 3 thành phần chính: 1. Hacking Skills chính là những kĩ năng sử dụng máy tính và lập trình để thao tác và xử lý dữ liệu; 2. Math&Statistics là nền tảng để chúng ta trích xuất những thông tin hữu ích từ dữ liệu; 3. Substantive Expertise là kiến thức của lĩnh vực chúng ta quan tâm. Như chúng ta thấy ở biểu đồ Venn, Máy học cần một phần kĩ năng của khoa học máy tính và một phần của toán học thống kê. 


Hình 1: Biểu đồ Venn của Drew Conway về Data Science [7].
Tuy có rất nhiều định nghĩa khác nhau, tùy thuộc vào góc nhìn, tuy nhiên rất nhiều người cho rằng: “Giá trị quan trọng của Máy học là mô hình dự đoán, ở đó chúng ta dùng các dữ liệu quá khứ để huấn luyện mô hình và dùng mô hình để dự đoán”. Hay thậm chí ngắn gọn hơn: “Viết một chương trình mà nó có thể tự học!”

Máy học có nhiều tên gọi khác nhau, được đặt bởi những cộng đồng nghiên cứu khác nhau. Khi sử dụng Máy học để nhận dạng các mẫu, Máy học là pattern recognition; khi sử dụng trong khai phá dữ liệu, Máy học là data mining; khi sử dụng trong các mô hình dự đoán, Máy học có tên là redictive analytics hay còn gọi là predictive modeling; khi sử dụng vào phân tích dữ liệu, Máy học có tên gọi là data science; khi sử dụng trong các hệ thống tự thích nghi tương tác với môi trường, Máy học được gọi là adaptive systems; khi sử dụng để khai phá tri thức, Máy học có tên gọi là knowledge discovery; khi sử dụng trong việc phân tích và thống kê dữ liệu, Máy học có tên gọi là statistic learning hay còn gọi là statistic modeling. Ngoài ra còn có thể kể ra rất nhiều tên khác nưa: statistical modeling, self-organizing systems, v.v…  
Đứng ở góc độ người mới tìm hiểu và muốn nghiên cứu hay xây dựng cho mình một chương trình Máy học, chúng ta cần:
1.      Sử dụng được một ngôn ngữ lập trình. Ví dụ như Java, Matlab, R, Python, ... Tuy nhiên, theo chúng tôi ngôn ngữ Python là một sự lựa chọn rất phù hợp
2.      Bổ sung một vài kiến thức về toán học cho khoa học máy tính như: Lý thuyết xác suất thống kê, đại số tuyến tính; nếu sang hơn thì là toán tối ưu :-)
3.      Tìm hiểu về lĩnh vực chuyên sâu mà bạn muốn xây dựng ứng dụng, ví dụ: y học (dự đoán bệnh), nông nghiệp (dự báo năng suất), ...
Chúc các bạn sớm yêu thích và tham gia vào lĩnh vực thú vị và có nhiều ứng dụng này.

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.

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

Chủ Nhật, 14 tháng 5, 2017

Tại sao lại phải dùng Máy học?

        Thông thường khi muốn xây dựng chương trình, bỏ qua những công đoạn khảo sát và đánh giá, chúng ta phải thuật toán hóa được vấn đề. Tức là chúng ta chỉ rõ các bước, các lệnh, các điều kiện, v.v... để thực hiện các tác vụ bằng các dòng lệnh.
Ví dụ quen thuộc là việc giải phương trình bậc 2:  ax^2+bx+c=0. Không khó khăn khi chúng ta lập trình giải bài toán với dữ liệu nhập vào là (a,b,c), sau đó tính giá trị delta, rồi xem xét các trường hợp (dùng câu lệnh điều kiện) và cuối cùng xuất ra kết quả để thông báo về nghiệm của phương trình (có thể vô nghiệm). 
        Những chương trình như vậy được xây dựng trên dòng lệnh dựa trên các luật được chỉ định rõ ràng (hard-code rules).  Những ứng dụng như vậy chiếm hầu hết các ứng dụng mà chúng ta gặp như: phần mềm kế toán, phần mềm  quản lí nhân sự, phần mềm quản lí thư viện, và vô số chương trình khác. Ngay cả các phần mềm Exel, MS Word, Power Point cũng đều được xây dựng theo cách như vậy.
         Nhiều người coi đây là các chương trình được xây dựng bằng cách lập trình truyền thống, để phân biệt với cách lập trình dùng trong Máy học. Bây giờ chúng ta hãy cũng xét xem một ví dụ rất đơn giản nhưng rất khó, nếu không nói là không thể, nếu sử dụng cách lập trình truyền thống giống để xây dựng các chương trình ở trên. 
         Bạn có thể viết một chương trình để nhận ra sự khác nhau giữa một chú chó và một chú mèo? Cụ thể hơn là chương trình có đầu vào là một ảnh, chương trình cần đưa ra nhận định là chó hay là mèo.
        Được thôi, bạn quan sát và nhận thấy rằng chó có mõm dài hơn mèo. Bạn có thể viết chương trình sử dụng rất nhiều luật (if-then, while, for) để thực hiện nhận định đó. Và khi một ảnh một con vật được đưa vào, sau khi chương trình tính toán và đưa ra tỉ lệ của mõm con vật, bạn sẽ xác định được con vật đó là chó hay mèo. Tuy nhiên, chương trình đó sẽ không có tác dụng với ảnh trong Hình 2.
  


Hình 2. Con nào mõm dài hơn, chó hay mèo?

         Được thôi, bạn lại quan sát để không phụ thuộc vào độ dài của mõm và nhận thấy rằng các chú chó cụp tai, còn mèo thì vểnh tai (Hình 3). Bạn sẽ lại viết một chương trình với rất nhiều dòng lệnh để phân biệt được điều đó.

  
Hình 3. Chó cụp tai, còn mèo vểnh tai.

         Tuy nhiên với ảnh trong Hình 4 này thì sao? Thật tiếc, chương trình của bạn lại phán đoán sai!
  

Hình 4. Chó vểnh tai, còn mèo cụp tai.

         Thêm nhiều lần nữa, bạn có thể dựa vào đuôi, dựa vào mũi, lông, hay mắt. Nhưng mỗi lần bạn viết được các chương trình như vậy, thì chính bạn lại đưa ra được rất nhiều phản ví dụ để chương trình của bạn phải viết lại, và chương trình đó cần hàng nghìn các dòng lệnh, mà vẫn không thỏa mãn hết các trường hợp. 
         Chúng ta muốn hướng tới một chương trình mà thậm chí có thể nhận chính xác những ảnh sau (chúng tôi có hỏi hai trẻ nhỏ 4-5 tuổi và cả hai đều nhận ra chính xác con vật ở 3 Hình 5, mặc dù họ chưa nhìn thấy hình này bao giờ).
   

Hình 5. Hình khó về chó và mèo.
Và bạn thử hình dung xem chương trình của bạn có thể phân biệt được chó với mèo trong Hình 6 hay không?
     
Hình 6. Tập ảnh dùng cho cuộc thi trên Kaggle [10].

Như vậy, chúng ta gặp phải ba khó khăn không thể vượt qua khi tiếp cận bằng lập trình truyền thống (hệ chuyên gia dựa trên các luật/câu lệnh được chỉ định rõ ràng):

  1. Chương trình chúng ta xây dựng đòi hỏi có tính logic rõ ràng để đưa ra các quyết định cho một tác vụ cụ thể. Việc thay đổi rất ít trong tác vụ cũng dẫn tới tác động tới toàn bộ hệ thống đã có.
  2. Việc thiết kế các luật/câu lệnh đòi hỏi chúng ta phải hiểu rất sâu và rõ tác vụ, để từ đó đưa ra các quyết định phù hợp.
  3. Khi chúng ta có một bài toán mới (ví dụ phân biệt cam /táo, ôtô/xemáy), chúng ta phải làm tất cả mọi thứ từ đầu. Phù!
         Liệu có một giải pháp nào khắc phục được ba khó khăn trên không? 

         Câu hỏi đặt ra là liệu chúng ta có thể xây dựng một chương trình như mong đợi hay không? Câu trả lời là có! Chúng ta hoàn toàn có thể xây dựng được một chương trình rất tốt (theo nghĩa có độ chính xác cao). Đây chính là một cuộc thi phân biệt giữa chó và mèo trên Kaggle [10]. Khi sử dụng kĩ thuật Deep-learning trong Máy học, độ chính xác có thể đạt tới 99% [11].  Một chương trình có thể tự nhận diện chính xác không kém một đứa trẻ 5 tuổi. Thật là điều tuyệt vời!
         Để xây dựng được các chương trình như vậy, chúng ta không có sự lựa chọn thứ hai ngoài Máy học! Chúng ta có thể nói rằng: các thuật toán Máy học không cần chỉ rõ như lập trình truyền thống, mà nó được lập trình để có khả năng tự học. Nhiều bạn tới lúc này sẽ đặt ra câu hỏi: Làm thế nào để một chương trình máy tính có thể đạt độ chính xác cao như vậy? Trong bài toán phân biệt chó và mèo, chúng ta có thể hiểu một cách đơn giản là chương trình Máy học học giống như một đứa trẻ học (4-5 tuổi trong trường hợp phân biệt chó và mèo). Trẻ làm thế nào để phân biệt chó với mèo? Đứa trẻ đó sẽ phân biệt bằng kinh nghiệm. Kinh nghiệm có được từ việc học: học thông qua quan sát thực tế, học qua xem hoạt hình, học qua xem tranh, v.v… Khi trẻ được dạy và quan sát trẻ sẽ tự điều chỉnh để phân biệt được đâu là con chó, đâu là con mèo. Một chương trình máy học là chương trình có cách học … như đứa trẻ vậy. Trong Máy học, chương trình học qua ảnh. Bằng cách học qua rất nhiều ảnh (trong cuộc thi trên kaggle là 25.000 ảnh cho huấn luyện và 12.500 ảnh cho kiểm tra). Hình 7 thể hiện một vài ảnh mẫu trong cuộc thi Kaggle. Sau khi “học” xong, chương trình cũng giống như đứa trẻ có thể nhìn một ảnh để chỉ ra con vật là con chó hay con mèo, mặc dù ảnh đó chưa bao giờ được gặp, dù con vật đó có thể có một vài điểm khác với con vật thực sự chuẩn mực (đầy đủ chân, tai, mắt, kích cỡ phù hợp, …).  


Hình 7. Tập ảnh dữ liệu trên tập dữ liệu Kaggle [10].

         Để kết thúc phần này, chúng ta hãy xem lại 2 nguyên lí lập trình, một là lập trình truyền thống (Hình 8) và lập trình Máy học (Hình 9 - được lấy từ [9]).

Hình 8. Mô hình lập trình truyền thống.


         Trong lập trình truyền thống, người lập trình (Programmer) cần viết chương trình (Program) gồm những luật chỉ rõ máy tính (Program) cần thực hiện để đưa ra kết quả mong muốn. Ngược lại, trong Máy học, Programmer trong máy học viết một chương trình nhỏ để kích hoạt quá trình học thông qua rất nhiều (Inputs, Outputs) nhằm tạo ra một chương trình (Program).
 
Hình 9. Mô hình lập trình Máy học.

Chúng tôi sẽ sớm trở lại với câu hỏi: Khi nào thì nên sử dụng Máy học?

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.