Chương 1. Cơ sở lí thuyết - Unsupervised learning(học không giám sát) là cho máy tính học trên dữ liệu mà không được gán nhãn, các thuật toán machine learning sẽ tìm ra sự tương quan dữ liệu, mô hình hóa dữ liệu hay chính là làm cho máy tính có kiến thức, hiểu về dữ liệu, từ đó chúng có thể phân loại các dữ liệu về sau thành các nhóm, lớp (clustering) giống nhau mà chúng đã được học hoặc giảm số chiều dữ liệu (dimension reduction). Deep learning Deep Learning là một nhánh của Machine Learning sử dụng mạng lưới thần kinh với nhiều lớp. Một mạng lưới thần kinh sâu phân tích dữ liệu với các biểu diễn đã học tương tự như cách một người nhìn vào một vấn đề của họ.
Và nó có tác dụng hỗ trợ cho máy tính tự huấn luyện chính nó để có thể thực hiện mọi tác vụ tương tự như con người. Điều này chính là giúp máy tính bắt chước con người cách học hỏi và suy nghĩ. Điển hình là thuật toán convolutional neural network(CNN). Cơ sở lí thuyết Hình 1.1: Deep learning(website) Một phương pháp tiếp cận thuật toán khác từ cộng đồng machine-learning, Artificial Neural Networks, được nhắc đến nhiều thập kỷ qua.
Neural Networks được lấy cảm hứng từ sự hiểu biết về sinh học của bộ não loài người – sự liên kết giữa các nơ-ron. Tuy nhiên, không giống như một bộ não sinh học nơi mà bất kỳ nơ-ron nào cũng có thể liên kết với các nơ-ron khác trong một khoảng cách vật lý nhất định, các mạng thần kinh nhân tạo này có các lớp rời rạc, các kết nối, và các hướng truyền dữ liệu. Mỗi nơ-ron đảm nhiệm một chức năng – làm thế nào để biết chính xác liệu rằng nó có liên quan đến nhiệm vụ đang được thực hiện. Vì vậy, suy nghĩ về điểm dừng là một dấu hiệu.
Các thuộc tính của một hình ảnh dấu hiệu “dừng” được cắt nhỏ và được “kiểm tra” bởi các nơ-ron – dạng hình trụ, màu đỏ của các động cơ cháy, các chữ cái đặc trưng, kích thước biển báo giao thông, và sự chuyển động hoặc sự thiếu hụt của nó. Nhiệm vụ của mạng thần kinh là để kết luận liệu đây có phải là dấu hiệu dừng hay không. Nó đi kèm với một “vector xác suất”. Trong ví dụ của chúng ta, hệ thống có thể xác định chắc chắn đến 86% một dấu hiệu dừng, 7% rằng đó là một dấu hiệu giới hạn tốc độ, và 5% còn lại là một con diều bị mắc kẹt trong cây,( hoặc cái gì đó tương tự) vv … và kiến trúc mạng sau đó sẽ thông báo đến mạng nơron cho dù đó là đúng hay sai.
Cơ sở lí thuyết Ngày nay, khả năng nhận dạng hình ảnh của máy móc được luyện tập thông qua deep learning trong một số tình huống tốt hơn so với con người. AlphaGo của Google đã được huấn luyện chơi cờ vay – nó điều chỉnh mạng lưới thần kinh của mình bằng cách tự mình chống lại chính mình. Training set Tập huấn luyện (training set) là tập dữ liệu được sử dụng để huấn luyện mô hình. Các thuật toán học máy sẽ học các mô hình từ tập huấn luyện này.
Việc học sẽ khác nhau tùy thuộc vào thuật toán và mô hình sử dụng. Ví dụ, khi sử dụng môt hình Hồi quy tuyến tính (Linear Regression), các điểm trong tập huấn luyện được sử dụng để tìm ra hàm số hay đường phù hợp nhất mô tả quan hệ giữa đầu vào và đầu ra của tập dữ liệu huấn luyện bằng cách sử dụng một số phương pháp tối ưu hóa như công thức nghiệm ở bài trước hoặc các thuật toán tối ưu gần đúng như gradient descent hay stochastic gradient descent. Trong thuật toán K-Nearest Neighbors (K-Hàng xóm gần nhất), các điểm trong tập huấn luyện là những điểm có thể là hàng xóm của nhau (gần nhau) được học theo các phương pháp tham lam. Trong thực tế, tập dữ liệu huấn luyện thường bao gồm các cặp vectơ đầu vào và vectơ đầu ra tương ứng, trong đó vector đầu ra thường được gọi là nhãn (label hoặc target).
Các thuật toán nói chung sẽ tìm cách tối ưu sai số dự đoán trên tập huấn luyện này đến mức đủ tốt. Trong trường hợp overfitting sai số dự đoán của mô hình trên tập huấn luyện có thể rất thấp, thậm chí = 0%. Validation Việc sử dụng testing set giúp chúng ta đánh giá được hiệu quả của mô hình xây dựng cuối cùng. Tuy nhiên, nếu kết quả đánh giá tệ thì sao? Rõ ràng chúng ta lại phải cố gắng điều chỉnh để đưa ra các mô hình tốt hơn.
Tức là testing set đang có vẻ ảnh hưởng đôi chút đến việc huấn luyện mô hình. Điều này theo một mặt nào đó là có vẻ không công bằng. Chúng ta đang cố gắng dự đoán những điều chưa biết, chuẩn bị cho các tính huống xấu nhất cơ mà!!! Chứ không phải là đưa lại tình huống đã xảy ra đã biết để hiệu chỉnh lại mô hình. Chính vì lí do đó, một tập dữ liệu khác sẽ được sử dụng để đóng vai trò đưa ra các phản hồi nhằm hiệu chỉnh các mô hinh sau quá trình huấn luyện.
Tập dữ liệu này gọi là tập dữ liệu kiểm chứng (validation set). Thực ra, đây mới nên dịch là tập kiểm thử còn testing set phải là tập kiểm định. Anh chạy thử xe, thử thuốc các kiểu rồi thì mới được đưa ra cấp chứng nhận kiểm định (bài test cuối cùng) trước khi đưa ra sử dụng. Tuy nhiên, các thuật ngữ đã được đưa khá nhiều trong các tài liệu khác tiếng Việt, do đó, ở đây chúng ta không tìm cách sửa lại nó nữa.
Chúng ta chỉ 10 Chương 1. Cơ sở lí thuyết cần nắm được rằng, tập validation là tập cho phép lựa chọn mô hình huấn luyện cho phù hợp, còn testing set là tập đánh giá lại mô hình lần cuối cùng. Điều này, cũng giống như các bạn học trên lớp, có các bài kiểm tra miệng, bài tập, kiểm tra giữa kỳ để đánh giá mức độ học của bạn, từ đó biết mình yếu phần nào, cần bổ sung phần nào để chuẩn bị cho bài thi cuối cùng vậy. Và cũng do đó, nên các đoạn phía sau này, chúng ta sẽ tạm dùng từ tiếng anh (Validation set và testing set) để giữ được nghĩa vốn có này.
Tập dữ liệu kiểm chứng (validation set) cung cấp các đánh giá công bằng về sự phù hợp của mô hình trên tập dữ liệu huấn luyện trong quá trình huấn luyện. Validation set có chức năng như một sự kết hợp: nó vừa là dữ liệu huấn luyện được sử dụng để thử nghiệm, nhưng không phải là một phần của quá trình huấn luyện cấp thấp cũng không phải là một phần của thử nghiệm cuối cùng. Nó là một bước chung gian cho phép lựa chọn mô hình phù hợp. Validation set có tác dụng giúp tìm kiếm mô hình tốt nhất trong các ứng viên được huấn luyện từ training set.
Nó được sử dụng để so sánh hiệu suất của các mô hình ứng viên này và quyết định cái nào sẽ là mô hình tốt nhất cuối cùng bằng cách so sánh các độ đo hiệu suất như độ chính xác, độ nhạy cảm, độ hồi tưởng, RMSE, MSE, … đạt được trên nó. Nó giúp cho quá trình điều chỉnh các siêu tham số của mô hình chẳng hạn số lượng đơn vị ẩn (lớp và chiều rộng lớp) trong mạng nơron để đạt được mô hình phù hợp. Validation set cũng giúp phát hiện và dừng sớm (early stopping) quá trình huấn luyện mô hình khi lỗi trên validation set tăng lên đột biến, vì đây là dấu hiệu của mô hình overfitting. Kỹ thuật early stopping là một kỹ thuật được sử dụng khá phổ biến để tránh việc overfitting.
Mặc dù nhìn có vẻ khá đơn giản, nhưng việc thực hiện nó trên thực tế lại khá phức tạp. Sỡ dĩ như vậy là do lỗi dự đoán trên validation set có thể dao động trong quá trình huấn luyện, tạo ra nhiều cực tiểu địa phương. Sự phức tạp này đã dẫn đến việc có rất nhiều các quy tắc đặc biệt được xây dựng và đề xuất để xác định chính xác thời điểm overfitting thực sự bắt đầu dựa trên lỗi dự đoán trên tập validation set. Cơ sở lí thuyết Hình 1.1: Validation Như trên hình vẽ trên, ta thấy chúng ta có thể dừng việc huấn luyện tại vị trí có sự thay đổi rõ rệt sai số trong tập validation set.
Đây là thời điểm xảy ra overfitting. Testing set Mục tiêu của machine learning là tạo ra những mô hình có khả năng tổng quát hóa để dự đoán tốt trên cả dữ liệu chưa thấy bao giờ (nằm ngoài tập huấn luyện), do đó, để biết một thuật toán hay mô hình có tốt hay không thì sau khi được huấn luyện, mô hình cần được đánh giá hiệu quả thông qua bộ dữ liệu kiểm thử (testing set). Bộ dữ liệu này được sử dụng để tính độ chính xác hoặc sai số của mô hình dự đoán đã được huấn luyện. Chúng ta biết nhãn thực của mọi điểm trong tập hợp dữ liệu kiểm thử này, nhưng chúng ta sẽ tạm thời giả vờ như không biết và đưa các giá trị đầu vào của tập vào mô hình dự đoán để nhận kết quả dự đoán đầu ra.
Sau đó chúng ta có thể nhìn vào các nhãn thực và so sánh nó với kết quả dự đoán của các đầu vào tương ứng này và xem liệu mô hình có dự đoán đúng hay không. Việc tính tổng trung bình của toàn bộ các lỗi này chúng ta có thể tính toán được lỗi dự đoán trên tập kiểm thử. Các lỗi dự đoán này được đánh giá thông qua rất nhiều chỉ số khác nhau như độ chính xác (precision), độ hồi tưởng (recall), F1-Score, RMSE, MAE,…Các chỉ số này sẽ được trình bày chi tiết hơn trong bài tiếp theo. Một lưu ý là các chỉ số đo mức độ hiệu quả của mô hình này trên tập kiểm thử có thể khác với các lossfunction hay objective function sử dụng để tối ưu hóa mô hình trên tập huấn luyện.
Nghĩa là quá trình kiểm thử và quá trình huấn luyện là hoàn toàn độc lập với nhau, cả về bộ dữ liệu lẫn cách thức so sánh chỉ số. Tập dữ liệu kiểm thử tốt là một tập dữ liệu độc lập với tập dữ liệu huấn luyện (để ngoài và không được tham gia vào quá trình huấn luyện), nhưng tuân theo cùng một 12 Chương 1. Cơ sở lí thuyết phân phối xác suất như tập dữ liệu huấn luyện. Điều này giúp cho việc đánh giá không bị thiên vị.
Nếu một mô hình phù hợp với trainining set nhưng lại sai khác trên testing set, thì việc rất có khả năng nó bị overfitting (xem hình bên dưới). Ngược lại, sai số không quá nhiều thì thường chúng là một mô hình phù hợp.