Lộ Trình Học Python Machine Learning Cho Newbies

Khái niệm về Python Machine Learning

Python Machine Learning là việc áp dụng ngôn ngữ lập trình Python trong xây dựng và phát triển các chương trình/dự án Machine Learning (Học Máy). Thực tế, Python không phải là ngôn ngữ duy nhất được sử dụng cho Học máy, một vài ngôn ngữ khác cũng được dùng cho Học máy đó là:

  • Ngôn ngữ R
  • Ngôn ngữ Lisp
  • Ngôn ngữ Prolog
  • Ngôn ngữ Java

Tuy nhiên, Python là ngôn ngữ phù hợp, được sử dụng phổ biến và ứng dụng mạnh mẽ nhất trong lĩnh vực Machine Learning, AI và Deep Learning bởi các đặc trưng của nó.

Tìm hiểu lý do tại sao Python là ngôn ngữ lập trình tốt nhất cho AI, ML, DL?

Thay vì yêu cầu con người lấy các quy tắc và xây dựng theo cách mô hình thủ công mô từ việc phân tích một lượng lớn dữ liệu, máy học cung cấp một giải pháp thay thế hiệu quả hơn để nắm bắt kiến ​​thức trong dữ liệu để từng bước cải thiện hiệu suất của các mô hình dự đoán và đưa ra quyết định dựa trên dữ liệu.

Có thể thấy rằng Học máy là một trong những lĩnh vực thú vị và nhận được nhiều sự quan tâm nhất hiện nay, có lập trình viên nào mà không muốn sở hữu một tấm certificate về Machine Learning để đưa vào CV cơ chứ?

Tại sao Machine Learning nhận được nhiều sự quan tâm như vậy? Đơn giản vì nó là sự ứng dụng và khoa học của các thuật toán có ý nghĩa về dữ liệu. ​​Chúng ta đang sống trong thời đại mà dữ liệu ngày càng dồi dào và tăng lên nhanh chóng, bằng việc sử dụng các thuật toán tự học từ lĩnh vực máy học, chúng ta có thể biến dữ liệu này thành kiến ​​thức hữu ích cho quá trình ra quyết định.

Nhờ có nhiều thư viện mã nguồn mở mạnh mẽ đã được phát triển trong những năm gần đây, có lẽ chưa bao giờ có thời điểm tốt hơn để thâm nhập vào lĩnh vực học máy và học cách sử dụng các thuật toán mạnh mẽ để phát hiện các mẫu trong dữ liệu và đưa ra dự đoán về các sự kiện trong tương lai.

Máy học không chỉ ngày càng trở nên quan trọng trong nghiên cứu khoa học máy tính mà nó còn đóng một vai trò ngày càng lớn trong cuộc sống hàng ngày của chúng ta. Nhờ máy học, chúng ta được tận hưởng bộ lọc thư rác email mạnh mẽ, phần mềm nhận dạng văn bản và giọng nói tiện lợi, các công cụ tìm kiếm web đáng tin cậy và các chương trình chơi cờ đầy thử thách.

Hy vọng rằng sắp tới, chúng ta sẽ thêm những chiếc xe tự lái an toàn và hiệu quả vào danh sách này. Ngoài ra, những tiến bộ đáng chú ý về Machine Learning đã được thực hiện trong các ứng dụng y tế, chẳng hạn các nhà nghiên cứu đã chứng minh rằng các mô hình học sâu có thể phát hiện ung thư da với độ chính xác gần bằng con người.

Một cột mốc quan trọng khác đã đạt được gần đây bởi các nhà nghiên cứu tại DeepMind, những người đã sử dụng học sâu để dự đoán cấu trúc protein 3D, vượt trội hơn lần đầu tiên khi các phương pháp tiếp cận được dựa trên vật lý.

Phân loại các thuật toán học máy

Main-python-machine-learning-algorithms
Main-python-machine-learning-algorithms

1) Học có giám sát (supervised learning)

Supervised Learning là thuật toán máy học dự đoán các đầu ra (outcome) của tệp dữ liệu mới (new input) dựa vào dữ liệu có sẵn của các cặp (input, outcome). Các cặp dữ liệu (input, outcome) như vậy gọi là các (Data, Label). Supervised Learning là hình thức học phổ biến nhất trong Machine Learning và thường được sử dụng trong các bài toán phân lớp (Classification).

Ví dụ: Bạn có một kho các loại quả, mỗi quả có một tập đặc tính riêng (data), mỗi loại đã được đặt tương ứng với 1 “nhãn” (label). Bạn có dữ liệu về tất cả các “nhãn” có trong kho và tập đặc tính tương ứng của từng “nhãn” dựa vào các lần nhập kho và phân loại trong quá khứ.

