Tổng số lượt xem trang

Thứ Năm, 8 tháng 6, 2017

Một số khái niệm trong Máy học


Chúng ta đã cùng nhau tìm hiểu và trả lời các câu hỏi: WHY? WHAT? WHEN? Và dần dần chúng ta đang gần tới câu hỏi HOW? Làm thế nào để xây dựng được các chương trình/giải thuật Máy học. 

      Trong bài này, chúng tôi đề cập tới những thuật ngữ, khái niệm rất hay gặp và quan trọng trong Máy học. Nếu bạn đọc chưa rõ ngay những khái niệm này, xin hãy bỏ qua và đọc lại nó sau. Rất có thể cách diễn giải của chúng tôi chưa thực sự tốt, dù đã rất cố gắng theo cách đơn giản.

Data
Máy học là chương trình máy tính tự “học” từ dữ liệu. Do vậy việc tìm hiểu kĩ dữ liệu và việc cần thiết. Trong khuôn khổ cuốn sách này, dữ liệu giống như một bảng gồm hàng và cột. Đây là một cấu trúc dữ liệu cơ bản trong Máy học. Những dữ liệu khác như hình ảnh, video, văn bản là những dữ liệu không có cấu trúc sẽ không được xét đến. 
2104
3
399900
1600
3
329900
2400
3
369000
1416
2
232000
3000
4
539900
1985
4
299900
1534
3
314900
1427
3
198999
1380
3
212000
1494
3
242500
1940
4
239999
2000
3
347000
Bảng 1. Dữ liệu được trích từ tệp ex1data1.txt [1].
Trong Bảng 1, cột thứ nhất chứa thông tin diện tích ngôi nhà (tính bằng feet2 ), cột thứ hai chứa thông tin số phòng ngủ, cột thứ ba chứa thông tin  giá ngôi nhà (tính bằng USD). Bài toán đặt ra là dựa vào thông tin diện tích và phòng ngủ, chúng ta cần đưa ra dự đoán cho giá của ngôi nhà tương ứng.
Thể hiện/Dữ kiện (instance): Là một hàng trong bảng dữ liệu. Trong ví dụ trên Bảng 2.1 có 12 thể hiện/dữ kiện, mỗi thể hiện gồm thông tin của một căn hộ (gồm diện tích, số phòng ngủ, và giá tiền).
Đặc trưng (feature): là một cột trong bảng dữ liệu. Nó là một thành phần của một đặc trưng của một dữ kiện. Một số đặc trưng là dữ liệu quan sát được và một số là đặc trưng cần được dự đoán. Trong bài toán trên 2 cột đầu (diện tích và số phòng ngủ) là đặc trưng quan sát, cột cuối cùng là đặc trưng cần dự đoán (giá căn hộ).
Kiểu dữ liệu (Data Type): các đặc trưng đều có dữ liệu, mỗi dữ liệu đều có một kiểu dữ liệu xác định. Chúng có thể là kiểu số nguyên, số thực, hay cũng có thể là kiểu rời rạc. Chúng ta cũng gặp phải kiểu dữ liệu như ngày, tháng, chuỗi kí tự, hay những kiểu phức tạp khác; tuy nhiên, chúng sẽ được chuyển sang kiểu nguyên, thực hay rời rạc khi dùng các thuật toán Máy học.
Các tập dữ liệu (Datasets): một tập hợp các thể hiện/dữ kiện là một tập dữ liệu. Chúng ta sẽ dùng một vài tập dữ liệu cho các mục đích khác nhau.
Tập dữ liệu huấn luyện (Training dataset): là một tập dữ liệu dùng để huấn luyện cho mô hình của thuật toán Máy học. Nói một cách khác, thuật toán Máy học sẽ học từ tập dữ liệu này.
Tập dữ liệu kiểm tra (Testing dataset): là một tập dữ liệu dùng để kiểm chứng độ chính xác của mô hình của thuật toán Máy học. Tập dữ liệu này không được dùng để huấn luyện mô hình.
Có thể hiểu một cách trực quan rằng, tập dữ liệu huấn luyện giống như bài tập được dùng khi giáo viên ôn tập cho học sinh, sinh viên; còn tập dữ liệu kiểm tra giống như bài thi. Và bài thi là bài thí sinh chưa bao giờ làm. Một giáo viên giỏi là người lựa chọn được các bài ôn tập có dạng bài hay dạng đề giống như bài thi.
Thông thường chúng ta cần tách tập dữ liệu mà chúng ta có được ra thành các tập dữ liệu con (dùng để huấn luyện và kiểm tra).
Mục tiêu của một chương trình Máy học (có giám sát) là xây dựng một hàm f ánh xạ tự dữ kiện quan sát (features) tới nhãn (label):
y = f(X)

