CHƯƠNG 1. MẠNG NƠ-RON TÍCH CHẬP Hình 1.1 Mạng nơ ron tích chập Một mạng Nơ-ron tích chập (ConvNet/CNN) là một thuật toán học sâu có thể lấy các hình ảnh đầu vào, tầm quan trọng của việc gán (trọng số và độ lệch có thể học được) tới các khía cạnh/đối tượng khác nhau trong ảnh và có khả năng phân biệt hình ảnh này với hình ảnh khác. Yêu cầu chuẩn bị xử lý trong một ConvNet là thấp hơn nhiều so với các thuật toán phân loại khác. Trong khi ở các thuật toán nguyên thủy các bộ lọc được thiết kế thủ công, với đủ sự đào tạo.
ConvNet có khả năng để học những bộ lọc/ các đặc tính. Để thuận tiện khi nói đến mạng Nơ-ron tích chập tôi xin phép sử dụng cụm từ viết tắt là CNN. CNN là một trong những mô hình mạng Học sâu phổ biến nhất hiện nay, có khả năng nhận dạng và phân loại hình ảnh với độ chính xác rất cao, thậm chí còn tốt hơn con người trong nhiều trường hợp. Mô hình này đã và đang được phát triển, ứng dụng vào các hệ thống xử lý ảnh lớn của Facebook, Google hay Amazon… cho các mục đích khác nhau như các thuật toán tagging tự động, tìm kiếm ảnh hoặc gợi ý sản phẩm cho người tiêu dùng.
Kiến trúc mạng CNN Kiến trúc của một CNN tương tự như mô hình kết nối của các tế bào thần kinh trong não người và được lấy cảm hứng từ tổ chức của vỏ não thị giác. Các tế bào thần kinh riêng lẻ chỉ phản ứng với các kích thích của một vùng hạn chế của trường thị giác gọi là trường tiếp nhận. Tập hợp các trường như vậy chồng nên nhau để bao phủ toàn bộ khu vực trực quan.2 Kiến trúc một mạng CNN Nhìn trên hình ta thấy CNN có ba tầng chính để xây dựng kiến trúc cho một mạng Nơ-ron tích chập: ● Tầng tích chập; ● Tầng gộp (pooling layer); ● Tầng được kết nối đầy đủ (fully-connected). Tầng kết nối đầy đủ giống như các mạng Nơ-ron thông thường, và tầng chập thực hiện tích chập nhiều lần trên tầng trước.
Tầng gộp có thể làm giảm kích thước mẫu trên từng khối 2x2 của tầng trước đó.1 Tầng Tích chập Lớp tích chập là một tập các là một bản sao chép (feature map) của input ban đầu, nhưng được trích xuất ra các đặc tính (feature) cụ thể. Sao chép như thế nào thì lại dựa vào một ma trận con (kernel). Đây là một ma trận sẽ quét qua ma trận dữ liệu đầu vào, từ trái qua phải, trên xuống dưới, và nhân tương ứng từng giá trị của ma trận đầu vào mà ma trận kernel rồi cộng tổng lại, đưa qua activation function (sigmoid, relu, elu,. ), kết quả sẽ là một con số cụ thể, tập hợp các con số này lại là 1 ma trận nữa, chính là feature map.
Hãy nhìn vào ví dụ sau cho dễ hiểu: 5 Ta có 1 ma trận đầu vào input và 1 kernel: Hình 1.3 Ma trận đầu vào mà ma trận kernel thực thiện tích chập Thực hiện quét ma trận kernel qua từng phần tử input và tính toán trên phần nhân tương ứng rồi cộng các kết quả lại ta thu được một giá trị tại feature map.4 Cách quét và tính giá trị feature map [1] Như trên hình ta thấy việc tính ra điểm đầu tiên dễ dàng được tính bằng nhân từng điểm của ma trận kernel với từng điểm tương ứng trên ma trận đầu vào sau đó cộng tổng tất cả chúng lại. 1x1 + 1x0 + 1x1 + 0x0 + 1x1 + 1x1 + 1x0 + 0x1 + 0x0 + 1x1 = 4 Chúng ta thực hiện lần lượt cho đến hết với bước nhảy là 1pixel kết quả thu được thể hiện dưới đây: 6 Hình 1.5 Kết quả thu được sau khi hoàn tất việc quét và tính Như ta thấy nếu dịch (stride) từng pixel thì ma trận kernel sẽ quét 2 ô cạnh nhau nhưng nếu dịch 2 pixels (strike = 2) thì kernel sẽ quét ô số 1 và ô số 3 bỏ qua ô số 2. Điều này nhằm tránh lặp lại giá trị ở những ô vừa quét. Ta cũng nhận thấy rằng nếu tăng strike hoặc kích thước kernel ma trận feature map sẽ ngày một nhỏ đi và ma trận kernel phải nằm trọn vẹn trong ma trận đầu vào.
Để giữ nguyên kích cỡ của feature map so với ban đầu. Ta thêm 0 vào xung quanh ma trận đầu vào lúc này ma trận đầu vào, người ta gọi kĩ thuật này là padding. Khi ta điều chỉnh padding = 1, tức là ta đã thêm 1 ô bọc xung quanh các cạnh của input, muốn phần bọc này càng dày thì ta cần phải tăng padding lên.6 Kích thước tăng lên của feature map sau khi thêm padding Trong ví dụ Hình 1.5 ta thấy rằng kích thước của ma trận feature thu được là 3x3 nhỏ hơn kích thức ma trận gốc. trong ví dụ Hình 1.6 thì kích thước ma trận feature thu được là 5x5 bằng kích thước của ma trận gốc 5x5.
Vậy kích thước của 7 ma trận feature thu được sẽ được quyết định bởi phần padding thêm vào, trong ví dụ Hình 1.6 là phần viền màu xám nét đứt, kích thước ma trận filter và bước dịch stride. Ta thấy rằng kích thước của ma trận feature map sẽ phụ thuộc vào kích thước ma trận kernel, stride, padding, chúng được thể hiện theo công thức dưới dây: [2] (1) trong đó: : là kích thước ma trận feature map : là ma trận đầu vào : kích thước khoảng trắng padding thêm vào : kích thước ma trận kernel : strike của bộ lọc 1.2 Lớp Pooling Tương tự như lớp Tích Chập, lớp Pooling có trách nhiệm giảm kích thước không gian của Đối tượng kết hợp. Điều này là để giảm sức mạnh tính toán cần thiết để xử lý dữ liệu thông qua giảm kích thước, tránh overfitting. Hơn nữa, nó rất hữu ích để trích xuất các đặc trưng nổi trội là bất biến xoay và vị trí, do đó duy trì quá trình đào tạo mô hình một cách hiệu quả.
Pooling hoạt động gần giống với lớp tích chập, nó cũng có 1 cửa sổ trượt gọi là pooling window, cửa sổ này trượt qua từng giá trị của ma trận dữ liệu đầu vào (thường là các feature map trong convolutional layer), chọn ra một giá trị từ các giá trị nằm trong cửa sổ trượt. Có hai loại pooling window: Tổng hợp tối đa và Tổng hợp trung bình. Max Pooling trả về giá trị lớn nhất từ phần hình ảnh được bao phủ bởi Kernel. Mặt khác, Average Pooling trả về giá trị trung bình của tất cả các giá trị từ phần hình ảnh được bao phủ bởi Kernel.
Max Pooling cũng hoạt động như một bộ triệt nhiễu. Nó loại bỏ hoàn toàn các nhiễu hoạt động và cũng thực hiện khử nhiễu cùng với giảm kích thước. Mặt khác, Average Pooling chỉ đơn giản là thực hiện giảm kích thước như một cơ chế khử nhiễu. Do đó, chúng ta có thể thấy rằng Max Pooling sẽ được sử dụng rộng dãi hơn so với Average Pooling.
8 Cơ chế hoạt động được minh họa dưới hình dưới đây. ở đây chúng ta thấy pooling window sẽ có strike = 2 để đảm bảo không trùng nhau và sử dụng Max Pooling.7 Mô tả hoạt động của Max Pooling với strike là 2 1.3 Fully Connected Hình 1.8 Lớp Fully Connected Lớp Fully connected, một layer để tập hợp các feature layer mà ta đã tìm ra, chuyển đổi dữ liệu từ 3D, hoặc 2D thành 1D, tức chỉ còn là một vector. Còn một layer cuối cùng là output, số Nơ-ron của layer này phụ thuộc vào số output mà ta muốn tìm ra. Có nhiều kiến trúc khác nhau của CNN có sẵn, là chìa khóa trong việc xây dựng các thuật toán có sức mạnh và sẽ cung cấp sức mạnh cho toàn bộ AI trong tương lai gần.
Một số trong số chúng đã được liệt kê dưới đây: 1.2 Lịch sử phát triển mạng CNN 1.1 LeNet-5 (1998) Authors: Yann Lecun, Yoshua Bengio[3] LeNet là một trong những mạng CNN lâu đời nổi tiếng nhất được Yann Lecun phát triển vào những năm 1998s. Cấu trúc của LeNet gồm 2 layer (Convolution + maxpooling) và 2 layer fully connected layer và output là softmax layer. Chúng ta cùng tìm hiểu chi tiết architect của LeNet .9 Kiến trúc mạng LeNet (1998) [3] ● Input shape 32x32x1 ● Layer1: ● Convolution layer 1: Kernel 5x5x3, stride = 1, no padding, number filter = 6, output = 28x28x6. ● AvgPooling layer: pooling size 2x2, stride = 2, padding = “same”, output = 14x14x6.
● Layer 2: ● Convolution layer 2: kernel 5x5x6, stride = 1, no padding, number filter = 16, output = 10x10x16. ● AvgPooling layer: pooling size = 2x2, stride = 2, padding = “same”, output = 5x5x16. ● Flatten output = 5x5x16 = 120 ● Fully connected 1: output = 84 ● Fully connected 2: output = 10 ● SoftMax layer, output = 10 (10 digits). Nhược điểm của LeNet là mạng còn rất đơn giản và sử dụng sigmoid (or tanh) ở mỗi convolution layer mạng tính toán rất chậm.2 Alexnet (2012) Authors: Alex Krizhevsky, Ilya Sutskever, Geoffrey Hinton.
University of Toronto, Canada. [3] Mạng huấn luyện AlexNet là công trình đầu tiên phổ biến mạng CNN trong lĩnh vực Thị giác máy tính, cũng là một trong những mạng huấn luyện CNN nổi tiếng nhất nhờ thành tích ấn tượng mà nó đạt được trong cuộc thi nhận dạng ảnh quy mô lớn tổ chức vào năm 2012. Cuộc thi này có tên chính thức là ILSVRC – ImageNet Large Scale Visual Recognition Challenge [4], được ImageNet - một hãng CSDL ảnh - tổ chức thường niên và được coi là cuộc thi Olympics quy mô thế giới trong lĩnh vực Thị giác máy tính (computer vision). Mục đích của cuộc thi là nhằm thử nghiệm các công nghệ mới giúp cho máy tính có thể hiểu, phân tích, phát hiện và nhận dạng các vật thể trong một bức ảnh.
Cụ thể hơn, mục tiêu chính của cuộc thi năm 2012 đặt ra mà các đội tham gia phải giải quyết là bài toán nhận dạng, với bộ dữ liệu huấn luyện lên đến 1,2 triệu ảnh được gán nhãn cho 1.000 hạng mục khác nhau. Nhóm SuperVision, gồm các thành viên Alex Krizhevsky, Ilya Sutskever và Geoff Hinton, cùng với mạng AlexNet của họ đã đạt được kết quả đáng kinh ngạc là chiến thắng áp đảo nhóm đứng thứ hai với độ chính xác chênh lệch đến hơn 10% (15,31% và 26,17%) [5]. Điều đặc biệt là mạng huấn luyện này chỉ nhận dữ liệu đầu vào là các giá trị điểm ảnh thô và không hề áp dụng bất kỳ phương pháp trích chọn đặc trưng nào, trong khi mọi hệ thống nhận dạng thị giác truyền thống đều phải gồm nhiều giai đoạn trích chọn đặc trưng hết sức tỉ mỉ, cẩn thận, thậm chí phải áp dụng nhiều mẹo để cải thiện chất lượng nhận dạng.