Chương 1 Vấn đề phân lớp, nhận dạng và tập mở 1.1 Giới thiệu về bài toán phân lớp, nhận dạng và tập mở 1.1 Bài toán phân lớp, nhận dạng trong học máy, học sâu và bài toán nhận dạng khuôn mặt Bài toán phân lớp và nhận dạng là một trong những chủ đề được nghiên cứu và ứng dụng trong lĩnh vực trí tuệ nhân tạo, đặc biệt trong học máy, học sâu. Theo đó, phân lớp được hiểu là xác định một đối tượng hay cá thể được quan sát vào một trong các lớp đã được xác định trước dựa vào thuộc tính, đặc điểm, tính chất của đối tượng. Ta có thể lấy ví dụ phổ biến là bài toán phân lớp đối tượng trong ảnh. Trong bài toán phân lớp đối tượng trong ảnh, chúng ta sử dụng một bộ dữ liệu lớn và xây dựng một thuật toán hoặc mô hình phân lớp các đối tượng trong ảnh thành những lớp đã được xác định.
Một trong những bộ dữ liệu nổi tiếng với điểm chuẩn đánh giá các thuật toán phân lớp là MNIST, bộ dữ liệu gồm 60.000 ảnh là chữ số từ 0 đến 9 có kích thước 28 × 28 pixel mỗi ảnh. Các thuật toán phân lớp sẽ phân lớp các ảnh 9 trong bộ dữ liệu MNIST vào 10 lớp từ 0 đến 9 chính xác nhất. Ngoài ra, một trong bộ dữ liệu để phân lớp ảnh là bộ dữ liệu CIFAR-10 gồm 60.000 ảnh, mỗi ảnh có kích thước 32 × 32. Bộ dữ liệu bao gồm 10 lớp là: máy bay, ô-tô, chim, mèo, con nai, chó, ếch, ngựa, tàu, xe tải.
Trung bình một lớp có khoảng 6000 ảnh. Trong khi đó, bài toán nhân dạng có thể coi là trường hợp đặc biệt của bài toán phân lớp. Nhưng khác với bài toán phân lớp, với một đối tượng cần nhận dạng như khuôn mặt hay vân tay của một cá nhân. ta không thể chụp hàng trăm bức ảnh khuôn mặt hay vân tay của người đó rồi đưa cho mô hình nhận dạng học, mà ta chỉ có số lượng rất hạn chế những hình ảnh dữ liệu đó.
Do đó cần nhiều kỹ thuật học phức tạp để có thể giải quyết bài toán nhận dạng so với bài toán phân lớp. Trong phạm vi của đề tài, liên quan nhiều đến các mô hình học sâu, nên ta có thể đồng nhất hai bài toán nhận dạng và phân lớp. Việc này sẽ không làm mất đi ý nghĩa của chủ đề nghiên cứu trong luận văn. Việc xây dựng một mô hình phân lớp nói riêng hay một sản phẩm tin học có áp dụng mô hình phân lớp nói chung gồm có nhiều bước, mỗi bước sẽ có những việc cần giải quyết.
Tất nhiên hiện nay, với sự phát triển phần cứng hỗ trợ trong việc tính toán các mô hình tốt hơn, chất lượng các sản phẩm có sử dụng mô hình học máy hay học sâu sẽ cải thiện hơn về hiệu năng tính toán hay tốc độ sử dụng. Nhưng việc cải tiến những mô hình xử lý vẫn là một điều quan trọng, ảnh hưởng trực tiếp đến sản phẩm. Hơn nữa, hiện nay, các bộ dữ liệu ngày càng được mở rộng và lớn hơn, các mô hình đòi hỏi luôn cải tiến liên tục. Tuy vậy, để xây dựng một mô hình học máy cần trải qua những quá trình cơ bản nhất [1].
Hình sau sẽ miêu tả quá trình đó: 10 Hình 1.1: Sơ đồ phát triển một mô hình phân lớp Một thuật toán hay mô hình phân lớp đạt được yêu cầu hay không, phụ thuộc nhiều vào hai yếu tố là bộ dữ liệu được sử dụng và thuật toán được lựa chọn. Những yếu tố liên quan đến việc xây dựng bộ dữ liệu cũng như lựa chọn thuật toán sẽ được trình bày dưới đây: 1. Xây dựng bộ dữ liệu • Thu thập dữ liệu: Bước đầu tiên là thu thập dữ liệu, với một chuyên gia trong lĩnh vực công nghệ thông tin hay khoa học dữ liệu thì với bài toán cụ thể sẽ có thể đề xuất một bộ dữ liệu có những thuộc tính, tính năng nào quan trọng hay số lượng dữ liệu cần thiết, nhằm đem lại hiệu quả cao nhất, giải quyết được vấn đề đặt ra. Nếu không, 11 để xây dựng một bộ dữ liệu chúng ta sử dụng phương pháp “brute - force”.
Phương pháp này được hiểu đơn giản là ta thu thập tất cả các dữ liệu có liên quan đến bài toán và kiểm tra xem những đặc trưng nào là quan trọng thì ta trích xuất và đưa vào bộ dữ liệu cần xây dựng. Điều này có nhiều nhược điểm là thời gian xử lý lớn, khối lượng dữ liệu nhiều, xuất hiện các dữ liệu nhiễu, dữ liệu ngoại lai hoặc những đặc điểm, đặc trưng quan trọng có thể bị bỏ sót. Do vậy, việc thu thập được một bộ dữ liệu có giá trị, chất lượng phù hợp với bài toán, yêu cầu đặt ra và thuật toán sử dụng là công việc khó và tốn về kém mặt thời gian và chi phí. Do vậy, đã có những giải quyết để giải quyết vấn đề này như thu thập dữ liệu từ nhiều nguồn, sử dụng các phương pháp trong học máy để bổ sung dữ liệu, phân tích lấy những bộ dữ liệu tiêu chuẩn đã có.
• Tiền xử lý dữ liệu: Việc thu thập một bộ dữ liệu có thể phát sinh một số vấn đề như dữ liệu bị nhập sai giá trị, dữ liệu có giá trị không hợp lý, thiếu dữ liệu, dữ liệu không có giá trị (dữ liệu không có liên quan đến bài toán cần xử lý). Có những dữ liệu có thể kiểm tra và chỉnh sửa bằng các công cụ, phần mềm trực quan hóa dữ liệu. Đôi khi với những dữ liệu mà ta không thể chỉnh sửa và thay đổi thì buộc ta loại bỏ nó ra khỏi bộ dữ liệu. Một vấn đề mà chúng ta hay gặp trong trong việc xử lý dữ liệu là việc phát hiện các giá trị nhiễu trong bộ dữ liệu.
Trong đó, nhóm nghiên cứu [2] đã tổng hợp các kỹ thuật phát hiện giá trị nhiễu như sử dụng mô hình xác suất và thống kê, sử dụng mạng nơ-ron nhân tạo (neural networks), sử dụng phương pháp học máy, hay các ứng dụng trực quan hóa dữ liệu. Trực quan hóa đặc biệt tốt trong việc tìm ra các điểm dữ liệu không tốt xuất hiện trong một mô hình. Mặt 12 khác, việc lựa chọn các phương pháp tiền xử lý dữ liệu và lựa chọn dữ liệu hiệu quả sẽ giúp giảm bớt kích thước bộ dữ liệu, làm tăng khả năng học của thuật toán, giúp khai thác hiệu quả bộ dữ liệu, đặc biệt là các thuật toán cần xử lý trên những tập dữ liệu lớn. Xử lý dữ liệu bị thiếu là những bước quan trọng trong tiền xử lý dữ liệu.
Đây là một vấn đề không thể tránh khỏi khi làm việc với hầu hết các nguồn dữ liệu thực tế. Một số phương pháp được lựa chọn để xử lý dữ liệu thiếu như: – Loại bỏ giá trị không xác định: Phương pháp này đơn giản nhất, ta sẽ bỏ qua bất kỳ những dữ liêu không xác định, mà ta không có căn cứ để bổ sung giá trị thiếu đó. – Bổ sung bằng giá trị phổ biến nhất: Giá trị xuất hiện nhiều nhất được chọn là giá trị cho tất cả các giá trị đặc trưng không xác định. Có thể bổ sung dữ liệu này bằng giá trị phổ biến nhất vào các giá trị bị thiếu.
– Bổ sung bằng giá trị trung bình: Ta có thể dùng giá trị trung bình để điền thay thế là dữ liệu bị thiếu. Đây là phương pháp được sử dụng khá phổ biến trong việc bổ sung dữ liệu bị thiếu. – Sử dụng phương pháp hồi quy hoặc phân lớp: Một mô hình phân lớp hoặc hồi quy có thể tìm được giá trị thay thế những giá trị thiếu mà không ảnh hưởng nhiều đến phân phối xác suất của bộ dữ liệu. – Thay thế bằng giá trị gần giống nhất: Xét các dữ liệu giống gần nhất với dữ liêu có trường giá trị bị thiếu và điền thay thế trường giá trị thiếu đó bằng trường giá trị của dữ liệu tương đồng nhất.
– Phương pháp coi giá trị bị thiếu như một giá trị đặc biệt: với giá 13 trị bị thiếu, ta sẽ coi giá trị đó như một giá trị mới. Với một bộ dữ liệu rất lớn, việc đưa cả bộ dữ liệu đó vào thuật toán là điều tốn kém mặt tài nguyên và thời gian huấn luyện, do vậy người ta thường lựa chọn một tâp con từ tập dữ liệu đó để thử nghiệm. Lựa chọn tập con là quá trình lựa chọn một phần trong bộ dữ liệu có loại bỏ nhiều thuộc tính không liên quan, tập trung vào dữ liệu có giá trị, nhằm đem lại hiệu quả cao trong mô hình. Có 2 phương pháp phổ biến để lựa chọn tập con là (i) lấy mẫu ngẫu nhiên, chọn một tập con trong bộ dữ liệu một cách ngẫu nhiên, (ii) lấy mẫu có lựa chọn, áp dụng khi các dữ liệu không có phân phối đồng đều trong tập dữ liệu.
Các thuật toán lựa chọn nói chung gồm hai thành phần: Lựa chọn tạo ra tập con theo những đặc trưng đề xuất và cố gắng tìm một tập con dữ liệu tối ưu và sẽ đánh giá xác định độ chính xác của tập con được đề xuất đó. Tuy nhiên, nếu không có một tiêu chí dừng phù hợp, quá trình lựa chọn có thể lặp lại nhiều lần, điều này sẽ tốn nhiều thời gian và không tập trung vào việc tìm kiếm đặc trưng quan trọng của bộ dữ liệu. Các tiêu chí để dừng khi lựa chọn tập con phù hợp là (i) việc thêm (hoặc xóa) bất kỳ đặc trưng nào cũng không tạo ra tập con tốt hơn và (ii) đánh giá việc lựa chọn tập con đại diện cho bộ dữ liệu qua hàm giá trị hoặc hàm đánh giá đã được định nghĩa trước. Nhưng để có thể xây dựng một bộ dữ liệu đầy đủ tiêu chuẩn, đáp ứng được bài toán nghiệp vụ đưa ra hay phù hợp với thuật toán mô hình lựa chọn thì không phải đơn giản.
Với nhiều dự án thực tế, việc xây dựng bộ dữ liệu có ý nghĩa quyết định đến thành công của dự án, và việc xây dựng nó đòi hỏi nhiều thời gian, công sức, và chi phí. Lựa chọn thuật toán Việc tạo một bộ dữ liệu và việc sử dụng các phương pháp khác nhau để 14 cải thiện chất lượng bộ dữ liệu rất quan trọng nhưng đi kèm với đó, việc phát triển và lựa chọn thuật toán phân lớp cũng là một bước quan trọng không kém. Việc đánh giá kết quả thuật toán thường dựa vào độ chính xác dự đoán (tỷ lệ dự đoán chính xác trên tổng số dự đoán).