Con đường học tập Machine Learning của tôi

Học Machine Learning

Chặng đường trở thành một Data Scientist khá dài, 2-3 năm thậm chí là 5 năm tuỳ năng lực của mỗi người. Có bạn chọn cho mình con đường học thuật từ cử nhân, master cho đến PhD. Có bạn học xong cử nhân thì tìm kiếm ngay cho mình cơ hội nghiên cứu ở các công ty. Có bạn lại chọn cho mình phát triển ở vị trí Data Engineer/Data Analyst chuyên phân tích dữ liệu Big Data. Dù bạn ở vị trí nào đi nữa thì điều quan trọng nhất là bạn đã đóng góp được gì cho dự án mà mình tham gia.

Trong bài viết này, tôi sẽ tản mạn một chút về quá trình học tập Machine Learning của tôi trong thời gian qua. Từ lúc tôi còn ngồi ghế nhà trường cho đến lúc đi làm. Bạn đọc ở đây có lẽ cũng có nhiều điểm chung như tôi, cũng đã từng thử qua nhiều phương pháp học Machine Learning khác nhau, cũng đã từng trải nghiệm và chọn lọc ra cách học phù hợp nhất đối với bản thân. Cách tiếp cận của tôi có lẽ không phải là cách tốt nhất nên ta chỉ tham khảo để giao lưu thêm thôi nhé.

Cách học Toán

Học Toán

Thông thường, ta có nhiều cách học. Thời phổ thông, ta thường học theo kiểu diễn dịch. Thầy cô sẽ đưa cho bạn định nghĩa, lịch sử phát triển, phương pháp, và làm bài tập để củng cố lại định nghĩa ban đầu. Lên Đại học, ta sẽ đi theo kiểu quy nạp. Thầy cô sẽ đặt vấn đề cho các bạn suy nghĩ, tại sao lại xuất hiện vấn đề này, ai đã giải quyết được vấn đề này, phương pháp này có điểm gì chung, dựa vào nguyên lý gì, ứng dụng của nó là gì, sau cùng làm bài tập để nhớ lại kiến thức đã học. Khi đi làm, bạn thường search Google để học, các trang blog hay các tutorial sẽ giúp bạn học nhanh hơn thông qua những ví dụ cụ thể và hình ảnh minh hoạ dễ hiểu. Hoặc có nhiều bạn áp dụng phương pháp hiện đại hơn như MindMap, Time management, Goal setting, …

Tôi tự nhận mình không phải là một người giỏi Toán, đặc biệt về phương diện chứng minh và tính toán số học. Đây thật sự là điểm yếu của tôi khi quyết định tu học lên cao, vì ở môi trường này đòi hỏi bạn phải làm bài tập khá nhiều về chứng minh và đọc hiểu các công thức toán. Nhưng bù lại tôi là người rất sẵn sàng tiếp thu, chịu khó khắc phục điểm yếu của mình. Học từ thầy, học từ bạn, học từ các cuốn sách, hay học từ các courses online. Với những cố gắng trong quá khứ, giờ đây tôi đã có những kiến thức Toán “đủ dùng” để có thể làm việc cùng Machine Learning.

Để bù đắp lại sự thiếu sót về thuật ngữ và kiến thức chuyên ngành Toán, tôi đã theo đuổi các khoá học trên MITOpenCourseware và Coursera. Từ đây, tôi dần dần xây dựng lại được kiến thức toán của mình. Khi đó, các buổi học online hay tài liệu tham khảo bằng tiếng Anh đã trở nên dễ tiếp cận hơn trước. Mách nhỏ với các bạn rằng khi phỏng vấn xin học bổng du học, các giáo sư cũng thường hay hỏi về kiến thức toán, nếu không có đủ vốn tiếng Anh và kiến thức cần thiết ta không thể trả lời được. Dưới đây là các môn học bạn cần quan tâm:

  • Giải tích (Analytics)
  • Đại số tuyến tính (Linear algebra)
  • Toán rời rạc (Discrete mathematics)
  • Lý thuyết đồ thị (Graph theory)
  • Xác suất thống kê (Statistics and probability)

Nếu bạn muốn học Machine Learning một cách nghiêm túc không chỉ đơn giản áp dụng tool hay library sẵn có thì tôi khuyên bạn nên học kỹ Toán. Nó không chỉ giúp bạn bám sát và hiểu được những bài giảng hiện tại mà còn giúp bạn có những phát kiến mới về nghiên cứu và ứng dụng trong tương lai. Sở dĩ ta học các phép cộng trừ nhân chia là để áp dụng vào các phép toán cao cấp hơn như phép nhân chia ma trận, tính gốc giữa hai vector, tính trị riêng hay vector riêng, lấy đạo hàm để tìm điểm cực trị… Không những thế, các phép toán này lại được ứng dụng rất nhiều trong Machine Learning.

