CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.2 Mạng nơ-ron tích chập
Mạng nơ-ron tích chập (CNN) là một mạng nơ-ron được ứng dụng rất nhiều trong học sâu (deep learning), đặc biệt trong các ứng dụng nhận diện ảnh, phân loại ảnh, phân loại đối tượng. Cấu trúc của CNN được dựa trên kiến trúc mạng nơ-ron đã nói ở trên. Tuy nhiên nó mang nhiều cải tiến đáng kể, đó là sự xuất hiện của các lớp tích chập - Convolution và Pooling.
CNN chỉ mới thực sự được quan tâm đặc biệt kể từ khi AlexNet ra đời vào năm 2012. Chỉ trong vòng 3 năm, các nhà phát triển đã phát triển cấu trúc CNN, từ 8 lớp của AlexNet lên tới 152 lớp của ResNet. Ưu điểm chính của CNN so với các phương pháp trước đó là nó có thể tự động phát hiện các đặc tính quan trọng của đối tượng mà không cần đến bất kỳ sự giám sát nào của con người.
Hình 2.4 Sơ đồ một mạng nơ-ron tích chập (CNN) [41]
Cấu trúc của CNN rất đa dạng: Với những ứng dụng đơn giản, cấu tạo của nó có thể chỉ từ 1 đến 2 lớp, trong khi với những ứng dụng phức tạp, CNN có thể bao gồm hàng chục đến hàng trăm lớp tính toán. Việc lựa chọn số lớp cho mạng nơ-ron là đặc biệt quan trọng, vì mặc dù càng nhiều lớp tính toán thì sẽ cho ra thuật toán có độ chính xác cao hơn, nhưng đổi lại sẽ là tốc độ xử lý và hiệu năng. Một số mạng nơ-ron
30
dù có ít lớp (như VGG16) nhưng vẫn đạt được hiệu năng cao bởi được tối ưu bộ tham số, các bộ lọc và các hàm con trong mỗi lớp. Hình 2.4 mô tả trực quan cấu trúc của một mạng CNN đơn giản.
Trong bài toán nhận diện hay phân loại ảnh, CNN nhìn hình ảnh dưới dạng ma trận các điểm ảnh với kích thước H x W x D với H x W là kích thước ảnh, D=3 biểu thị ảnh màu, D=1 biểu thị ảnh đen trắng. Đa số các bài toán phân loại hay nhận diện ảnh không cần yếu tố màu sắc nên ảnh đen trắng thường được dùng với ưu điểm là giảm đáng kể khối lượng tính toán so với ảnh màu. Ví dụ với Hình 2.5, bằng một ảnh 8-bit sẽ được chuyển về dạng ma trận như sau:
Hình 2.5 Ma trận của một ảnh đen trắng 8 bit
Ma trận này sẽ là đầu vào cho các lớp tích chập (Convolution) và Pooling được nói tới ở sau.
2.2.1 Lớp tích chập (Convolution layer)
Lớp tích chập (Convolution Layer) là thành phần cơ bản và quan trọng nhất để tạo nên một CNN. Lớp tích chập là một lớp ẩn trong mạng nơ-ron. Một bộ lọc – Convolution Filter sẽ được quét qua ma trận dữ liệu đầu vào từ trái qua phải, từ trên xuống dưới, từng giá trị của ma trận đầu vào sẽ được nhân tương ứng với bộ lọc này và cộng tổng lại. Kết quả của mỗi phép nhân ma trận này là một số cụ thể. Bộ số kết quả mới này lại tạo thành một ma trận mới, được gọi là ma trận đặc trưng (feature map). Ví dụ minh họa ở Hình 2.6.
Hình 2.6 Minh họa một đầu vào và một ma trận lọc
31
Ma trận bên trái là ma trận đầu vào của lớp tích chập, trong khi đó ma trận bên phải biểu thị một bộ lọc có kích thước 3x3. Bộ lọc sẽ được quét qua từng phần tử của đầu vào, nhân tương ứng, sau đó tính tổng, ta thu được một giá trị của ma trận đặc trưng.
Hình 2.7 Ma trận đặc trưng thu được từ đầu vào và bộ lọc
Ví dụ ở Hình 2.7 trên thực hiện phép tích chập trong không gian 2 chiều, sử dụng bộ lọc 3x3. Trên thực tế, khi sử dụng ảnh màu, các phép toán trên sẽ được thực hiện trong không gian 3 chiều RGB. Bộ lọc được dùng để trích ra một đặc tính nào đó của ảnh. Với mỗi bộ lọc khác nhau, ta sẽ thu được các đặc trưng khác nhau. Các ma trận đặc trưng sau đó sẽ được gộp lại với nhau và trở thành đầu ra cuối cùng sau lớp tích chập.
Giả sử ta có một ảnh màu, kích thước 32x32 pixels, sử dụng bộ lọc có kích thước 5x5x3(Hình 2.8). Sau khi quét bộ lọc qua toàn bộ ảnh, ta sẽ thu được một ma trận đặc trưng có kích thước 32x32x1. Tuy nhiên, nếu sử dụng nhiều bộ lọc khác nhau, giả sử sử dụng 10 bộ lọc có kích thước 5x5x3, chúng ta không chỉ thu được một ma trận đậc trưng có kích thước 32x32x1 nêu trên, mà là 10 ma trận đặc trưng. Gộp chúng lại, ta sẽ thu được kết quả là một ma trận với kích thước 32x32x10.
32
Hình 2.8 Lớp tích chập trong không gian ba chiều
Khái niệm Stride chỉ khoảng cách di chuyển của bộ lọc giữa hai lần quét. Ví dụ trên ứng với trường hợp stride = 1, các ma trận sẽ quét lần lượt các ô cạnh nhau.
Với stride lớn hơn, ta chỉ cần thực hiện một số lượng phép tính nhỏ hơn, từ đó giảm thời gian tính toán. Tuy nhiên ta cũng sẽ thu được kích cỡ của ma trận đặc trưung nhỏ hơn, điều này lại ảnh hưởng đến lượng đặc tính được giữ lại từ ảnh đầu vào. Vì vậy cần lựa chọn stride phù hợp với ứng dụng thực tế để cân đối giữa độ chính xác và tốc độ xử lý của thuật toán. Ví dụ với stride bằng 2 ở Hình 2.9:
Hình 2.9 Ví dụ với Stride bằng 2
Với mỗi bộ ma trận hình ảnh đầu vào và bộ lọc khác nhau, ta có thể đạt được các mục đích khác nhau như phát hiện cạnh của vật thể trong ảnh, làm mờ, làm sắc nét, khử nhiễu… Ví dụ, với ảnh đầu vào như Hình 2.10, qua các bộ lọc với mục đích xác định vùng tối của ảnh, ta sẽ thu được đầu ra có dạng:
33
Hình 2.10 Biến đổi của một ảnh khi qua lớp tích chập [42]
Có thể thấy bộ lọc trên có tác dụng làm nối bật lên các đặc tính mắt và mũi của chủ thể trong bức ảnh.
2.2.2 Lớp Pooling
Lớp Pooling được sử dụng để giảm kích thước của các ma trận, từ đó giảm thiểu thời gian tính toán. Cách hoạt động của lớp Pooling khá tương đồng với lớp tích chập. Nó cũng gồm một bộ lọc trượt qua từng giá trị của ma trận đầu vào, tuy nhiên bộ lọc này không có các tham số mà nó chỉ chọn ra một giá trị trong các giá trị mà nó trượt qua để giữ lại (Pooling thường được sử dụng nhất là max pooling. Khi đó, giá trị lớn nhất sẽ được giữ lại). Hình 2.11 dưới đây minh họa kết quả nhận được sau lớp max pooling với bộ lọc 2x2 và stride bằng 2:
Hình 2.11 Hoạt động của lớp Max Pooling
Có thể thấy ở ví dụ trên, kích thước ma trận đầu vào được giảm đi đáng kể, chỉ còn bằng 1
4 so với ma trận ban đầu.
Tiếp tục với ma trận đặc trưng 3 chiều nói tới ở trên, Nếu ma trận đặc trưng đầu vào của lớp max poolig có kich thước 32x32x10 thì sau khi qua lớp max pooling được mô tả như trên, đầu ra của lớp này sẽ là ma trận đặc trưng có kích thước 16x16x10 như ở Hình 2.12. Chiều sâu của ma trận thu được không đổi, bởi lớp Pooling chỉ tác động vào từng ma trận con có kích thước 32x32x1.
34
Hình 2.12 Pooling trong không gian ba chiều
Trên thực tế, các mạng CNN thường gồm rất nhiều lớp với các lớp tích chập và Pooling nối tiếp nhau, mỗi bộ lọc trong lớp tích chập lại trích ra những đặc tính mong muốn của ảnh, thể hiện ở Hình 2.13. Mối khi ảnh đi qua một lớp xử lý, chúng sẽ được giữ lại những đặc tính mong muốn.
Hình 2.13 Biến đổi của ảnh đầu vào qua các lớp tích chập và Pooling liên tiếp [43]
2.2.3 Lớp liên kết đủ (Fully connected)
Các lớp liên kết đủ (Fully Connected) nằm ở cuối của mạng CNN. Một lớp liên kết đủ dùng để tổng hợp lại các ma trận đặc trưng được tính toán bởi các lớp tích chập và Pooling trước đó, chuyển các dữ liệu 3D/ 2D thành dạng vector 1D.