Một số thuật ngữ trong Máy học
Máy học là quá trình xây dựng chương trình tự động “học”. Chúng ta sẽ cũng thảo luận qua một số khái niệm học trong Máy học.
Qui nạp (Induction): Các thuật toán máy học được học thông qua quá trình qui nạp nhờ tập dữ liệu huấn luyện (training dataset). Qui nạp là quá trình lập luận đi đến Khái quát từ các trường hợp cụ thể.
Khả năng dự đoán (Generalization): Một trong những trọng tâm khác của học máy là đạt được tính phổ quát (generalization), nói cách khác là mô hình sau khi được xây dựng bởi thuật toán Máy học dùng để dự đoán hay đưa ra những quyết định khi gặp dữ liệu mà nó chưa gặp bao giờ (unseen data). Một chương trình chỉ hiệu quả với dữ liệu đã gặp nhìn chung không có nhiều tính hữu dụng.
Overfitting (over-learning): Khi mô hình thể hiện sự chính xác trên tập huấn luyện nhưng lại kém chính xác trên tập dữ liệu mới (tập kiểm tra). Cũng có thể hình dung khi mô hình quá khớp với tập dữ liệu huấn luyện.
·         Nguyên nhân: Điều này xảy ra khi tập dữ liệu huấn luyện của chúng ta có nhiễu (noise), hay mô hình của chúng ta quá phức tạp, tức là có quá nhiều tham số so với số dữ liệu quan sát được (thể hiện). Chính nhiễu đã gây tác động xấu tới quá trình dự đoán của mô hình với dữ liệu mới.
·         Nhận biết: Khi mô hình cho kết quả độ lệch nhỏ nhưng phương sai lớn (low bias nhưng high variance)
·         Cách giải quyết: Trình bày trong Bài 8.
Underfitting (under-learning): Khi một mô hình thực thi không tốt trên cả tập dữ liệu huấn luyện và tập dữ liệu kiểm tra. Cũng có thể hình dung khi mô hình không khớp với tập dữ liệu huấn luyện.
·         Nguyên nhân: Điều này xảy xa khi mô hình chúng ta đang xây dựng quá đơn giản so với tập dữ liệu.
·         Nhận biết: Khi mô hình cho kết quả độ lệnh lớn nhưng phương sai nhỏ (low variance nhưng high bias).
·         Cách giải quyết: Một phương pháp để xử lý khi underfitting là hãy thay đổi thuật toán Máy học đang dùng.
Good-fit: Khi mà mô hình ở trạng thái tối ưu (sweet pot) giữa overfitting và underfitting. Đây là đích mà mọi thuật toán Máy học hướng tới, nhưng nó rất khó đạt được trong thực tế. Trong quá trình học, lỗi mà mô hình gây ra cho tập dữ liệu huấn luyện giảm dần và lỗi trên tập kiểm tra cũng vậy. Nếu chúng ta huấn luyện quá lâu, lỗi trên tập huấn luyện tiếp tục giảm xuống vì mô hình sẽ học vào mức quá chi tiết không thực sự quan trọng (như nhiễu - noise) hướng sang trạng thái overfitting; cùng với thời điểm đó, lỗi trên tập dữ liệu kiểm tra sẽ tăng lên và có nghĩa là mức độ Khái quát hóa của mô hình đang giảm xuống.
Trạng thái tối ưu (sweet pot) chính là điểm ngay trước khi lỗi trên tập kiểm tra bắt đầu tăng. Ở trạng thái đó, mô hình đang cân bằng trong cả tập dữ liệu huấn luyện và tập dữ liệu mới (kiểm tra). Để tìm thấy trạng thái good-fit, chúng ta thường sử dụng hai kĩ thuật để tránh overfitting như đã nêu ở trên.