Một người thầy của tôi có hướng dẫn rằng: “Quá trình học gồm có 5 bước: nguyên lý, phương pháp, giải thuật, chương trình minh hoạ và ứng dụng”. Nếu bạn đi qua đủ 5 bước này ở bất kỳ lĩnh vực nào thì bạn đã tinh thông được lĩnh vực đó. Nắm bắt nguyên lý là quan trọng nhất, từ đây ta mới bắt đầu nghĩ ra nhiều phương pháp, trong mỗi phương pháp ta lại có thể thiết kế được nhiều giải thuật và cứ thế ta có rất nhiều ứng dụng trong đó. Lấy ví dụ về Clustering, nguyên lý chung đó là sử dụng độ đo khoảng cách giữa các item để gom nhóm, từ đây ta có nhiều phương pháp tính khoảng cách khác nhau (Jaccard distances, Cosine distances, Edit distances, Hamming distances), mỗi khoảng cách này lại được tính toán trên tập dữ liệu phù hợp để triển khai được những ứng dụng tương ứng. Hay nói cách khác, nếu bạn có background tốt thì bạn sẽ đi được xa hơn, dù rằng quá trình xây dựng background ban đầu tốn rất nhiều thời gian.

Về lập trình

Học lập trình

Xin thú thật, khi còn học Đại học, tôi là một người code không giỏi và rất sợ code. Tôi đã tìm mọi cách để tránh né coding. Vì lý do này, tất nhiên Khoa học máy tính cũng không phải là chuyên ngành mà tôi chọn ban đầu. Xin giới thiệu một chút về trường Đại học của tôi. Tôi đã tốt nghiệp cử nhân tại trường Đại học Khoa học tự nhiên. Trường của tôi riêng đối với ngành Công nghệ thông tin thì chia thành 4 chuyên ngành, các bạn có thể tìm hiểu thêm về cấu trúc liên kết các học phần ở liên kết này:

  1. Hệ thống thông tin: chuyên nghiên cứu về cách thiết kế, xây dựng và quản trị hệ thống cơ sơ dữ liệu từ vi mô đến vĩ mô (SQL, NoSQL, Đại số quan hệ – Relational algebra,…)
  2. Công nghệ phần mềm: nghiên cứu về cách xây dựng, bảo trì và quản lý một dự án phần mềm sao cho hiệu quả và ít tốn kém nhất.
  3. Mạng máy tính: nghiên cứu về các giao thức mạng, truyền thông giữa các thiết bị, cài đặt và triển khai các hệ thống mạng từ vi mô đến vĩ mô.
  4. Khoa học máy tính: nghiên cứu về các thuật toán, trí tuệ nhân tạo như Thị giác máy tính, Xử lý ngôn ngữ tự nhiên, Khai thác dữ liệu, Máy học …

Nếu là đứa sinh viên chưa biết gì nhiều về các chuyên ngành và đặc biệt là đang tránh né việc coding nhiều nhất có thể thì bạn sẽ đoán được là tôi chọn học chuyên ngành Hệ thống thông tin. Sau khi tốt nghiệp, tôi mới nhận ra rằng dù bạn có đi đâu hay học gì liên quan đến IT thì bạn đều phải biết code và nên yêu quý công việc này vì nó sẽ theo bạn suốt đời trừ phi bạn chuyển ngành.

Ham học hỏi có lẽ là ưu điểm cũng là khuyết điểm của tôi. Thay vì chọn một chuyên ngành và học thật tốt chuyên ngành đó, ngoài Hệ thống thông tin, tôi đã học thêm rất nhiều môn ở các chuyên ngành còn lại. Điều này giúp cho tôi có một cái nhìn rộng hơn trong thế giới Công nghệ thông tin. Nhưng ngược lại, thời gian để tôi nghiền ngẫm và tiếp thu kiến thức bị sơ sài. Nên về tầm nhìn tôi biết khá nhiều nhưng về mặt chi tiết và cài đặt tôi thật sự rất kém. Có thể nói vào thời đó, tôi rất sợ phải coding và coding không được. Nhưng cuối cùng thì tôi cũng quyết định quay lại với Khoa học máy tính vì môn học này đã cuốn hút tôi thật sự. Một phần nữa cũng nhờ thầy hướng dẫn của tôi truyền động lực và chia sẻ những tiềm năng lớn của chuyên ngành này.

Rất may tại thời điểm đó, các khoá học online về lập trình đã giúp tôi rất nhiều trong việc lấy lại căn bản cũng như trình độ coding tiến bộ lên từng ngày. Tôi đã mua tài khoản trên Lynda.com để theo học các khoá học lập trình và kiến thức căn bản liên quan. Theo thời gian, tôi nhận thấy coding hay các ngôn ngữ lập trình đều có chung khuôn mẫu khi học: bạn sẽ học qua các kiểu dữ liệu, cách xây dựng hàm, các lệnh điều phối, vòng lặp và hướng đối tượng. Nếu bạn đã học tốt C++ hay Java thì bạn hoàn toàn có thể học nhanh các ngôn ngữ mới và đơn giản hơn như Python, R, Scala, Javascript hay PHP.

