Skip to content

Những kiến thức cần thiết để học tốt Machine Learning trong vòng 2 tháng. Essential Knowledge for learning Machine Learning in two months.

Notifications You must be signed in to change notification settings

bach-long/learn-machine-learning-in-two-months

 
 

Repository files navigation

Lộ trình học Machine Learning, Deep Learning cho người mới bắt đầu

Tôi đã từng học Machine Learning trong vòng 2 tháng và tôi tin bạn cũng có thể làm được.

Lộ trình sẽ giúp bạn nắm chắc công nghệ này từ cơ bản đến nâng cao, xây dựng Machine Learning model từ python thuần cho đến các thư viện cao cấp như TensorFlow hay Keras. Đi sâu phân tích bản chất vấn đề là giá trị cốt lõi của khóa học này.

P/S: Hãy để lại 1 star để team có động lực xuất bản các phần tiếp theo và cũng đừng quên chia sẻ tới bạn bè của bạn.

0. Mục lục


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


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


Python là ngôn ngữ được dùng nhiều nhất để làm Machine Learning vì tính đơn giản gọn nhẹ của nó. Nhưng để đưa vào Production thì tôi nghĩ Javascript cũng là một lựa chọn không tồi. Tôi sẽ chia sẻ về Machine Learning với Javascript trong các phần tiếp theo.

  • a. Cài đặt Python và các thư viện cần thiết:

    • Windows
      • Python
      • Pip
      • Jupyter Notebook
      • TensorFlow
      • Annaconda
    • Mac
      • Python
      • Pip
      • Jupyter Notebook
  • b. Tính chất đặc điểm

    Python là ngôn ngữ thông dịch có:

    • Điểm mạnh:
      • Dễ viết/ Dễ đọc
      • Quy trình phát triển phần mềm nhanh vì dòng lệnh được thông dịch thành mã máy và thực thi ngay lập tức
      • Có nhiều thư viện mạnh để tính toán cũng như làm Machine Learning như Numpy, Sympy, Scipy, Matplotlib, Pandas, TensorFlow, Keras, vv.
    • Điểm yếu:
      • Mang đầy đủ điểm yếu của các ngôn ngữ thông dịch như tốc độ chậm, tiềm tàng lỗi trong quá trình thông dịch, source code dễ dàng bị dịch ngược.
      • Ngôn ngữ có tính linh hoạt cao nên thiếu tính chặt chẽ.
  • c. Các hàm dựng sẵn và kiểu dữ liệu trên Python

  • d. Vòng lặp

  • e. Hàm

3. Thư viện Numpy và TensorFlow


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


  • a. Mô hình Hồi quy tuyến tính (Linear Regression Model)

  • b. Hàm mất mát (Loss Function)

    • Định nghĩa

    Hàm mất mát trả về một số không âm thể hiện mức độ chênh lệch giữa giá trị mà model của chúng ta dự đoán và giá trị thực tế.

    • Mô phỏng thực tế
  • c. Thuật toán tối ưu Loss Function (Optimization Algorithms)

    • Normal Equation
      • Công thức toán học
      • Điểm mạnh
      • Điểm yếu
    • Gradient Descent
      • Công thức toán học
      • Điểm mạnh
      • Điểm yếu
  • d. Bài toán thực tế

    • Bài toán đo lường Hiệu quả sản xuất
      • Vấn đề
      • Giải quyết bằng mô hình Hồi quy tuyến tính

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


  • a. Mô hình Hồi quy Logistic (Logistic Regression Model)

    • Định nghĩa
    • Mô phỏng thực tế
  • b. Phân loại 2 lớp (Binary Classification)

    • Định nghĩa
    • Hàm phi tuyến sigmoid
    • Hàm mất mát (Loss Function)
    • Thuật toán Gradient Descent
  • c. Phân loại nhiều lớp (Multiclass Classification)

    • Định nghĩa
    • Hàm mất mát (Loss Function)
    • Thuật toán Gradient Descent
  • d. Hiện tượng Overfitting và một số cách khắc phục

  • e. Đánh giá mô hình

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


  • a. Mô hình Cây quyết định (Decision Trees)

    • Định nghĩa
    • Mô phỏng thực tế
  • b. Các thuật toán

    • ID3
    • C4.5
    • C5.0
    • CART
  • c. Triển khai thuật toán CART

    • Câu hỏi (Question)
  • d. Bài toán phân loại ô tô

    • Vấn đề
    • Giải quyết bằng mô hình Cây quyết định
  • e. Mô hình Random Forests

    • Định nghĩa

