[Nhập môn Machine Learning] Bài 1: Giới thiệu Machine Learning



Xin chào, mình là Phạm Hồng Vinh, ở bài viết lần này mình muốn bắt đầu một series bài viết đầu tiên trên RootOnChair Blog. Đây là một điều cực kỳ mới đối với mình và mình rất háo hức để thực hiện nó.

Giới thiệu series Nhập môn Machine Learning

Trong series này, các bạn sẽ được trang bị những kiến thức cơ bản của Machine Learning một cách chi tiết. Bao gồm những những khái niệm, thuật toán, kỹ thuật phổ biến trong ngành Học Máy. Và mong rằng, ở cuối series, bạn có thể tự tạo cho mình một ứng dụng Machine Learning của riêng bạn.

Các bài viết trong series này, mặc dù chúng ta sẽ phải sử dụng đến một chút toán nhưng các bạn đừng lo về điều này. Các bài viết không mang trình độ chuyên Toán cao (vì chính tác giả cũng không phải một thằng chuyên Toán) và mình cũng sẽ cung cấp cho các bạn những kiến thức toán cần thiết và giải thích rõ ràng xuyên suốt series này. Tuy nhiên, bạn cần có kinh nghiệm lập trình (Python càng tốt) để có thể hiểu những đoạn code trong bài viết.

Thôi, mình ba hoa thế cũng đủ rồi. Bắt đầu thôi!

Mục đích của một chương trình Machine Learning

Nếu dạo gần đây các bạn có theo dõi blog của mình, mình đã giải thích khá nhiều về Machine Learning, về khái niệm cốt lõi hay phương thức hoạt động của Machine Learning. Nhưng mục đích của chúng là mang cho các bạn những khái niệm tức thời và toàn cảnh. Điều đó trái ngược với mục đích của series này nên mình xin được phép bắt đầu lại từ đầu.

Như các bạn đã biết, thế giới ngày nay ảnh hưởng rất lớn bởi những chiếc máy vi tính, khả năng tính toán với tốc độ cực cao cùng với sự giúp đỡ của các lập trình viên, thông qua ngôn ngữ lập trình, khiến chúng có thể làm được mọi thứ. Nhưng không hẳn là vậy, có những vấn đề dù cố gắng đến đâu chúng cũng không thể xử lý được.

Những chương trình máy tính về cơ bản là sự phối hợp giữa các dòng lệnh đã được lập trình trước. Đồng nghĩa với việc nó không thể xử lý được những thứ nó chưa được biết trước hoặc chưa được lập trình bởi các lập trình viên. Điều này khiến cho chúng thiếu sự tương tác. Nếu bạn cùng thời với tôi, chắc bạn cũng đã từng chơi những game mà những NPC (non-player character) chỉ biết chạy qua chạy lại theo một lộ trình nhất định.

Từ đó, để lấp đầy lỗ hổng này, ta cần những chương trình mặc dù không được lập trình sẵn nhưng vẫn có thể thực thi một hành động cụ thể dựa trên những kinh nghiệm từ trước và kết quả nó muốn đạt được.

Bạn cũng có thể nói, đó là khả năng dự đoán (prediction) của máy.

Một ví dụ đơn giản

Giả sử ta muốn xây dựng một chương trình xác định một trái táo. Khá đơn giản đúng không, nếu nó có màu đỏ, thì đó là táo.

Vậy còn quả này thì sao?
Ok, vậy mình sẽ thêm màu xanh vô...
Tôi không chắc về việc đó lắm.

Rõ ràng, có quá nhiều chi tiết của quả táo làm nên... quả táo (màu, hình dáng thân, hình dáng cuống) và chúng ta có thể không có đủ thông tin để liệt kê hết được tất cả các trường hợp trên (và cả kiên nhẫn nữa). Đó chính là giới hạn của chương trình máy tính thông thường.

Mặt khác, chương trình Machine Learning có thể xem tất cả những hình ảnh về quả táo và tìm ra những điểm làm nên quả táo giùm ta.

Ta gọi vấn đề trên là một Machine Learning Problem và thuộc về Supervised Learning. Khái niệm mà ta sẽ tìm hiểu ở bài sau. 

Nhận xét

Bài đăng phổ biến từ blog này

Phép phân tích ma trận A=LU

Độc lập tuyến tính và phụ thuộc tuyến tính

Thuật toán tính lũy thừa nhanh. Giải thích một cách đơn giản