Skip to main content

Học Machine Learning – Được gì sau khóa học ML 3 tháng? (P1)

Học Machine Learning - Học được gì sau 3 tháng
Chia sẻ ngay tại đây!
  • 48
  •  
  •  
  •  
  •  
    48
    Shares

Học Machine learning hiện đang là xu hướng của rất nhiều người trên toàn thế giới đặc biệt là giới trẻ. Nhiều bạn lựa chọn việc bắt đầu bằng các khóa học ngắn hạn online hoặc offline. Nhưng chất lượng và kết quả của đầu ra thế nào lại là câu hỏi mà khó ai trả lời được.

Nếu bạn đang có dự định đi học các khóa học về Machine Learning và không biết được mình sẽ được học gì, kết quả đầu ra thế nào, kỹ năng đạt được ra sao thì bài viết này dành cho bạn.

Mình sẽ chia sẻ tất cả những gì mình học được sau khóa học Machine Learning 3 tháng. Nội dung sẽ bao gồm:

  • Những kiến thức và kỹ năng mình đạt được sau 3 tháng học Machine Learning là gì?
  • Những khó khăn và sai lầm “ngớ ngẩn” mình mắc phải ngay từ ngày đầu tiên học Machine Learning 
  • Tips mà mình học được giúp các bạn HỌC CÁCH xây dựng model machine learning nhanh và hiệu quả
  • Cách làm một dự án Machine Learning Mini là như thế nào để bạn có thể thuyết phục mọi người về kết quả bạn đạt được. Vì không phải cứ cho ra kết quả dự đoán 90% là người khác tin bạn đâu.

Background trước khi học machine learning

Nếu các bạn có đọc các bài viết trước của mình về Data Analyst, các bạn sẽ biết mình hiện đang làm bên mảng phân tích dữ liệu chứ không hề liên quan đến Machine Learning gì cả. Cho nên bài viết này chỉ viết về trải nghiệm của một người mới sau khi học một khóa 3 tháng về Machine Learning. 

Nền tảng cho học Machine Learning
Kiến thức cần thiết cho Machine Learning – Nguồn

Khóa học 3 tháng này là một môn học tự chọn trong chương trình học Master của mình tại trường đại học Macquarie University, Sydney. Khóa học kéo dài 13 tuần và mỗi tuần chỉ có một buổi khoảng 2-3 tiếng. 

Vì yêu thích data nên mình chọn môn này, đơn giản vậy thôi chứ không phải vì muốn làm Data Scientist.

Nói về background thì tại thời điểm bắt đầu học Machine Learning, mình chỉ có kiến thức cơ bản về lập trình. Tuy mình tốt nghiệp chuyên ngành về IT nhưng không có kinh nghiệm lập trình nhiều. Đại loại như hiểu cách hoạt động của một ngôn ngữ và có thể tự mày mò ngôn ngữ mới nếu cần thiết. 

Chắc ai cũng biết là nếu học Machine Learning thì có 2 ngôn ngữ chính là R và Python. Mình thì gần như không có tí kinh nghiệm nào ở đây cả. Cộng thêm kiến thức về xác suất thống kê cũng mù tịt luôn.

Vậy nên ngoài cái nền về lập trình chung chung, mình gần như là người mới hoàn toàn khi bắt đầu học Machine Learning. Nhưng mình tự tin về khả năng tư duy Logic của mình, đây có thể được coi là điểm mạnh duy nhất mình có.

Mình đã học được gì sau 3 tháng

Phần này các bạn tham khảo để biết được sau 3 tháng các bạn có thể sẽ đạt được những kỹ năng gì. Chỉ là tham khảo thôi nhé vì có rất nhiều yếu tố liên quan.

Nội dung khóa học machine learning

Toàn bộ khóa học của mình, tại thời đó, được xây dựng hoàn toàn dựa trên quyển sách  “An Introduction to Statistical Learning with Applications in R” của tác giả chính “Gareth James”. Các bạn hoàn toàn có thể tải bản ebook free tại đường link này.

Học Machine Learning với R
Nguồn Image

Cá nhân mình thấy quyển này khá hay. Hướng dẫn rất chi tiết và bắt đầu từ những khái niệm cơ bản. 