7. Xây dựng mạng Neural Network


  • a. Neural Network

    • Định nghĩa
    • Mô phỏng thực tế
  • b. Hàm kích hoạt phi tuyến

    • Sigmoid
    • Tanh
    • ReLU
  • c. Thuật toán lan truyền ngược (backpropagation)

    • Ôn lại đạo hàm hàm hợp (Chain Rule)
    • Công thức
    • Mô phỏng thực tế
  • d. Thuật toán tối ưu Loss Function (Optimization Algorithms)

    • Thuật toán Gradient Descent
  • e. Một số vấn đề khi huấn luyện Neural Network

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


Nếu bạn chưa có kiến thức về thị giác máy tính (Computer Vision) thì bạn nên đọc thêm về loạt bài viết tại đây.

Một slide mình đã từng chia sẻ tại sự kiện Google Cloud Next MienTrung 2018.

  • a. Convolutional Neural Network

    • Định nghĩa

      Convolutional Neural Networks tương đồng với mạng Neural Networks thông thường, bao gồm nhiều neuron với mục đích học được các tham số (weightsbiases). Mạng này có:

      • Đầu vào: Những bức ảnh dưới dạng Pixel
      • Đầu ra: Các lớp cần phân loại

      Ví dụ tôi muốn làm bài toán phân loại chó mèo, thì đầu vào của tôi là rất nhiều ảnh chó mèo và lớp đầu ra có 2 neuron đại diện tương ứng cho chó và mèo.

    • Mô phỏng thực tế

    • Ứng dụng thực tế

      Bài toán Ảnh minh họa
      Phân loại đối tượng trong ảnh (Image Classification)
      Phát hiện đối tượng (Object Detection)
      Phụ đề cho ảnh (Image Captioning)
      Phân đoạn ảnh (Image Segementation)
      Xử lý ảnh (Image Processing)

    Ảnh từ cs231, analyticsvidhya, iospress, quora, slideshare

    • Quá trình mạng nhận diện một ảnh (Inference)

      • Bước 1: Ảnh sẽ được chuyển về dưới dạng ma trận các pixel
      • Bước 2: Ma trận của ảnh khi đi qua các lớp ẩn (hidden layer) sẽ được trích xuất đặc trưng cũng như biến đối phi tuyến thành ma trận kích thước nhỏ hơn nhưng chứa đựng nhiều đặc trưng của bức ảnh hơn.
      • Bước 3: Sau khi ma trận của ảnh được biến đổi, nó được đưa qua lớp cuối cùng là một layer 2 neuron, mỗi neuron này sẽ đại diện cho xác suất ảnh đưa vào là chó hoặc mèo.
  • b. Tại sao lại cần dùng Convolutional Neural Network?

    • Nhược điểm của mạng kết nối đầy đủ (Fully Connected Network)

      • Dễ bị Overfit do lượng tham số cần học quá lớn và data quá nhỏ
      • Mạng không phân loại được cùng một đối tượng nhưng ở vị trí khác nhau trong ảnh
    • Ưu điểm của mạng CNN

      • Lượng tham số ít hơn nhiều so với mạng kết nối đầy đủ. Các lớp tích chập (CONV), các lớp Pooling giúp trích xuất đặc trưng của ảnh khiến ma trận ảnh đi qua mỗi lớp nhỏ dần đi, vì thế lượng tham số cần học cũng giảm theo.
      • Có tính kháng dịch chuyển. Vì loại đi những dữ liệu thừa có ảnh hưởng đến vị trí của đối tượng nên mạng nhận diện chính xác một đối tượng nằm ở các vị trí khác nhau trong một ảnh.
  • c. Các mạng CNN thông dụng

    • VGG 16
    • ResNet
    • GoogleNet
  • d. Bộ lọc

    Vector/ Ma trận trượt trên ma trận khác để trích xuất các dữ liệu đặc trưng, loại bỏ những dữ liệu không cần thiết.

    Bộ lọc có rất nhiều tên khác nhau:

    • Kernel
    • Filter
    • Window
    • Mask
    • Filter Mask
  • e. Phép tích chập (Convolution)

    • Công thức

      Mô phỏng công thức:

      Hàm f(m) đại diện là ô vuông màu xanh và Hàm g(n-m) đại diện cho ô vuông màu đỏ. Tích chập (f*g)[n] thể hiện mức độ giao hoán của hai hàm f(m)g(n-m) tại ví trí n.

      • Tại vị trí n mà 2 hàm giao hoán mạnh nhất, tức là 2 ô vuông trùng nhau thì giá trị tích chập là lớn nhất
      • Tại vị trí n mà 2 hàm không giao hoán, tức là 2 ô vuông không trùng nhau thì giá trị tích chập là bằng 0
      • Giá trị tích chập tăng dần tỉ lệ thuận với mức độ giao hoán của 2 hàm

      Sử dụng tích chập, ta có thể trích xuất tính chất từ ma trận của ảnh dựa trên những ma trận nhỏ (filter) cho sẵn.

    • Tích chập 1D rời rạc

      Tích chập 1D là một vector (filter) trượt trên một ma trận, qua mỗi bước trả về tích vô hướng của filter với giá trị của ma trận mà filter trượt lên trên.

    • Tích chập 2D rời rạc

      Tích chập 2D là một ma trận 2 chiều (filter) trượt trên một ma trận khác, qua mỗi bước trả về tích vô hướng của filter với giá trị của ma trận mà filter trượt lên trên.

    Ảnh từ machinelearninguru

    Hai cặp filter mỗi cặp 3 filter trượt lần lượt trên một bức ảnh 3 channels.

    • Loại tích chập

    Giá trị ma trận của bộ lọc quyết định đầu ra của phép tích chập.

    • Bộ lọc Sobel X lọc ra tính chất đặc trưng theo chiều dọc
    • Bộ loc Sobel Y lọc ra tính chất đặc trưng theo chiều ngang.
  • f. Pooling

    • Max-Pooling

      Là một dạng filter trả về giá trị lớn nhất của phần tử trong ma trận mà filter đang trượt qua.

    • Average-Pooling

      Là một dạng filter trả về giá trị trung bình của các phần tử trong ma trận mà filter đang trượt qua.

  • g. Các hàm kích hoạt

    • Sigmoid
    • Tanh
    • ReLU
  • h. Cấu trúc mạng

    Ảnh từ cs231 - Stanford

    Các thành phần của một CNN

    • Các lớp Convolution (Convolution Layer)
    • Các hàm kích hoạt (Activation Function)
    • Các lớp pooling
    • Các lớp fully-connected
  • i. Công thức tính toán đầu ra ở các lớp

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


