Lời mở đầu
Mình là một lập trình viên .NET, không phải nhà nghiên cứu Machine Learning. Những gì được trình bày trong loạt bài này đến từ quá trình tự học, tự đọc tài liệu và tự triển khai các ví dụ, chủ yếu với mục tiêu hiểu bản chất của Machine Learning từ góc nhìn của một người làm phần mềm.
Mục tiêu của series này không phải là “dạy Machine Learning”, mà là chia sẻ cách một lập trình viên tiếp cận, hiểu và sử dụng Machine Learning như một công cụ trong thực tế phát triển phần mềm.
Thuật toán có phải là tri thức không?
Trước khi đi sâu vào Machine Learning, hãy thử bắt đầu bằng một câu hỏi tưởng chừng rất đơn giản:
Một chương trình giải phương trình bậc hai có tri thức hay không?Câu trả lời là có.
Tri thức toán học về cách giải phương trình bậc hai đã được lập trình viên mã hóa trực tiếp vào chương trình dưới dạng các câu lệnh điều kiện và thuật toán.
Tuy nhiên, đây là một dạng tri thức cứng – tri thức chỉ tồn tại trong mã chương trình và không thể thay đổi nếu không sửa lại code. Khi bài toán trở nên phức tạp và tri thức liên tục thay đổi, cách tiếp cận này dần bộc lộ những giới hạn của nó.
Chính từ nhu cầu “mềm hóa” tri thức đó, Machine Learning ra đời.
Về mặt phổ thông, Machine Learning thường được định nghĩa là một lĩnh vực con của Trí tuệ nhân tạo (AI), cho phép máy tính học từ dữ liệu mà không cần được lập trình tường minh cho từng tác vụ.
Machine Learning là gì? – Một góc nhìn lịch sử
Trước khi có các mô hình phức tạp và thuật ngữ “Machine Learning” phổ biến như ngày nay, câu hỏi nền tảng đã được đặt ra từ rất sớm.
Năm 1950, Alan Turing đặt ra câu hỏi nổi tiếng: “Can machines think?” Trong bài báo Computing Machinery and Intelligence, ông đề xuất “Imitation Game”, sau này được biết đến với cái tên Turing Test. Thay vì định nghĩa “tư duy” một cách trừu tượng, Turing đưa ra một tiêu chí thực dụng: nếu con người không thể phân biệt được câu trả lời của máy với con người, thì liệu có thể nói máy đang “tư duy” hay không?
Gần một thập kỷ sau, Arthur Samuel đưa khái niệm này tiến thêm một bước quan trọng. Ông định nghĩa Machine Learning là một lĩnh vực cho phép máy tính học mà không cần được lập trình tường minh.
[A] Field of study that gives computers the ability to learn without being explicitly programmed.
Thay vì mã hóa toàn bộ luật chơi, chương trình chơi cờ của Samuel có thể tự cải thiện qua từng ván đấu, dựa trên kinh nghiệm đã tích lũy. Đây là một bước chuyển rõ ràng từ “viết luật” sang “để máy tự học luật”.
Đến năm 1997, Tom M. Mitchell đưa ra một định nghĩa mang tính chuẩn mực hơn, giúp hệ thống hóa Machine Learning như một ngành khoa học.
A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with the experience E.
Theo Mitchell, một chương trình được coi là học từ kinh nghiệm nếu hiệu suất thực hiện một lớp nhiệm vụ cụ thể được cải thiện sau khi trải qua kinh nghiệm đó. Ba yếu tố cốt lõi được xác định là: nhiệm vụ (Task), kinh nghiệm (Experience) và độ đo hiệu suất (Performance).
Machine Learning không phải là việc chọn thuật toán nào, mà là xác định rõ T–E–P cho bài toán trước khi nghĩ đến thuật toán.
Những định nghĩa này cho thấy Machine Learning không chỉ là một tập hợp thuật toán, mà là một cách tiếp cận mới để đưa tri thức vào máy tính.
Kết luận
Machine Learning xuất hiện như một hướng tiếp cận khác: thay vì viết ra các quy tắc, chúng ta để máy tính tự rút ra tri thức từ dữ liệu. Tuy nhiên, điều này đặt ra một câu hỏi nền tảng hơn: dữ liệu là gì, tri thức là gì, và bằng cách nào một hệ thống máy tính có thể “biết” được điều gì đó từ dữ liệu?
Tham khảo
Sách Deep Learning - Tác giả: Ian Goodfellow, Yoshua Bengio & Aaron Courville
Nhận xét
Đăng nhận xét