[ML – 14] Machine Learning long term and a Learning path
Như đã nói trong bài viết trước, với lượng kiến thức về toán học hạn hẹp ta đã có thể hiểu được các mô hình cơ bản của Machine Learning như Linear Regression, Logistic Regression hay ANN, nhưng để đi sâu hơn, hiểu được nhiều mô hình hơn, thì đây là lúc các bạn nên bổ sung thêm kiến thức toán học một cách nghiêm túc. Mặc dù vậy nhưng đến thời điểm này, với những gì ta đã tìm hiểu, các bạn hoàn toàn có thể tìm một framework hay library, trong đó đã chứa sẵn nhiều giải thuật của Machine Learning tiên tiến hiện nay hay thậm chí cả Deep Learning và sử dụng chúng để phát triển hệ thống bạn muốn. Tuy nhiên kết quả thu được có thể sẽ không quá tốt như khi ta thực sự hiểu chúng, cũng như việc lập trình truyền thống, hiện nay nhiều người chẳng cần có kiến thức về cấu trúc dữ liệu và giải thuật và dĩ nhiên họ thường không tiến xa trong công việc của mình. Suy nghĩ theo một chiều hướng khác, việc sử dụng thư viện một cách trực tiếp như vậy có thể giúp bạn tránh được sự nhàm chán trong quá trình tìm hiểu lý thuyết, và sau này các bạn cũng hoàn toàn có thể bổ sung kiến thức. Nếu bạn có suy nghĩ nghiêm túc trong việc học Machine Learning thì tôi không ủng hộ phương pháp này cho lắm. Vậy nên trong bài viết này, tôi sẽ liệu kê những kiến thức cần có để ta có thể dễ dàng hiểu được những kiến thức của Machine Learning.
Bản chất ML là một phần hình ảnh của thống kê (Statistics) trong khoa học máy tính, việc tìm ra “parttern” sẽ giúp cho các nhà thống kê, phân tích dự đoán được thị trường. Bên cạnh đó rất nhiều kiến thức của thống kê lại xuất phát từ môn học mà phần lớn chúng ta căm ghét “Giải tích” (Calculus). Và dĩ nhiên để làm việc với số lượng feature lớn hay sự phức tạp của mạng neural (ANN) thì chúng ta lại cần tới “Đại số tuyến tính” (Linear Algebra). Nếu như bạn không phải lập trình viên hay còn ít kinh nghiệm thì cách implement ML lại là một thử thách khác mà bạn sẽ gặp phải vì giới hạn hiện nay các hệ thống ML gặp phải chính là performance. Sau cùng là tìm hiểu các giải thuật ML, các kĩ thuật xử lý (Preprocessing, Regularization cho Overfitting, …). Và nếu bạn hứng thú với AI, thì ta còn nhiều điều nữa phải học…
Giờ ta hãy xem, mình cần gì cho chặng đường dài hơi phía trước:
1. Linear Algebra: (Đại số tuyến tính)
Trong ML, Lineaer Algebra (LA) xuất hiện nhan nhản do phải xử lý cấu trúc dữ liệu cho giải thuật cũng như số lượng feature lớn. Một số kiến thức và chủ đề các bạn nên quan tâm:
– Vector
– Matrix (Operation & Projection)
– Tensor
– Dot product & Cross product (Tích vô hướng và tích có hướng)
– Principal Component Analysis (PCA)
– Singular Value Decomposition (SVD)
– Eigendecomposition of a matrix
– LU Decomposition
– QR Decomposition/Factorization
– Symmetric Matrices
– Orthogonalization & Orthonormalization
– Eigenvalues & Eigenvectors
– Vector Spaces
– Norms
2. Probability Theory & Statistics: (Xác suất và Thống kê)
ML có sự kế thừa rất nhiều từ thống kê đơn giản vì mục đích của chúng đều là Pattern Recognition. Nếu nắm được kiến thức về thống kê tôi tin rằng ta còn hiều nhiều hơn về những việc diễn ra quanh ta.
– Probability Rules & Axioms
– Random Variable
– Mean and Expectation, Variance, Standard Deviation
– Likelihood (Các bạn được nghe nhắc đến trong bài về Logistic Regression)
– Distribution (Bernoulli, Binomial, Multinomial, Normal hay Gaussian, Joint, Conditional)
– Combinatorics (Liên quan tới toán rời rạc và đồ thị)
– Bayes’ Theorem
– Moment Generating Functions
– Maximum Likelihood Estimation (MLE)
– Prior and Posterior
– Maximum a Posteriori Estimation (MAP)
– Sampling Methods
3. Calculus: (Giải tích)
Việc biến đổi các tham số hay trọng số trong ML để đưa ra được mô hình dự đoán tốt sử dụng nhiều kĩ thuật của Calculus, chẳng hạn như Gradient Descent ta sử dụng đạo hàm, CNN (Convolution Neural Network) bạn nên hiểu về convolution, Back Propagation ta đã sử dụng Chain Rule trong việc tính đạo hàm, …
– Integral Calculus (Integral, Fundamental Theorem,..)
– Differential Calculus (Slope, Gradient and Derivative, L’Hospital Theorem, Mean Theorem, Taylor Series, …)
– Differential Equation (Laplace Transform, Convolution, …)
– Partial Derivative
– Vector-Value Function
– Directional Gradient
– Hessian
– Jacobian
– Laplacian and Lagragian Distribution
4. Algorithms and Optimizations: (Giải thuật và tối ưu)
ANN là một dạng graph nên dễ hiểu sao chúng ta nên biết về lý thuyết đồ thị, các giải thuật Gradient Descent hay Newton method để tối thiểu hàm số..
– Data Structure (Binary Trees, Hashing, Heap, Stack, …)
– Graph
– Batch/Stochastic/Mini-Batch Gradient Descent
– …
Và lời cuối trong bài viết này, các bạn đừng hoảng sợ với lượng kiến thức có vẻ “khổng lồ” này, bản thân tôi cũng không biết hết về chúng. Nhưng ta hãy tích luỹ từng ngày một, mọi kiến thức đều có sự liên kết, càng hiểu nhiều các bạn sẽ thấy càng “đói” kiến thức, và mỗi khi hiểu thêm một mô hình của ML, ta sẽ thấy lĩnh vực này đẹp hơn bao giờ hết.