Lộ trình học machine learning “tuyệt đỉnh” khiến bạn không hối hận

Machine Learning là một chủ đề được quan tâm nhất hiện nay và lộ trình học machine learning cũng theo đó có ngày càng nhiều người muốn tìm hiểu về nó. Bài này hướng dẫn cho bạn lộ trình tự học machine learning và nghiên cứu hoàn chỉnh để trở thành chuyên gia Machine Learning và dành cho người mới bắt đầu. Nếu bạn đã là một chuyên gia thì hãy bỏ qua bài này.

Kiến thức toán học cần thiết

Nếu ai đó nói rằng tự học học Machine Learning mà không cần toán, thì chứng tỏ người đó không nghiêm túc trong quá trình tự học Machine Learning!

Đúng vậy, bạn không cần phải là một nhà toán học để tìm hiểu về machine learning, nhưng một số kiến thức cơ bản về Đại số tuyến tính (Linear Algebra) , Giải tích (Calculus) và Xác suất (Probability) sẽ giúp bạn bắt đầu học machine learning dễ dàng hơn.

lộ trình học machine learninglộ trình học machine learninglộ trình học machine learning

Kỹ năng lập trình Python

Kỹ năng tiếp theo trong lộ trình học Machine Learning là Python. Đương nhiên để trở thành chuyên gia Machine Learning thì bạn phải là lập trình viên có kỹ năng coding trước.  Nếu bạn đã có một nền tảng coding vững chắc, thì xin chúc mừng một lần nữa. Nhưng nếu bạn chưa có, chỉ cần chọn một ngôn ngữ lập trình để học. Thực tế, Python là ngôn ngữ phù hợp nhất để học và làm Machine Learning, nhưng tùy thuộc vào các dự án cụ thể của bạn, bạn có thể chọn C ++, Java hoặc bất cứ ngôn ngữ nào khác. Nếu bạn muốn bắt đầu nhanh bằng Python, thì khóa học Python Bible  là một trong những lựa chọn tốt nhất.

Thư viện Numpy và TensorFlow

NumPy (NumPy.org): Là một thư viện để xử lý và tính toán các ma trận, được dùng cùng với SciPy và Matplotlib để thay thế cho Matlab. NumPy được viết bằng 2 ngôn ngữ lập trình phổ biến là Python và C, đặc biệt là các hàm liên quan tới phần Đại số tuyến tính. Ngoài NumPy thì Google Colaboratory là một lựa chọn đơn giản hơn, phù hợp với những người mới đang bắt đầu tìm hiểu về Machine Learning cơ bản.

TensorFlow: Là một thư viện mã nguồn mở được phát triển bởi Google. Nó được sử dụng để training/ inference các mô hình Machine Learning. Đây là công cụ vô cùng hữu ích với những nhà phát triển học máy.   

Bài toán hồi quy (Regression)

Kỹ năng tiếp theo trong lộ trình học Machine Learning là kỹ thuật hồi quy, Hồi quy là quá trình tìm mối quan hệ phụ thuộc của một biến (được gọi là biến phụ thuộc hay biến được giải thích, biến được dự báo, biến được hồi quy, biến phản ứng, biến nội sinh) vào một hoặc nhiều biến khác (được gọi là biến độc lập, biến giải thích, biến dự báo, biến hồi quy, biến tác nhân hay biến kiểm soát, biến ngoại sinh) nhằm mục đích ước lượng hoặc tiên đoán giá trị kỳ vọng của biến phụ thuộc khi biết trước giá trị của biến độc lập. Hình 6 tượng trưng cho ý tưởng của các thuật toán hồi quy.

Ví dụ như, dự đoán rằng nếu tăng lãi suất tiền gửi thì sẽ huy động được lượng tiền gửi nhiều hơn, khi đó ngân hàng A cần biết mối quan hệ giữa lượng tiền gửi và lãi suất tiền gửi, cụ thể hơn họ muốn biết khi tăng lãi suất thêm 0.1% thì lượng tiền gửi sẽ tăng trung bình là bao nhiêu.

