Trở lại khám phá

AI & Machine Learning

Tôi đã học AI, Toán và Khoa học máy tính sai cách như thế nào?

Một năm học Toán, Khoa học máy tính và AI đã giúp tác giả tích lũy nhiều kiến thức, nhưng cũng cho thấy những sai lầm trong cách học. Thay vì dàn trải, anh cho rằng nên bắt đầu từ một dự án cụ thể, học đúng những gì cần thiết và liên tục tạo ra sản phẩm.

8 phút đọcVideo gốc
Tôi đã học AI, Toán và Khoa học máy tính sai cách như thế nào?

Tôi đã học AI, Toán và Khoa học máy tính sai cách như thế nào?

Phần lớn thời gian trong năm vừa qua, tôi dành để học Toán, Khoa học máy tính và đủ loại kiến thức hàn lâm. Dù những điều này thực sự thú vị và tôi nghĩ chúng sẽ hữu ích trong suốt sự nghiệp, tôi cho rằng mình đã sai. Đây không phải cách sử dụng thời gian tốt nhất. Trong video này, tôi sẽ nói về những gì đã học, những gì đã nghiên cứu và quan trọng nhất là nếu có thể bắt đầu lại, lần sau tôi sẽ làm gì.

Đó là tháng 11 năm 2023, cách đây hơn một năm, khi tôi quyết định mình đã chán phát triển web. Tôi muốn làm điều gì đó khác biệt và nghĩ rằng AI nghe có vẻ tuyệt vời. Vì vậy, tôi mua một vài cuốn sách. Cuốn này là Deep Learning. Hóa ra đây là giáo trình Toán trình độ sau đại học, còn tôi thì không có nền tảng phù hợp cho nó. Cuốn này khá tuyệt, nhưng đòi hỏi nhiều Toán hơn mức tôi có, đồng thời cần cả pandas, numpy và một loạt thứ liên quan đến Python. Tôi hơi bị chững lại trước chúng. Hai cuốn sách này đã mở đầu cho hành trình học tập của tôi.

Hành trình đó kéo dài hơn một năm và tôi đã mắc khá nhiều sai lầm, giờ các bạn có thể rút kinh nghiệm từ chúng. Hãy bắt đầu với những gì tôi đã học. Trước tiên, tôi học rất nhiều Toán. Đó là vì khi đọc những cuốn sách này, tôi quá bất ngờ và nghĩ: “Ồ, có một lĩnh vực mà mình không thể cứ thế nhảy vào.”

Đầu tiên, tôi học các chuỗi bài giảng về Đại số tuyến tính và Toán rời rạc. Chuỗi bài giảng về Đại số tuyến tính này thực sự rất hay, còn chuỗi về Toán rời rạc cũng khá tuyệt. Cuốn sách này tốt, nhưng không đưa bạn đi xa đến mức cần thiết. Tuy nhiên, vấn đề của việc chỉ học các khóa học và xem bài giảng là bạn nghĩ mình biết nhiều hơn thực tế. Bạn có được một ý niệm về nó.

Trường hợp rõ ràng nhất là series của 3Blue1Brown, với phần trực giác tuyệt vời. Sau khi xem một trong những video đó, bạn sẽ không thể giải nổi một bài toán nào, và điều đó không sao cả. Tác giả hiểu điều này. Nếu mục tiêu của bạn là giải trí với Toán hoặc có hiểu biết cơ bản về các khái niệm, thì không có nơi nào tốt hơn. Nhưng nếu mục tiêu là thực sự làm được Toán và hiểu mình đang làm gì, bạn phải tự làm. Không thể chỉ xem, thậm chí cũng không thể chỉ đọc về nó.

Điều tốt nhất tôi tìm được cho mục tiêu đó là Math Academy. Họ có khóa Mathematics for Machine Learning. Khóa học sẽ đưa ra một bài kiểm tra và cho biết trình độ của bạn. Khi bắt đầu, tôi đã hoàn thành khoảng 80% phần Foundations 2. Sau đó, bạn chỉ cần làm rất nhiều câu hỏi, nâng cấp kỹ năng của mình. Điều tuyệt vời là khi hoàn thành, bạn sẽ thực sự hiểu nó. Mặt hạn chế là khóa học mất rất nhiều thời gian. Tôi mất khoảng bốn tháng từ lúc bắt đầu đến khi hoàn thành, và đây là dự án phụ chính của tôi trong thời gian đó.

Nhìn chung, tôi thích việc học Toán vì dù đi đến bất kỳ đâu trong Khoa học hay Kỹ thuật, những kiến thức này đều hữu ích. Tuy nhiên, một trong những nơi Toán ít hữu ích nhất lại là Software Engineering, lĩnh vực chúng ta đang làm. Vì vậy, 99% thời gian khi làm việc với AI, bạn sẽ không xây dựng model và cũng không sử dụng những kiến thức Toán này.

Dù vậy, tôi vẫn không tiếc vì đã học. Chỉ là đó không phải cách sử dụng thời gian tốt nhất của tôi.

