Machine Learning về cơ bản là gì

Trong những bài viết trước đây, tôi thường dùng cả từ AI lẫn Machine Learning và có thể nhiều người dễ bị lẫn lộn giữa 2 khái niệm này. Về cơ bản, AI hay trí thông minh nhân tạo là công nghệ mô phỏng các quá trình suy nghĩ và học tập của con người cho máy móc, đặc biệt là các hệ thống máy tính. Còn Machine Learning là một tập con của AI, là một lĩnh vực nhỏ của khoa học máy tính, nó có khả năng tự học hỏi dựa trên dữ liệu đưa vào mà không cần phải được lập trình cụ thể.

Machine Learning về cơ bản là gì
Machine Learning về cơ bản là gì

Để tiếp tục xây dựng được chức năng dự đoán giúp cải thiện chat bot giúp đỡ chủ cửa hàng bán lẻ, nhóm thực tập Magestore tiếp tục tìm hiểu thêm về thuật toán Machine Learning.

Có hai cách phổ biến phân nhóm các thuật toán Machine Learning: dựa trên phương thức học (learning style) và dựa trên chức năng (function).

Theo phương thức học, các thuật toán Machine Learning thường được chia làm 4 nhóm:

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

Là thuật toán dự đoán đầu ra (outcome) của một dữ liệu mới (new input) dựa trên các cặp ( input, outcome ) đã biết từ trước, còn được gọi là cặp (data, label) - (dữ liệu - nhãn), cũng chính là tập training data (dữ liệu huấn luyện), từ đó tạo ra một hàm số ánh xạ xấp xỉ thật tốt để tính được đầu ra. Supervised learning được chia nhỏ thành 2 loại chính: Classification (Phân loại) ( các label của input data được chia thành một số hữu hạn nhóm) và Regression (Hồi quy) ( label không được chia thành các nhóm mà là một giá trị thực cụ thể)

Unsupervised learning (Học không giám sát)

Trong thuật toán này, chúng ta không biết được outcome hay nhãn mà chỉ có dữ liệu đầu vào, dựa vào cấu trúc của dữ liệu để phân nhóm (clustering) (phân nhóm toàn bộ dữ liệu thành các nhóm nhỏ dựa trên sự liên quan giữa các dữ liệu trong mỗi nhóm), 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 hoặc khám phá ra một quy luật dựa trên nhiều dữ liệu cho trước.

Semi-supervised lerning (Học bán giám sát)

Là thuật toán mà chỉ một phần trong dữ liệu được gán nhãn và nó nằm giữa hai nhóm được nêu bên trên. Rất nhiều các bài toán Machine Learning thuộc vào nhóm này vì việc thu thập dữ liệu có nhãn tốn rất nhiều thời gian và có chi phí cao.

Reinforcement learning (Học củng cố)

Là các bài toán giúp cho một hệ thống tự động xác định hành vi dựa trên hoàn cảnh để đạt được lợi ích cao nhất. Nó chủ yếu được áp dụng vàoGame Theory, các thuật toán cần xác định nước đi tiếp theo để đạt được điểm số cao nhất.

Phân loại Marchine Learning

Theo chức năng, Machine Learning được chia thành các loại:

  • Regression Algorithms (Thuật toán hồi quy)
  • Classification Algorithms (Thuật toán phân loại)
  • Instance-based Algorithms (Thuật toán dựa trên sơ đồ)
  • Regularization Algorithms (Thuật toán chính quy)
  • Bayesian Algorithms (Thuật toán Bayes)
  • Clustering Algorithms (Thuật toán phân cụm)
  • Artificial Neural Network Algorithms (Thuật toán mạng nơ ron nhân tạo)
  • Dimensionality Reduction Algorithms (Thuật toán giảm kích thước)
  • Ensemble Algorithms (Thuật toán tập hợp)

Thuật toán Linear Regression (Hồi quy tuyến tính)

Sau đây tôi sẽ đi sâu vào một trong những thuật toán cơ bản nhất của Machine Learning có tên là Linear Regression (Hồi quy tuyến tính), là 1 thuật toán Supervised Learning.

Ví dụ: Ta xét các số đo của một căn nhà: rộng x1 mét vuông, có x2 phòng ngủ và cách trung tâm thành phố x3 km, xét nó có giá là bao nhiêu? (Giả sử chúng ta đã có số liệu thống kê từ 1000 căn nhà trong thành phố đó) khi đó hàm dự đoán y=f(x) sẽ có dạng như thế nào?