Các thuật toán hồi quy phổ biến nhất là:

  • Linear Regression

  • Logistic Regression

  • Locally Estimated Scatterplot Smoothing (LOESS)

  • Multivariate Adaptive Regression Splines (MARS)

  • Ordinary Least Squares Regression (OLSR)

  • Stepwise Regression

Bài toán phân loại (Classification)

Bài toán phân lớp là quá trình phân lớp 1 đối tượng dữ liệu vào 1 hay nhiều lớp đã cho trước nhờ 1 mô hình phân lớp (model) thuộc lộ trình học machine learning

  • Mô hình này được xây dựng dựa trên 1 tập dữ liệu được xây dựng trước đó có gán nhãn (hay còn gọi là tập huấn luyện).

  • Quá trình phân lớp là quá trình gán nhãn cho đối tượng dữ liệu.

  • Bài toán phân lớp (classification) và bài toán gom cụm (cluster) là 2 bài toán lớn trong lĩnh vực Machine Learning (machine learning).

Như vậy, nhiệm vụ của bài toán phân lớp là cần tìm 1 mô hình phần lớp để khi có dữ liệu mới thì có thể xác định được dữ liệu đó thuộc vào phân lớp nào.

Có nhiều bài toán phân lớp dữ liệu như phân lớp nhị phân (binary classification), phân lớp đa lớp (multiclass classification), phân lớp đa trị.

  • Bài toán phân lớp nhị phân là bài toán gán nhãn dữ liệu cho đối tượng vào 1 trong 2 lớp khác nhau dựa vào việc dữ liệu đó có hay không có các đặc trưng (feature) của bộ phân lớp.

  • Bài toán phân lớp đa lớp là quá trình phân lớp dữ liệu với số lượng lớp lớn hơn 2. Như vậy với từng dữ liệu phải xem xét và phân lớp chúng vào những lớp khác nhau chứ không phải là 2 lớp như bài toán phân lớp nhị phân. Và thực chất bài toán phân lớp nhị phân là 1 bài toán đặt biệt của phân lớp đa lớp.

Ứng dụng của bài toán này được sử dụng rất nhiều và rộng rãi trong thực tế ví dụ như bài toán nhận dạng khuôn mặt, nhận diện giọng nói, phát hiện email spam, …

Và đối với các bài toán phân lớp dữ liệu sử dụng các thuật toán học có giám sát (supervised learning) để xây dựng mô hình cho bài toán này.

Xây dựng mô hình Decision Trees và Random Forests

Đây là phương pháp xây dựng mô hình ra quyết định dựa trên các giá trị thực của những thuộc tính trong dữ liệu. Sự quyết định được rẽ nhánh trong cấu trúc cây cho đến khi quyết định dự đoán được đưa ra cho một mẫu nhất định như minh hoạ ở Hình 9. Phương pháp này được sử dụng trong việc huấn luyện dữ liệu cho bài toán phân lớp và hồi quy. Vì sự nhanh chóng, chính xác nên phương pháp này rất được ưa chuộng trong machine learning.

Các thuật toán cây quyết định phổ biến nhất bao gồm:

  • Chi-squared Automatic Interaction Detection (CHAID)

  • Classification và Regression Tree – CART

  • Conditional Decision Trees

  • C4.5 và C5.0

  • Decision Stump

  • Iterative Dichotomiser 3 (ID3)

xây dựng mô hình Decision Treesxây dựng mô hình Decision Treesxây dựng mô hình Decision Trees

Xây dựng mạng Neural Network

Mạng nơron nhân tạo là các mô hình được lấy cảm hứng từ cấu trúc và chức năng của mạng lưới thần kinh sinh học. Hình 13 minh hoạ cho một mạng truyền thẳng. Nhóm thuật toán này có thể được sử dụng cho bài toán phân lớp và hồi quy với rất nhiều biến thể khác nhau cho hầu hết các vấn đề. Tuy nhiên, trong bài viết này mình chỉ trình bày các thuật toán cổ điển và phổ biến nhất:

  • Back-Propagation (mạng lan truyền ngược)

  • Perceptron (Mạng lan truyền thẳng)

  • Multi-layer perceptron (Mạng truyền thẳng đa lớp)

  • Hopfield Network

  • Radial Basis Function Network (RBFN)