Tiếp theo là Khoa học máy tính. Khi mới bắt đầu sự nghiệp với tư cách Web Developer, tôi đã có thể bỏ qua khá nhiều phần trong số này. Tôi từng học chuyên ngành phụ Khoa học máy tính, nhưng chỉ bao quát một phần nhỏ, và chuyện đó đã xảy ra hơn một thập kỷ trước. Vì vậy, nhiều nội dung giống như mới đối với tôi.

Có một vài nhóm chủ đề ở đây. Nhóm này tập trung vào tầng thấp và phần cứng. Tôi học nó vì nghĩ sẽ rất hữu ích nếu quyết định bắt đầu lập trình CUDA. Một lý do khá ngớ ngẩn: từ khi nghe cụm từ “CUDA mode”, tôi đã nghĩ “Nghe vui đấy, mình muốn vào CUDA mode.” Nhưng đến giờ tôi vẫn chưa thực sự vào CUDA mode, vì đây không phải cách tốt nhất để bắt đầu. Nếu nghiêm túc, đáng lẽ tôi nên bắt đầu lập trình C++ và viết một CUDA kernel ngay từ đầu.

Dù vậy, đây vẫn là kiến thức nền hữu ích. Tôi giới thiệu tất cả các nguồn này nếu bạn muốn học, nhưng bạn cũng nên thực sự làm bài tập và dự án.

Một nhóm khác là Database Internals. Có lẽ phần này nên được xếp vào Khoa học máy tính, nhưng thôi vậy. Tôi cũng bắt đầu một khóa học khác của CMU về Database Internals, có tên Introduction to Databases, mà thực chất có nghĩa là nhập môn xây dựng cơ sở dữ liệu của riêng bạn. Bài tập nhập môn là xây dựng một tree, hay trie, bằng C++. Vì vậy, tôi nghĩ: “Được rồi, chắc mình đang học Algorithms.”

Đó là lý do tôi học những nội dung này. NeetCode Roadmap là cách tốt hơn nhiều để bắt đầu với LeetCode và Algorithms so với gần như mọi nguồn khác mà tôi tìm được. Nó bắt đầu bằng những bài dễ, bạn học các mẹo, sau đó chuyển sang bài khó hơn với những mẹo xây dựng trên kiến thức trước đó, rồi tiếp tục như vậy.

Học theo cách này giống như chơi game giải đố và khá vui. Nếu bạn nhảy thẳng vào LeetCode và bắt đầu cố giải bài, bạn sẽ có trải nghiệm tệ và thấy mọi thứ thật tùy tiện. Nhưng nếu học theo cách này, nó sẽ giống một trò chơi giải đố. Nếu có nhiều thời gian, tôi sẽ cứ tiếp tục làm các bài đó, vì nó còn vui hơn phát triển web. Tuy nhiên, không ai trực tiếp trả tiền cho bạn để làm LeetCode. Tôi chỉ làm việc này nếu bắt đầu tìm việc trở lại, mà hiện tại thì chưa. Nếu bạn là sếp của tôi, đừng lo, mọi thứ vẫn ổn.

Ngoài ra còn một số nội dung ngẫu nhiên mà tôi nghĩ phù hợp với Khoa học máy tính, chẳng hạn khóa học về Computer Networking. Nội dung khá tốt, nhưng một lần nữa, có lẽ tôi không còn nhớ được bao nhiêu vì đã không làm bài tập.

Tiếp theo là Data Engineering. Tôi thực sự đã sử dụng phần này trong công việc hằng ngày, vì nhiều nội dung được học phục vụ cho công việc. Những thứ tôi học trực tiếp cho công việc thực ra không có trong danh sách này, chẳng hạn như dbt, Datadog và nhiều công cụ khác để hiểu luồng dữ liệu cũng như phát hiện khi có sự cố. Không giống Front End hoặc một cơ sở dữ liệu mà bạn có thể trực tiếp nhìn thấy lỗi, tôi cần một số công cụ để theo dõi việc đó.

Tôi không có quá nhiều điều để nói ở đây, ngoại trừ cuốn Designing Data-Intensive Applications. Cuốn sách này hay đúng như mọi người vẫn nói. Đây là một cái nhìn tổng quan ở cấp độ cao, nhưng nếu bạn chưa từng suy nghĩ về những vấn đề này thì nó sẽ rất hữu ích. Đây là lần thứ hai tôi đọc sách. Lần đầu, nó khiến tôi kinh ngạc. Đến lần thứ hai, tôi vẫn thấy nó hay như nhớ, nhưng hiểu được nhiều hơn vì từ đó đến nay tôi đã tiếp xúc với nhiều ứng dụng xử lý dữ liệu lớn hơn.

Cuối cùng là lĩnh vực khởi đầu cho tất cả: Machine Learning và AI. Cuốn sách này rất tốt, là phần tổng quan tuyệt vời về nhiều Algorithms khác nhau và cách sử dụng chúng. Sách được chia thành hai phần: một phần về scikit-learn cho Machine Learning, và một phần về Keras cùng TensorFlow cho Deep Learning.

