α
Published on

Các tài liệu và khoá học về học máy

1932 words10 min read
Authors

Việc học về học máy của tôi đã được giúp ích rất nhiều bởi các khoá học online. Ở trang này tôi sẽ tổng hợp lại các tài liệu và các khoá học hay về học máy kèm một vài đánh giá. Hi vọng các tài liệu / khoá học này sẽ phần nào giúp ích được cho các bạn mới làm quen với học máy / học sâu.

Các khoá học

Khoá nhập môn học máy: Coursera — Machine learning (Andrew Ng)

Link: https://www.coursera.org/learn/machine-learning.

Đây là khoá học nhập môn học máy được rất nhiều người đánh giá là tốt. Đầu vào của khoá học không đòi hỏi về kiến thức toán, tuy nhiên việc học trước Đại số tuyến tính sẽ giúp hiểu kĩ hơn về các thuật toán được trình bày ở đây. Cá nhân tôi thấy GS. Andrew Ng có cách truyền tải kiến thức rất dễ hiểu, vì thế, đây là khoá học rất hữu ích cho các bạn mới làm quen với học máy.

Nhược điểm của khoá này là dạy code bằng Matlab. Ngôn ngữ này không được sử dụng nhiều cho các hệ thống production ở Việt Nam, vì thế cũng không phải ngôn ngữ được ưu tiên tuyển dụng ở nhiều công ty. Do vậy, các bạn có thể học và làm bài tập bằng Matlab để nắm được khái niệm, sau đó tự code lại sang Python hoặc ngôn ngữ bạn quen thuộc là tốt nhất. Một điểm cần lưu ý nữa là Matlab là một phần mềm trả phí mà có rất ít các trường Đại học ở VN mua cho sinh viên sử dụng. Rất may mắn là chúng ta có thể sử dụng phần mềm miễn phí Octave để làm tất cả các bài tập trong khoá này.

Các bạn có thể học khoá này miễn phí và nộp khoảng 79$ nếu muốn lấy chứng chỉ.

Khoá Coursera — Deep learning Specialization (Andrew Ng)

Link: https://www.coursera.org/specializations/deep-learning.

Sau khi học xong cơ bản về học máy, các bạn có thể tiếp cận học sâu - một phương pháp đang rất phổ biến trong các sản phẩm hiện tại do hiệu quả mà nó mang lại. Khoá học này cung cấp các kiến thức nền cơ bản để các bạn làm quen với học sâu. Các kiến thức trong khoá học được giới thiệu theo chiều rộng, tức là bao trùm nhiều lĩnh vực khác nhau. Khoá học cũng có các bài tập để thực hành.

Thực tế khoá học này gồm 5 khoá học nhỏ, bao gồm:

  • Neural Networks and học sâu
  • Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
  • Structuring học máy Projects
  • Convolutional Neural Networks
  • Sequence Models

Trong 3 khoá đầu, các bạn sẽ được học về neural networks, các phương pháp thiết kế, đánh giá, tối ưu các hệ thống học sâu. Ở khoá thứ 4 - Convolutional Neural Networks, các bạn sẽ được học về các phương pháp học sâu ứng dụng chủ yếu trong thị giác máy tính. Khoá học thứ 5 - Sequence Models giới thiệu các phương pháp học sâu chủ yếu dùng trong xử lý ngôn ngữ tự nhiên.

Các bạn nên học tất cả các khoá ở đây để có cái nhìn tổng quan nhất về một dự án học sâu. Thực tế các kiến thức thuộc khoá Convolutional Neural Networks cũng có thể được áp dụng trong lĩnh vực xử lý ngôn ngữ tự nhiên, ngược lại, các kiến thức trong khoá Sequence Models cũng áp dụng trong lĩnh vực thị giác máy.

Các bạn có thể học các khoá này miễn phí bằng cách apply financial aid hoặc trả phí khoảng 50$ / tháng để có cơ hội nhận được chứng chỉ của khoá học. Các chứng chỉ được cấp có thể được dùng để bỏ vào CV, rất hữu ích.