Về Machine Learning

Người thầy đầu tiên có thể giúp tôi lấy lại kiến thức căn bản đó là khoá học Machine Learning của Andrew Ng. Tác giả hướng dẫn rất căn bản và chi tiết từ các khái niệm tổng quát đến những ứng dụng thực tế và làm thế nào để cài đặt được những thuật toán này rất tường minh. Kinh nghiệm cho thấy, khi học các khoá học online như vậy, các bạn đừng quan tâm quá nhiều đến chi tiết, đại loại như bước này chứng minh thế nào, tại sao phải dùng thư viện này, mình phải hiểu công thức toán này mới đi tiếp được,… Làm như vậy sẽ tốn khá nhiều thời gian mà ý tưởng của bài giảng khó có thể tiếp thu được do bài giảng kéo dài. Thay vào đó, bạn nên thư giãn, cởi mở để nắm bắt ý tưởng trước, khi hoàn tất bài học, bạn có thể xem lại dần dần để nhớ được bài giảng muốn nói gì. Nếu quen rồi, mình chỉ cho các bạn thêm một trick đó là tua nhanh video từ x1.5 đến x2.0 lần để hạn chế buồn ngủ và bạn cần một cuốn tập kế bên để ghi chép.

Đối với các course mà tôi tham gia, thường tôi sẽ cưỡi ngựa xem hoa hết một lượt các bài giảng rồi mới bắt đầu ngồi nghiên cứu chi tiết từng thuật toán. Ngoài ra, bạn không nên stuck vào slide của tác giả mà nên tìm kiếm thêm các nguồn bài giảng đơn giản hơn ở bên ngoài. Vì nhiều lúc do vấn đề hạn hẹp về thời gian mà slide của tác giả sẽ rất vắn tắt và khó hiểu.

Tiếp theo, bạn cần làm bài tập của tác giả. Việc này rất quan trọng, vì nó giúp bạn thật sự hiểu tường tận thuật toán cũng như quy trình áp dụng machine learning từ những giai đoạn chập chững bước vào ngành. Ngoài ra, khi hoàn thành được bài coding đầu tiên, cảm giác của bạn sẽ tự tin lên một ít, trong lòng tự nhủ với mình “thì ra Machine Learning cũng dễ học đấy chứ…”. Thì ra Research và Prototype là như thế này đây. Bạn cần prototype thật nhanh flow xử lý của Machine Learning, không cần biết bạn áp dụng Linear Regression hay Deep Learning cao siêu gì đi chăng nữa, bạn phải làm được flow hoàn chỉnh trước, sau đó hẵng tinh chỉnh và tối ưu lại.

Nếu bạn đang là sinh viên ngành IT thì bạn thật may mắn. Bạn có thể đăng ký học các lớp học chuyên ngành Khoa học máy tính. Các lớp học này sẽ là môi trường rất tốt để bạn tu luyện cùng bạn bè của mình đồng thời các project nhóm sẽ giúp bạn trưởng thành hơn trong làm việc nhóm cũng như bớt đi sự cô đơn trong nghiên cứu. Khi học, các bạn cố gắng ghi chép đầy đủ kiến thức mà thầy cô truyền đạt đặc biệt là những kinh nghiệm nghiên cứu quý giá cũng như cơ hội xin học bổng để du học. Đừng ngại đặt câu hỏi dù cho đó có vẻ là ngây ngô, thầy cô không chê trách gì các bạn đâu thay vì vậy họ rất vui vì bạn đang tò mò và thích thú với những gì họ đang giảng, biết đâu sau này bạn còn làm việc nhiều với họ và nhận được sự hướng dẫn cần thiết khi làm luận văn. May mắn hơn nữa nếu bạn được làm việc cùng các thầy cô đã từng có nhiều công trình nghiên cứu quốc tế. Họ sẽ có nhiều điều để chia sẻ cho bạn về hướng đi sau này trên con đường sự nghiệp nghiên cứu và làm việc. Những lúc như thế bạn sẽ cảm thấy mình có nhiều động lực nghiên cứu hơn, đỡ cảm thấy bơ vơ không biết mình học ra để làm gì.

Một trong những khó khăn đầu tiên chúng ta thường gặp phải đó là các thuật ngữ chuyên ngành. Nhiều lúc bạn đọc thuật ngữ tiếng Việt thì không hiểu nhưng chuyển qua tiếng Anh thì dễ hiểu vô cùng. Ngược lại, nhiều thuật ngữ tiếng Anh đọc vào thì không hiểu nhưng chuyển sang tiếng Việt thì lại sáng tỏ được tất cả. Vì vậy, vai trò của thầy cô hướng dẫn trong những buổi ban đầu rất quan trọng. Bạn nên đặt thật nhiều câu hỏi càng tốt để không còn bị vướng mắc khi nghe giảng cũng như tham khảo các tài liệu tiếng Anh. Dần dần khả năng đọc và nghiên cứu tài liệu của các bạn sẽ tăng lên.