Vậy khi có thêm một số lượng quả mới nhập về, chương trình máy học chỉ cần căn cứ vào các tập đặc tính đã có để dự đoán và phân loại các loại quả vào các “nhãn” tương ứng.

Nguyên lý này cũng được áp dụng tương tự trong các nhiệm vụ như nhận dạng chữ viết tay, nhận dạng tuổi, giới tính… Hay trong tính năng nhận dạng và tag bạn bè vào ảnh trên Facebook.

Các thuật toán Supervised Learning còn được chia nhỏ thành 02 dạng chính:

Classification (Phân loại)

Một bài toán được gọi là classification nếu các label của input data được chia thành một số hữu hạn nhóm. Ví dụ: dữ liệu về ảnh được thành 2 dạng giới tính là nam và nữ, ví dụ về phân loại kho hoa quả phía trên cũng là một dạng bài toán Classification.

Regression (Hồi quy)

Một bài toán được gọi là hồi quy nếu các label của nó không được chia thành một hữu hạn các nhóm mà là một thực thể (giá trị) cụ thể. Ví dụ như xác định năm tuổi của một người thông qua nhận diện các bức ảnh.

2) Học không có giám sát (unsupervised learning)

Khác với dạng học có giám sát, trong những bài toán học không giám sát, chúng ta sẽ không biết được các outcome hay label trong quá khứ, mà chỉ có các dữ liệu đầu vào (input). Các thuật toán về Unsupervised Learning sẽ dựa trên cấu trúc của các input để thực hiện một nhiệm vụ nào đó có thể là phân nhóm (clustering) hoặc giảm số chiều của dữ liệu (dimension reduction) để thuận tiện trong việc lưu trữ và tính toán.

Để bạn dễ hình dung hơn, chúng ta cùng quay lại với bài toán phân loại quả bên trên. Đối với dạng học không giám sát, bạn không biết được trong kho có bao nhiêu loại quả và là những “nhãn” nào. Dữ liệu bạn có là một tập các đặc tính của các loại quả trong kho, tập đặc tính này thu được sau quá trình học một tập dữ liệu huấn luyện (training data set).

Sau đó, thuật toán sẽ tiến hành các kỹ thuật phân cụm và gom cụm (Clustering & Association). Khi thực hiện phân cụm, dựa vào tập đặc trưng của mỗi loại quả, sẽ đưa quả đang xét vào nhóm (cụm) có đặc trưng tương đồng với nó nhất. Khi đó, 2 quả bất kỳ ở cùng cụm sẽ tương đồng nhau, 2 quả khác cụm sẽ khác biệt nhau.

Các bài toán về Unsupervised Learning cũng được chia thành 2 nhóm nhỏ:

Clustering (phân cụm)

Giải quyết bài toán phân loại dữ liệu thành các cụm (nhóm nhỏ) dựa trên sự liên quan (các tập tính đặc trưng) của chúng. Ví dụ như các nền tảng quảng cáo Facebook thường phân loại nhóm khách hàng theo hành vi của họ của họ khi sử dụng MXH Facebook.

Association (gom cụm)

Giải quyết bài toán khi chúng ta cần tìm một quy luật nào đó dựa trên khối lượng lớn dữ liệu cho trước. Ví dụ như khi khách hàng mua ipod thường mua thêm các case để đựng. Dựa vào đó có thể đưa ra một hệ thống gợi ý (recommendation system) các sản phẩm dựa trên quy luật để thúc đẩy doanh số

3) Học bán giám sát (semi-supervised learning)

Học bán giám sát là việc chúng ta có một khối lượng dữ liệu đầu vào (input) mà chỉ một phần trong đó là các dữ liệu được gắn nhãn. Học bán giám sát nằm ở giữa hai loại học có giám sát và học không giám sát.

Bài toán này thường phát sinh trong thực tế bởi các dữ liệu hầu như hiếm khi được gắn nhãn toàn bộ, các dữ liệu gắn nhãn thường tốn nhiều thời gian và chi phí hơn so với các dữ liệu không gắn nhãn.

4) Học tăng cường (reinforcement learning)

Reinforcement learning là bài toán được xây dựng để giúp một hệ thống tự động xác định hành vi và đưa ra quyết định dựa trên hoàn cảnh để đạt được lợi ích cao nhất (maximizing the performance). Hiện nay các bài toán Reinforcement learning chủ yếu được áp dụng vào Lý Thuyết Trò Chơi (Game Theory), những thuật toán cần xác định nước đi tiếp theo để đạt được điểm số cao nhất.

