Con đường từ ngành thực phẩm sang Machine Learning - phần 3

Thời gian là vấn đề lớn với những người muốn chuyển ngành như mình. Trong tuần này, mình gặp hai vấn đề. Một là vật lộn tìm thời gian để học. Hai là cân đối lại tỷ lệ các loại kiến thức bản thân hấp thụ.

Tìm nội dung để viết

Tuần này, có một câu hỏi cứ quanh quẩn trong đầu mình, là viết cái gì bây giờ. Nếu muốn giúp ích cho các bạn đang đọc Viblo này, lại hút view nữa, thì tốt nhất là nên viết cấc Tut về lập trình, về ngôn ngữ, framework này nọ nhỉ. Nhưng rõ ràng, trình độ của mình hiện tại chưa đủ để viết những điều như thế.

Để address vấn đề trình độ thấp không biết viết gì, thì mình lại viết những thứ vô cùng basic vậy? Vì độc giả viblo đâu phải ai cũng là pro cả đâu, cũng có những con gà như mình, và các bạn gà cần một bài tut thiên về mindset, chỉ lối nghĩ, chỉ ra vì sao, chứ Viblo nhiều tut how-to quá.

Dù thế, mình không hài lòng với phương án này lắm. Bởi vì, thứ nhất, mình không có nhiều thời gian. Viết một tut, kể cả rất basic, cũng hao ít tầm 3 4 tiếng, mà với cùng thời gian đó, thì mình chọn học tử tế cho giai đoạn tới còn hơn. Thứ hai, là mình không muốn đi theo con đường của các tiền nhân đi trước trên Viblo, cứ đâm đầu vào tut, vào kiến thức, vào kỹ thuật. Mình là người, mình thích một kiểu article nào đó, người hơn.

Thôi thì có một cái workaround, tạm thời thế này, là mình sẽ lọc ra một vài câu trả lời trên quora, mà có tính:

  1. Người - rất người.
  2. Về machine learning hoặc AI.
  3. Mang tính định hướng người học, tư duy.

Rồi dịch lại ở đây. Hoặc đôi khi mình sẽ viết về cách tư duy khi tiếp thu kiến thức mới của mình. Bởi vì, về tớ, tớ có một thế mạnh, là khả năng tiếp thu và phân tích kiến thức, khá đa chiều. Bởi vì cuộc sống của tớ đa dạng lắm, tự học piano này, harmonica này, làm cộng tác viên dịch thuật cho Merctrans này, trước có vài năm tập Aikido, và giờ là tập boxing một cách rất nghiêm túc, ham đọc sách từ bé, tự dạy mình máy tính từ sớm, khi đại học thì là kỹ sư kỹ thuật thực phẩm, những năm đầu đi làm thì thiên về con người và quy trình làm việc, sau đó chuyển về làm an ninh, chống độc. Có lẽ nhờ đời nhiều màu thế, lại phải tiếp thu nhiều kiến thức mới, đa ngành liên tục, nên khả năng tư duy khi tiếp nhận kiến thức của tớ rất ổn. Hy vọng, có thể tải tư duy đó thành chữ, để mà giúp mọi người.

Vậy ha!? Giờ đi vào phần chính.

QUORA: If you are mentoring someone to become a data scientist (using Python) from 0 knowledge, what would the learning path look like?

QUORA: nếu đang hướng dẫn một người định hướng thành data scientist, từ con số không, thì vẽ đường cho họ như nào đây?

Mình không dịch hết cả bài đâu, mắc công. Câu trả lời mình chọn là của anh Sean McClure, Founder của Kedion, có bằng Ph.D. Quantum Chem, hiện đang build AI software. Trong bài anh gửi rất nhiều link các MOOCs, gần như có thể thành trọn một khóa học để trở thành data scientist luôn (đấy là mình nghĩ thế), dù vậy, mình không thích các link này, vì chắc chắn một điều, anh ý đã-không học qua toàn bộ các khóa đó để có đánh giá khách quan dưới con mắt một người đã học. Và thứ 2, các khóa anh gửi lên có thể không phải là tốt nhất ở thời điểm hiện tại.

Còn giờ, trong câu trả lời của anh, có vài ý vô cùng có ích.

Lộ trình học, tức là một chuỗi các courses, projects và tài liệu giúp chúng ta tiếp thu kiến thức để làm việc trong một lĩnh vực. Nhìn chung, có thể chia tách thành các bước sau.

  1. Content: nên học gì?
  2. Approach: nên học như thế nào?
  3. Tracking: làm sao để biết rằng mình đang tiến bộ?

Đầu tiên là nhìn xem về content, thì mình đang có những lựa chọn nào. Tiếp tới là làm sao sử dụng những tư liệu đó, mà học nó, một cách hiệu quả. Kế tiếp, là kiểm tra xem tiến bộ của người học, liệu xem bao nhiều phần của content đã được tiếp thu và chuyển hóa thành kiến thức áp dụng được.

Content

Hiển nhiên là người học thì không thể đọc hết, thực hành hết mọi nguồn tư liệu khả dĩ được, nên phải chọn lọc. Việc chọn lọc những gì để học, nên theo tỷ lệ sau: Đặt trọng tâm vào hướng tiếp cận học bằng projects, vì đây là cách hiệu quả nhất để học được kiến thức đi làm thực sự. Cạnh đó, reading giúp học viên luôn up-to-date và biết được điều gì đang xảy ra trong thế giới đi làm, thế giới công nghệ. Các courses thì sẽ dạy nhanh các kiến thức dùng trong suốt thời gian làm việc.