Hình 1 Hình bên trái, ở giữa, và bên phải lần lượt ở trạng thái
underfitting, good-fit, và overfitting [1].
Hình bên trái là khi mô hình xây dựng (đường thẳng) đang ở dạng Underfitting, trong khi hình bên phải ở dạng Overfitting, hình ở giữa ở dạng good-fit (giữa Underfitting và Overfitting). Tham số d chỉ bậc của đa thức, trục tung chỉ giá, và trục hoành chỉ diện tích của căn hộ.
Sự lựa chọn mô hình: Quá trình thiết lập và huấn luyện mô hình như là một quá trình lựa chọn mô hình. Mỗi bước lặp, chúng ta lại tạo ra một mô hình mới. Việc lựa chọn thuật toán Máy học cũng là quá trình lựa chọn mô hình.
Độ lệch (Bias): Độ lệch là một số đặc trưng cho giá trị trung bình của các số liệu so với giá trị đúng. Hay nói một cách khác, độ lệch là lỗi từ việc giả định sai của thuật toán học. Mô hình khi có độ lệch sẽ gây ra những sai số khi khái quát hóa. Một ví dụ đơn giản về độ sai lệch trong cuộc sống là khi chúng ta có cái cân luôn nặng hơn 1kg so với trọng lượng chuẩn trong mọi lần đo. Độ lệch ở đây là +1 (đơn vị kg). Bias lớn sẽ dẫn tới underfiting. 
Phương sai (Variance): Phương sai là một số đặc trưng cho độ phân tán của các số liệu so với số trung bình của nó. Phương sai  là mức độ nhạy cảm với sự biến động nhỏ trong tập dữ liệu được huấn luyện. Một cách để giảm phương sai là chạy nhiều lần trên tập dữ liệu với các điều kiện ban đầu khác nhau và tính độ chính xác trung bình trong quá trình thực hiện. Phương sai lớn sẽ gây ra overfitting.
Cân bằng giữa Bias-Variance: Việc lựa chọn mô hình chính là việc cân bằng giữa Bias-Variance. Mô hình có bias thấp sẽ có variance lớn và sẽ cần huấn luyện nhiều hơn; trong khi mô hình có bias cao sẽ có variance thấp


Hinh 2. Mô tả sự cân bằng Bias-Variance [3].  
Trong Hình 2, trục tung chỉ lỗi của mô hình dự đoán, trục hoành chỉ số chiều của không gian đầu vào (độ phức tạp của mô hình - tỉ lệ với số chiều của các đặc trưng).
Ngoài mục tiêu quan trọng của cuốn sách này nhằm giúp người học hiểu và cài đặt được những thuật toán Máy học quan trọng, cuốn sách cũng sẽ dần dần cung cấp những khái niệm và kiến thức không thể thiếu trong Máy học.

Các kiểu học trong Máy học
Máy học có ba kiểu học chính: học có giám sát (supervised learning), học không giám sát (unsupervised learning), và học tăng cường (reinforcement learning).