Khi đi làm

Sự nghiệp Data Science

Trong 2 năm gần đây, Machine Learning tại Việt Nam ngày càng phát triển. Việt Nam đang trở thành thị trường lớn cho các nhà tuyển dụng nước ngoài nhắm tới. Ngoài sự thông minh, chuyên cần, hăng hái học hỏi, ta còn hơn họ ở mức lương cạnh tranh cho vị trí tương đương tại nước họ. Do đó, xu hướng các công ty AI nước ngoài hiện đang dần dần chuyển giao công nghệ cho bên VN và build team tại đây để giảm chi phí ngày càng tăng. Khi tôi tham khảo mặt bằng lương cho Data Scientist/Engineer/Analytics tại VN trên ITViec và Vietnamworks thì mức lương dao động từ $2000-$7000 USD. Tại sao các vị trí liên quan đến DS lại có mức lương cao như vậy? Theo tôi có ba lý do, một là do sự khan hiếm về nhân lực đủ trình độ đáp ứng được vị trí này, hai là do thời gian đào tạo và tự đào tạo ra DS mất nhiều thời gian từ 5-9 năm, và ba là do lợi nhuận mang lại cho doanh nghiệp của DS lớn hơn rất nhiều so với chi phí bỏ ra ban đầu. Tất nhiên kèm theo đó sẽ là trách nhiệm của bạn cao hơn, áp lực về công việc và thời gian sẽ nhiều hơn, kĩ năng của bạn phải tương xứng với mức lương như vậy. Không chỉ bạn giỏi nghiên cứu học thuật, bạn cần nắm bắt được các công nghệ đang là xu hướng hiện nay, bạn phải trau dồi nhiều hơn kĩ năng quản lý dự án, kỹ năng truyền đạt ý tưởng của mình cho đồng nghiệp cũng như cho những người điều hành công ty mình. Để bắt kịp xu hướng nền “Công nghiệp 4.0” này, các trường Đại học cũng đang thực hiện nhiều cuộc đổi mới trong giảng dạy và đào tạo của mình sao cho đáp ứng được nhu cầu của thị trường lao động hiện nay. Bên cạnh đó, nhiều công ty AI và Big Data cũng sớm chiêu mộ nhân tài vào nhóm của mình từ rất sớm dù các bạn chỉ mới là sinh viên năm 2-3 để tránh không tuyển được người khi các bạn đã ra trường và bị săn đón bởi nhiều công ty khác.

Những bạn sau này, khi xác định cho mình con đường làm nghiên cứu thì mình khuyên các bạn nên đăng ký làm luận văn tốt nghiệp thay vì tốt nghiệp bằng cách hoàn tất mọi khoá học. Tại sao bạn nên làm như vậy? Bởi vì khi làm luận văn bạn sẽ hiểu được một paper được trình bày như thế nào và nội dung trong từng phần tác giả sẽ trình bày những gì. Trong tương lai, nhờ vậy mà bạn có thể đọc lướt được rất nhiều paper cùng lúc, bạn sẽ đọc qua rất nhanh abstract, results và phần đánh giá thay vì đọc từ đầu đến cuối paper mà thật sự không nắm được gì cả.

Con đường học thuật

Nếu bạn thích con đường học thuật thì tôi khuyên bạn nên tiếp tục tu học lên cao học Master, PhD và nên kiếm học bổng để nghiên cứu bên nước ngoài. Một phần vì bản chất của Data Scientist là làm nghiên cứu nên bạn cần làm nhiều nghiên cứu hơn để cọ sát và nâng cao trình độ của mình. Một phần nữa là do trong nước lớp học khá đông và loãng, thầy cô hướng dẫn sẽ khó phân chia thời gian để theo sát các bạn được. Thêm nữa, bạn sẽ bị vướng bận khá nhiều về cơm áo gạo tiền, như vậy sẽ ảnh hưởng không tốt đến công việc nghiên cứu.

Nếu bạn thích đi làm ngay sau khi ra trường thì bạn nên tìm hiểu thêm về thị trường lao động hiện nay cần gì. Từ đó, bạn sẽ chuẩn bị cho mình những kiến thức và kĩ năng để đi làm thực tế. Vì sau khi tốt nghiệp, có thể bạn sẽ không xin được học bổng nào, hoặc muốn học tiếp lên cao học nhưng kinh phí chưa có. Bạn có thể xin vào một đơn vị làm việc một thời gian và vừa học vừa làm để xin học bổng và đi du học luôn. Giai đoạn này, tiền bạc không quan trọng bạn nhé, hãy làm thật tốt và thật nhiều để tích góp kinh nghiệm trước, mục đích sau này bạn có CV thật đẹp cho những công việc sắp tới. Tôi thấy cơ bản khi đi làm bạn cần phải biết những công cụ và ngôn ngữ sau: Linux, HTML, CSS, Javascript, Git, Python, command line, Spark, Mongo,… Và ở VN đa số tôi thấy sản phẩm chủ yếu liên quan đến các bài toán như recommender system, social network graph analysis, text summarization, sentiment analysis, predictive model, healthcare, … Nên nếu có đang làm nghiên cứu thì bạn cũng nên chọn cho mình những đề tài gần gũi với các lĩnh vực này.