Stanford CS231n — Convolutional Neural Networks for Visual Recognition

Link: http://cs231n.stanford.edu/.

Đây là khoá học rất nổi tiếng về thị giác máy của Đại học Stanford. Nó cung cấp các kiến thức cơ bản và rất sâu về các vấn đề của thị giác máy tính và liên tục được cập nhật mỗi năm. Cá nhân tối thây khoá này nặng về kiến thức toán hơn khoá Convolutional Neural Networks được giới thiệu ở trên.

Các bạn có thể xem video và làm bài tập online mà không phải trả bất kỳ khoản phí nào. Tôi cũng từng học thị giác máy tại khoá học này. Bài tập của khoá này có thể hơi khó với những người mới, tuy nhiên bạn có thể tham khảo lời giải của những người đi trước ở trên mạng. Lưu ý là việc tham khảo này chỉ nên thực hiện khi các bạn đã dành rất nhiều thời gian tìm kiếm trong tài liệu hoặc video mà không thấy câu trả lời. Các bạn cũng có thể tham khảo câu trả lời từ những người khác sau khi hoàn thành các bài tập.

Lưu ý:

  • Việc học kĩ các khái niệm và làm bài tập là rất cần thiết cho các khoá học về học máy. Các bạn nên tập trung học chắc kiến thức và làm hết các bài tập trong các khoá học mình tham gia để đảm bảo việc học đạt chất lượng tốt, không nên vì vội vàng mà bỏ qua những việc này.
  • Các khoá học thường phải trả phí để có chứng chỉ, tuy nhiên nhiều khoá học có thể học miễn phí. Riêng với các bạn sinh viên Việt Nam có thể tìm hiểu cách apply financial aid ở Coursera để có chứng chỉ miễn phí.
  • Việc học các khoá học online này có thể được thực hiện song song với các khoá học trên trường đại học. Với các vấn để khó hiểu, các bạn có thể trao đổi trực tiếp trên forum lớp học (nếu có) và có thể hỏi trực tiếp thầy cô giáo hoặc những người đi trước để hiểu sâu hơn.

Yann LeCun's Deep Learning Course at CDS

Link: https://cds.nyu.edu/deep-learning/.

Khóa học này mới ra, có lượng kiến thức bao trùm các lĩnh vực của học sâu và được dạy bởi một trong những cây đại thụ của ngành này là Yann LeCun. Các bạn có thể tìm thấy tài liệu và các video bài giảng ở link phía trên.

Blog / Tài liệu hay

Blog Machine learning cơ bản

Blog Machine learning cơ bản là một blog rất nổi tiếng ở Việt Nam về các kiến thức học máy, viết bởi anh Vũ Hữu Tiệp. Việc học trên blog này có thể được thực hiện song song với việc học khoá học máy của Andrew Ng được giới thiệu ở trên, hoặc các khoá học về học máy ở trường. Ngoài blog này, tác giả còn có Ebook Machine learning cơ bản cho những bạn nào muốn đọc sách và một tài liệu tổng hợp về toán cho học máy tổng hợp các kiến thức toán cần thiết để tiếp cận với học máy / học sâu.

Các bài viết trên blog của anh Tiệp hết sức chi tiết và chỉnh chu. Đây là tài liệu mà tôi rất khuyến khích các bạn đọc khi mới tiếp cận học máy. Cá nhân tôi cũng đã học rất nhiều từ blog này.

Ngoài lề chút: Một điều khá vui là tôi từng được tham gia xây dựng chức năng tìm kiếm cho blog này [link].

Sách: Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems

Link: https://www.amazon.com/Hands-Machine-Learning-Scikit-Learn-TensorFlow/dp/1492032646/.

Cuốn sách này là cuốn sách thiên về thực hành học máy và học sâu với 2 framework rất phổ biến là Scikit-Learn và Keras. Kiến thức trong cuốn này trải rộng trên nhiều thuật toán, mô hình phổ biến hiện nay. Cuốn này khá phù hợp với những bạn muốn tiếp cận theo hướng thực hành.