Xây dựng mạng Convolutional Neural Network (CNN)

Convolutional Neural Network (CNNs – Mạng nơ-ron tích chập) là một trong những mô hình Deep Learning tiên tiến. Nó giúp cho chúng ta xây dựng được những hệ thống thông minh với độ chính xác cao như hiện nay. Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng các hàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong các node. Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo.

Mạng CNN sử dụng 3 ý tưởng cơ bản:

  • Các trường tiếp nhận cục bộ (local receptive field)

  • Trọng số chia sẻ (shared weights)

  • Tổng hợp (pooling).

Xây dựng mạng Recurrent Neural Network (RNN)

Trong bài toán xử lý ngôn ngữ (NLP) thì không thể xử lý cả câu được và người ta tách ra từng từ làm input, giống như trong video người ta tách ra các ảnh (frame) làm input.

Phân loại bài toán RNN

  • One to one: mẫu bài toán cho Neural Network (NN) và Convolutional Neural Network (CNN), 1 input và 1 output, ví dụ với CNN input là ảnh và output là ảnh được segment.

  • One to many: bài toán có 1 input nhưng nhiều output, ví dụ: bài toán caption cho ảnh, input là 1 ảnh nhưng output là nhiều chữ mô tả cho ảnh đấy, dưới dạng một câu.

  • Many to one: bài toán có nhiều input nhưng chỉ có 1 output, ví dụ bài toán phân loại hành động trong video, input là nhiều ảnh (frame) tách ra từ video, ouptut là hành động trong video

  • Many to many: bài toán có nhiều input và nhiều output, ví dụ bài toán dịch từ tiếng anh sang tiếng việt, input là 1 câu gồm nhiều chữ: “I love Vietnam” và output cũng là 1 câu gồm nhiều chữ “Tôi yêu Việt Nam”.

Xây dựng mạng Recurrent Neural Network (RNN)Xây dựng mạng Recurrent Neural Network (RNN)Xây dựng mạng Recurrent Neural Network (RNN)

Triển khai (Deploy) Machine Learning Model trên Production

Bạn cần chuẩn bị cho hệ thống Machine Learning sẵn sàng chạy tốt ở môi trường production (là môi trường người dùng cuối họ truy cập); 

Là một giải pháp phần mềm, hệ thống Machine learning này sẽ được thử nghiệm trước và cần được theo dõi đầy đủ ngay cả khi đã chạy thực tế

Trong quá trình chạy hệ thống Machine learning, bạn vẫn cần phải bổ sung thêm dữ liệu để huấn luyện máy ngày càng chính xác hơn.

Machine Learning trên trình duyệt và TensorFlowJS

Tensorflow.js là một thư viện học máy mới ra mắt của tensorflow. Với tensorflow.js, bạn không những có thể chạy những mô hình học máy ngay trên trình duyệt của mình để quan sát quá trình làm việc nó mà thậm chí còn có thể TRAIN cả model trên đây nữa.

TensorFlow là một thư viện mã nguồn mở (open-source) cho các ứng dụng machine learning. TensorFlow cũng có thể được sử dụng để implement các neural networks hay các thuật toán deep learning.

Được phát hành tháng 11, 2015, ban đầu TensorFlow là một thư viện Python. Nó được sử dụng khả năng tính toán của CPU và GPU để training và đánh giá các machine learning models. Và tất nhiên, thời điểm đó, nó được thiết để chạy trên các máy chủ có hiệu suất cực cao và đắt tiền.

Gần đây, TensorFlow đã thay đổi rất nhiều, khi nó có thể chạy trên các thiết bị có hiệu suất thấp hơn Mobile hay trình duyệt web.

TensorFlowJSTensorFlowJSTensorFlowJS

Chắc hẳn bạn đã nắm cho mình trong tay lộ trình học machine learning. Nhưng học machine learning ở đâu cũng là vấn đề khó khăn cho khá nhiều người. Đối với các bạn ở HCM và Hà Nội có thể tham khảo ngay khóa học 40h chinh phục Machine Learning/Deep Learning của trường Đại học Bách Khoa bạn nhé.