Chào các bạn,
Sau bài viết cuối cùng mình đăng lên cách đây gần một năm trời, giờ đang dịp Spring Break nên mình mới có thời gian để viết lách chút xíu lại. Trong bài viết lần này, mình sẽ giới thiệu một số khoá học AI/ML hay của trường Stanford và cách mà bạn cũng có thể tự học tại nhà cho những ai hứng thú hay muốn thử sức với AI/ML.
Giới thiệu tổng quát

Nói về AI (artificial intelligence) và ML (machine learning) hay là DL (deep learning) thì có lẽ mấy cái tên này đã quá quen thuộc với những ai hứng thú với CS rồi. Thế nên mình sẽ dành vài phút giới thiệu tổng quát về những khái niệm này và những điểm khác nhau/ giống nhau nhé.
Như bạn đã thấy ở cái diagram phía trên, Deep Learning là một mảng nhỏ của Machine Learning, cũng là một mảng của Artificial Intelligence.
- AI. Khái niệm này đơn giản giống cái tên của nó: Trí tuệ nhân tạo. Con người ta từ xưa đến nay luôn khát vọng xây dựng một cỗ máy tính có khả năng thực hiện những công việc đòi hỏi sự suy nghĩ và trí thông minh của người mà không cần đến sự can thiệp của con người. Tại một hội nghị vào mùa hè năm 1956 ở trường Dartmouth, cái tên Artificial Intelligence đã ra đời với một bản lập trình được công khai tên là Logic Theorist, được xem là “the first AI program”.
- Sự trỗi dậy của ML. Như mình đã đề cập, ML là một mảng của AI, được phổ biến hoá vào khoảng những năm 1959 bởi Arthur Samuel (người tiên phong trong lĩnh vực AI/ML). Đơn giản là: tại sao thay vì chúng ta phải chỉ dạy cho máy tính mà không để cho nó tự học? Nói một cách khái quát, chúng ta nhồi nhét thật nhiều data vào để máy tính tự học những cái nó cần học thông qua nhiều thuật toán khác nhau như: statistic learning, Instance-based Algorithms, hay là Deep Learning mà chúng ta sắp đề cập đến. Rất nhiều những ví dụ trong đời sống hàng ngày sử dụng ML. Một trong số đó là tính năng đề xuất trên Youtube, nó học được những thói quen hay sở thích của bạn để đề xuất những video khác, dựa vào những video bạn đã xem và statistic của nhiều người khác nữa.
- Deep Learning là một mảng của Machine Learning, lấy cảm hứng từ cách mà bộ não chúng ta hoạt động cũng như xử lý thông tin hàng ngày. Rất và rất nhiều những nghiên cứu đang tập trung vào DL hiện nay, phải gọi đúng là “exploding”. Theo Gartner, số lượng công việc mở cho những kỹ sư DL đã tăng chóng mặt từ xấp xỉ con số 0 vào năm 2014 cho tới bây giờ đã vượt khỏi 41,000. Còn số lượng những bài nghiên cứu về DL chỉ có vài ngàn cách đây 15 năm cho tới bây giờ đã tăng lên gần 20 ngàn [1]. Đa số những ứng dụng bạn đang dùng trên điện thoại, máy tính hay nơi công cộng đều có thể đã được xây dựng từ DL.
Một số khoá học về AI/ML/DL ở Stanford
- CS131: Computer Vision
Class Website: http://vision.stanford.edu/teaching/cs131_fall2021/index.html
Course Description (from class website): "Ever wonder how robots can navigate space and perform duties, how search engines can index billions of images and videos, how algorithms can diagnose medical images for diseases, how self-driving cars can see and drive safely or how instagram creates filters or snapchat creates masks? In this class, we will explore all of these technologies and learn to prototype them. Lying in the heart of these modern AI applications are computer vision technologies that can perceive, understand and reconstruct the complex visual world. Computer Vision is one of the fastest growing and most exciting AI disciplines in today’s academia and industry. This 10-week course is designed to open the doors for students who are interested in learning about the fundamental principles and important applications of computer vision. We will expose students to a number of real-world applications that are important to our daily lives. More importantly, we will guide students through a series of well designed projects such that they will get to implement a few interesting and cutting-edge computer vision algorithms."
Lecture Videos: Rất tiếc là lớp học không được Stanford published trên Youtube nên các bạn nếu muốn học, thì chịu khó lên trang web, vào phần Lecture, để đọc các bài slides cũng như các recommended books. Class notes cũng khá bổ ích. Còn phần Assignment thì có thể được tìm ở đây.
Prerequisites: Nếu bạn vào trang web, kéo xuống dưới sẽ có phần prerequisites, gồm Proficiency in numpy, Linear Algebra, Calculus, Probability and Statistics.
Review: Mình lấy lớp này vào kỳ Fall năm nay. Nói chung, lớp học sẽ dạy cho bạn nhiều cái concepts cơ bản và nền tảng của Computer Vision, là nền móng cho lớp CS231N (CNN). Bạn sẽ không được học nhiều về AI/ML/DL ở trong lớp này. Riêng mình thấy lớp này thú vị nhưng phần dạy học hơi bị chán, bài tập thì cũng ok, không quá khó.
Recommend: 6/10
- CS221: Artificial Intelligence: Principles and Techniques
Class Website: https://stanford-cs221.github.io/autumn2019/
Course Description: Artificial intelligence (AI) has had a huge impact in many areas, including medical diagnosis, speech recognition, robotics, web search, advertising, and scheduling. This course focuses on the foundational concepts that drive these applications. In short, AI is the mathematics of making good decisions given incomplete information (hence the need for probability) and limited computation (hence the need for algorithms). Specific topics include search, constraint satisfaction, game playing,n Markov decision processes, graphical models, machine learning, and logic.
Lecture Videos: Rất may là Stanford có ghi hình và đăng các videos lên Youtube để mọi người có thể truy cập. Có tổng cộng 19 bài giảng (videos) cho 10 tuần. Mỗi tuần hai lectures (videos) nên các bạn có thể dành thời gian để phân bố tự học sao cho hiệu quả. Các slides và assignments đều ở trên website.
Prerequisites: Các bạn nên có kiến thức cơ bản về CS 103 or CS 103B/X, CS 106B or CS 106X, CS 109, and CS 161 (algorithms, probability, and object-oriented programming in Python) trước khi học khoá này.
Review: Mình lấy lớp này cũng vào kỳ Fall năm nay. Đây là một lớp học bắt buộc phải lấy cho những học sinh Stanford muốn chuyên ngành về CS và AI track. Đây giống như một lớp tổng quát, dạy qua cơ bản nhiều concepts/fields của AI như: deep learning, reinforcement learning, etc. Nó giống như một chiếc du thuyền chở bạn đi tham quan nhiều địa điểm khác nhau, nơi mà bạn có thể đặt chân lên du lịch vài ngày rồi lại đi tiếp nơi khác. Mình nghĩ mục đích của lớp này để bạn có cái nhìn chung về AI cũng như nhiều mảng nhỏ trong AI, để bạn biết được mình thích mảng nào hay không thích mảng nào. Riêng cá nhân mình thì mình thích nhất mảng Deep Learning. Nhưng mà nên lưu ý là tới tuần thứ 5 trở đi, khi mà học về Markov decision processes, mọi thứ sẽ bắt đầu trở nên khó dần. Bài tập rất thú vị và vui khi làm (ngồi code game Pacman rất vui). Nói chung, mình nghĩ lớp này phù hợp với những ai chưa từng tiếp xúc với AI và muốn tìm hiểu tổng quát về AI.
Recommend: 8/10
- CS230: Deep Learning
Class Website: https://cs230.stanford.edu/
Course description: Deep Learning is one of the most highly sought after skills in AI. We will help you become good at Deep Learning. In this course, you will learn the foundations of Deep Learning, understand how to build neural networks, and learn how to lead successful machine learning projects. You will learn about Convolutional networks, RNNs, LSTM, Adam, Dropout, BatchNorm, Xavier/He initialization, and more. You will work on case studies from healthcare, autonomous driving, sign language reading, music generation, and natural language processing. You will master not only the theory, but also see how it is applied in industry. You will practice all these ideas in Python and in TensorFlow, which we will teach. AI is transforming multiple industries. After this course, you will likely find creative ways to apply it to your work. This class is taught in the flipped-classroom format. You will watch videos and complete in-depth programming assignments and online quizzes at home, then come in to class for advanced discussions and work on projects. This class will culminate in an open-ended final project, which the teaching team will help you on.
Lecture Videos: Lớp này có hai thành phần: học trên lớp và học trên Coursera:
- Học trên lớp: https://www.youtube.com/watch?v=PySo_6S4ZAg&list=PLoROMvodv4rOABXSygHTsbvUz4G_YQhOb
- Coursera: https://www.coursera.org/specializations/deep-learning?action=enroll (hình như bây giờ đang được enroll miễn phí, nếu không bạn sẽ phải trả một khoảng tiền để học)
Nếu bạn nhìn vào schedule ở trên trang web, các bạn sẽ thấy mỗi tuần sẽ có một buổi học trên lớp và nhiều videos nhỏ được quay sẵn trên Coursera. Bởi vì mỗi kỳ học ở Stanford chỉ dài có 10 tuần nên bạn sẽ thấy tốc độ học rất nhanh. Tuy nhiên, nếu bạn follow đúng thời lượng trên Coursera, bạn sẽ thấy người ta đề là: Approximately 4 months to completeSuggested pace of 5 hours/week. Thế nên, nếu bạn không có thời gian, bạn không nhất thiết phải hoàn thành lớp học trong vòng 10 tuần như ở Stanford. Bài tập hay quiz đều ở Coursera và nó sẽ tự chấm điểm luôn cho bạn.
Prerequisites: Familiarity with programming in Python and Linear Algebra (matrix / vector multiplications). CS 229 may be taken concurrently.
Review: Mình lấy lớp này cùng lúc với mình lấy hai lớp ở trên: CS221 và CS131. Mình thực sự thích lớp này, vì sự phân bổ cũng như sắp xếp các nội dung rất hợp tình. Mặc dù đa số học trên Coursera nhưng mình thấy vẫn interesting và bổ ích bình thường (có lẽ do dịch covid mọi lớp học đều online nên mình cũng đã làm quen). Lớp này bình thường bị đánh giá hơi thấp, bởi hai lý do. 1/ Có một lớp khác, CS231N, cũng dạy nội dung tương tự nhưng được đánh giá là hay và tốt hơn lớp này. 2/ Trước dịch covid, đa số lớp đều học in-person nên người ta cho rằng phí tiền nếu đa số tự học trên Coursera. Bài tập thì đa phần cũng dễ chịu. Thú vị nhất là phần final project, mình có cơ hội được thử sức bắt tay và vận dụng kiến thức được học vào một dự án. Tuy nhiên, một điểm challenging cho những ai lần đầu học về DL như mình thì lúc làm dự án cũng hơi tốn nhiều thời gian.
Recommend: 9/10
- CS224N: Natural Language Processing with Deep Learning
Class website (winter 2017): https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1194/
Course Description: Methods for processing human language information and the underlying computational properties of natural languages. Focus on deep learning approaches: understanding, implementing, training, debugging, visualizing, and extending neural network models for a variety of language understanding tasks. Exploration of natural language tasks ranging from simple word level and syntactic processing to coreference, question answering, and machine translation. Examination of representative papers and systems and completion of a final project applying a complex neural network model to a large-scale NLP problem.
Lecture Videos: https://www.youtube.com/watch?v=8rXD5-xhemo&list=PLoROMvodv4rOhcuXMZkNm7j3fVwBBY42z
Prerequisites: Calculus and linear algebra; CS124, CS221, or CS229/CS230. Nên biết cơ bản về Deep Learning.
Review: Mình vừa lấy lớp này kỳ Winter vừa rồi và phải công nhận là lớp hay nhất mình từng lấy ở Stanford. Giáo sư thì khỏi nói rồi, Chris Manning, một legend trong làng NLP với hơn 170,000 citations. Nội dung lớp học thì phải học là rất updated, mà nhiều khi là toàn học về những cái papers của chính Chris Manning xuất bản. Mình nhớ Huyền Chip có nói trong blog của chị ấy rằng, nhiều khi lên lớp học về một cái thuật toán/paper mới được Chris Manning xuất bản ngày hôm qua. Bài tập thì hay và học được nhiều thứ. Cái trang web mà mình chia sẻ ở trên là lớp CS224N của Winter 2019 tại vì những videos lớp học ở Youtube cũng được ghi hình vào năm này. Một điểm khác biệt giữa Winter 2019 và Winter 2021 là cái Assignment 5 được updated vào năm nay. Nếu bạn vào trang web phía trên thì Assignment 5 là về Neural Machine Translation with ConvNets and subword modeling trong khi năm nay, người ta đổi mới thành Self-supervised learning and fine-tuning with Transformers. Nếu bạn muốn tìm hiểu thêm về bài tập Transformers này hay cập nhật những slides mới nhất từ lớp học năm nay thì truy cập vào đây (tuy nhiên, sẽ không có lecture videos). Lớp này đặc biệt ở chỗ 6 tuần đầu học rất nhanh các kiến thức cơ bản và hoàn thành xong tất cả các assignments. Từ tuần thứ 7 tới tuần thứ 10, các lectures đa số là Guest Lectures, và học sinh sẽ dành thời gian để làm final project instead of assignments. Về phần final project, có hai dạng: custom và default. Custom nghĩa là bạn được chọn làm tự do những gì mình muốn. Còn default thí làm theo hướng dẫn có sẵn (nhưng chỉ là ý tưởng, còn implementation mình phải tự làm). Mình để default project links ở đây (robustQA; IID-SQuAD ) nếu bạn nào interested thì có thể làm thử (really fun nhưng phải chịu bỏ tiền ra để rent cái VM on Azure/AWS).
Recommend: 10/10.
- CS231N: Convolutional Neural Networks for Visual Recognition
Class website (spring 2017): http://cs231n.stanford.edu/2017/
Course Description: Computer Vision has become ubiquitous in our society, with applications in search, image understanding, apps, mapping, medicine, drones, and self-driving cars. Core to many of these applications are visual recognition tasks such as image classification and object detection. Recent developments in neural network approaches have greatly advanced the performance of these state-of-the-art visual recognition systems. This course is a deep dive into details of neural-network based deep learning methods for computer vision. During this course, students will learn to implement, train and debug their own neural networks and gain a detailed understanding of cutting-edge research in computer vision. We will cover learning algorithms, neural network architectures, and practical engineering tricks for training and fine-tuning networks for visual recognition tasks.
Lecture Videos: https://www.youtube.com/watch?v=vT1JzLTH4G4&list=PLC1qU-LWwrF64f4QKQT-Vg5Wr4qEE1Zxk
Prerequisites: Proficiency in Python; CS131 and CS229 or equivalents; MATH21 or equivalent, linear algebra.
Review: Mình chưa lấy lớp này, mà sắp sửa lấy vào kỳ Xuân (vài ngày nữa). Đây phải học là một lớp huyền thoại mà học sinh CS-AI nào cũng phải nên lấy bởi sự chỉnh chu trong bài giảng cũng như chất lượng giảng dạy của giáo sư. Nếu bạn đã từng google hay tìm tài liệu về CNN hay Deep Learning, mình cá là kiểu gì google cũng sẽ đưa bạn về trang web tài liệu của lớp CS231N này. Nghe danh lớp này đã lâu nhưng giờ mới có cơ hội được học nên mình đang rất excited. Sau khi mình hoàn thành khoá học này (cỡ tháng 6), mình sẽ update review này cho mọi người.
Recommend: TBA
- CS229: Machine Learning
Class website (Autumn 2018): http://cs229.stanford.edu/syllabus-autumn2018.html
Course Description: Topics: statistical pattern recognition, linear and non-linear regression, non-parametric methods, exponential family, GLMs, support vector machines, kernel methods, deep learning, model/feature selection, learning theory, ML advice, clustering, density estimation, EM, dimensionality reduction, ICA, PCA, reinforcement learning and adaptive control, Markov decision processes, approximate dynamic programming, and policy search.
Lecture Videos: https://www.youtube.com/watch?v=jGwO_UgTS7I&list=PLoROMvodv4rMiGQp3WXShtMGgzqpfVfbU
Prerequisites: knowledge of basic computer science principles and skills at a level sufficient to write a reasonably non-trivial computer program in Python/numpy, familiarity with probability theory to the equivalency of CS109 or STATS116, and familiarity with multivariable calculus and linear algebra to the equivalency of MATH51.
Review: Mình chưa học lớp học nên không có review được nhưng mình có nghe nói từ nhiều người rằng lớp học rất khó và rất nặng về phần Toán của ML. Mình cũng đọc qua nhiều review từ trang Carta của Stanford thì thấy rằng mọi người than phiền về psets quá dài và khó. Mình xin trích lại một review như sau: “Don’t take this class unless you have made sure that you’ll have time in your schedule for it. CS 229 is probably the most time-consuming class I have taken at Stanford. The lengths of the problem sets are borderline unfair, so expect to spend a lot of time on this class. The content of the class is worthwhile if you have a strong interest in machine learning, but you won’t get anything out of it and will just make yourself miserable if you try to cram it into a quarter where you don’t have a lot of extra space in your schedule.”
Recommend: TBA
- CS234: Reinforcement Learning
Class website (Win 2019): https://web.stanford.edu/class/cs234/CS234Win2019/schedule.html
Course Description: To realize the dreams and impact of AI requires autonomous systems that learn to make good decisions. Reinforcement learning is one powerful paradigm for doing so, and it is relevant to an enormous range of tasks, including robotics, game playing, consumer modeling and healthcare. This class will briefly cover background on Markov decision processes and reinforcement learning, before focusing on some of the central problems, including scaling up to large domains and the exploration challenge. One key tool for tackling complex RL domains is deep learning and this class will include at least one homework on deep reinforcement learning.
Lecture Videos: https://www.youtube.com/watch?v=FgzM3zpZ55o&list=PLoROMvodv4rOSOPzutgyCTapiGlY2Nd8u
Prerequisites: proficiency in python, CS 229 or equivalents or permission of the instructor; linear algebra, basic probability.
Review: Cũng như 2 khoá trên, mình chưa có cơ hội được lấy lớp này nhưng có đọc qua reviews của học sinh Stanford đã lấy lớp này. Mình cũng có cơ hội được làm việc chung lab với giáo sư Emma Brunskill và rất thích với sự nhiệt tình và đam mê của cô. Một vài reviews mình đọc được như sau: “This class is probabilby one of the best classes the CS department offers. It has the perfect amount of theory and practice, and also deep into RL to the point where you actually understand what is happening. Lectures are very interesting and move at a reasonable pace. Do try to go to class most times, and read the lecture notes as you go through the course to make your experience even better.”, “I hate to say this, but as nice, enthusiastic, and smart a person as Emma is, she is really not a good lecturer. First of all, her slides are mostly borrowed instead of written by herself, and are full of mistakes that sometimes she only becomes aware of them when pointed out by students. Secondly, maybe related to the first point, her lectures are really disorganized. She apparently knows all the materials pretty well, but does a poor job showing the relationships and general structure between them, and I feel like I still do not have a systematic understanding of RL after taking this class. Thirdly, She really likes to go through hard, complex, but hardly useful proofs for theorems introduced in class, which, compounded with all those mistakes, makes lectures really hard to follow. Those proofs also appear in exams, which in my opinion does not contribute to my understanding of RL at all, but rather should show up in a math class. Last but not the least, the homework is decently interesting, but also is ridden with mistakes, which probably is because this class is still relatively new and have a lot of kinks to iron out.”
Recommend: TBA
Lời kết
Trên đây là một vài khoá học mình xin được giới thiệu tới các bạn để các bạn có thể tự học tại nhà. Mình sẽ update reviews trong thời gian sắp tới sau khi mình lấy nhiều lớp khác hơn. Có một vài các khoá khác cũng được ghi hình và đăng lên Youtube tại đây, bạn có thể tham khảo.
Huyền Chip có một bài blog nói về các lớp mà chị đã lấy/recommend, các bạn có thể tham khảo nhiều hơn tại đây.
- Vargas, Rocio & Mosavi, Amir & Ruiz, Ramon. (2017). DEEP LEARNING: A REVIEW. Advances in Intelligent Systems and Computing. 5.