Nhược điểm lớn là Keras và TensorFlow dường như đang dần mất vị thế. PyTorch mới là lựa chọn lớn hiện nay. Điều này giống như học Front End và Systems thông qua Angular, Ember hoặc Backbone vậy. Có thể không tệ đến thế, nhưng các khái niệm cốt lõi vẫn giống nhau, dù tôi sẽ phải học thêm một số công cụ khác để thực sự bước vào dòng chính.

Khóa học này hay đúng như mọi người nói, nhưng thật đáng ngạc nhiên là tôi đã làm rất ít về Machine Learning, dù đây mới là thứ khởi đầu cho toàn bộ hành trình. Với điều đó, hãy chuyển sang những gì tôi đã làm sai và nếu có thể làm lại, lần sau tôi sẽ làm gì.

Trước hết, tôi muốn nói một vài điều tích cực. Nếu bạn là sinh viên toàn thời gian, có thể nhìn vào danh sách này và nghĩ rằng nó chẳng là gì, chỉ là chuyện trẻ con. Nhưng hãy nhớ rằng tôi có một công việc toàn thời gian và một em bé mới chào đời. Điều đó thật tuyệt, nhưng cũng chiếm rất nhiều thời gian.

Quay lại với những điều tôi đã làm sai: các bạn có thể thấy tôi đã học và tiếp thu rất nhiều, nhưng không tạo ra hay thực sự làm được nhiều. Ở đây không có thành tựu thực tế nào.

Đây là một vấn đề lớn. Nếu bạn không thực sự làm một việc gì đó, bạn sẽ không nhớ nó. Cũng giống như với Toán, một bài giảng hay có thể khiến bạn lầm tưởng rằng mình đã hiểu, nhưng thực tế bạn chưa có đủ nền tảng để ghi nhớ và tự áp dụng.

Những phần tôi thực sự làm gì đó chủ yếu là các bài tập nhỏ, chẳng hạn như bài LeetCode trong Algorithms và bài tập trong phần Toán. Với hai lĩnh vực này, bạn thực sự cần xây dựng từ dưới lên: bắt đầu bằng bài dễ, chuyển sang bài trung bình rồi đến bài khó.

Với hầu hết những thứ khác trong lập trình, bạn nên bắt đầu từ trên xuống. Hãy xác định mình muốn làm gì, sau đó làm ngược lại và học những gì cần thiết để triển khai nó. Cách này giúp bạn tập trung, thay vì bị phân tán như danh sách này.

Hãy nhìn xem, ở đây có những thứ hữu ích nếu tôi lập trình CUDA; chỗ này có những thứ hữu ích nếu tôi nghiên cứu các kiến trúc Transformer mới; còn chỗ kia có những thứ hữu ích nếu tôi xây dựng một pipeline để đưa dữ liệu vào các model.

Đó là ba hướng sự nghiệp hoàn toàn khác nhau, đòi hỏi những thứ khác nhau. Dĩ nhiên, tôi sẽ không thể tiến xa ở bất kỳ hướng nào vì đang làm cả ba. Hơn nữa, gần như không hướng nào thực sự gắn với công việc hằng ngày của tôi, ngoại trừ Data Engineering có liên quan một chút.

Nếu làm lại từ đầu, để tập trung hơn, tôi sẽ tự hỏi: “Có dự án nào tôi có thể hoàn thành trong một tháng, trong đó tôi có thể học mọi thứ cần thiết trong một tháng không?” Dự án đó phải đủ sức thử thách để tôi làm những việc chưa biết, nhưng không quá khó đến mức khiến tôi mắc kẹt trong những hố thỏ.

Có những lĩnh vực mà bạn thực sự cần đi sâu vào các hố thỏ, chẳng hạn như Toán. Tôi không biết phải thực hiện một dự án Toán hay Algorithms như thế nào. Nhưng với mọi thứ khác, bạn có thể lấy kiến thức hiện có, mở rộng thêm một chút, rồi củng cố kiến thức bằng cách sử dụng nó. Sau đó, bạn tiếp tục mở rộng, làm điều gì đó khó hơn và từng bước xây dựng năng lực.

Đó là cách tôi sẽ học trong năm tới. Có thể tôi vẫn sẽ học một vài khóa học, nhưng trọng tâm sẽ là các dự án. Tôi dự định chia sẻ một phần quá trình đó với các bạn ở đây.

Tôi đã bắt đầu dự án đầu tiên. Hy vọng sẽ sớm, có thể trong một hoặc hai tuần, đăng video cho thấy mình đã học được gì và xây dựng được gì. Nếu có nội dung cụ thể nào các bạn muốn xem, hoặc có điều gì tôi đã làm trong năm qua khiến các bạn nghĩ rằng “Ôi trời, chúng ta cần nội dung về chủ đề đó”, tôi sẽ cân nhắc. Nhưng có lẽ là không.

Dù sao thì, hẹn gặp lại các bạn sớm.

© 2026 TYVN · Tôi yêu Việt NamTri thức công nghệ, bằng tiếng Việt.