Thử sức học Machine Learning trong vòng 1 tuần

7017
học machine learning

Học Machine learning (ML)!!! nghe có vẻ là nhiệm vụ bất khả thi, đặc biệt là khi bạn học sai cách.

Tuy nhiên, sau khi dành trọn 1 tuần để học những thức căn bản của ML, mình nhận thấy nó dễ tiếp cận hơn nhiều so với những gì mình tưởng tượng.

Trong bài viết này mình sẽ giới thiệu các bạn một lộ trình bắt đầu học ML như thế nào từ những kinh nghiệm thực tế trong tuần đầu mình học.

Background cần có

Trước khi mình học ML, mình đã đọc trước về nó một chút, và có tham gia một nửa khoá học của Andrew Ng trên Coursera và một vài khoá học lý thuyết khác. Nhờ vậy mà mình có được một ít kiến thức về ML, nhưng mình vẫn không thể dùng mớ kiến thức đó để viết code, cũng như ứng dụng thực tiễn. Và mình muốn thay đổi việc này.

Mình muốn có khả năng giải quyết vấn đề với ML vào cuối tuần học đó, mặc cho việc bỏ qua rất nhiều nguyên tắc cơ bản, và phải tiếp cận theo hướng từ trên xuống dưới, thay vì từ dưới đi lên.

Sau khi tham khảo trên Hacker News, mình đi đến kết luận rằng module Scikit Learn của Python là điểm xuất phát tuyệt vời nhất. Module này cung cấp cho bạn rất nhiều thuật toán machine learning để lựa chọn, đưa việc học máy thực tế xuống chỉ còn một vài dòng code.

Ngày Thứ 2: Học một số thứ thực tế

Mình bắt đầu tuần học bằng cách tìm kiếm video tutorial về Scikit Learn. Cuối cùng mình cũng tìm được tutotial của Sentdex về cách sử dụng ML để đầu tư cổ phiếu, tutorial này cung cấp cho mình một số kiến thức cấn thiết để chuyển sang bước tiếp theo.

Ưu điểm của tutorial của Sentdex là người hướng dẫn giới thiệu bạn toàn bộ các bước thu thập data. Khi bạn xem hết, bạn sẽ nhận ra việc tìm nạp và dọn dẹp data có thể tốn nhiều thời gian hơn cả việc học máy thực sự. Vậy nên kỹ năng viết script để scrape data từ các file hoặc crawl trên web là những kỹ năng cần thiết cho những người đam mê ML.

Mình cũng phải xem lại một số video mỗi khi gặp vấn đề, và mình nghĩ các bạn cũng nên như thế.

Tuy nhiên, nếu bạn đã biết cách scrape data từ website, tutorial này có lẽ sẽ không phù hợp với bạn vì có nhiều video cũng nói về tìm nạp dữ liệu rồi. Trong trường hợp đó, Intro to Machine Learning của Udacity sẽ là nơi xuất phát tốt nhất dành cho bạn.

  Hướng triển khai cho các project Machine Learning
  Máy học - Machine Learning và một vài hạn chế.

Ngày thứ 3: thử giải quyết vấn đề thực tế

Vào ngày thứ 3, mình muốn thử xem là mình đã có thể sử dụng những kiến thức vừa học để giải quyết một vấn đề thực tế chưa. Có 1 lập trình viên khác trong team code của mình đang tham gia cuộc thi data visualization của Ngân hàng Anh, mình cùng anh ta kiểm tra bộ dữ liệu mà ngân hàng công bố. Data thú vị nhất chính là các khảo sát hộ gia đình của họ. Đây là một khảo sát hàng năm mà ngân hàng thực hiện trên một vài nghìn hộ gia đình có liên quan đến tiền.

Vấn đề mà chúng mình phải giải quyết là: “Với thông tin về trình độ học vấn, tuổi tác và thu nhập của một người, máy tính có thể dự đoán được giới tính của người đó không?”

Mình lượn một vòng quanh bộ dữ liệu, dành một vài giờ clean data, và sử dụng Scikit Learn map để tìm thuật toán phù hợp cho vấn đề trên.