Làm Data Science

Các công ty phần mềm làm về Machine Learning đều có cách tổ chức và quy trình phát triển khác nhau để cho ra sản phẩm tốt nhất. Trong công ty mình đang làm thì có lập ra team R&P (Research and Prototype) chuyên áp dụng Machine Learning để nâng cao giá trị của những sản phẩm này. Ở đây mình sẽ không đi sâu vì vấn đề bảo mật, nhìn chung các bước sẽ là:

  • Xác định bài toán cần giải quyết (dự đoán doanh thu chi phí, tối ưu hoá hệ thống hay ROI). Thường bài toán sẽ được leader đưa ra để các member tham gia.
  • Nhiệm vụ của bạn là tìm hiểu bài toán để hiểu vấn đề như các KPI hay metrics trong lĩnh vực của mình. Sau đó, bạn sẽ làm literature review để xem đã có nghiên cứu nào trong thời gian gần đây chưa. Tiếp đến, bạn sẽ lục lọi lại dữ liệu thu thập được từ công ty mình và viết proposal làm nghiên cứu: ước lượng thời gian, phương pháp áp dụng, kết quả mong đợi, hỗ trợ về máy móc thiết bị, tài khoản cloud computing (AWS, Google cloud, Azure cloud) …
  • Sau cùng bạn sẽ prototype để demo ý tưởng của mình. Bạn có thể sử dụng các thuật toán SVM, linear regression, Neural network, … để khảo sát dữ liệu. Bước đầu, tôi thường đơn giản hoá bài toán lại: giới hạn tập đang xét thay vì 1000 ta chỉ xét 1 hoặc 2 mẫu dữ liệu sau đó từ từ quy nạp cho nhiều mẫu dữ liệu hơn. Ta có thể định nghĩa môi trường lý tưởng cho giả thiết ban đầu như các giá trị đều là dương, số lượng đều bằng nhau, khởi tạo cold-start vector đều bằng 0, sử dụng phân bố uniform hay phân bố chuẩn để generate sample data, áp dụng greedy/brute force algorithm để giải… Sau khi giải được bài toán lý tưởng này, ta sẽ tiếp tục biến đổi các hằng số bias ban đầu bằng cách biến đổi chúng theo thời gian. Có khi bạn cần thêm bước tiền xử lý dữ liệu như loại bỏ các thông tin dư thừa, tìm kiếm thêm các dữ liệu liên quan để cải tiến mô hình đang xét. Cuối ngày, bạn sẽ commit source lên để team theo dõi tiến độ của bạn.
  • Hàng tuần, team sẽ có những cuộc họp để cập nhật tình hình nghiên cứu và đưa ra các hướng giải quyết tiếp theo. Vì đa phần thời gian đầu, bạn sẽ gặp khó khăn trong việc hiểu bài toán và bị bí không biết nên áp dụng phương pháp nào để giải quyết vấn đề, nhiều lúc bạn sẽ cảm thấy chán nản và buồn ngủ khi đọc các paper hay các thuật toán khó hiểu. Lúc này team sẽ giúp bạn gỡ rối như đề xuất cho bạn một vài giải pháp, giúp bạn định hình lại bài toán, chia sẻ kinh nghiệm về quá trình tìm hiểu… Sau nhiều vòng lặp như vậy bài toán gần như đã được giải quyết và độ chính xác đã đạt ở mức chấp nhận được khoảng 80-90%.
  • Bước cuối cùng là implement vào sản phẩm. Có thể bạn sẽ viết một API để cho developer sử dụng hoặc cài đặt luôn một ứng dụng cụ thể từ A-Z, tích hợp lên các hệ thông cloud computing, quản lý tài khoản và đánh giá mô hình dựa trên A/B testing, Multi-armed Bandit… Giai đoạn này cần sự phối hợp team work khá nhiều, vì hệ thống khá lớn và bạn không thể ôm đồm quá nhiều việc. Bạn cần sự hỗ trợ từ nhiều phía: hướng dẫn của cấp trên, share task với các bạn đồng nghiệp, chuyển giao cho các nhóm khác như QA để test sản phẩm, Developer để triển khai sản phẩm, System admin để xây dựng kiến trúc cơ sở hạ tầng cho sản phẩm…

