AI Cho Mọi Người

AI Cho Mọi Người

Convolutional neural networks

 

 

Trong những năm gần đây, mạng Convolutional Neural Networks (CNN) đã làm thay đổi lớn ngành Computer Vision. Ban đầu CNN được sử dụng hầu hết trong các vấn đề về sử lý ảnh như: chức năng nhận diện trên Facebook, sử dụng hình ảnh để tìm kiếm trên Google. Tuy nhiên, CNN ngày nay không chỉ giải quyết các vấn đề về xử lý ảnh, mà còn xử lý nhiều vấn đề khác như: xử lý ngôn ngữ tự nhiên, phân tích cảm xúc, dịch thuật, và hệ thống khuyến nghị.

Series này sẽ giới thiệu chi tiết về CNN và sau đó sẽ có ví dụ minh hoạ sử dụng TensorFlow.  Sau series này các bạn sẽ:

 

1. Convolutional Neural Networks
Khác với mạng Neural Networks thông thường, mạng CNN gồm nhiều tầng convolution (lớp tích chập), non-linear activation layer (ReLU, sigmoid), pooling (lớp gộp) và cuối cùng là tầng fully connected.

Thông thường, một ảnh sẽ được lan truyền qua tầng convolution và non-linear activation đầu tiên, sau đó các giá trị tính toán được sẽ lan truyền qua pooling layer. Bộ ba convolution layer + nonlinear layer + pooling layer có thể được lặp lại nhiều lần trong network. Cuối cùng, tầng fully connected layer và softmax được dùng để tính xác suất ảnh đó thuộc lớp nào.

Hình sau minh hoạ một kiến trúc của CNN.

 

Cấu trúc cơ bản của CNN gồm: tầng convolution, tầng activation , tầng pooling, và tầng fully connected.

Trong tầng convolution và pooling, một phần của neural đầu vào được thu hẹp và liên kết với các tầng tiếp theo. Cùng với các filter giúp nhận diện được các đặc tính nào đó của ảnh. Nói cách khác, mỗi neural ở layer tiếp theo được sinh ra từ việc đặt filter lên 1 vùng ảnh cục bộ của neural layer trước.

Trong ví dụ về nhận diện xe ô tô như bên dưới, các tầng đầu tiên CNN sẽ giúp rút trích thông tin viền của ô tô và trong các tầng tiếp theo sẽ rút trích và tổng hợp các thông tin có mức trừu tượng cao hơn như bánh xe, cửa xe.

 

Convolution

Convolution rất dễ hiểu nếu bạn nghĩ về nó như là một phép toán với ma trận.

Ví dụ, xét ảnh xám (grayscale image). Chúng ta coi ảnh là 1 matrix như sau:

Để đơn giản hoá vấn đề, ta nén ảnh trên về ảnh có kích thước 5×5.

Xét bộ Filter có kích thước 3×3 như sau để thực hiện Convolution.

Hình ảnh ban đầu được nhân với filter trượt từ trái sang phải, từ trên xuống dưới (Chú ý: nhân từng phần tử – phép element-wise).

Vì Convolution được trượt theo cách này, nên đôi khi được coi như là 1 cửa sổ trượt (sliding window) áp lên một ma trận.

Kết quả ta được 1 matrix chứa các đặc trưng của ảnh.

 

Translation Invariance

Như trong ví dụ convolution ở bên trên, filter sẽ phát các đối tượng theo cục bộ. Vì vậy, có thể phát hiện được các đặc trưng từ đầu vào. (Cùng với tính kết hợp compositionality – mạng sẽ cho ra kết quả là 1 đối tượng). Dù bạn có thay đổi theo một cách nào đó. Mạng CNN vẫn nhận ra được sự xuất hiện của đối tượng.

Ví dụ hình ảnh dưới đây được thay đổi theo nhiều góc độ khác nhau, nhưng bạn (hay mạng CNN) vẫn có thể nhận ra được cùng một đối tượng xuất hiện trong ảnh.

Compositionality

Khi CNN hiểu được từng thành phần, nó sẽ kết hợp các thành phần này. Các tầng phía sau sẽ tìm được những đặc trưng ở mức trừu tượng cao hơn.

Ví dụ trong nhận diện giọng nói: tầng đầu tiên phát hiện sự thay đổi âm lượng và tần số, tầng tiếp theo kết hợp chúng để phát hiện tiếng ồn và giọng nói. Từ đó phát hiện chi tiết hơn âm thanh do nam hay nữ nói.