Trong vòng 3 tuần đầu tiên mình được giới thiệu về các kiến thức nền Machine Learning. Nội dung bao gồm gần như tất cả những điều cần thiết cho việc xây dựng và test một Machine Learning Model cơ bản. Mình được học cơ bản về statistical learning, data exploration và cơ bản về R,duy nhất 1 buổi (-_-!) 

Các tuần sau đó là mình bắt đầu học về những thuật toán dành cho Machine Learning. Mỗi tuần mình học một thuật toán. Nội dung bao quát từ khái niệm cơ bản của thuật toán, cách thuật toán hoạt động và cách sử dụng thuật toán bằng ngôn ngữ R.

Sau buổi thứ 3, mình được hướng dẫn để bắt đầu dự án của môn học. Yêu cầu là phải tìm một bộ dữ liệu bất kỳ sau đó thực hiện đặt một câu hỏi mà phải sử dụng Machine Learning để giải quyết. Cuối cùng là viết một bài báo cao theo tiêu chuẩn một bài báo khoa học (academic article) mini và trình bày kết quả. Phần này mình sẽ giải thích sâu ở cuối bài.

Được gì sau 3 tháng học Machine Learning

Phần này đơn giản là trải nghiệm của cá nhân mình trong môi trường và nội dung khóa học mình tham gia. Nó sẽ rất khác đối với trường hợp của các bạn sau này nên chỉ tham khảo những gì bạn thấy phù hợp thôi nhé.

Kỹ năng lập trình

Kỹ năng lập trình cho Machine Learning sẽ bao gồm 2 phần cơ bản: xử lý dữ liệu (data preparation) và áp dụng thuật toán (build model). Mình xin bỏ qua phần lấy dữ liệu vì mình dùng dataset có sẵn trên mạng.

Về phần xử lý dữ liệu, đây là phần mà mình gần như tự học và mày mò vì đơn giản là mình chỉ được giới thiệu sơ qua cách sử dụng R trong vòng 2-3 tiếng. Xử lý dữ liệu ở đây lại chia ra làm 2 phần chính nữa là làm sạch dữ liệu (data cleansing) và tạo ra các dữ liệu mới cho model (feature/predictor engineering). 

Data Cleansing Cycle - Quy trình xử lý dữ liệu
Quy trình xử lý dữ liệu – Nguồn

Cả 2 quá trình về xử lý dữ liệu này đều yêu cầu kỹ năng lập trình và tư duy logic khá cao. Đây cũng sẽ là lúc mà các bạn mới gặp khó khăn rất nhiều. Vậy nên khi xác định học Machine Learning, các bạn nên đầu tư nhiều về phần xử lý dữ liệu. 

Phần tiếp theo là áp dụng thuật toán. Phần này theo mình thấy là đơn giản hơn vì các thuật toán đã được đóng gói và bạn gần như chỉ cần gọi hàm và truyền biến số vào. Khó khăn duy nhất mình thấy ở đây là cách thay đổi biến số để có được giá trị tối ưu. Nhưng so với phần data preparation thì chả thấm vào đâu

Kết luận: Mình học được vài kỹ năng cơ bản về làm sạch dữ liệu, nhưng cũng chỉ ở mức cơ bản. Thêm nữa là một ít kỹ năng trong việc tư duy về việc chọn predictor cho model. Nhưng toàn bộ vẫn còn rất sơ bộ.

Thuật toán machine learning

Trong toàn bộ khóa học thì mình được học qua khá nhiều loại thuật toán Machine Learning khác nhau từ cơ bản đến cao cấp hay cho Supervised hoặc Unsupervised. Tuy nhiên đây cũng chính là một nhược điểm của khóa học.

Machine Learning Algorithms - Thuật toán Machine Learning
Thuật toán cho Machine Learning – Nguồn

Vì học quá nhiều thuật toán nên sau khi kết thúc 13 tuần, mình chỉ còn đọng lại kiến thức của một số loại nhất định. Đây đều là những loại thuật toán được mình sử dụng cho dự án của mình. Ngoài những thuật toán này ra, gần như mình chả nhớ thêm được gì ngoài tên và khái niệm sơ bộ.