Supervised Learning
Khi chúng ta có dataset gồm đặc trưng (features) và nhãn (labels). Ví dụ trong Bảng 2.1, hai cột đầu (diện tích, số phòng ngủ) là features, cột cuối cùng (giá nhà) là labels. Nhiệm vụ là xây dựng một chương trình (có thể coi là một hàm) có khả năng dự đoán label khi cho biết tập các features. Hầu hết những thành tựu của Máy học hiện nay đều là học có giám sát. Ứng dụng của học có giám sát hiện nay vô cùng nhiều, một số ví dụ điển hình như:
·         Bộ lọc thư rác (spam filtering). Google phải huấn luyện hàng triệu các email (gồm cả email rác và không rác) để có được bộ lọc hiệu quả chúng ta dùng hiện nay.
·         Nhận dạng khuôn mặt (face recognition). Facebook có chương trình nhận diện mặt khá tốt nhờ nó được huần luyện qua nhiều ảnh cũ của một người. Khi cho một ảnh mới, nó sẽ dự đoán được người đó.
·         Hệ thống gợi ý (recommendation). Hãng Netflix đã trao giải thưởng lớn cho nhóm có chương trình gợi ý phim yêu thích mới cho người cụ thể khi họ đã cung cấp dữ liệu bộ phim yêu thích.
·         Nhận dạng chữ viết tay. Nhờ kĩ thuật mới trong Máy học mà độ chính xác của chương trình đã lên tới 99.7% [13]
·         Dự đoán giá cho thị trường chứng khoán, thị trường nhà đất, v.v...
Học có giám sát có hai loại chính: phân lớp (classification) và hồi qui (regression). Trong classification các label có kiểu dữ liệu là rời rạc, trong khi regression có kiểu dữ liệu là liên tục (số thực). Ví dụ cho classification là: ứng dụng lọc thư, nhận dạng khuôn mặt, hệ thống gợi ý xem phim, nhận dạng chữ viết tay; trong khi cho regression là dự đoán giá cho thị trường chứng khoán. Với supervised learning, chúng ta có thể hình dung như một hàm số như sau:
Trong đó X là tập đặc trưng (features), y là nhãn (label), dạng của hàm f không biết trước. Nhiệm vụ của chúng ta là tìm hiểu và thử nghiệm các thuật toán máy học để tìm ra hàm phù hợp nhất. Chú ý rằng, các thuật toán khác nhau sẽ có những giả định khác nhau về dạng của hàm trên.

Unsupervised Learning
Khi chúng ta chỉ có dataset gồm đặc trưng (features) mà không được gán nhãn (labels). Nhiệm vụ của chúng ta là tìm ra sự giống nhau giữa các đối tượng đó. Ví dụ cho học không giám sát:
·         Có hai loại âm thanh, chúng ta cần tách ra
·         Có một tập các tin tức, hãy phân loại ra các loại khác nhau (mặc dù chúng ta không biết có bao nhiêu loại khác nhau)
Reinforcement Learning
Thuật toán học tăng cường sẽ được áp dụng khi tương tác với một môi trường thay đổi nhằm thực hiện một nhiệm vụ nào đó (ví dụ như lái xe hay chơi cờ). Các thuật toán học tăng cường cố gắng tìm một chiến lược ánh xạ không gian trạng thái của môi trường tới các hành động mà chương trình nên chọn trong các trạng thái đó để cực đại hóa một khoản thưởng (reward) nào đó về lâu dài.
Trong Máy học, chương trình học từ cặp (X/input – y/output), được gọi là có giám sát bởi vì nó giám sát quá trình học theo định dạng của kết quả ra ứng với mỗi dữ kiện mà thuật toán học. Trong học không giám sát, chúng ta chỉ có X, chứ không có y. Học không giám sát nhằm tìm ra một mô hình mà phù hợp với các quan sát. Nó khác biệt với học có giám sát ở chỗ là đầu ra đúng tương ứng cho mỗi đầu vào là không biết trước.
Vì hầu như tất cả các ứng dụng trong công nghiệp và thương mại hiện nay đều thuộc về học có giám sát do vậy cuốn sách này sẽ chỉ giới thiệu các thuật toán học có giám sát.

Tài liệu tham khảo:
  1.       Andrew Ng. https://www.coursera.org/learn/machine-learning
  2. Pedro Domingos. A few useful things to know about machine learning, Published by ACM 2012 Article. Volume 55 Issue 10, October 2012, pages 78-87. 
  3. http://gerardnico.com/wiki/data_mining/bias_trade-off
  4. Trevor Hastie. Robert Tibshirani. Jerome Friedman. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. Springer; 2nd ed. 2009. Corr. 7th printing 2013 edition, 745 pages
  5. Tom Mitchell. Machine Learning. McGraw-Hill Education; 1st edition, March 1997, 432 pages
  6. Stephen Marsland. Machine Learning: An Algorithmic Perspective. Chapman and Hall/CRC; 1st edition April 2009, 406 pages
  7.  http://drewconway.com/zia/2013/3/26/the-data-science-venn-diagram

0 nhận xét: