Machine Learning cho người mới bắt đầu (Part 1)
Trong những năm gần đây, Artificial Intelligence (AI) hay trí tuệ nhân tạo đã được nhiều thành tựu vô cùng rực rỡ trên nhiều lĩnh vực như: computer vision, natural language processing, recommendation system. Với tốc độ phát triển vô cùng nhanh chóng nhờ vào những tiến bộ trong ngành khoa học dữ ...
Trong những năm gần đây, Artificial Intelligence (AI) hay trí tuệ nhân tạo đã được nhiều thành tựu vô cùng rực rỡ trên nhiều lĩnh vực như: computer vision, natural language processing, recommendation system. Với tốc độ phát triển vô cùng nhanh chóng nhờ vào những tiến bộ trong ngành khoa học dữ liệu (Data Science) và những siêu máy tính có tốc độ tính toán cực kì nhanh chóng, AI đã và đang giúp cho cuộc sống của con người ngày một tốt đẹp hơn. Một số những thành tựu đáng kinh ngạc của trí tuệ nhân tạo có thể kể đến như:
Năm 2015, Google đã huấn luyện một nhân viên giao tiếp có thể thuyết phục trong quá trình tương tác với con người như một bộ phận hỗ trợ kĩ thuật và thậm chí còn thảo luận về đạo đức, bày tỏ ý kiến, và trả lời các câu hỏi dựa trên các câu hỏi phổ biến.
Sau đó 1 năm, AlphaGo do Google phát triển đã đánh bại kì thủ cờ vây hàng đầu thế giới Lee Sedol trước sự ngỡ ngàng của rất nhiều người cũng như các chuyên gia nghiên cứu trong lĩnh vực trí tuệ nhân tạo.
Trí tuệ nhân tạo có thể được hiểu là trí tuệ được biểu diễn bởi bất cứ một hệ thống nhân tạo nào, do con người lập trình tạo nên với mục tiêu giúp máy tính có thể tự động hóa các hành vi thông minh như con người. Trí tuệ nhân tạo luôn là một ngành khoa học khó tiếp cận cho những người mới bắt đầu bởi trí tuệ nhân tạo được xây dựng từ nhiều nền tảng khác nhau, vì vậy trong series bài viết này mình chỉ xin đề cập tới một nhành của trí tuệ nhân tạo là học máy (Machine Learning).
Theo Wikipedia, Machine Learning được định nghĩa như sau:
Machine learning is a field of computer science that uses statistical techniques to give computer systems the ability to "learn" (e.g., progressively improve performance on a specific task) with data, without being explicitly programmed.
Định nghĩa này có được thể tạm dịch là "Maching learning là một ngành học thuộc khoa học máy tính, giúp máy tính có khả năng tự học mà không phải lập trình một cách rõ ràng". Và trong series này mình sẽ chia sẻ với các bạn đang muốn tìm hiểu về Machine Learning những kiến thức căn bản nhất.
- Các bạn kĩ sư , lập trình viên muốn tiếp cận với Machine Learning một cách nhanh nhất.
- Những người không phải kĩ sư, lập trình viên muốn có một hiểu biết cơ bản về machine learning và sẵn sàng tham vào các công việc kĩ thuật.
- Bất cứ ai tò mò về Machine Learning và muốn tìm hiểu về cách nó hoạt động.
Machine Learning được chia thành 3 loại:
- Supervised learning (học có giám sát): Ở thời điểm hiện tại, đây là phương pháp học được sử dụng phổ biến nhất hiện nay. Tập dữ liêu dùng để huấn luyện sẽ là các cặp input - output tương ứng, nghĩ là ta đã biết được dữ liệu đầu vào và đầu ra đúng tương ứng với đầu vào đó. Quá trình học sẽ cố gắng tìm ra mối quan hệ giữa gần đúng nhất giữa đầu vào và đầu ra tương ứng, hay nói một cách khác là ta đang đi tìm một hàm quan hệ giữa đầu vào x và đầu ra y : y = f(x). Khi ta đã có được hàm quan hệ f và một đầu vào x mới, ta có thể dự đoán được đầu ra y tương ứng.
- Unsupervised learning (học không giám sát): Khác với Supervised learning, tập dữ liệu huấn luyện của Unsupervised learning chỉ bao gồm dữ liệu đầu vào input mà không bao gồm đầu ra output tương ứng. Unsupervised learning hướng tới việc tìm ra các structure, relationship trong tập dữ liệu huấn luyện.
- Reinforcement learning (học tăng cường/học củng cố)
Khi xây dựng một mô hình Machine Learning cho một ứng dụng thực tế, ngoài việc xác định đúng phương pháp học thì còn cần phải xác định được chính xác loại bài toán mà ta đang cần giải quyết. Có 2 loại bài toán phổ biến:
- Regression problem (bài toán hồi quy tuyến tính): đầu ra output cần dự đoán là các số thực có thể nhận bất cứ giá trị nào. Ví dụ bạn cần xây dựng một mô hình học máy với các dự liệu đầu vào như vị trí căn nhà, diện tích, số phòng ngủ, ... và đầu ra cần dự đoán là giá bán của căn nhà đó. Trong ví dụ này giá bán của căn nhà là một số thực có thể nhận bất cứ giá trị nào, có thể là 100.000 usd, 200.000 usd, 300.000 usd, ...
- Classification problem (bài toán phân loại): đầu ra output là một trong các class (lớp) mà chúng ta đã biết trước. Ví dụ bạn muốn xây dựng một mô hình học máy với khả năng nhận diện chữ số, như vậy đầu ra output cần dự đoán là 10 chữ số từ 0 cho đến 9. Trong bài toán phân loại này, đầu ra cần dự đoán chỉ có thể là 1 trong 10 khả năng có thể xảy ra mà ta đã biết trước.
Các kiến thức mà bạn cần chuẩn bị bao gồm:
- Kiến thức cơ bản về lập trình. Trong series này mình sẽ chủ yếu sử dụng ngông ngữ lập trình là Python, bạn có thể tham khảo khóa học miễn phí về Python tại đây
- Các kiến thức liên quan về đại số tuyến tính cơ bản như nhân/chia/cộng/trừ 2 ma trận, cách tính đạo hàm của một hàm số. Nếu cảm thấy mình chưa thực sự thành thạo về đại số tuyến tính hay đạo hàm thì bạn cũng không cần quá lo lằng vì hiện tại các framework về Machine Learning đều hỗ trợ rất tốt cho người dùng. Tuy nhiên mình khuyến khích các bạn tìm hiểu về những kiến thức trên để có thể hiểu tốt hơn về các thuật toán Machine Learning mình sẽ giới thiệu trong phần 2.
- Nắm được cách sử dụng một vài các framework hỗ trợ Machine Learning bằng ngôn ngữ Python như: tensorflow, keras, scikit-learn, ...
Mình xin dừng bài viết này lại tại đây, trong bài viết tiếp theo mình sẽ đi sâu về các giải thuật Machine Learning phổ biến như linear regression, logistic regression, neural network. Cảm ơn các bạn đã đọc bài viết trên, hi vọng các bạn sẽ tiếp tục theo dõi bài viết tiếp theo của mình.