Sean có list rất nhiều các courses trong phần trả lời. Không có gì đáng nói, các bạn cứ xem qua.

Về ý kiến của mình, mình không nghĩ việc đặt tỷ lệ lớn cho học bằng projects là tốt. Bởi vì, cách tiếp cận này, nó trái với cách học tự nhiên của con người. Còn nhớ hồi bé không, bọn mình học từ abc, xong mới ghép chữ, rồi mới đặt câu, tiếp mới làm văn. Tự nhiên nhảy vào một project, dù có nhiều tut đến đâu, cũng sẽ làm người học bị choáng, do lượng kiến thức mới quá lớn, là một. Hai là, lượng kiến thức đó không được sắp xếp theo trình tự, từ dễ đến khó, từ core đến ra ngoài, từ cuốn chiếu bước một đến bước 2. Nó nghịch với cách học của con người. Ném cho một đống data rồi ngồi học, thì chỉ có là kiểu của AI thôi.

Và tác hại lớn nhất của kiểu này là, do bị ngợp bởi kiến thức mới quá lớn, họ - mình, không định vị được đâu là phần trọng tâm trong kiến thức đó để mà học.

Ví dụ nhé, hồi mới bắt đầu học được 2 tháng, nắm được kha khá lý thuyết rồi, mình mò lên Kaggle làm thử competition đơn giản nhấy - MNIST. Chả biết bắt đầu từ đâu. Mở một notebook có rate cao nhất, và phần chú giải cũng rất chi tiết ra đọc, rồi cố copy paste mà học theo. Ờ thì nó cũng chạy đấy, nhưng mình không làm sao nắm được cái logic, vì sao họ viết ra được code như thế, vì sao trong trường hợp này lại dropna(NaN), cái khác lại dropna(0).

Rất rất rất nhiều câu hỏi vì sao lởn vởn trong đầu mình. Thế là list những cái vì sao đó ra, và google từng cái một. Ồ cũng hên, là nó cũng ra. Nhưng kể cả có giải đáp xong hết các vì sao rồi, thì cái vì sao lớn nhất: đâu là trọng tâm của phần notebook này, làm sao xử lý các tình huống uyển chuyển đây? Mình trả lời không được.

Muốn xử lý uyển chuyển, thì phải biết căn bản, nhưng nhảy thẳng vô các projects, thì bước căn bản này bị tước mất.

Đây là chỗ mà mình thích ở Datacamp, các courses của họ dạy theo cách natural như này cho người học. Mình khen nhiều thế này, chả được đồng quảng cáo nào đâu, nhưng anh em đang muốn học, thì thực sự nên liếc qua trang đó một cái.

Nói qua cũng phải nói lại, nếu trong trường hợp, bạn có một mentor ngay cạnh, thì biết đâu học bằng project sẽ hiệu quả đấy. Vì nhờ mentor, rất nhiều câu hỏi vì sao sẽ được giải đáp nhanh chóng, và mentor sẽ giúp bạn 'xua tan một ít mây mù' ý mà. 😄

Ước gì mình cũng có một mentor. Thật đấy, mình cũng đang tự bơi trong này, trình độ vẫn chưa thoát ra khỏi mức cơ bản, ước gì có mentor chỉ dạy cho mình.

Approach

Phần này, Sean tiếp tục list rất nhiều courses và projects. Anh chia đầu mục các courses đó theo tháng, mỗi tháng thì nên hoàn thành những gì. Điểm đặc biệt là anh đưa việc code vào ngay tháng thứ 2, khi làm quen với TensorFlow, các courses chuyên về lý thuyết, Sean coi nó như một phần nâng cao, hoặc là overview, học dàn ra mỗi tháng, chứ không dồn hết vào thời kỳ đầu, kiểu, học lý thuyết cho xong hết rồi mới thực hành.

Lượng courses và projects anh đưa lên là rất lớn, cần nhiều time để hoàn thành. Mình ước tính, phải ngồi học fulltime thì mới bám sát được lịch này.

Reading, Sean khuyên chỉ nên đọc lướt, khi nào cần áp nó vào thực tế, vào việc của mình, thì mới đọc sâu. Mình nghĩ, nên in các reading này ra, rảnh chút thì đem vô nhà vệ sinh đọc. Không phải là phỉ báng đâu, thực sự, vào wc, không cầm điện thoại, mang tài liệu vào, đọc rất tập trung.

Sean kết thúc lộ trình của mình ở tháng thứ 6, khi mà có thể làm việc được với các project về CNN, LSTM.

Tracking

Đây là phần mình thích ý kiến của Sean nhất. Chẳng cần nói nhiều, nhìn tranh là hiểu. Để ý 2 cái con pacman đó không? Thời gian đầu, thì ưu tiên là consume kiến thức, thời gian sau, thì hãy create nhiều lên, để into the wild nhé.

Tuần này dừng ở đây.

Cảm ơn mọi người đã đọc, nếu có chút ích lợi gì thì upvote ủng hộ nhé. Thật chứ, nhìn upvote tăng cảm giác rất phê.. 😄

Nếu tò mò các phần trước, mọi người ghé qua đây nhé. Phần 1 Phần 2