a. Language Models

b. Recurrent Neural Network (RNN)

  • Giới thiệu RNN
  • Cấu trúc mạng RNN
  • Gate Recurrent Unit (GRU)
  • Long Short-Term Memory (LSTM)

b. Vấn đề thường gặp và cách giải quyết

  • Vanishing
  • Expoding Gradient Descent

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


a. Triển khai Tensorflow phân tán (Distributed TensorFlow)

b. TensorFlow với AWS S3

c. TensorFlow Serving

  • Giới thiệu
  • Kiến trúc
  • Cài đặt
  • Restful API
  • Xây dựng TensorFlow ModelServer
  • Triển khai Inception Model với TensorFlow và Kubernetes

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


Phần này được mô phỏng chủ yếu trên bài nói của tôi tại Google I/O Extended Hanoi 2018. Slide và code của bài nói này nằm tại đây.

  • a. Lịch sử TensorFlowJS
  • b. Các API chính của TensorFlowJS
  • c. Xây dựng mô hình Hồi quy tuyến tính
  • d. Xây dựng mạng Convolutional Neural Network(CNN)
  • e. MobileNet
  • f. Transfer Learning

About

Những kiến thức cần thiết để học tốt Machine Learning trong vòng 2 tháng. Essential Knowledge for learning Machine Learning in two months.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 100.0%