Một số ví dụ điển hình cho các bài toán Reinforcement learning là các chương trình đào tạo cho máy tính có thể chơi vờ (AlphaGo), chơi các cho chơi điện tử (mario) với mục tiêu đạt điểm số cao nhất.

Lộ trình học machine learning với python

Để bắt đầu học machine learning với python, dĩ nhiên bạn cần hiểu và sử dụng thấu đáo được ngôn ngữ lập trình Python. Nhưng đó không phải tất cả, bạn cần có kiến thức chắc chắc (hiểu bản chất và biết ứng dụng) về những phần sau đây:

Các kiến thức về toán học căn bản: xác xuất thống kê, giải tích và đại số tuyến tính

Những trọng tâm về toán học căn bản mà bạn cần hiểu rõ bao gồm: những kiến thức về vector, ma trận và các bài toán xoay quanh ma trận, các bài toán về đạo hàm (chain rule và production rule), các kiến thức về lý thuyết xác suất thống kê, xác suất sử dụng không gian mẫu, xác suất có điều kiện, biến ngẫu nhiên, phân phối xác xuất… 

Điều này thật ra không hề mới mẻ, hầu như tất cả chương trình học trong các trường đại học về Kinh Tế – Kỹ Thuật tại Việt Nam đều có đào tạo những kiến thức này ngay từ năm 2 – 3 (có thể thông qua nhiều môn học như toán cao cấp, giải tích, xác suất thống kê, kinh tế lượng, thống kê kinh tế…). Bạn chỉ cần nhớ lại và kết hợp các kiến thức đó với nhau thôi vì tôi tin rằng những tư duy đó vẫn còn trong bộ não của bạn, đó cũng chính là điều mà việc học 4 năm đại học mang lại cho bạn.

Kỹ năng về ngôn ngữ lập trình Python

Rõ ràng muốn “đốn củi” thì phải có rìu. Và Python là chiếc rìu phù hợp nhất mà bạn nên có khi bắt đầu học machine learning. Lý do tại sao thì bạn có thể tìm hiểu thông qua bài viết này.

Nếu có khả năng tự học và khả năng ngoại ngữ, bạn có thể tham khảo một vài khoá học python online thông qua các video tự học, còn nếu bạn muốn học nhanh hơn và được hướng dẫn thực hành bởi giảng viên, bạn có thể đăng ký tham gia khoá học Python Level 2: Python for Machine Learning & Deep Learning tại MCI

Xây dựng được các model cơ bản trên các thư viện python cho lập trình Machine Learning

Hiện nay có rất nhiều thư viện Python được phát triển mạnh mẽ phục vụ cho các thuật toán Machine Learning với mã nguồn mở. Đó là nguồn kiến thức khổng lồ và hữu ích giúp bạn tiếp cận với các bài toán học máy dễ dàng hơn. Một số thư viện python cho Machine Learning có thể kể đến như:

  • NumPy
  • Keras
  • Tensoflow
  • Scikit Learn

Tìm hiểu về Machine Learning thông qua các khoá học online và offline

Việc tham gia các khoá học giúp bạn có định hướng tốt hơn về quá trình học của mình (các bài giảng thường sẽ chia theo mức độ từ dễ tới khó, từ kiến thức nền tảng tới ứng dụng giúp bạn tiếp cận dễ dàng hơn và không bị ngợp trong khối lượng kiến thức lớn).

Lựa chọn hình thức học online qua video hay offline sẽ tuỳ vào hoàn cảnh và nhu cầu của bạn. Các khoá online thường sẽ có chi phí thấp hơn nhưng yêu cầu bạn phải có khả năng tự học. Ngược lại khi tham gia các khoá đào tạo  tiếp, bạn có cơ hội được chia sẻ và giải đáp từ những người đã có kinh nghiệm hơn bạn và mở rộng mối quan hệ trong ngành.

Trao đổi và luyện tập trên các diễn đàn

Có rất nhiều cộng đồng về Python và Machine Learning để bạn có thể trao đổi, tìm kiến các ý tưởng hay và các kiến thức cho mình. Một vài cộng đồng nổi tiếng cho lập trình viên bao gồm:

Lời kết: Vậy là MCI đã giới thiệu đến bạn một vài điều quan trọng khi chúng ta bắt đầu với Machine Learning. Hãy thường xuyên cập nhật các kiến thức thú vị từ Blog kiến thức của chúng tôi nhé! 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *