Machine Learning thật thú vị - Nhập môn về Học sâu
Nếu như bạn đã mệt mỏi, chán nản với việc đọc những bài viết bất tận về học máy nhưng chưa thực sự hiểu ý nghĩa của nó. Bài viết này sẽ giúp bạn thay đổi điều đó. Lần này, chúng ta sẽ học cách viết một chương trình nhận dạng các đối tượng trong ảnh sử dụng học sâu . Nói cách khác, chúng ta sẽ ...
Nếu như bạn đã mệt mỏi, chán nản với việc đọc những bài viết bất tận về học máy nhưng chưa thực sự hiểu ý nghĩa của nó. Bài viết này sẽ giúp bạn thay đổi điều đó.
Lần này, chúng ta sẽ học cách viết một chương trình nhận dạng các đối tượng trong ảnh sử dụng học sâu. Nói cách khác, chúng ta sẽ khám phá bí mật giúp Google Photos tìm kiếm ảnh của bạn dựa trên những thành phần trong bức ảnh:
Cũng giống như [phần 1] và [phần 2], bài viết này hướng dẫn những người vẫn luôn tò mò về Học Máy nhưng lại chưa biết phải bắt đầu từ đâu. Mục đích để mọi người đều có thể tiếp cận được - đồng nghĩa với việc bài viết sẽ đề cập các vấn đề khái quát và có thể bỏ qua nhiều chi tiết cụ thể.
Nhận dạng các đối tượng với Học Sâu
Một ví dụ điển hình là bất kỳ đứa trẻ 3 tuổi nào đều có thể nhận biết được một bức ảnh chụp con chim. Nhưng để tìm ra cách để một máy tính có thể nhận biết được những đối tượng đã từng làm đau đầu các nhà khoa học máy tính giỏi nhất trong hơn 50 năm.
Trong những năm trở lại đây, chúng ta đã tìm ra một phương pháp tốt để nhận biết đối tượng sử dụng deep convolutional neural networks (mạng thần kinh xoắn sâu).
Giờ chúng ta hãy bắt đầu thực hiện việc đó.
Bắt đầu đơn giản
Trước khi chúng ta tìm hiểu cách nhận biết hình ảnh của các loài chim, hãy học cách nhận biết những thứ đơn giản hơn - số viết tay "8".
Trong phần 2, chúng ta đã tìm hiểu cách để mạng thần kinh giải quyết những vấn đề phức tạp bằng cách tổng hợp nhiều tế bào thần kinh đơn giản. Chúng ta đã tạo một mạng thần kinh nhỏ để dự đoán giá của một ngôi nhà đựa trên số lượng phòng ngủ, kích thước ngôi nhà, và khu vực lân cận của nó:
Chúng ta cũng biết ý tưởng của học máy là các thuật toán tổng quát tương tự có thể tái sử dụng với dữ liệu khác nhau để giải quyết những bài toán khác nhau. Vì vậy, hãy tùy chỉnh mạng thần kinh này để nhận dạng chữ viết tay. Nhưng để làm chúng thực sự đơn giản, chúng ta chỉ cố gắng nhận dạng một ký tự - số "8".
Học máy chỉ làm việc khi được cung cấp dữ liệu - có nhiều dữ liệu sẽ tốt hơn. Vì vậy chúng ta cần rất nhiều số "8" viết tay. Rất may vì những nhà nghiên cứu đã tạo nên một tập dữ liệu cho những bài toán phổ biến thế này: MNIST data set of handwritten numbers. MNIST cung cấp hơn 60.000 ảnh các số viết tay.
Nếu bạn nghĩ về điều đó, mọi thứ đều là số
Mạng thần kinh chúng ta đã tạo nên ở phần 2 chỉ nhận 3 số làm tham số đầu vào ("3" phòng ngủ, "2000" diện tích vuông, etc...). Nhưng giờ chúng ta muốn xử lý nhnwgx bức ảnh với mạng thần kinh của chúng ta. Làm thế nào để chúng ta cung cấp những bức ảnh vào mạng thần kinh thay cho những con số.
Câu trả lời đơn giản tới mức khó tin. Một mạng thần kinh nhận đầu vào là các số. Với máy tính, một hình ảnh thực sự chỉ là một mạng lưới các con số đại diện cho cách tô đen mỗi điểm ảnh:
Để cung cấp một hình ảnh vào mạng lưới thần kinh của chúng ta, chúng ta chỉ đơn giản là xử lý hình ảnh 18x18 pixel như một mảng của 324 chữ số.
Để xử lý 324 đầu vào, chúng ta chỉ cần mở mộng mạng thần kinh để có 324 nút đầu vào.
Lưu ý rằng mạng thần kinh của chúng ta sẽ trả về 2 kết quả. Kết quả đầu tiên dự đoán rằng hình ảnh đầu vào là số "8". Kết quả thứ hai dự đoán rằng không phải như vậy. Bằng cách có một kết quả riêng biệt cho mỗi loại đối tượng chúng ta muốn nhận diện, chúng ta có thể sử dụng mạng thần kinh để phân lớp các đối tượng vào những nhóm khác nhau.
Giờ đây mạng thần kinh của chúng ta đã lớn hơn rất nhiều so với phần trước (324 đầu vào thay vì chỉ 3). Bất kỳ một máy tính hiện đại nào cũng có thể xử lý một mạng thần kinh với vài trăm nốt trong nháy mắt.
Việc còn lại chúng ta chỉ cần huấn luyện cho mạng thần kinh với dữ liệu là ảnh số "8" hay không phải. Khi đưa vào hình ảnh số "8", chúng ta sẽ đặt xác suất cần tính là 100%, nếu không phải hình ảnh số "8" chúng ta đặt xác suất là 0%.
Sau đây là một vài dữ liệu huấn luyện:
Chúng ta có thể huấn luyện những mạng thần kinh kiểu này trong một vài phút trên một máy tính laptop hiện đại. Khi quá trình đó hoàn thành, chúng ta sẽ nhận được một mạng thần kinh có thể phân biệt được hình ảnh của số "8" với tỉ lệ chính xác cao.
Qua ví dụ nhận dạng chữ viết tay vừa rồi chúng ta cũng đã tiếp cận tới một ứng dụng điển hình hơn của học máy. Do giới hạn, trong khuôn khổ bài viết tiếp theo chúng ta sẽ đi sâu vào phân tích kỹ thuật cách một thuật toán học sâu vận hành để nhận dạng chữ viết tay. Bao gồm việc chuẩn bị dữ liệu huấn luyện chi tiết và kỹ thuật huấn luyện dữ liệu đó cho mạng thần kinh sâu.