Học máy

Một sinh viên Khoa học máy tính viết cho tôi: “Thầy đã viết rằng Trí tuệ nhân tạo và Học máy là kĩ năng có nhu cầu cao nhưng trường em không dạy các môn này. Chương trình CS của chúng em vẫn hội tụ chủ yếu vào các ngôn ngữ lập trình như Java, C++, và JavaScript. Em thất vọng nhưng không biết phải làm gì. Xin thầy lời khuyên.”

Đáp: Học máy là lĩnh vực tăng trưởng nhanh chóng ngày nay và nhiều công ti đang tìm người tốt nghiệp có kĩ năng này. Nếu trường của em không có môn học theo chủ đề này, em có thể học từ Môn học trực tuyến mở cho đại chúng (MOOCs) trên Internet. Là sinh viên CS, em cần chủ động trong việc học của em và tìm ra cách học điều em cần thay vì chờ đợi nhà trường dạy môn học này.

Nếu em muốn học về học máy, thầy gợi ý rằng em bắt đầu bằng việc học “Môn học nhập môn” để hiểu học máy có thể và không thể làm được gì. Tri thức chung về lĩnh vực này sẽ giúp em đi xa hơn trong học tập của em và phát triển kĩ năng của em. Nhiều sinh viên thường bỏ môn nhập môn mà nhảy vào phần thực hiện hay học cách dùng công cụ. Đó là sai lầm vì họ chỉ học “thủ thuật” mà không biết cách áp dụng học máy một cách hiệu quả. Trong trường hợp đó, họ sẽ không đi xa trong nghề nghiệp của họ. Thầy thường nói với sinh viên của thầy: “Học công cụ nhưng không học nguyên lí giống như ăn ‘mì ăn liền’ mà không ăn ‘thức ăn cho người sành ăn.’”

Trước khi em bắt đầu làm việc trên các thuật toán học máy, em cần hiểu em đang giải quyết vấn đề gì. Em cần hỏi nhiều câu hỏi để chắc rằng em biết cái gì là vấn đề mà em muốn giải quyết. Bằng việc biết chúng,  em có thể đặt các tham số của em một cách đúng đắn và tạo ra ưu tiên để trả lời cho từng câu hỏi vào từng lúc để cho em sẽ không bị tràn ngập bởi dữ liệu và trở nên lẫn lộn. Bằng việc biết câu hỏi này cần được trả lời với phân tích dữ liệu, em có thể nhận diện dữ liệu được cần để thu thập để cho em có thể thu thập chúng cũng như khối lượng dữ liệu đó để hỗ trợ cho các thuật toán học máy của em.

Bước tiếp là huấn luyện cho máy học và phải chắc rằng em có đủ dữ liệu cho nó học. Không có dữ liệu đủ, việc học máy của em sẽ không cho em hiệu năng em muốn. Đừng vội vàng để cho các thuật toán làm việc chừng nào em chưa có đủ dữ liệu. Có nhiều dữ liệu công khai sẵn có trên Internet mà em có thể dùng bằng việc duy trì hội tụ vào điều em muốn làm. Đừng cố áp dụng các thuật toán học máy cho mọi dữ liệu em có thể có, nó sẽ làm tràn ngập em.  Chỉ lấy những dữ liệu liên quan tới vấn đề của em để xem liệu học máy của em có cho kết quả như mong đợi không. Đừng vội vàng về phạm sai lầm, phần lớn sinh viên của thầy cũng phạm sai lầm trong bước này nhưng họ cũng học được từ sai lầm của họ và em nên làm cùng điều đó. Một khi em có thể làm chủ bước này và làm cho việc học máy thành dự đoán được theo mục đích của em thì em có thể tiến sang các thuật toán phức tạp.

Sau khi phát triển kĩ năng học máy và biết cách giải quyết vấn đề, bước tiếp là “chơi” với các công cụ thương mại sẵn có trên Internet. Các website AWS của Amazon và Azure của Microsoft có nhiều công cụ cho phân tích dữ liệu mà em có thể học. Em có thể dùng dữ liệu của họ để làm quen với các công cụ rồi dùng dữ liệu riêng của em để huấn luyện công cụ để làm cho nó làm điều em cần. Học máy chỉ tốt như dữ liệu em cho chúng. Để xây dựng kĩ năng của em trong công nghệ học máy, em cần bắt đầu với dữ liệu tốt nhất theo đó máy có thể học được.

 

—English version—

 

Machine Learning

A Computer Science student wrote to me: “You wrote that Artificial Intelligence and Machine Learning are the high demand skills but my school does not teach these subjects. Our CS program is still focusing mostly on programming languages such as Java, C++, and JavaScript. I am disappointed but do not know what to do. Please advise.”

Answer: Machine learning is a fast-growing field today and many companies are looking to find college graduates that have this skill. If your school does not have a course in this subject, you can learn from Massive Open Online Courses (MOOCs) on the Internet. As a CS student, you need to be active in your learning and find a way to learn what you need instead of waiting for the school to teach the subject.

If you want to learn machine learning, I suggest that you begin by taking an “Introduction course” to understand what machine learning can and cannot do. A general knowledge about this field will help you to go further in your learning and develop your skills. Many students often skip the introduction course but jump to the implementation part or learning how to use tools. It is a mistake as they only learn the “tricks” but do not know how to apply machine learning efficiently. In that case, they will not go far in their career. I often told my students: “learning the tools but not the principles is like eating “Instant noodle” but not “Gourmet foods.”

Before you start to work on the machine learning algorithms, you need to understand what problems you are solving. You need to ask many questions to make sure that you know what are the problems that you want to solve. By knowing them,  you can set your parameters correctly and create a priority to answer each question at a time so you will not get overwhelmed by data and become confused. By knowing which question that needs to be answered with data analysis, you can identify the data needed to collect so you can gather them as well as the amount of that data to support your machine learning algorithms.

The next step is to train the machine to learn and make sure that you have enough data for it to learn. Without sufficient data, your machine learning will not give you the performance that you want. Do not hurry to get the algorithms to work unless you have enough data. There are a lot of public data available on the Internet that you can use but stay focus on what you want to do. Do not try to apply machine learning algorithms to every data you can get, it will overwhelm you.  Only get the data that are relevant to your questions to see if your machine learning yields the results as expected. Do not worry about making mistake, most of my students are also making mistakes during this step but they also learn from their mistakes and you should do the same. Once you can master this step and get the machine learning to predict according to your goals then you can move on to complex algorithms.

After developing the machine learning skills and know how to solve problems. The next step is to “play” with commercial tools available on the Internet. Amazon’s AWS, Microsoft’s Azure websites have many tools for data analytics that you can learn. You can use their data to get familiar with the tools then use your own data to train the tools to get it to do what you need. Machines learning is only as good as the data that you give them. To build your skills in machine learning technology, you need to start with the best data on which the machine can learn.