Sách: Deep learning

Link: https://www.deeplearningbook.org/.

Cuốn Deep learning tôi giới thiệu ở đây được viết bởi những người "sừng sỏ" nhất trong ngành. Nếu các bạn muốn tiếp cận và hiểu sâu các phương pháp học sâu theo cách gần nhất với lý thuyết toán học, đây là một cuốn sách nên đọc. Lưu ý là cuốn sách này sẽ không hướng dẫn code.

Sách: Dive into Deep learning - Đắm mình vào học sâu

Link: https://d2l.ai/.

Bản dịch tiếng Việt: https://d2l.aivivn.com/intro_vn.html.

Cuốn sách này tập trung viết về các mô hình và cách xây dựng một hệ thống học sâu khá cân bằng giữa lý thuyết và ứng dụng. Theo cá nhân tôi, các giải thích toán trong cuốn sách này dễ hiểu và dễ "hấp thụ" hơn cuốn Deep learning ở trên. Bên cạnh đó, cuốn sách cũng có code để các bạn có thể thực hành song song với việc học lý thuyết. Nội dung cuốn sách này khá phong phú, bao trùm nhiều mảng của học sâu.

Các tutorials của thư viện OpenCV

Link: https://docs.opencv.org/4.5.0/d9/df8/tutorial_root.html.

OpenCV là một thư viện rất phổ biến sử dụng trong các bài toán thị giác máy. Các nhân tôi thấy việc rèn luyện các kỹ năng xử lý ảnh bằng OpenCV là kỹ năng gần như bắt buộc với các bạn muốn bước chân vào lĩnh vực này. Rất may OpenCV có một nguồn tài liệu phong phú, đầy đủ trên mạng do được sử dụng bởi rất nhiều người. OpenCV Tutorials tôi giới thiệu ở đây là một tài liệu khá đầy đủ, chi tiết về cách triển khai các thuật toán xử lý ảnh trên OpenCV. Phương pháp học tài liệu này chỉ là đọc và làm theo từng tutorial. Ở một số bài các thuật toán không được giải thích kĩ, các bạn có thể tìm kiếm các nguồn tài liệu khác trên mạng để đọc trước, sau đó mới thực hành với code trong các bài tương ứng.

Các nguồn tài liệu khác

  • Sách Mathematics for Machine learning: Đây là cuốn sách tổng hợp lại các kiến thức Toán cho học máy và học sâu, bao gồm cả Đại số tuyến tính, Xác suất thống kê, cùng ứng dụng trong một số thuật toán học máy.

  • Blog về thị giác máy: PyImageSearch, Learn OpenCV.

  • Mã nguồn cho các mô hình mới nhất hiện nay, bao gồm các phiên bản được cài đặt bởi những người không phải tác giả bài báo: PapersWithCode.

  • Tổng hợp Top-down learning path: Machine Learning for Software Engineers: Một repo rất nổi tiếng về các tài liệu học máy, bắt đầu bởi một kĩ sư người Việt Nam.

Papers

Sau khi học xong các thuật toán cơ bản, chúng ta nên bắt đầu tập đọc các bài báo khoa học (papers) về học máy, học sâu. Đó là cách duy nhất để bắt kịp với các kiến thức, nghiên cứu mới nhất trong lĩnh vực này. Paper về các thuật toán cơ bản có thể được tìm thấy trong các tài liệu ở trên. Ngoài ra, PapersWithCode cũng là một trang web hay để tìm và đọc các paper mới nhất có mã nguồn. Với các paper khác, các bạn có thể tham khảo ở các mục sau của trang web arxiv.org.

Các khoá học, tài liệu ở trang này đang dần được hoàn thiện. Hiện tại các tài liệu chủ yếu thiên về học sâu và thị giác máy. Nếu các bạn thấy nên bổ sung thêm khoá học, tài liệu nào vào trang này, hãy nói với tôi qua trang liên hệ. Xin cảm ơn!.