Kết luận: học quá nhiều thuật toán cũng chả giúp được gì nhiều, vậy nên học cái nào thì thực hành và nắm chắc cái đó trước khi học thêm cái mới. Mình chỉ còn nhớ những gì mình dùng cho dự án, còn lại coi như chả được gì.

Xây dựng machine learning model

Phần này chỉ chiếm khoảng thời gian tương đối trong toàn bộ quá trình học cũng như làm dự án, nhưng cũng là phần mình mong đợi nhất. Vì tất cả chuẩn bị trước đây đều chỉ để dùng vào bước này.

Mình bắt đầu đọc và nghiên cứu trong trường hợp tương tự như của mình thì nên thử loại thuật toán nào cho phù hợp. Điều này sẽ giúp giảm thiểu thời gian đáng kể khi tối ưu hóa model. Mình cũng thử áp dụng với những thuật toán cơ bản để xem kết quả thế nào.

Kết luận: kiến thức mình học được trong đoạn này chả được bao nhiêu, vẫn chỉ dừng lại ở mức tham khảo của người khác rồi phát triển thêm. Chưa thể tự suy luận ra được nên dùng thuật toán nào. Nhưng cơ bản mình học được cách thức và quy trình khi muốn phát triển một machine learning model.

Khó khăn khi học machine learning là gì?

Có lẽ đây là câu hỏi rất nhiều bạn đang thắc mắc khi chuẩn bị học machine learning. Vậy thực tế khó khăn của một người mới như mình bao gồm những gì? 

Khó khăn khi học Machine Learning
Khó khăn khi học Machine Learning

Dưới đây sẽ là danh sách những điều mình thấy là khó khăn nhất trong suốt quá trình học của mình.

  • Thiếu kiến thức nền về toán thống kê. Không phải tự nhiên nhiều người khuyên bạn nên có nền tảng về thống kê khi học machine learning. Mình cần phải làm quen với nhiều khái niệm mà mình gần như nghe lần đầu, hoặc không hiểu nó là gì vì được học bằng tiếng Anh. 
  • Sử dụng ngôn ngữ lập trình R. Điều khó khăn là vì mình chỉ có 2-3h trên lớp để học giới thiệu về R và sau đó là hoàn toàn phải tự mày mò. Điều này có nghĩa là mình cùng lúc phải học thuật toán và học ngôn ngữ lập trình mới cùng lúc. Đối với những bạn chưa từng học lập trình, đây sẽ là phần cực kỳ khó khăn với các bạn.
  • Thiếu thời gian thực hành các kiến thức mới. Như mình nói ở trên, mỗi tuần mình chỉ có 2-3h là được học lý thuyết và thực hành trên lớp. Còn lại mình đều phải tự học. Nhưng mình còn phải học thêm 3 môn khác cùng với công việc làm thêm.
  • Tài liệu hoàn toàn bằng tiếng Anh. Đây là một trong những khó khăn lớn nhất đối với mình vì toàn bộ tài liệu đều là tiếng anh. Cộng với việc những thuật ngữ Toán học đều là tiếng Anh làm mình gặp rất nhiều khó khăn trong việc hiểu bài giảng.

Những lỗi thường gặp khi học Machine Learning

Dưới đây đều là những kinh nghiệm cá nhân của mình, có nghĩa là mình đều dính hết những lỗi này khi bắt đầu học machine learning. Nhưng phải đến gần hết khóa học mình mới nhận ra được nên tốn cực kỳ nhiều thời gian để hoàn thành tốt dự án. 

Nên nếu các bạn đang gặp một trong những điều sau thì nên “take action” ngay khi còn kịp nhé. Không lại phí thời gian vô ích như mình.

Không nắm vững các khái niệm cơ bản

Khi bắt đầu học Machine Learning, các bạn sẽ được giới thiệu rất nhiều các khái niệm khác nhau đặc biệt là các khái niệm về xác suất thống kê. Đối với những bạn không có background về statistic như mình đều sẽ gặp khó khăn khi hiểu các khái niệm này.

Sai lầm của mình là mình khá lơ là khi tìm hiểu sâu về mỗi thuật ngữ và cách sử dụng những chỉ số này. Lúc bắt đầu mình khá thụ động trong việc tìm hiểu kỹ các khái niệm này và chỉ tập trung vào học và hiểu thuật toán, vì nghĩ chúng chắc chả quan trọng mấy. Đến lúc cần phải sử dụng thì lại chạy loanh quanh để học lại.

