Không có background về IT, Computer Science muốn học và nghiên cứu về Machine Learning, Artificial Intelligence
Mình là một người không có background về IT, Computer Science, nền tảng về Toán cũng kém nhưng mình mong muốn học và nghiên cứu về Machine Learning, Artificial Intelligence. Mình có 2 thắc mắc sau đây, mong được mọi người giúp đỡ.
1. Về Toán mình nên học về mảng nào, về lập trình mình nên học ngôn ngữ nào, và tập trung vào cái gì? Nếu được mình xin tên books hoặc courses.
2. Hiện nay, mainstream trong ML và AI là gì? Hướng nghiên cứu đột phá trong thời gian tới là gì? ML và AI đã được ứng dụng trong tài chính và kinh tế học như thế nào?
1. học 1 lèo từ giải tích 1 2 3 đến đại số rồi xác suất thống kê thôi :v
cái thứ 2 e nghĩ tùy sở thích từng người :v nghiên cứu sâu mới rõ được nên theo cái gì
1. Mình cũng đã tìm hiểu sơ qua nhưng thực sự hoang mang vì không biết phải học cái gì. Mình sợ học vừa thiếu vừa thừa.
2. Mảng mình quan tâm là ứng dụng vào tài chính và kinh tế học. Còn về kỹ thuật kiểu như CNN, RNN, ... mình không hiểu là lĩnh vực nào cần ứng dụng cái gì.
1. Nên học tới đâu có tới đó rồi tính. Lập trình cho vui thì python, còn muốn ứng dụng thì java hoặc C.
2. Có 2 hướng được nhận định sẽ đột phá là Deep learning và Probabilistic graphical models (cái này từ các chuyên gia đưa ra). Về kinh tế thì thử đọc cuốn Prediction Machines mới xuất bản gần đây và đang được quan tâm.
Nhận định về sự bứt phá của Deep learning và các mảng của AI nằm trong cuốn The Master Algorithm (2015). Còn nhận định thứ 2 nằm trong The Book of Why (2018). Cuốn Prediction Machines bạn có thể lên mạng đặt bản Kindle.
Tại sao lập trình cho vui thì lại là Python còn ứng dụng thì Java hoặc C? Trong khi đó C++ thì bạn không đề cập tới?
Cái này do mình nhận định nên mang ý chủ quan. Cũng thấy nhiều bạn trong này gặp nhiều rắc rối về ngôn ngữ lập trình rồi hệ điều hành. Thật ra thì ngôn ngữ không quan trọng lắm vì cuối cùng ta cần cái model là một file số hơn là cái code. Trong một ứng dụng thì phần xử lý linh tinh chiếm gần hết, còn học máy thì chỉ vài phần trăm. Mình làm nghiên cứu, viết báo thì dùng python, còn viết app lại dùng java. C++ chỉ là phát triển của C nên mình coi như 1 thôi.
Mình cũng nghĩ đó là nhận định chủ quan của bạn (giống như C++ là phát triển của C nên bạn coi là một). Mình thấy nếu làm về DL với ML thì việc nắm vững một nn Python hay R rất quan trọng. Đó là còn chưa kể các thư viện đi kèm với nó.
Mình hay viết API nên không quan trọng lắm vì Java, Python, C# gì viết cũng đượ
mình viết cho ý 2, mình nghĩ DL với Probabilistic graphical models còn đột phá gì nữa, về DL có chăng là nâng cao hiệu suất kiến trúc mà hiện giờ đang đc dẫn dắt bởi Hinton(capsule) lấy cảm hứng từ neocortex, còn Probabilistic graphical models theo mình biết thì VAE là hiện thân lớn nhất cho thành công của nó cho tới lúc này(dòng generative models, trong dòng này còn có GAN mạnh và chắc chắn là thông dụng hơn, xem thêm https://blog.openai.com/generative-models/)
về những gì xảy ra sắp đến cho AI, mình nghĩ phải lấy thông tin từ deepmind, thế lực số 1 của AI hiện tại. xem bài báo của Hassabis, founder deepmind để phần nào thấy ông đã gói những đột phá cũng như thách thức mà AI hiện đại phải giải quyết
https://www.semanticscholar.org/paper/Neuroscience-Inspired-Artificial-Intelligence.-Hassabis-Kumaran/5870d0edaaa0f28bbe657238febaaf1181e81378
1. Về Toán chủ yếu là vi phân đạo hàm, các phép toán trên ma trận và xác suất thống kê. Ngôn ngữ thông dụng và phổ biến nhất trong khoa học dữ liệu và học máy là python.
Cái đầu tiên mình nghĩ bạn nên học đó là ngôn ngữ lập trình song song với học về toán xác suất thống kê và đại số tuyến tính. Sau đó chọn một ngôn ngữ lập trình để tiếp tục, mình gợi ý là dùng python. Sau đó đăng ký một khóa machine learning căn bản trên mạng để bắt đầu làm về ML. Bây giờ ko nên hỏi về hot trend của machine learning, vì nó sẽ thay đổi liên tục. Khi bạn đã sẵn sàng thì lúc đó bạn dễ dàng tìm thấy con đường của chính mình. Chúc bạn may mắn.
https://ocw.mit.edu/courses/mathematics/
Bạn kiếm linear algebra, multivariable caculus, probability and statistics.
Tối ưu hoá bạn học ở đây:
http://web.stanford.edu/class/ee364a/videos.html
Quan điểm của mình như sau:
1. Đừng nên học theo giáo trình trong đại học, vì nó là kiến thức nghiên cứu, khác với kiến thức để có thể áp dụng thực tế.
Ví dụ như mình chỉ cần biết ma trận và các phép toán trên nó là có thể hiểu các bài giảng về machine learning, một chút về thống kê như median, mean, variance, các loại phân phối là có thể hiểu data analysis, biết đạo hàm là gì để có thể hiểu thuật toán tối ưu hàm mất mát hoạt động thế nào… Mỗi cái như vậy, chỉ cần biết vừa đủ là hiểu được thôi.
Còn ba cái toán học nhìn vô không hiểu gì thì tốt nhất đừng nên mất thời gian, vì nếu nó không thể giải thích cho bạn một cách đơn giản, chứng tỏ là người ta chưa thực sự hiểu nó ( Einstein ).
2. Mình không biết cái gì đang là hot, nhưng mình khuyên bạn nên tìm hiểu kỹ về lĩnh vực này rồi mới thấy nó thú vị với bạn hay không. Khi bạn bắt tay vô làm, bạn sẽ cảm nhận rõ hơn và tự bạn cập nhật được xu hướng theo cách của bạn.
3. Mình khuyên bạn nên tìm hiểu trước hết là về lý thuyết cơ bản của machine learning, để hiểu cơ bản công thức và các tham số liên quan. Sau đó là chọn một ngôn ngữ để học như Python, vì mấy cuốn sách hay chọn ngôn ngữ này để cài đặt. Tiếp theo là phải thành thạo được một công cụ giúp bạn cài đặt được một model nhanh chóng ( như scikit learn, keras ) và áp dụng nó để xem kết quả và đối chiếu với lý thuyết đã học.
Nói chung bước đầu tiên bạn cứ lên internet, vô medium.com gõ vài keyword như machine learning basic, nó sẽ cho bạn các tutorial cơ bản, sau đó bạn xem và chỗ nào không hiểu lại tra google. Sau đó muốn nâng cao thì tìm đọc sách của PacktPub vì nó chuyên sâu về lĩnh vực này.
PacktPub là tên một nhà xuất bản, https://www.packtpub.com/all. Vì nó có nhiều sách chuyên sâu về machine learning và lại viết rất dễ hiểu. Mình là fan của NXB này :D. Nhưng mà khi mình đã học nâng cao và ứng dụng rồi mình mới tìm đến nó. Còn cơ bản mình cứ tra google và cập nhật các kiến thức khác thôi.
Toán bạn tham khảo vừa đủ để hiểu là được. Ví dụ các metric như least square, RMSE, tại sao lại dùng cái đấy, tối ưu hàm loss như nào, khái niệm về đạo hàm, phân phối xác suất này nọ là đủ. Vì thực tế đi làm hoặc đi pv không ai ném ra 1 hàm loss và bắt bạn tối ưu hoặc giải nghiệm cả. Các công ty cần người làm được việc, có problem-solving skills. Còn học để nghiên cứu thì lại là 1 hướng khác!
Cho mình hỏi một chút là dựa vào tiêu chí nào, người ta biết mình làm được việc, cụ thể ở trong mảng này? Đặc biệt mình không có background như đã đề cập ở trên.
mình cũng k rõ các tiêu chuẩn tuyển dụng ở VN. Mình thường học xong lên kaggle thi thố. Tuy điểm ko = ai nhưng rút được cực kỳ nhiều kinh nghiệm trên này, đi pv trả lời được hầu hết cũng nhờ thực hành trên kaggle.
Kết hợp đọc kernel, documents của các top kaggler rồi papers đúc kết đc nhiều kinh nghiệm thực tế + coding skills. Bạn muốn nhanh cứ học kiểu top-down = cách làm lại những tutorial trên mạng. K hiểu chỗ nào thì đọc lý thuyết chỗ đấy rồi lại thực hành liên tục k nghỉ thôi.
Căn bản là không có NXB nào cho sách free đâu bác ạ :)), chỉ là nếu bác muốn download free thì cứ tìm google theo title thử. Mình thì vừa có download free trên 1 số web deep :)) , và cũng có mua ebook trên amazon hay book google (trong trường hợp mình tìm không ra và sách đó đáng mua). Mình thì thấy ưng cách diễn đạt và trình bày của các tác giả hợp tác với NXB này rất rõ ràng, trực quan và dễ hiểu, viết để cho người ta đọc hiểu và làm được (có github đầy đủ https://github.com/PacktPublishing) . Một số sách hay của NXB này mình từng đọc là Python Deep Learning (F.Chollet) , Deep learning quick reference: useful hacks for training and optimizing deep neural networks with tensorflow and keras (Michael Bernico) , Mastering Machine Learning Algorithms: Expert techniques to implement popular machine learning algorithms and fine-tune your models (Giuseppe Bonaccorso). Các bạn có thể bỏ khoảng 19$ cho mỗi cuốn sách.
https://www.datacamp.com/tracks/data-scientist-with-python
Toán thì tất nhiên bác sẽ cần nghiên cứu sâu về đại số logic, toán xác xuất, toán rời rạc.
kinh nghiệm thực tế của mình là bạn hoàn toàn có thể học machine learning mà không cần có nền tảng IT hay toán học. Cái bạn cần là sự đam mê nghề này. Khi học, bạn sẽ hiểu thêm về xác suất và ngôn ngữ Python. Kiến thức toán ở phổ thông gồm đại số và ma trận là quan trọng. Nên nhớ một điều là bạn học vì đam mê nhe. Đừng thấy người ta ăn khoai mà vác mai đi đào.
bạn nên bắt đầu từ coursera lớp machine learning của thầy Andrew Ng (đại học Stanford). Miễn phí và nếu thấy ổn thì học tiếp.
Mình cũng đang học Machine Learning/Deep Learning, tuy nhiên đã qua giai đoạn hoang mang không biết bắt đầu từ đâu nên hi vọng là kinh nghiệm đã qua của mình sẽ giúp ích cho bạn.
Kiến thức toán cơ bản cần thiết là Calculus, Linear Algebra và Probability. Mình nghĩ hiệu quả nhất là cứ vào thẳng học Machine Learning luôn rồi đụng cái gì liên quan đến toán thì mò đọc cái đó. Như thế bạn sẽ biết được phần kiến thức Toán đó được áp dụng vào đâu và ở chỗ nào nên đỡ nản hơn là học Toán thuần túy. Tuy nhiên, nếu bạn có thời gian học Toán thì MIT OCW luôn chào đón bạn:
1. MIT 18.01 Single Variable Calculus
https://ocw.mit.edu/courses/mathematics/18-01-single-variable-calculus-fall-2006/index.htm
2. MIT 18.02 Multivariable Calculus
https://ocw.mit.edu/courses/mathematics/18-02-multivariable-calculus-fall-2007/
3. MIT 18.06 Linear Algebra
https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/
4. MIT 6.041 Probabilistic Systems Analysis and Applied Probability
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-041-probabilistic-systems-analysis-and-applied-probability-fall-2010/
Mình khuyên bạn nên cứ học Machine Learning trước xem bản thân có thực sự thích ngành này không rồi hẵng quay lại những môn Toán này nếu thấy thực sự cần thiết. Nếu học thì nên học Calculus trước khi học Probability (điều kiện tiên quyết).
Để có cái nhìn tổng quan về Machine Learning thì bạn có thể bắt đầu từ khóa Machine Learning của GS Andrew Ng trên Coursera, khóa này khá dễ, bài tập lập trình bằng ngôn ngữ MATLAB/Octave (trong course có video hướng dẫn sơ về MATLAB với bài tập cũng không yêu cầu quá khó nên khỏi sợ MATLAB/Octave ha!)
https://www.coursera.org/learn/machine-learning
Tip: Học trên Coursera thì nên Apply for Financial Aid nó cho học free, làm đủ bài tập yêu cầu được cái certificate cho có động lực :)
Để đi sâu hơn và hiểu rõ hơn Machine Learning thì tiếp theo là khóa Caltech Learning From Data:
https://work.caltech.edu/telecourse.html
Khóa này cả video bài giảng lẫn bài tập đều khá nặng lý thuyết, bài tập mở, không bắt buộc phải sử dụng ngôn ngữ lập trình nào cả (mà làm là tự code từ đầu đến đuôi). Đây là khóa Machine Learning mình cảm thấy tâm đắc nhất, hồi học Machine Learning trong trường thầy mình cũng yêu cầu coi video bài giảng của khóa này trước khi đến lớp :)
Cùng với đó bạn có thể đọc blog Machine Learning Cơ bản của anh Tiệp, mình chưa thấy blog Machine Learning nào hay hơn MLCB này cả :)
https://machinelearningcoban.com
Xong Machine Learning thì bạn có thể học tiếp tới Deep Learning, bạn tự search course thì khá chắc sẽ bắt gặp khóa CS231n của Stanford:
http://cs231n.stanford.edu
Nhiêu đó là đủ kiến thức để bạn tự tiếp tục tìm hiểu cũng như làm các project rồi. Nếu không có background CS thì ngôn ngữ lập trình tối ưu nhất cá nhân mình nghĩ là Python (dễ học, nhiều framework hỗ trợ ML/DL).
Cùng với Python là các thư viện hỗ trợ: NumPy (tính toán ma trận), Pandas (xử lý dữ liệu), Matplotlib (visualize, vẽ biểu đồ), scikit-learn (các thuật toán machine learning).
Deep Learning thì có rất nhiều framework, nổi bật là Tensorflow, Pytorch...
Bạn nên lên ý tưởng làm một project gì đó rồi sử dụng các thư viện như một công cụ để cụ thể hóa project đó, lúc làm cần gì thì Google cái đó sẽ dễ nhớ hơn. Mình từng đọc các quyển tutorials, cookbook rồi làm theo cuối cùng thì quên sạch, cứ làm rồi tự mò dần sẽ nhớ thôi.
Cơ mà nếu chưa bao giờ lập trình thì bạn có thể thử các tutorial code trên Datacamp để kickstart ha, Datacamp không có free cơ mà sử dụng link này đăng ký thì được free học 1 tháng.
https://www.datacamp.com/promo/meetup
Tip: Học xong 1 tháng vô setting delete account xong đăng ký lại bằng link trên được 1 tháng mới học tiếp
Lúc mình học Coursera (giữa năm 2016), xin Financial Aid cực kì dễ, còn bây giờ thì mình không rõ nha. Lúc đó nhấn apply for Financial Aid rồi điền thông tin là nó auto accept, còn bây giờ nó có thêm dòng "Applications take at least 15 days to get reviewed" và mình chưa học khóa mới nào trên Coursera nữa nên không rõ lắm.
Mới bắt đầu mình nghĩ học Python cho dễ bạn có thể tham khao học ở đầy https://www.dataquest.io code luôn cho vui chứ mới vô học lý thuyết chay hơi chán.
Câu 1 của anh thì có 1 cái video của Siraj Raval có nói tới: https://www.youtube.com/watch?v=Cr6VqTRO1v0
1. Về Toán mình nên học về mảng nào, về lập trình mình nên học ngôn ngữ nào, và tập trung vào cái gì? Nếu được mình xin tên books hoặc courses.
2. Hiện nay, mainstream trong ML và AI là gì? Hướng nghiên cứu đột phá trong thời gian tới là gì? ML và AI đã được ứng dụng trong tài chính và kinh tế học như thế nào?
1. học 1 lèo từ giải tích 1 2 3 đến đại số rồi xác suất thống kê thôi :v
cái thứ 2 e nghĩ tùy sở thích từng người :v nghiên cứu sâu mới rõ được nên theo cái gì
1. Mình cũng đã tìm hiểu sơ qua nhưng thực sự hoang mang vì không biết phải học cái gì. Mình sợ học vừa thiếu vừa thừa.
2. Mảng mình quan tâm là ứng dụng vào tài chính và kinh tế học. Còn về kỹ thuật kiểu như CNN, RNN, ... mình không hiểu là lĩnh vực nào cần ứng dụng cái gì.
1. Nên học tới đâu có tới đó rồi tính. Lập trình cho vui thì python, còn muốn ứng dụng thì java hoặc C.
2. Có 2 hướng được nhận định sẽ đột phá là Deep learning và Probabilistic graphical models (cái này từ các chuyên gia đưa ra). Về kinh tế thì thử đọc cuốn Prediction Machines mới xuất bản gần đây và đang được quan tâm.
Nhận định về sự bứt phá của Deep learning và các mảng của AI nằm trong cuốn The Master Algorithm (2015). Còn nhận định thứ 2 nằm trong The Book of Why (2018). Cuốn Prediction Machines bạn có thể lên mạng đặt bản Kindle.
Tại sao lập trình cho vui thì lại là Python còn ứng dụng thì Java hoặc C? Trong khi đó C++ thì bạn không đề cập tới?
Cái này do mình nhận định nên mang ý chủ quan. Cũng thấy nhiều bạn trong này gặp nhiều rắc rối về ngôn ngữ lập trình rồi hệ điều hành. Thật ra thì ngôn ngữ không quan trọng lắm vì cuối cùng ta cần cái model là một file số hơn là cái code. Trong một ứng dụng thì phần xử lý linh tinh chiếm gần hết, còn học máy thì chỉ vài phần trăm. Mình làm nghiên cứu, viết báo thì dùng python, còn viết app lại dùng java. C++ chỉ là phát triển của C nên mình coi như 1 thôi.
Mình cũng nghĩ đó là nhận định chủ quan của bạn (giống như C++ là phát triển của C nên bạn coi là một). Mình thấy nếu làm về DL với ML thì việc nắm vững một nn Python hay R rất quan trọng. Đó là còn chưa kể các thư viện đi kèm với nó.
Mình hay viết API nên không quan trọng lắm vì Java, Python, C# gì viết cũng đượ
mình viết cho ý 2, mình nghĩ DL với Probabilistic graphical models còn đột phá gì nữa, về DL có chăng là nâng cao hiệu suất kiến trúc mà hiện giờ đang đc dẫn dắt bởi Hinton(capsule) lấy cảm hứng từ neocortex, còn Probabilistic graphical models theo mình biết thì VAE là hiện thân lớn nhất cho thành công của nó cho tới lúc này(dòng generative models, trong dòng này còn có GAN mạnh và chắc chắn là thông dụng hơn, xem thêm https://blog.openai.com/generative-models/)
về những gì xảy ra sắp đến cho AI, mình nghĩ phải lấy thông tin từ deepmind, thế lực số 1 của AI hiện tại. xem bài báo của Hassabis, founder deepmind để phần nào thấy ông đã gói những đột phá cũng như thách thức mà AI hiện đại phải giải quyết
https://www.semanticscholar.org/paper/Neuroscience-Inspired-Artificial-Intelligence.-Hassabis-Kumaran/5870d0edaaa0f28bbe657238febaaf1181e81378
1. Về Toán chủ yếu là vi phân đạo hàm, các phép toán trên ma trận và xác suất thống kê. Ngôn ngữ thông dụng và phổ biến nhất trong khoa học dữ liệu và học máy là python.
Cái đầu tiên mình nghĩ bạn nên học đó là ngôn ngữ lập trình song song với học về toán xác suất thống kê và đại số tuyến tính. Sau đó chọn một ngôn ngữ lập trình để tiếp tục, mình gợi ý là dùng python. Sau đó đăng ký một khóa machine learning căn bản trên mạng để bắt đầu làm về ML. Bây giờ ko nên hỏi về hot trend của machine learning, vì nó sẽ thay đổi liên tục. Khi bạn đã sẵn sàng thì lúc đó bạn dễ dàng tìm thấy con đường của chính mình. Chúc bạn may mắn.
https://ocw.mit.edu/courses/mathematics/
Bạn kiếm linear algebra, multivariable caculus, probability and statistics.
Tối ưu hoá bạn học ở đây:
http://web.stanford.edu/class/ee364a/videos.html
Quan điểm của mình như sau:
1. Đừng nên học theo giáo trình trong đại học, vì nó là kiến thức nghiên cứu, khác với kiến thức để có thể áp dụng thực tế.
Ví dụ như mình chỉ cần biết ma trận và các phép toán trên nó là có thể hiểu các bài giảng về machine learning, một chút về thống kê như median, mean, variance, các loại phân phối là có thể hiểu data analysis, biết đạo hàm là gì để có thể hiểu thuật toán tối ưu hàm mất mát hoạt động thế nào… Mỗi cái như vậy, chỉ cần biết vừa đủ là hiểu được thôi.
Còn ba cái toán học nhìn vô không hiểu gì thì tốt nhất đừng nên mất thời gian, vì nếu nó không thể giải thích cho bạn một cách đơn giản, chứng tỏ là người ta chưa thực sự hiểu nó ( Einstein ).
2. Mình không biết cái gì đang là hot, nhưng mình khuyên bạn nên tìm hiểu kỹ về lĩnh vực này rồi mới thấy nó thú vị với bạn hay không. Khi bạn bắt tay vô làm, bạn sẽ cảm nhận rõ hơn và tự bạn cập nhật được xu hướng theo cách của bạn.
3. Mình khuyên bạn nên tìm hiểu trước hết là về lý thuyết cơ bản của machine learning, để hiểu cơ bản công thức và các tham số liên quan. Sau đó là chọn một ngôn ngữ để học như Python, vì mấy cuốn sách hay chọn ngôn ngữ này để cài đặt. Tiếp theo là phải thành thạo được một công cụ giúp bạn cài đặt được một model nhanh chóng ( như scikit learn, keras ) và áp dụng nó để xem kết quả và đối chiếu với lý thuyết đã học.
Nói chung bước đầu tiên bạn cứ lên internet, vô medium.com gõ vài keyword như machine learning basic, nó sẽ cho bạn các tutorial cơ bản, sau đó bạn xem và chỗ nào không hiểu lại tra google. Sau đó muốn nâng cao thì tìm đọc sách của PacktPub vì nó chuyên sâu về lĩnh vực này.
PacktPub là tên một nhà xuất bản, https://www.packtpub.com/all. Vì nó có nhiều sách chuyên sâu về machine learning và lại viết rất dễ hiểu. Mình là fan của NXB này :D. Nhưng mà khi mình đã học nâng cao và ứng dụng rồi mình mới tìm đến nó. Còn cơ bản mình cứ tra google và cập nhật các kiến thức khác thôi.
Toán bạn tham khảo vừa đủ để hiểu là được. Ví dụ các metric như least square, RMSE, tại sao lại dùng cái đấy, tối ưu hàm loss như nào, khái niệm về đạo hàm, phân phối xác suất này nọ là đủ. Vì thực tế đi làm hoặc đi pv không ai ném ra 1 hàm loss và bắt bạn tối ưu hoặc giải nghiệm cả. Các công ty cần người làm được việc, có problem-solving skills. Còn học để nghiên cứu thì lại là 1 hướng khác!
Cho mình hỏi một chút là dựa vào tiêu chí nào, người ta biết mình làm được việc, cụ thể ở trong mảng này? Đặc biệt mình không có background như đã đề cập ở trên.
mình cũng k rõ các tiêu chuẩn tuyển dụng ở VN. Mình thường học xong lên kaggle thi thố. Tuy điểm ko = ai nhưng rút được cực kỳ nhiều kinh nghiệm trên này, đi pv trả lời được hầu hết cũng nhờ thực hành trên kaggle.
Kết hợp đọc kernel, documents của các top kaggler rồi papers đúc kết đc nhiều kinh nghiệm thực tế + coding skills. Bạn muốn nhanh cứ học kiểu top-down = cách làm lại những tutorial trên mạng. K hiểu chỗ nào thì đọc lý thuyết chỗ đấy rồi lại thực hành liên tục k nghỉ thôi.
Căn bản là không có NXB nào cho sách free đâu bác ạ :)), chỉ là nếu bác muốn download free thì cứ tìm google theo title thử. Mình thì vừa có download free trên 1 số web deep :)) , và cũng có mua ebook trên amazon hay book google (trong trường hợp mình tìm không ra và sách đó đáng mua). Mình thì thấy ưng cách diễn đạt và trình bày của các tác giả hợp tác với NXB này rất rõ ràng, trực quan và dễ hiểu, viết để cho người ta đọc hiểu và làm được (có github đầy đủ https://github.com/PacktPublishing) . Một số sách hay của NXB này mình từng đọc là Python Deep Learning (F.Chollet) , Deep learning quick reference: useful hacks for training and optimizing deep neural networks with tensorflow and keras (Michael Bernico) , Mastering Machine Learning Algorithms: Expert techniques to implement popular machine learning algorithms and fine-tune your models (Giuseppe Bonaccorso). Các bạn có thể bỏ khoảng 19$ cho mỗi cuốn sách.
https://www.datacamp.com/tracks/data-scientist-with-python
Toán thì tất nhiên bác sẽ cần nghiên cứu sâu về đại số logic, toán xác xuất, toán rời rạc.
kinh nghiệm thực tế của mình là bạn hoàn toàn có thể học machine learning mà không cần có nền tảng IT hay toán học. Cái bạn cần là sự đam mê nghề này. Khi học, bạn sẽ hiểu thêm về xác suất và ngôn ngữ Python. Kiến thức toán ở phổ thông gồm đại số và ma trận là quan trọng. Nên nhớ một điều là bạn học vì đam mê nhe. Đừng thấy người ta ăn khoai mà vác mai đi đào.
bạn nên bắt đầu từ coursera lớp machine learning của thầy Andrew Ng (đại học Stanford). Miễn phí và nếu thấy ổn thì học tiếp.
Mình cũng đang học Machine Learning/Deep Learning, tuy nhiên đã qua giai đoạn hoang mang không biết bắt đầu từ đâu nên hi vọng là kinh nghiệm đã qua của mình sẽ giúp ích cho bạn.
Kiến thức toán cơ bản cần thiết là Calculus, Linear Algebra và Probability. Mình nghĩ hiệu quả nhất là cứ vào thẳng học Machine Learning luôn rồi đụng cái gì liên quan đến toán thì mò đọc cái đó. Như thế bạn sẽ biết được phần kiến thức Toán đó được áp dụng vào đâu và ở chỗ nào nên đỡ nản hơn là học Toán thuần túy. Tuy nhiên, nếu bạn có thời gian học Toán thì MIT OCW luôn chào đón bạn:
1. MIT 18.01 Single Variable Calculus
https://ocw.mit.edu/courses/mathematics/18-01-single-variable-calculus-fall-2006/index.htm
2. MIT 18.02 Multivariable Calculus
https://ocw.mit.edu/courses/mathematics/18-02-multivariable-calculus-fall-2007/
3. MIT 18.06 Linear Algebra
https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/
4. MIT 6.041 Probabilistic Systems Analysis and Applied Probability
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-041-probabilistic-systems-analysis-and-applied-probability-fall-2010/
Mình khuyên bạn nên cứ học Machine Learning trước xem bản thân có thực sự thích ngành này không rồi hẵng quay lại những môn Toán này nếu thấy thực sự cần thiết. Nếu học thì nên học Calculus trước khi học Probability (điều kiện tiên quyết).
Để có cái nhìn tổng quan về Machine Learning thì bạn có thể bắt đầu từ khóa Machine Learning của GS Andrew Ng trên Coursera, khóa này khá dễ, bài tập lập trình bằng ngôn ngữ MATLAB/Octave (trong course có video hướng dẫn sơ về MATLAB với bài tập cũng không yêu cầu quá khó nên khỏi sợ MATLAB/Octave ha!)
https://www.coursera.org/learn/machine-learning
Tip: Học trên Coursera thì nên Apply for Financial Aid nó cho học free, làm đủ bài tập yêu cầu được cái certificate cho có động lực :)
Để đi sâu hơn và hiểu rõ hơn Machine Learning thì tiếp theo là khóa Caltech Learning From Data:
https://work.caltech.edu/telecourse.html
Khóa này cả video bài giảng lẫn bài tập đều khá nặng lý thuyết, bài tập mở, không bắt buộc phải sử dụng ngôn ngữ lập trình nào cả (mà làm là tự code từ đầu đến đuôi). Đây là khóa Machine Learning mình cảm thấy tâm đắc nhất, hồi học Machine Learning trong trường thầy mình cũng yêu cầu coi video bài giảng của khóa này trước khi đến lớp :)
Cùng với đó bạn có thể đọc blog Machine Learning Cơ bản của anh Tiệp, mình chưa thấy blog Machine Learning nào hay hơn MLCB này cả :)
https://machinelearningcoban.com
Xong Machine Learning thì bạn có thể học tiếp tới Deep Learning, bạn tự search course thì khá chắc sẽ bắt gặp khóa CS231n của Stanford:
http://cs231n.stanford.edu
Nhiêu đó là đủ kiến thức để bạn tự tiếp tục tìm hiểu cũng như làm các project rồi. Nếu không có background CS thì ngôn ngữ lập trình tối ưu nhất cá nhân mình nghĩ là Python (dễ học, nhiều framework hỗ trợ ML/DL).
Cùng với Python là các thư viện hỗ trợ: NumPy (tính toán ma trận), Pandas (xử lý dữ liệu), Matplotlib (visualize, vẽ biểu đồ), scikit-learn (các thuật toán machine learning).
Deep Learning thì có rất nhiều framework, nổi bật là Tensorflow, Pytorch...
Bạn nên lên ý tưởng làm một project gì đó rồi sử dụng các thư viện như một công cụ để cụ thể hóa project đó, lúc làm cần gì thì Google cái đó sẽ dễ nhớ hơn. Mình từng đọc các quyển tutorials, cookbook rồi làm theo cuối cùng thì quên sạch, cứ làm rồi tự mò dần sẽ nhớ thôi.
Cơ mà nếu chưa bao giờ lập trình thì bạn có thể thử các tutorial code trên Datacamp để kickstart ha, Datacamp không có free cơ mà sử dụng link này đăng ký thì được free học 1 tháng.
https://www.datacamp.com/promo/meetup
Tip: Học xong 1 tháng vô setting delete account xong đăng ký lại bằng link trên được 1 tháng mới học tiếp
Lúc mình học Coursera (giữa năm 2016), xin Financial Aid cực kì dễ, còn bây giờ thì mình không rõ nha. Lúc đó nhấn apply for Financial Aid rồi điền thông tin là nó auto accept, còn bây giờ nó có thêm dòng "Applications take at least 15 days to get reviewed" và mình chưa học khóa mới nào trên Coursera nữa nên không rõ lắm.
Mới bắt đầu mình nghĩ học Python cho dễ bạn có thể tham khao học ở đầy https://www.dataquest.io code luôn cho vui chứ mới vô học lý thuyết chay hơi chán.
Câu 1 của anh thì có 1 cái video của Siraj Raval có nói tới: https://www.youtube.com/watch?v=Cr6VqTRO1v0
Nhận xét
Đăng nhận xét