
Các thành phần then chốt trong Học máy – Bước chân vào deep learning [2]
Đầu tiên, chúng ta sẽ giới thiệu một số thành phần cốt lõi. Dù là loại bài toán học máy nào, bạn cũng sẽ gặp phải các thành phần này:
- Dữ liệu (data) có thể được sử dụng để học;
- Mô hình (model) để chuyển đổi dữ liệu;
- Một hàm mục tiêu (objective function) để định lượng hiệu quả của mô hình;
- Thuật toán (algorithm) để điều chỉnh các tham số của mô hình nhằm tối ưu hóa hàm mục tiêu.
1. Dữ liệu
Không còn nghi ngờ gì nữa, nếu không có dữ liệu thì khoa học dữ liệu chẳng có đất dụng võ. Mỗi tập dữ liệu bao gồm các mẫu (example, sample), trong hầu hết các trường hợp, chúng tuân theo phân phối độc lập và đồng nhất (independently and identically distributed, i.i.d.). Mẫu đôi khi còn được gọi là điểm dữ liệu (data point) hoặc trường hợp dữ liệu (data instance), thông thường mỗi mẫu bao gồm một tập hợp các thuộc tính được gọi là đặc trưng (features, hoặc hiệp biến (covariates)). Mô hình học máy sẽ dựa vào các thuộc tính này để đưa ra dự đoán. Trong bài toán học có giám sát đã đề cập ở trên, thứ cần dự đoán là một thuộc tính đặc biệt, được gọi là nhãn (label, hoặc mục tiêu (target)).
Khi xử lý dữ liệu hình ảnh, mỗi bức ảnh riêng lẻ là một mẫu, các đặc trưng của nó được biểu thị bằng một danh sách có thứ tự các giá trị pixel. Ví dụ, một bức ảnh màu 200×200 bao gồm 200×200×3=120000 giá trị số, trong đó "3" tương ứng với cường độ của các kênh màu đỏ, xanh lá và xanh lam tại mỗi vị trí không gian. Một ví dụ khác, đối với một bộ dữ liệu y tế, với một tập hợp các đặc trưng tiêu chuẩn (như tuổi, dấu hiệu sinh tồn và chẩn đoán), dữ liệu này có thể được sử dụng để thử dự đoán liệu bệnh nhân có qua khỏi hay không.
Khi số lượng loại đặc trưng của mỗi mẫu là như nhau, vector đặc trưng của nó có độ dài cố định, độ dài này được gọi là số chiều (dimensionality) của dữ liệu. Vector đặc trưng có độ dài cố định là một thuộc tính thuận lợi, cho phép định lượng việc học từ một số lượng lớn các mẫu.
Tuy nhiên, không phải tất cả dữ liệu đều có thể được biểu diễn bằng vector có "độ dài cố định". Lấy ví dụ về dữ liệu hình ảnh, nếu tất cả chúng đều đến từ thiết bị kính hiển vi tiêu chuẩn, thì "độ dài cố định" là điều mong muốn; nhưng nếu dữ liệu hình ảnh đến từ internet, chúng khó có thể có cùng độ phân giải hoặc hình dạng. Lúc này, việc cắt ảnh thành kích thước tiêu chuẩn là một phương pháp, nhưng phương pháp này rất hạn chế và có nguy cơ mất thông tin. Ngoài ra, dữ liệu văn bản càng không đáp ứng yêu cầu "độ dài cố định". Ví dụ, đối với các đánh giá của khách hàng trên các trang web thương mại điện tử như Amazon, một số dữ liệu văn bản rất ngắn (ví dụ: "Tuyệt vời"), trong khi một số khác lại rất dài. So với các phương pháp học máy truyền thống, một ưu điểm chính của học sâu là khả năng xử lý dữ liệu có độ dài khác nhau.
Nói chung, khi có càng nhiều dữ liệu, công việc càng trở nên dễ dàng hơn. Nhiều dữ liệu hơn có thể được sử dụng để huấn luyện các mô hình mạnh mẽ hơn, từ đó giảm sự phụ thuộc vào các giả định định trước. Việc tập dữ liệu tăng từ nhỏ đến lớn đã đặt nền móng cho sự thành công của học sâu hiện đại. Nếu không có các tập dữ liệu lớn, nhiều mô hình học sâu thú vị sẽ trở nên mờ nhạt. Ngay cả khi một số mô hình học sâu có thể hoạt động trên các tập dữ liệu nhỏ, hiệu quả của chúng cũng không cao hơn các phương pháp truyền thống.
Xin lưu ý rằng chỉ sở hữu lượng lớn dữ liệu là chưa đủ, chúng ta còn cần dữ liệu đúng. Nếu dữ liệu chứa đầy lỗi, hoặc nếu các đặc trưng của dữ liệu không thể dự đoán mục tiêu của nhiệm vụ, thì mô hình rất có thể sẽ không hiệu quả. Có một câu ngạn ngữ cổ phản ánh rất rõ hiện tượng này: "Rác vào, rác ra." (“Garbage in, garbage out.”) Hơn nữa, hiệu suất dự đoán kém thậm chí có thể làm trầm trọng thêm tình hình. Trong một số ứng dụng nhạy cảm, như giám sát mang tính dự đoán, sàng lọc hồ sơ và mô hình rủi ro cho vay, chúng ta phải đặc biệt cảnh giác với những hậu quả do dữ liệu rác gây ra. Một vấn đề phổ biến xuất phát từ các tập dữ liệu không cân bằng, ví dụ, trong một tập dữ liệu huấn luyện liên quan đến y tế, một số nhóm dân cư không có mẫu đại diện. Hãy tưởng tượng, giả sử chúng ta muốn huấn luyện một mô hình nhận dạng ung thư da, nhưng nó (trong tập dữ liệu huấn luyện) chưa bao giờ "thấy" những người da đen, mô hình này sẽ ngay lập tức trở nên vô dụng.
Một ví dụ khác, nếu sử dụng "dữ liệu quyết định tuyển dụng trong quá khứ" để huấn luyện một mô hình sàng lọc hồ sơ, thì mô hình học máy có thể vô tình nắm bắt những bất công còn sót lại trong lịch sử và tự động hóa chúng. Tuy nhiên, tất cả những điều này có thể xảy ra mà chúng ta không hề hay biết. Do đó, khi dữ liệu không mang tính đại diện đầy đủ, hoặc thậm chí chứa đựng một số định kiến xã hội, thì mô hình rất có thể sẽ có thiên kiến.
2. Mô hình
Hầu hết học máy đều liên quan đến việc chuyển đổi dữ liệu. Ví dụ như một hệ thống "thu nhận ảnh và dự đoán khuôn mặt cười". Hoặc ví dụ khác là dự đoán mức độ bình thường và bất thường của các chỉ số đọc được từ một nhóm cảm biến. Mặc dù các mô hình đơn giản có thể giải quyết các vấn đề đơn giản như trên, nhưng các vấn đề được quan tâm trong cuốn sách này vượt xa giới hạn của các phương pháp cổ điển. Sự khác biệt chính giữa học sâu và các phương pháp cổ điển là: học sâu tập trung vào các mô hình mạnh mẽ, những mô hình này được tạo thành từ các mạng nơ-ron đan xen phức tạp, chứa đựng các lớp chuyển đổi dữ liệu chồng chất lên nhau, do đó được gọi là học sâu (deep learning). Trong quá trình thảo luận về các mô hình sâu, cuốn sách này cũng sẽ đề cập đến một số phương pháp truyền thống.
3. Hàm mục tiêu
Nội dung trước đã giới thiệu học máy là "học từ kinh nghiệm". "Học" ở đây có nghĩa là tự chủ nâng cao hiệu quả của mô hình trong việc hoàn thành một số nhiệm vụ. Nhưng, điều gì mới thực sự được coi là cải thiện? Trong học máy, chúng ta cần xác định thước đo mức độ tốt xấu của mô hình, thước đo này trong hầu hết các trường hợp là "có thể tối ưu hóa", được gọi là hàm mục tiêu (objective function). Chúng ta thường xác định một hàm mục tiêu và mong muốn tối ưu hóa nó đến điểm thấp nhất. Bởi vì giá trị càng thấp càng tốt, nên các hàm này đôi khi được gọi là hàm mất mát (loss function, hoặc hàm chi phí (cost function)). Nhưng đây chỉ là một quy ước, chúng ta cũng có thể lấy một hàm mới và tối ưu hóa nó đến điểm cao nhất. Hai hàm này về cơ bản là giống nhau, chỉ cần đảo ngược dấu.
Khi nhiệm vụ đang cố gắng dự đoán các giá trị số, hàm mất mát phổ biến nhất là sai số bình phương (squared error), tức là bình phương của hiệu số giữa giá trị dự đoán và giá trị thực tế. Khi cố gắng giải quyết các vấn đề phân loại, hàm mục tiêu phổ biến nhất là tối thiểu hóa tỷ lệ lỗi (error rate), tức là tỷ lệ các mẫu mà dự đoán không khớp với thực tế. Một số hàm mục tiêu (như sai số bình phương) rất dễ tối ưu hóa, một số mục tiêu khác (như tỷ lệ lỗi) do tính không khả vi hoặc các phức tạp khác nên khó tối ưu hóa trực tiếp. Trong những trường hợp này, người ta thường tối ưu hóa các mục tiêu thay thế.
Thông thường, hàm mất mát được xác định dựa trên các tham số của mô hình và phụ thuộc vào tập dữ liệu. Trên một tập dữ liệu, chúng ta có thể học được các giá trị tốt nhất của tham số mô hình bằng cách tối thiểu hóa tổng mất mát. Tập dữ liệu này bao gồm một số mẫu được thu thập để huấn luyện, được gọi là tập dữ liệu huấn luyện (training dataset, hoặc tập huấn luyện (training set)). Tuy nhiên, một mô hình hoạt động tốt trên dữ liệu huấn luyện không nhất thiết có cùng hiệu suất trên "tập dữ liệu mới", "tập dữ liệu mới" này thường được gọi là tập dữ liệu kiểm tra (test dataset, hoặc tập kiểm tra (test set)).
Tóm lại, tập dữ liệu có sẵn thường có thể được chia thành hai phần: tập dữ liệu huấn luyện được sử dụng để khớp các tham số mô hình, và tập dữ liệu kiểm tra được sử dụng để đánh giá mô hình đã khớp. Sau đó, chúng ta quan sát hiệu suất của mô hình trên cả hai phần dữ liệu này. "Hiệu suất của một mô hình trên tập dữ liệu huấn luyện" có thể được hình dung như "điểm số của một học sinh trong kỳ thi thử". Điểm số này được sử dụng để tham khảo cho một kỳ thi cuối kỳ thực sự, ngay cả khi kết quả đáng khích lệ, cũng không đảm bảo thành công trong kỳ thi cuối kỳ. Nói cách khác, hiệu suất kiểm tra có thể sai lệch đáng kể so với hiệu suất huấn luyện. Khi một mô hình hoạt động tốt trên tập huấn luyện nhưng không thể tổng quát hóa tốt trên tập kiểm tra, mô hình đó được gọi là quá khớp (overfitting). Điều này giống như trong cuộc sống thực, dù thi thử đạt điểm cao, kỳ thi thật chưa chắc đã thành công mỹ mãn.
4. Thuật toán tối ưu hóa
Khi chúng ta đã có một số nguồn dữ liệu và biểu diễn của chúng, một mô hình và một hàm mất mát phù hợp, tiếp theo chúng ta cần một thuật toán có khả năng tìm kiếm các tham số tốt nhất để tối thiểu hóa hàm mất mát. Trong học sâu, hầu hết các thuật toán tối ưu hóa phổ biến thường dựa trên một phương pháp cơ bản – giảm theo gradient (gradient descent). Nói một cách ngắn gọn, ở mỗi bước, phương pháp giảm theo gradient sẽ kiểm tra từng tham số, xem nếu chỉ thay đổi một chút tham số đó thì mất mát trên tập huấn luyện sẽ di chuyển theo hướng nào. Sau đó, nó sẽ tối ưu hóa tham số theo hướng có thể làm giảm mất mát.
5. Các loại bài toán học máy khác nhau
Trong số các ứng dụng rộng rãi của học máy, bài toán từ đánh thức chỉ là phần nổi của tảng băng chìm. Ví dụ về nhận dạng từ đánh thức trước đó chỉ là một trong vô số vấn đề mà học máy có thể giải quyết. Dưới đây sẽ liệt kê một số bài toán và ứng dụng học máy phổ biến, làm tiền đề cho các thảo luận sau này trong cuốn sách. Chúng ta sẽ thường xuyên tham chiếu đến các khái niệm đã đề cập trước đó, như dữ liệu, mô hình và thuật toán tối ưu hóa.