Tại sao lại cần nắm vững những thuật ngữ này?

Khi các bạn đi nghiên cứu các tài liệu, bạn sẽ thấy mọi người đều dùng những chỉ số hay thuật ngữ về thống kế để đưa ra kết luận. Bạn cần hiểu được lý do tại sao chỉ số X lại tốt hơn Y thì mới hiểu được lý do tại sao họ lại chọn model đó. Đôi lúc độ chính xác cao chưa chắc đã tốt!

Thêm nữa là bạn cũng sẽ phải làm điều tương tự khi trình bày model của mình đến với người khác. Bạn phải hoàn toàn dựa trên những chỉ số này để đưa ra kết luận, vậy mới có tính thuyết phục.

Đây cũng chính là một trong những lý do tại sao mọi người luôn đề cập đến xác suất thống kê khi học Machine Learning.

Một vài ví dụ điển hình về các thuật ngữ và chỉ số khi học machine learning: 

  • confusion matrix và các thuật ngữ liên quan,
Học Machine Learning - Confusion Matrix
Nguồn: Wikipedia
  • Sự khác nhau giữa và cách dùng AccuracyPrecision 
Khác nhau giữa Accuracy và Precision
Nguồn: Internet
  • Một số thuật ngữ khác như: độ lệch chuẩn (standard deviation), phương sai (variance), root-mean-square error (RMSE), p-value, …

Học quá nhiều thuật toán machine learning

Nghe có vẻ nghịch lý nhưng đây thực sự là một lỗi khá nghiêm trọng và nó đến từ cả 2 phía cá nhân mình và khóa học.

Cá nhân

Vì đây là một môn học trong chương trình học nên mình luôn cố gắng học tốt mọi thứ cho các bài kiểm tra được điểm tốt. Bất cứ thuật toán nào được đưa ra mình đều cố để nhồi nhét để có thể làm các bài tập giao ra.

Kết quả là sau gần 2 tháng là mình chả thể nạp thêm được gì nhiều ngoài những cái tên của các thuật toán. Vì mình vẫn còn chưa thật sự có thời gian để thật sự hiểu sâu về các thuật toán lúc bắt đầu. Học thêm cái mới là lại quên cái củ hoặc chả học được gì thêm vì quá rối.

Từ lúc đó trở đi mình chỉ như học vẹt các thuật toán và ứng dụng cực kỳ máy móc cho các bài tập mà không thực sự hiểu sâu vấn đề.

Nội dung khóa học:

Khi thiết kế khóa học, họ tập trung quá nhiều vào các thuật toán khác nhau. Cụ thể là cứ mỗi một tuần là mình được cho học một thuật toán mới. Và mỗi thuật toán vậy, mình phải học từ gốc của thuật toán. Tức mình phải học về nguyên lý và cách sử dụng tất cả mọi thứ.

Khi học quá nhiều về thuật toán, mình không có thời gian học chuyên sâu và cách ứng dụng của từng thuật toán trong các vấn đề cụ thể. Và đến lúc thực hiện dự final project thì mình gặp khá nhiều rắc rối và tốn nhiều thời gian vì phải đi tìm hiểu lại mỗi thuật toán mà mình nghĩ sẽ liên quan.

Kinh nghiệm ở đây là khi bắt đầu học về machine learning algorithms, các bạn nên tập trung vào một vài thuật toán cơ bản để hiểu cách thức hoạt động của Machine Learning trước khi học thêm những thuật toán khác. 

Nếu thấy các khóa học ngắn hạn được thiết kế với quá nhiều thuật toán các bạn cũng nên cân nhắc kỹ vì sẽ lại rơi vào hoàn cảnh như mình.

Nhảy ngay vào thiết kế machine learning Model

Sau khi mình chọn được dataset và câu hỏi cần được trả lời, mình đã nhảy ngay vào việc thực hiện thiết kế model mà bỏ qua công đoạn research và feature engineering. Mình chỉ thực hiện một số công việc về data cleansing. 

Vì nghĩ việc thiết kế model chả mấy khó khăn nên mình chả quan tâm gì đến background của vấn đề. Cứ dùng những gì có sẵn rồi thử từng thuật toán mà mình được học thôi.

