12/08/2018, 15:12

Machine Learning - Tổng quan về Machine Learning

Vài năm gần đây, có thể các bạn sẽ nghe thấy cụm từ "cách mạng công nghiệp lần thứ 4" hay "cách mạng công nghiệp 4.0", tập trung chủ yếu vào sản xuất thông minh dựa trên sự phát triển đột phá của cách ngành nghề công nghệ thông tin, công nghệ sinh học, công nghệ nano, ... Mỗi một cuộc cách mạng ...

Vài năm gần đây, có thể các bạn sẽ nghe thấy cụm từ "cách mạng công nghiệp lần thứ 4" hay "cách mạng công nghiệp 4.0", tập trung chủ yếu vào sản xuất thông minh dựa trên sự phát triển đột phá của cách ngành nghề công nghệ thông tin, công nghệ sinh học, công nghệ nano, ... Mỗi một cuộc cách mạng công nghệ đều sẽ mang đến một bước ngoặt lớn với cách thức chúng ta sản xuất, lao động, hãy nhìn lại thế giới xung quanh bạn đang thay đổi từng ngày như thế nào: chúng ta có các sản phẩm trí tuệ nhân tạo mô phỏng được các hoạt động y hệt con người, thậm chí là giỏi hơn khi AlphaGo của google đã đánh bại Lee Sedol, kì thủ cờ vây hàng đầu thế giới, rồi chụp x quang 3 chiều giúp phát hiện sớm ung thư, công nghệ nano giúp chữa trị ung thư cho con người, công nghệ thực tế ảo trong pokemon go từng gây sốt cho toàn thế giới, ... Thế giới đang đi những bước dài mỗi ngày, góp một phần không nhỏ trong đó chính là công nghệ thông tin, và cụ thể hơn, một trong các công nghệ góp phần vào bước phát triển của công nghệ thông tin, chính là machine learning.

Machine Learning (ML) là một trong các cụm từ được nhắc đến khá nhiều gần đây, mà tiêu biểu nhất như tôi đã nêu ở trên, AlphaGo của google. Không chỉ trong lĩnh vực trí tuệ nhân tạo, mà rất, rất nhiều lĩnh vực khác cũng đang có sự tham gia của ML, và kiến thức về ML thì rất nhiều và rất khó học nên trong khuôn khổ bài viết này, tôi sẽ chỉ nhắc tới một vài khái niệm cơ bản của Machine Learning, áp dụng của ML trong thực tế. Những khái niệm nâng cao hơn, đi sâu hơn về ML sẽ được đem đến trong những bài viết sau của series.

Khái niệm

Thực chất thì tới thời điểm hiện tại, vẫn chưa có một định nghĩa thống nhất cho ML, nhưng đa phần khi tìm tài liệu trên mạng, chúng ta sẽ thấy định nghĩa về machine learning như thế này:

Machine learning is the subfield of computer science that gives computers the ability to learn without being explicitly programmed."

Định nghĩa này do Arthur Samuel đưa ra năm 1959, tạm dịch là "Maching learning là một ngành học thuộc khoa học máy tính, giúp máy tính có khả năng tự học mà không phải lập trình một cách rõ ràng"

Hoặc theo Tom Mitchell:

A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E

Định nghĩa này có vẻ khó hiểu hơn cái trước, tạm hiểu là Tom Mitchell coi Machine Learning như 1 chương trình, nhiệm vụ của nó là thưc hiện 1 task T nào đó, khi thực hiện xong, ta thu được experience E. Nhờ vào việc học hỏi experience E, ta có thể thay đổi (hoặc không) để tiến tới thực hiện task T+1, và nhằm cải thiện hiệu suất P. Lấy ngay ví dụ là AlphaGo, T chính là chơi mỗi ván cờ với các người chơi khác, E chính là kinh nghiệm thu được sau khi chơi các ván đó, còn P chính là xác suất AlphaGo thắng ván tiếp theo, nhờ vào việc liên tục chơi (thực hiện task T) và cập nhật kinh nghiệm E để nâng cao P.

Machine Learning có sự gắn bó chặt chẽ với khá nhiều ngành khác, ví dụ như Big Data, AI, Statistics Learnig, đã và đang ứng dụng sâu rộng vào cuộc sống hàng ngày: trí tuệ nhân tạo AlphaGo, nhận diện khuôn mặt, gợi ý bạn bè từ faceboook, phân loại spam email từ google mail, chuẩn đoán y khoa, phát hiện thẻ tín dụng giả, phân tích thị trường chứng khoán, dự đoán kết quả trận đấu, nhận dạng giọng nói, phân loại các chuẩn DNA, ...

Machine learning Algorithm được chia làm 2 loại chính là: Supervised Learning (Học có giám sát) và Unsupervised Learning (Học không giám sát). Ngoài ra còn 1 vài loại khác như SemiSupervised Learning, Reinforcement Learning, Learning to Learn, Developmental Learning, ... Trong bài viết hôm nay tôi sẽ chỉ tập trung vào Supervised Learning và Unsupervised Learning. Bài viết tham khảo chính từ khóa học Stanford Machine Learning nên nếu các bạn đã từng học ML ở đây thì nên chuyển sang một bài viết khác.

Supervised Learning