Có nhiều tranh luận về làm Data Scientist có cần giỏi Toán không vì hiện nay hầu như bài toán nào cũng đã có sẵn tools và library rồi, công việc của bạn chỉ là cài đặt và chỉnh sửa các tham số sao cho phù hợp. Theo tôi thì bạn không cần quá xuất sắc về Toán nếu đi làm thực tế, nhưng khi muốn có những công trình nghiên cứu xuất sắc thì những chứng minh toán học bên trong bài báo của bạn sẽ là một ưu thế rất lớn cũng như giúp bạn giải quyết những bài toán phức tạp một cách ngắn gọn và thông minh hơn. Biết đâu sau này sẽ có thuật toán khác vượt trội hơn cả Deep Learning mà chỉ thông qua một vài phép tính đơn giản.

Bài viết đến đây cũng khá dài rồi nên tôi xin kết tại đây. Quá trình học tập và kiên định theo đuổi một lĩnh vực nào đó đòi hỏi bạn rất nhiều tính nhẫn nại, ham học hỏi, cũng như rèn luyện bản thân mình để tiến bộ từng ngày, quan trọng hơn là không bao giờ được từ bỏ. Hãy tiếp tục, tiếp tục cố gắng, tiếp tục bước trên còn đường mà mình đã chọn. Bạn thấy đấy, tôi cũng như bao sinh viên Đại học khác, cũng thử hết lĩnh vực này lĩnh vực kia, đứng núi này trông núi nọ, yếu kém điểm này điểm kia nhưng cuối cùng cũng gần đến được đích của mình. Hy vọng các bạn cũng theo đuổi và hoàn thành ước mơ của mình nhé.

Tham khảo thêm:

Advertisements