Mình bỏ ra cả tháng trời để tự thiết kế model và rồi chả được kết quả gì. Thế là lại bắt đầu lại từ đầu sau khi nhận được gợi ý của giảng viên hướng dẫn.

Việc làm research và feature engineering lúc bắt đầu sẽ giúp bạn giảm thiểu cả tấn thời gian về sau khi thiết kế các machine learning models. Nghiên cứu điều gì và feature engineering ntn mình sẽ chia sẻ trong phần sau của bài viết

Ít thực hành những gì đã học

Không biết các bạn có gặp tình trạng này không nhưng riêng mình thì có. Sau mỗi bài học, mình đều có một số bài tập thực hành và mình đều hoàn thành nó trước thời hạn nộp bài.

Sai lầm của mình là mình chỉ dừng lại ở đó và không thực hành thêm các vấn đề liên quan hoặc tìm kiếm những câu hỏi mới để thực hành. Việc ít thực hành các thuật toán làm mình gần như quên sạch những gì mình học cách đó 3 đến 4 tuần.

Mình học thêm cái mới nhưng lại quên gần hết cái củ. Đến khi review lại thì gần như phải xem lại bài giảng và các phần code trước. 

Các bạn cũng nên cân nhắc kỹ nếu định đăng ký các khóa học nhanh ngắn hạn trong vòng 1 tháng hay đại loại vậy.

Tips giúp tiết kiệm thời gian Modeling

Phần này hoàn toàn dựa trên kinh nghiệm cá nhân và có thể không hoàn toàn đúng cho mọi trường hợp. Nhưng theo mình trải nghiệm và quan sát, nó hoàn toàn có thể giảm thiểu được thời gian thiết kế machine learning model một cách đáng kể.

Nếu các bạn có tìm hiểu về Machine Learning, khả năng cao là bạn sẽ thấy sơ đồ bên dưới (hoặc tương tự) về quy trình phát triển dự án Machine Learning

Quy trình xây dựng Machine Learning Model
Nguồn: Slideshare

Trước khi thực hiện Data Modeling, ai cũng cần phải trải qua bước Data Preparation và Feature Engineering. 2 bước này có thể chiếm đến 80% tổng thời gian cho việc xây dựng nên một model, cho nên việc giảm được thời gian trong khâu này cực kỳ quan trọng. 

Mình không có nhiều kinh nghiệm trong phần Data Preparation vì phần lớn nó liên quan nhiều đến kỹ năng lập trình. Tùy mỗi dự án bạn sẽ cần những kỹ năng khác nhau cho việc này. Nhưng trong thời gian mới học, phần lớn khoản này chỉ dành cho việc data cleansing là chính vì các bạn sẽ làm việc với các bộ dataset có sẵn trên mạng.

Phần tiếp theo sẽ là kinh nghiệm giúp mình trong việc giảm thời gian cho Feature Engineering và Data Modeling.

Nghiên cứu feature của các model liên quan

Vấn đề lớn nhất đối với những bạn mới học Machine Learning là các bạn hoàn toàn không có kinh nghiệm trong việc chọn feature (predictor) cho model của mình. Những lúc này nếu các bạn tự mình mò mẫm thì đôi khi cả tháng trời chả ra được gì cả. Bản thân mình đã từng nằm trong hoàn cảnh này.

Nghiên cứu các bài báo khoa học và blog
Nguồn Image

Nhiều lúc các bạn sẽ sử những feature đã có sẵn hoặc sẽ phải tạo ra những feature mới có ý nghĩa cụ thể nào đó. Sau đó gộp những feature này lại để xây dựng model. Nhưng phải tạo nhưng feature nào và tạo như thế nào lại là câu hỏi khác.

Những lúc như thế này, một cách khá hiệu quả là đi tìm các bài nghiên cứu khoa học hoặc blog về lĩnh vực liên quan và đọc về cách họ xây dựng model. Từ đó dần dần bạn sẽ hiểu được không chỉ kiến thức về domain bạn đang làm mà còn cách thức để tự thiết kế model. 