Trước khi đi vào định nghĩa Supervised Learning, ta sẽ đi vào ví dụ sau đây, tôi có một bài toán dự đoán giá của nhà dựa trên các thông số về diện tích và giá cả của căn nhà. Dưới đây là biểu đồ dựa trên số liệu thu thập được. Dựa vào biểu đồ trên, giả sử tôi có 1 căn nhà có diện tích 750 m2, làm cách nào để tôi có thể dự đoán được giá của căn nhà. Thực chất với bài toán này thì bạn chỉ cần học qua lớp 12 là có thể giải được, từ các giá trị diện tích -> giá cả thu được, ta sẽ vẽ 1 đường đồ thị biểu diễn quan hệ của 2 đại lượng này, ví dụ tôi đùng đồ thị là 1 đường thẳng dạng y = ax + b chẳng hạn. Từ các số liêu đã có, ta tìm được 1 cặp {a, b} thích hợp, rồi thay giá trị x=750 vào, ta thu được y là giá của căn nhà: y = 150.000 $$

Nhưng độ chính xác của cách này có vẻ không cao, khi mà mối quan hệ của diện tích -> giá nhà không phải là quan hệ tuyến tính, hơn nữa nếu xuất hiện 1 giá trị ngoại lệ, ví dụ như x = 800 nhưng y = 1000 000 $$chẳng hạn, sẽ làm sai lệch giá trị dự đoán đi khá nhiều.

Ở ví dụ trên, việc học để tìm ra hàm quan hệ y=ax +b chính là Supervised Learning. Trong Supervised Learning, ta sẽ có một tập dữ liệu có sẵn và đã biết correct output, đồng thời biết được một cách tương đối mối quan hệ giữa input và output. Dễ hiểu hơn, tôi có một tập các giá trị (x), và các giá trị y tương ứng với mỗi giá trị x. Tôi sẽ tạo ra một giải thuật, hiểu được mối quan hệ giữa x và y: y = f(x). Mục đích là để tìm ra một hàm f tốt nhất có thể, để khi có một giá trị x mới, tôi có thể dự đoán được output y.

In supervised learning, we are given a data set and already know what our correct output should look like, having the idea that there is a relationship between the input and the output.

Supervised Learning được phân loại thành Regression (Bài toán hồi quy) và Classification (Bài toán phân loại).

  • Regresion Probleam: trong Regression Problem, giải giá trị của output là liên tục, và là các giá trị thực. Ví dụ như giá cả, cân nặng, chiều cao, ... Ở ví dụ dự đoán giá nhà ở trên chính là 1 Regression Problem.
  • Classification Problem: trong Classification Problem, giải giá trị output là rời rạc, không có mối quan hệ với nhau. Ví dụ như màu sắc, khối u lành tính hay ác tính, ... Giải thích thêm một chút khi tôi nói các output là không có mối quan hệ với nhau. Với Regression chẳng hạn, ta có giá cả là 20,30, 30,30, 50, ta sẽ hiểu 30 lớn hơn, hoặc nhiều hơn 20, tương tự khi lấy 50 so sánh với 20$$ Nhưng trong Classification thì lại khác, màu đỏ chẳng có quan hệ gì với màu xanh, đơn giản chúng là 2 trong các màu sắc mà thôi.

Một vài giải thuật phổ biến trong Supervised Learning:

  • Regression: Linear Regression, Logistic Regression, Random Forest
  • Classification: Random Forest, Support Vector

Unsupervised Learning

Khác với Supervised Learning, Unsupervised Learning không hướng tới việc tìm một "correct output", mà hướng tới việc tìm ra các structure, relationship ẩn sâu trong data set. Output sẽ phụ thuộc nhiều vào tập input ban đầu (dùng để training) Unsupervised Learning cũng được ứng dụng trong nhiều lĩnh vực đời sống, dễ thấy nhất chính là gợi ý kết bạn của facebook, để đưa ra 1 gợi ý phù hợp cho bạn, facebook đã tập hợp những người bạn có quen biết nhau nhiều nhất lại thành một nhóm, từ đó đưa ra gợi ý phù hợp cho bạn, hoặc khi tạo một bài viết mà các tag sẽ được sinh tự động. Hoặc áp dụng trong lĩnh vực tài chính ngân hàng, đánh giá các nhóm khách hàng tiềm năng cho công ty. Với một tập thông tin ban đầu chỉ gồm các thông tin cơ bản, số liệu giao dịch, tình hình tài chính, ta sẽ phải nhóm các khách hàng được cho là tiềm năng lại thành một nhóm. Nhưng nếu đây là Supervised Learning thì bài toán sẽ phải viết lại, đó là ta đã biết một tập các khách hàng tiềm năng, từ đó khi thêm một khách hàng mới, ta sẽ đánh giá khách hàng này là tiềm năng hay không.

Unsupervised Learning Algorithm cũng được chia thành 2 nhóm là:

  • Clustering: hướng đến việc phân nhóm, phân đoạn dữ liệu từ tập dữ liệu ban đầu. Ví dụ ta có một tập 1 triệu Gen, cần phải tìm ra cách tự động phân nhóm cho những gen này dựa trên đặc điểm về vòng đời, vị trí, vài trò, ...
  • Non-clustering: tìm các structure ẩn trong dữ liệu. Ví dụ với bài toán "Cocktail Party", nhận dạng giọng nói và âm nhạc trong môi trường tạp âm.

Một vài giải thuật phổ biến trong Unupervised Learning:

  • Clustering: k-means
  • Non-clustering: Cocktail Party Algorithm

Bài viết khá ngắn, với mong muốn chỉ là tóm gọn các nội dung cơ bản của Machine Learning và ứng dụng tuyệt vời của nó hiện tại và tương lai của chúng ta. Rất mong sẽ còn được gặp lại các bạn trong những phần tiếp theo của series về machine learning, cám ơn.

Bài viết tham khảo từ khóa học Machine Learning của giáo sư Andrew Ng, đại học Stanford Nguồn tham khảo khác:

  • http://machinelearningmastery.com/supervised-and-unsupervised-machine-learning-algorithms/
  • https://www.quora.com/What-is-the-difference-between-supervised-and-unsupervised-learning-algorithms
0