Cuối cùng bọn mình có được tỉ lệ thành công là 63%, cũng không ấn tượng là mấy. Nhưng ít nhất thì máy tính cũng đã có thể dự đoán tốt hơn một chút so với tỉ lệ 50% của việc tung đồng xu.

Xem kết quả giống như tự tạo động lực cho bản thân, nên mình khuyên các bạn hãy tự làm giống mình khi đã biết sơ cách sử dụng Scikit Learn nhé.

Và đó cũng là khoảnh khắc bạn nhận ra bạn có thể sử dụng ML để giải quyết các vấn đề thực tế trong cuộc sống.

Ngày thứ 4: Học lên tiếp

Sau khi mần đủ các module Scikit Learn, mình quyết định thử viết một thuật toán hồi quy tuyến tính mặc dù chưa biết gì. Mình muốn làm điều này bởi vì mình cảm thấy là mình không thể thực sự hiểu được nếu không thực hành.

May mắn là vào thời điểm này mình tìm đươc khoá học Coursera có dạy chi tiết về cách một vài thuật toán làm việc. Cụ thể hơn, nó mô tả khái niệm cơ bản về việc sử dụng linear regression với gradient descent

Đây hoàn toàn là kỹ thuật hiệu quả nhất, vì nó giúp bạn hiểu được các bước từ đầu đến cuối. Mình cực kì khuyến khích các bạn nên làm thử.

Mình dự định viết lại cách triển khai của mình đối với các thuật toán phức tạp hơn khi mình thực hành, nhưng mình thích làm việc này sau khi mình đã “ngâm” hết các thuật toán tương ứng trong Scikit Learn hơn.

Ngày thứ 5: Đi thi thố

Vào ngày thứ 5, mình bắt đầu làm bài hướng dẫn giới thiệu của Kaggle. Kaggle là một platform dành cho các cuộc thi ML, nơi bạn có thể gửi các giải pháp cho các vấn đề mà công ty hay tổ chức nào đó đưa lên.

Mình khuyên bạn nên thử Kaggle sau khi có một ít thuật toán và kiến thức thực tế về Machine Learning để bắt đầu với nó. Nếu không thì lại chuyển từ có ích sang bực bội mà thôi.

Tutorial của Bag of Words hướng dẫn bạn từng bước tham gia bài dự thi, và cung cấp cho bạn một bản giới thiệu ngắn gọn và thú bị về Natural Language Processing (NLP). Mình thấy hứng thú với NLP hơn nhiều khi coi xong tutorial này.

Ngày thứ 6: Trở lại trường

Mình tiếp tục làm việc với những tutorial của Kaggle vào ngày thứ 6, và cũng bắt đầu dùng Intro to Machine Learning của Udacity. Mình đã đi được nửa chặng đường và mọi thứ khá thú vị.

Nó dễ hơn khoá học Coursera nhiều, vì nó không đào sâu vào các thuật toán. Nó cũng thực tế hơn, vì nó dạy Scikit Learn giúp việc áp dụng vào thực tế dễ hơn nhiều so với viết thuật toán trong Octave khi bạn học Coursera.

Xem thêm những nguồn nghiên cứu Machine Learning tốt nhất cho người mới bắt đầu.

Còn một chặng đường phía trước

1 tuần vừa rồi rất vui với mình, mình nhận thấy được sự hữu ích của ML trong xã hội. Càng tìm hiểu, mình càng thấy nó có thể sử dụng để giải quyết mọi vấn đề.

Nếu bạn hứng thú với machine learning, mình mạnh dạng khuyên bạn nên dành một vài ngày hoặc vài buổi tối để đắm chìm với nó.

Chọn cách tiếp cận từ trên xuống nếu bạn không sẵn sàng học nhiều thứ nặng nề và muốn giải quyết các vấn đề nhanh nhất có thể.

Chúc bạn may mắn!

Xem thêm việc làm Software Developers hot nhất trên TopDev

  Tản mạn về Machine Learning
  Áp dụng Machine learning, xây dựng ứng dụng chatbot của riêng bạn