Mình luôn có một quan điểm thế này: nếu bạn suy nghĩ về vấn đề gì đó, khả năng cao là đã có người làm về nó trước rồi hoặc ít nhất là tương tự. Gần như không có ý tưởng nào là mới hoàn toàn cả. Vậy nên bạn đừng lo vì bạn hoàn toàn có thể tìm các tài liệu liên quan đến lĩnh vực bạn đang làm.

Google Scholar sẽ là đồng hành đáng tin cậy cùng bạn những lúc này hoặc những cộng động mã nguồn mở như Github. 

Mình sẽ dùng dự án mình thực hiện như một ví dụ thực tế trong phần tiếp theo bài viết.

Tại sao phải tạo mới khi bạn hoàn toàn có thể “copy”?

Mình thật sự nghiêm túc khi nói đi “copy” những model của người khác. Điều này hoàn toàn bình thường đối với những model được đăng tải miễn phí trên các diễn đàn mã nguồn mở. Bản chất của mã nguồn mở là để mọi người cùng nhau phát triển một cái gì đó tốt hơn nữa, vậy nên sử dụng những model này cho mục đích học tập hoàn toàn không vi phạm bản quyền gì cả.

Copy model mẫu của người khác
Nguồn image: Fee.org

Nhưng sử dụng những model có sẵn này như thế nào mới là điều quan trọng vì mục đích là để học cách phát triển model chứ không phải copy mã code về chạy trên máy tính cá nhân. 

Kinh nghiệm của mình là khi các bạn đã tìm được model gần hoặc trùng với mục đích ban đầu, các bạn có thể dựa trên những features có sẵn rồi phát triển thêm. 

Cách thức phát triển có thể khác nhau tùy vào model và nhu cầu. Các bạn có thể tham khảo cách mình “copy” ở phần sau. 

Những feature được tạo ra từ công đoạn phía trên sẽ giúp bạn tạo ra những model mới có tính chất tương đương. Lúc này, các bạn đừng quá quan trọng về accuracy level, vì mục đích là học tập nên đạt được một mức sai số nhất định, dù thấp hơn bản gốc, là đã tốt rồi.

Cách này không chỉ dừng lại ở mức học tập mà còn có thể ứng dụng trong môi trường doanh nghiệp. Ví dụ thực tế là, sau khi đi làm, mình biết được là công ty mình đang ứng dụng một model về data quality được phát triển bởi IBM. Sau đó được một Data Scientist phát triển thêm lên với độ chính xác cao hơn và model mới này đã giúp công ty mình tiết kiệm được hơn AUD 500k/năm.

Học machine learning cơ bản qua dự án mẫu

Trong phần này mình sẽ chia sẻ với các bạn quy trình mình làm một dự án machine learning theo tiêu chuẩn của một bài báo khoa học quy mô nhỏ (mini academic article). Nó sẽ cover tất cả những bước cơ bản của một dự án Machine Learning. 

Khi các bạn đảm bảo được những phần này được thực hiện một cách đúng đắn, các bạn hoàn toàn có thể thuyết phục người nghe về tính chính xác của model mà bạn phát triển. 

Vì không phải bạn đưa ra mức độ dự đoán của model bạn lên đến 90% là sẽ thuyết phục được người khác. Sẽ có rất nhiều yếu tố liên quan. Bạn gần như phải giải thích mọi việc bạn làm trong dự án của mình và có bằng chứng để bảo vệ.

*** Phần này sẽ khá dài, nên mình sẽ tách nó ra làm một bài khác cho dễ theo dõi. Mình sẽ nói chi tiết từng bước một mà mình đã làm. Nếu thật sự học Machine Learning thì bài viết này của mình sẽ chả thấm vào đâu cả nên cứ từ từ đọc nhé. Mình đã phải đọc hàng chục bài báo cáo khác nhau, chưa tính đến các blog này kia chỉ để làm dự án của mình.

Link bài viết sẽ được cập nhật sớm nhất có thể, sau khi mình chỉnh sửa xong. Bạn nào đọc hiểu tốt tiếng Anh có thể tải bài báo cáo bằng tiếng Anh của mình ở đây nhé.

Đừng quên chia sẻ nếu bạn thích bài viết nhé.


Chia sẻ ngay tại đây!
  • 48
  •  
  •  
  •  
  •  
    48
    Shares
  • 48
    Shares

Leave a Reply

Your email address will not be published. Required fields are marked *