37 thoughts on “Con đường học tập Machine Learning của tôi

  1. Anh Hồng ạh! Em có đọc một vài bài viết của anh từ lâu viết về lĩnh vực MachineLearning. Cảm thấy anh là người cũng làm nhiều và chuyên sâu về mảng này, anh có thể chia sẻ thêm về việc làm MarchineLearning không anh?
    Em thì không làm về mảng này cũng chưa có ý định tìm hiểu sâu về nó. Em chỉ muốn tìm hiểu ở mức cưỡi ngựa xem hoa xem là làm MachineLearning cụ thể là làm gì? Nhiệm vụ chính là gì? Bài toán gặp phải là gì? Sản phẩm của MachineLearning là gì? Các vấn đề ở mức tổng quát để nhằm sau này nếu có điều kiện hoặc phải làm thì không cảm thấy bị bỡ ngỡ nhưng không có bài viết nào viết về chủ đề này cả.
    Anh có thể chia sẻ giúp em được không ạh?

    Số lượt thích

  2. Cảm ơn bạn, mình cũng đang tự học ML mới chi bắt đầu thôi. Theo kinh nghiệm của bạn thì một trong các mảng sau mảng nào thú vị hơn:
    1. Prediction
    2. NLP – mình cảm giác nhiều bạn đang theo xu hướng này
    3. Image + Video processing
    kiến thức có hạn nên mới tạm hiểu qua qua nó có 3 cái mảng đấy.

    Số lượt thích

    • Hi, theo mình thì mảng nào cũng có điểm thú vị và thách thức riêng. Mình cũng vào ngành này chưa lâu nên chỉ chia sẻ được một ít như bên dưới 🙂

      1) Prediction thì thiên về Data mining nhiều, đã có nhiều nghiên cứu và công cụ có thể áp dụng vào thực tế. Tiếc là khoảng cách giữa học thuật và ứng dụng còn khá xa, do dữ liệu ngoài thực tế tuỳ công ty sẽ có cách xử lý riêng. Bạn build model, đưa vào ứng dụng, quan sát 1-2 tuần rồi sẽ thấy model của mình failed, rồi lặp lại các bước phân tích ban đầu. Hoặc các bài toán NP-hard sẽ thường xuyên bắt gặp khi đi làm, matching problem, approximate computing, scheduling, …

      2) NLP theo mình là lĩnh vực khó vì nhập nhằng theo cấp độ word -> phrases -> sentences -> paragraph và context trong văn bản. Ngay cả con người còn mắc lỗi thì làm sao train được cho máy không mắc phải sai lầm này. Đã hơn 50 năm nghiên cứu mà các bài toán kinh điển như translation, summarize, searching, text generation, question answering, discourse analysis vẫn đang được tiếp tục nghiên cứu để cải tiến độ chính xác. Và thế giới còn rất nhiều ngôn ngữ khác ngoài tiếng Việt như Anh, Hoa, Nhật, Hàn, …mỗi ngôn ngữ lại có đặc trưng và khó khăn riêng trong đó. Bạn sẽ cảm thấy ngành này nghiên cứu hoài không bao giờ hết. Hiện nay cũng đang có nhiều ứng dụng thú vị như phát hiện tin tức giả trên báo để bảo vệ bản thân khỏi những nguồn tin bạo động, thư ký ảo sắp xếp lịch làm việc, quản lý email, …

      3) Image + Video processing: gần đây mình thấy nổi lên là Deep learning. Xem ra hướng tiếp cận này khá hoàn hảo, độ chính xác của các bài toán nhận diện đã gần tới ngưỡng 100% độ chính xác. Ảnh và video trên internet hiện có rất nhiều nên mình nghĩ nhu cầu tìm kiếm và organize đang rất được quan tâm. Bạn search một đoạn nào đó trên video bằng string, tóm tắt video có nội dung chính là gì, cho một ảnh mặt người đi tìm toàn bộ thông tin của người đó, phát hiện và điều trị sớm ung thư, … Ứng dụng thì trên Appstore vô số.

      Ngoài ra thì còn lĩnh vực xử lý tín hiệu số (voice recognition, signal processing), robotics, cognitive modeling, nghiên cứu và ứng dụng liên ngành, … Nên tuỳ cảm nhận mà mình tập trung chuyên sâu vào lĩnh vực mà mình thích, các lĩnh vực xung quanh mình dùng tham khảo để lấy ý tưởng, tránh đi vào lối mòn suy nghĩ của lĩnh vực mình đang nghiên cứu 😀

      Liked by 1 person

  3. -Chào anh .! Em theo dõi, đọc các bài viết trên blog của anh đã lâu. Hiện tại em vẫn còn là sinh viên và cũng đang tự tập tành học ML. Cho em hỏi, khi làm về ML thì nhà tuyển dụng có yêu cầu bằng cấp như thế nào có cần thiết phải bằng cấp như Thạc sỹ, tiến sỹ… .Vì em đang phân vân không biết có nên học sau đại học hay là đi làm luôn..

    Số lượt thích

    • Nếu là anh thì anh sẽ khuyên em nên tu học lên cao để có nhiều kinh nghiệm về nghiên cứu hơn cũng như đảm bảo hơn trong quá trình tuyển dụng. Nguyên tắc tuyển dụng ở đây là ưu tiên những người giỏi, có kinh nghiệm trước sau đó mới loại bỏ dần. Nếu em chỉ là sinh viên bình thường và cũng không có gì chứng minh em có thể làm việc với ML thì cơ hội của em rất thấp.
      Ngược lại, nếu em tự tin với năng lực của mình thì anh vẫn thấy các bạn tốt nghiệp xong có thể apply vào intern một công ty AI nào đó. Thường các bạn này là những sinh viên ưu tú của trường nên các nhà tuyển dụng thường sẽ chú ý và ưu tiên hơn các bạn khác.
      Cũng có bạn từ software engineer nhảy sang ML để làm. Mặc dù cũng triển khai được các dự án ML nhưng đòi hỏi các bạn thời gian nhiều để ôn tập lại các kiến thức bị bỏ sót trong quá trình học cũng như cần lắm một research leader để hướng dẫn các bạn tập tành bước vào lĩnh vực này.
      Nói tóm lại tuỳ vào mục đích cuối cùng của em là gì để đưa ra quyết định: tiền bạc, tấm bằng, kinh nghiệm, giảng dạy, khoa bảng hay sự nghiệp lâu dài…

      Số lượt thích

  4. chào anh,
    em mới tốt nghiệp ngành marketing, nhưng e quyết định du học về ngành Data (khóa học kéo dài 1 năm thôi)
    => hiện tại em chưa có cơ bản về lập trình hay toán
    em có đăng ký học trên datacamp, thấy bài giảng cũng dễ hiểu, nhưng khi mua cuốn “python for data analysis” thì đọc k hiểu gì cả
    => liệu anh có thể gợi ý hướng đi nào hợp lý cho em nếu em muốn theo đuổi ngành này không ạ
    liệu 1,2 năm học có đủ kiến thức để xin được việc
    bản thân em thì muốn học xong 1 năm này, r đi làm lấy kn, sau đó tu học lên master sau
    em xin cảm ơn

    Số lượt thích

    • Anh nghĩ em nên tập trung thế mạnh của mình bên Marketing là được, lập trình thì em nên biết cơ bản và cài đặt các phép phân tích thống kê khi làm việc là đủ.
      Công việc lập trình sẽ đòi hỏi nhiều thời gian hơn em tưởng. Các bạn IT lập trình thì giỏi nhưng business domain sẽ không tốt bằng em, nên làm việc nhóm sẽ thích hợp hơn trong tình huống này.
      Các khối kinh tế thì anh thấy các bạn nên đi làm một thời gian, khi quay lại học tiếp master mới phát huy được mục đích học lên cao này.

      Số lượt thích

      • vậy ý anh là em nên nhắm tới vị trí nào trong một dự án ạ. Vị trí nào mà yêu cầu business domain và 1 ít lập trình
        hiện tại thì e đã được nhận học khóa data analyst r (khóa này kéo dài 1 năm)
        mong anh gợi ý em hướng đi với ạ, vì đằng nào thì em cũng sẽ học khóa data 1 năm này
        em chưa rõ khi học xong thì em sẽ có thể làm được những vị trí nào trong 1 dự án

        Số lượt thích

        • E có thể làm vị trí Data analyst, xây dựng các hệ thống BI, quản lý team marketing,…
          Ý của anh là bên ngành của em ngoài kiến thức chuyên môn, nếu có thêm kĩ năng của IT thì sẽ tạo cơ hội cạnh tranh lớn trong tuyển dụng so vs những bạn chỉ biết về marketing ko thôi.

          Số lượt thích

                • DA áp dụng các kiến thức xác suất thống kê để phân tích, đánh giá, kiểm định giả thuyết trên tập dữ liệu. Mọi SV nếu giỏi về xstk đều đủ khả năng làm vị trí này nhưng cần thêm kĩ năng làm việc với các CSDL Big Data nữa là đủ.

                  Bên VN thì không quá phân biệt giữa DS/DE/DA vì họ muốn e càng biết nhiều càng tốt để đỡ tốn chi phí tuyển người, trừ phi dự án quá sức của 1 người thì mới bắt đầu chia nhỏ công việc ra để giảm tải. Nếu em theo làm PhD 3 năm thì chỉ có 1 mình em tự xử cho công trình nghiên cứu của mình. Từ khâu xác định bài toán, thu thập dữ liệu, phân tích sơ bộ, phát triển ý tưởng đến khâu xây dựng hệ thống, cài đặt và báo cáo kết quả nghiên cứu đều tự tay e làm. Nên các nhà tuyển dụng duyệt hồ sơ từ tấm bằng là như vậy, mặc dù em để nó trong tủ không bao giờ show ra nhưng họ hiểu em đã trải qua những gì để có được tấm bằng này nên mới tuyển em là vậy đó 😀

                  Số lượt thích

              • em muốn hỏi cụ thể để chọn đường đi cho đúng
                anh trả lời giúp em nốt câu này là vị trí data analyst thì mất khoảng bao lâu để học ạ, cũng vs điều kiện chăm chỉ + bộ óc bình thường =))))
                data scientist thì chắc là cả đời hả a

                Số lượt thích

  5. Cảm ơn anh đã chia sẽ kinh nghiệm. Anh có thể nói thêm về những trải nghiệm khi làm việc với ML ở Việt Nam không ạ, chẳng hạn như các vị trí anh đã từng làm, chủ đề các project, khó khăn hay cái hay của nó,etc…Như vậy em sẽ có một cái nhìn cụ thể hơn về mảng Data mining. Hiện tại e cũng đang phân vân việc theo học ML cho computer vision hoặc là Data Scientist nên mong được nghe nhiều hơn từ anh. Em nghe bảo Data Scientist sẽ phải giao tiếp khá nhiều, vậy phần lớn là phải trao đổi trong team, giữa các team hay phải trao đổi với khách hàng và diector nữa ạ? Và có phải sử dụng nhiều tiếng anh không nếu làm tại Việt Nam?

    Số lượt thích

    • – Có phải sử dụng nhiều tiếng anh không nếu làm tại Việt Nam? -> có em, đây là điều kiện cơ bản để làm việc. Hãy đăng ký các khoá học lấy chứng chỉ như TOEIC, TOEFLE, hay IELTS.
      – Em nghe bảo Data Scientist sẽ phải giao tiếp khá nhiều -> không nhiều lắm, chủ yếu em nghiên cứu để tìm kiếm giải pháp. Lâu lâu, em sẽ được mời lên present những gì mình đã tìm hiểu thôi.
      – vậy phần lớn là phải trao đổi trong team, giữa các team hay phải trao đổi với khách hàng và diector nữa ạ? -> mỗi công ty một vẻ, công việc của em liên quan nhiều đến team nào thì chỉ làm việc với team đó.
      – Hiện tại e cũng đang phân vân việc theo học ML cho computer vision hoặc là Data Scientist -> em phải thích một lĩnh vực trong lúc học rồi mới xác định được.

      Số lượt thích

  6. Anh cho em hỏi là định hướng của em là software engineer nhưng muốn tìm hiểu thêm về Machine learning để áp dụng vào các sản phẩm thì có nên tiếp cận bài bản như những gì anh hướng dẫn ở đây không? Nếu không thì anh có thể nói sơ qua cho em về con đường như thế nào cho hợp lí được không ạ?
    Và một câu hỏi nữa là ML có ứng dụng gì nhiều trong công việc cho các software engineer không ạ, hay chỉ khi mình tự phát triển sản phẩm của riêng mình thì mình mới quyết định có sử dụng hay không?

    Số lượt thích

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Đăng xuất / Thay đổi )

Connecting to %s