Đôi nét về Machine Learning

Từ năm 2013 trở lại đây, AI (trí tuệ nhân tạo) đã có những bước tiến vượt bậc so với thế kỷ trước dù những phát minh đầu tiên ra đời từ những năm 1950. Để có được những thành tựu đó là do các nhà khoa học đã thay đổi cách tiếp cận tư duy chiến lược từ tư duy toán học thuần túy sang tư duy khoa học tự nhiên. Đó là cách mà Machine Learning đã thực hiện để khiến cho AI trở nên thông minh hơn, có những bước tiến nhảy vọt như ngày nay. Nói không ngoa rằng Machine Learning đã cải tạo, thay đổi bản chất của trí tuệ nhân tạo.

Vậy Machine Learning là gì? tại sao ML lại tạo cho AI bước tiến nhảy vọt như vậy?

Hãy tưởng tượng cách học của người Việt ngày xưa: nặng nề, nhồi nhét kiến thức, học vẹt. Đây cũng là cách tiếp cận AI của các lập trình viên trong quá khứ, họ viết các chương trình giải quyết từng trường hợp cụ thể, sử dụng thuật toán cụ thể, điều này dẫn tới khi thay đổi biến số sẽ dẫn tới chương trình không còn đúng. 

Thời gian gần đây, chương trình cải cách giáo dục đã bớt nhồi nhét kiến thức thay vào đó là chuyển sang phương pháp tự học, nghĩa là cung cấp cho học sinh, sinh viên phương pháp và cung cấp dữ liệu (tài liệu học), học sinh và sinh viên sẽ tự đúc kết thành kiến thức, trí tuệ của mình. Đây cũng chính là phương pháp mà Machine Learning áp dụng cho AI. Nghĩa là cung cấp phương pháp học, dữ liệu, máy học sẽ dựa trên 02 nhân tố này để hình thành nên tri thức, phát hiện ra lỗi sai, lỗi đúng. Các lập trình viên không phải viết chương trình cho bài toán cụ thể mà họ chỉ cần viết phương pháp thuật toán chung, sau đó họ cung cấp đầu vào dữ liệu để máy tính phân biệt đúng sai, đây gọi là quá trình training, qua quá trình này máy tính sẽ tìm được hàm, thuật toán gần đúng nhất với bài toán.

Lấy ví dụ bài toán nhận dạng hình ảnh khuôn mặt, ngày xưa các lập trình viên say sưa đi theo lối mòn các thuật toán phân tích hình ảnh, xử lý hình ảnh, tuy nhiên chỉ cần khuôn mặt thay đổi đặc tính như người đàn ông béo lên 1 tí, có thêm râu ria hay người phụ nữ tô phấn hồng thêm 1 tí là khó phân biệt được. Thuật toán cụ thể rất khó giải quyết cho tất cả các trường hợp.

Logistic Regression
  1. Logistic Regression là gì?

  • Thuật toán Machine Learning này được vay mượn từ xác suất thống kê, được sử dụng để tính khả năng phân loại [0,1]  với đầu vào dữ liệu cụ thể, trong đó thuật toán được biểu diễn dựa trên hàm Logistic Funtion (hàm sigmoid của logarit tự nhiên)
  • Hàm sigmoid hay đường cong sigmoid: hàm logarit chuẩn, dạng: P = 1/(1+ evalue)

  • Hàm logistic Regression biểu diễn dưới dạng model như sau:

y = e(B0+B1×x)  / (1+ eB0+B1×x)

–> Nhiệm vụ là tìm nghiệm của phương trình trên (tức là B0, B1) đúng nhất với đầu vào dữ liệu có sẵn (training set)

  • Ví dụ: Dự đoán xác suất thi đỗ dựa trên số giờ học của sinh viên:
Hours Pass Hours Pass
.5 0 2.75 1
.75 0 3 0
1 0 3.25 1
1.25 0 3.5 0
1.5 0 4 1
1.75 0 4.25 1
1.75 1 4.5 1
2 0 4.75 1
2.25 1 5 1
2.5 0 5.5 1

Hình ảnh thu được của hàm Logistic Function (dạng chữ S uốn cong tuyến tính)

2. Logistic Regression – Tính ứng dụng?

Tính ứng dụng của Logistic Regression khá phổ biến, đặc biệt sử dụng trong bài toán phân loại (Classification) trong đó 02 lớp class dưới dạng tuyến tính cách nhau (linear separable) như chuẩn đoán bệnh ung thư, đoán trước tỷ lệ ủng hộ bỏ phiếu, thành công của sản phẩm, dự đoán đội bóng thắng/thua, mã chứng khoán tăng hay giảm…v.v.

Tuy nhiên trong thực tế dữ liệu của 01 class có thể nằm trong 1 vòng tròn, 1 class khác nằm ngoài vòng tròn, lúc đó Logistic Regression không còn đúng, không áp dụng được.

3. Học mô hình Logistic Regression như nào?

Learning là quá trình tìm, định lượng các hệ số B0, B1 trong mô hình Logistic Regression từ tập dữ liệu có sẵn (training data set). Trong Machine Learning nói riêng và AI nói chung rất khó có thể năng tìm ra đúng, chính xác 100% các hệ số này mà chỉ cố gắng định lượng giá trị có khả năng cao nhất gần đúng hay nói cách khác là giảm thiểu tối đa sai sót, chênh lệch khi lắp ghép các hệ số B0, B1 này vào model so với kết quả thực tế.

4. Đoán trước giá trị của Logistic Regression 

Đoán trước giá trị của model biểu diễn như sau:

p(class = 0) = 1/ (1 – eoutput)

prediction = 0 nếu p(class) < 0.5

prediction = 1 nếu p(class) >= 0.5

4. Học Logistic Regression bằng phương pháp Gradient Descent?

Phương pháp học sử dụng rộng rãi nhất trong Machine Learning vẫn là Gradient Descent (đi ngược đạo hàm) với learning rate (tốc độ học), điều chỉnh các hệ số để sao cho hội tụ hàm chi phí tối thiểu về 0.

xt+1=xt−ηf′(xt)

Trong đó: η (đọc là eta): Learning rate, số dương; f’: đạo hàm

Ví dụ: hàm số f(x)=x2+5sin(x) sẽ có đạo hàm f′(x)=2x+5cos(x)

5. Logistic Regression vì sao?