Ta có thể thấy rằng:

  • Diện tích nhà càng lớn thì giá nhà càng cao
  • Số lượng phòng ngủ càng lớn thì giá nhà càng cao
  • Càng xa trung tâm thì giá nhà càng giảm

Do đó hàm số cơ bản nhất mô tả mối quan hệ giữa giá nhà và 3 đại lượng đầu vào là:

y ≈ f(x) = y’
f(x) = w1x1 + w2x2 + w3x3 + w0

Với y là giá trị thực, y’ là giá trị dự đoán, w1,2,3 là hằng số, w0 là bias (kiểu hệ số tự do).

Bài toán chúng ta trở thành đi tìm các hệ số tối ưu { w1, w2 ,w3 ,w0 }

Với e là sự sai khác giữa giá trị thực y và giá trị dự đoán y’, để thuận tiện cho việc tính toán, ta xét:

c


Với

f

e

là vector (hàng) dữ liệu đầu vào mở rộng. Số 1 ở đầu được thêm vào để phép tính đơn giản hơn và thuận tiện cho việc tính toán.
Điều chúng ta muốn, tổng sai số là nhỏ nhất, tương đương với việc tìm w để hàm số sau đạt giá trị nhỏ nhất:

d


Sau các biến đổi đại số, ta tìm được w thỏa mãn yêu cầu là:

g


Từ đó có thể xây dựng code dự đoán được giá tiền nhà dựa trên các đặc điểm đã cho.

Ví dụ hồi quy truyển tính để dự đoán

Ta xét bảng dữ liệu đầu vào sau:

h

Bài toán đặt ra là: Liệu có thể dự đoán cân nặng của một người dựa vào chiều cao của họ không?

Trên thực tế là không, bởi ngoài chiều cao thì rất nhiều yếu tố khác ảnh hưởng đến cân nặng, tuy nhiên để thuận tiện trong việc xét 1 ví dụ đơn giản, ta giả sử cân nặng sẽ tỉ lệ thuận với chiều cao (người càng cao thì càng nặng).

Do đó ta có thể sử dụng Linear Regression cho việc dự đoán này. Để kiểm tra độ chính xác của cân nặng tìm được, chúng ta sẽ giữ lại cột 155 cm và 160 cm để kiểm thử, các cột còn lại được sử dụng để huấn luyện (train) model.

Trước tiên, chúng ta cần có hai thư viện numpy cho đại số tuyến tính và matplotlib cho việc vẽ hình.

j

Tiếp theo, chúng ta khai báo và biểu diễn dữ liệu trên một đồ thị.

k

l

Từ đồ thị này ta thấy rằng dữ liệu được sắp xếp gần như theo 1 đường thẳng, vậy mô hình Linear Regression nhiều khả năng sẽ cho kết quả tốt:

(Cân nặng) = w1 *(Chiều cao) + w0

Tiếp theo, chúng ta sẽ tính toán các hệ số w1 và w0 dựa vào công thức

g

đã tính ra ở tuần trước.

m

Tìm ra được w1 và w0 là:

n

Ta vẽ đường 1 đường thẳng dự đoán dựa trên w1 và w0 ở trên:

p


Từ đồ thị bên trên ta thấy rằng các điểm dữ liệu màu đỏ nằm khá gần đường thẳng dự đoán màu xanh. Vậy mô hình Linear Regression hoạt động tốt với tập dữ liệu training . Bây giờ, chúng ta sử dụng mô hình này để dự đoán cân nặng của hai người có chiều cao 155 và 160 cm mà chúng ta đã không dùng khi tính toán nghiệm.

q

Kết quả là:

o

Chúng ta thấy rằng kết quả dự đoán khá gần với số liệu thực tế.

Tuy nhiên như đã nói trong bài viết trước, thuật toán Linear Regression là thuật toán cơ bản nhất của Machine Learning, nên nó cũng có những mặt hạn chế nhất định như là nó rất nhạy cảm với nhiễu (sensitive to noise).

Trong ví dụ về mối quan hệ giữa chiều cao và cân nặng bên trên, nếu có chỉ một cặp dữ liệu nhiễu (150 cm, 90kg) thì kết quả sẽ sai khác đi rất nhiều:

s


Vì vậy, trước khi thực hiện Linear Regression, các nhiễu (outlier) cần phải được loại bỏ.

Xem thêm Con đường học Machine Learning cơ bản

Hãy đăng ký nhận tin để là người đầu tiên đọc bài viết mới nhất từ chúng tôi nhé

Posted 
May 10, 2020
 in 
Tech
 category

Bài viết khác từ

Tech

category

View All