CHƢƠNG 2 CƠ SỞ LÝ THUYẾT
2.3. Mơ hình Convolutional Neural Netword (CN N)
Convolutional Neural Network (CNNs – Mạng nơ-ron tích chập) là một trong những mơ hình Deep Learning tiên tiến. Nó giúp cho chúng ta xây dựng đƣợc những hệ thống thơng minh với độ chính xác cao nhƣ hiện nay. CNN đƣợc sử dụng nhiều trong các bài toán nhận dạng các object trong ảnh.
CNN cũng có lịch sử khá lâu đời. Kiến trúc gốc của mơ hình CNN đƣợc giới thiệu bởi một nhà khoa học máy tính ngƣời Nhật vào năm 1980. Sau đó, năm 1998, Yan LeCun lần đầu huấn luyện mơ hình CNN với thuật tốn backpropagation cho bài toán nhận dạng chữ viết tay. Tuy nhiên, mãi đến năm 2012, khi một nhà khoa học máy tính ngƣời Ukraine Alex Krizhevsky (đệ của Geoffrey Hinton) xây dựng mơ hình CNN (AlexNet) và sử dụng GPU để tăng tốc quá trình huấn luyện deep nets để đạt đƣợc top 1 trong cuộc thi Computer Vision thƣờng niên ImageNet với độ lỗi phân lớp top 5 giảm hơn 10% so với những mơ hình truyền thống trƣớc đó, đã tạo nên làn sóng mạnh mẽ sử dụng deep CNN
27 với sự hỗ trợ của GPU để giải quyết càng nhiều các vấn đề trong Computer Vision.
2.3.1. Khái niệm Convolutional
Là một cửa sổ trƣợt (Sliding Windows) trên một ma trận.
Các convolutional layer có các parameter(kernel) đã đƣợc học để tự điều chỉnh lấy ra những thơng tin chính xác nhất mà khơng cần chọn các feature.
Trong hình ảnh ví dụ trên, ma trận bên trái là một hình ảnh trắng đen đƣợc số hóa. Ma trận có kích thƣớc 5×5 và mỗi điểm ảnh có giá trị 1 hoặc 0 là giao điểm của dòng và cột.
Convolution hay tích chập là nhân từng phần tử trong ma trận 3. Sliding Window hay còn gọi là kernel, filter hoặc feature detect là một ma trận có kích thƣớc nhỏ nhƣ trong ví dụ trên là 3×3.
Convolution hay tích chập là nhân từng phần tử bên trong ma trận 3×3 với ma trận bên trái. Kết quả đƣợc một ma trận gọi là Convoled feature đƣợc sinh ra từ việc nhận ma trận Filter với ma trận ảnh 5×5 bên trái.
2.3.2. Cấu trúc mạng CNN
Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng hàm nonlinear activation nhƣ ReLU để kích hoạt các trọng số trong các node. Mỗi một lớp sau khi thơng qua các hàm kích hoạt sẽ tạo ra các thơng tin trừu tƣợng hơn cho các lớp tiếp theo.
Mỗi một lớp sau khi thơng qua các hàm kích hoạt sẽ tạo ra các thơng tin trừu tƣợng hơn cho các lớp tiếp theo. Trong mơ hình mạng truyền ngƣợc (feedforward neural network) thì mỗi neural đầu vào (input node) cho mỗi neural đầu ra trong các lớp tiếp
28 theo.
Mơ hình này gọi là mạng kết nối đầy đủ (fully connected layer) hay mạng toàn vẹn (affine layer). Cịn trong mơ hình CNNs thì ngƣợc lại. Các layer liên kết đƣợc với nhau thông qua cơ chế convolution.
Layer tiếp theo là kết quả convolution từ layer trƣớc đó, nhờ vậy mà ta có đƣợc các kết nối cục bộ. Nhƣ vậy mỗi neuron ở lớp kế tiếp sinh ra từ kết quả của filter áp đặt lên một vùng ảnh cục bộ của neuron trƣớc đó.
Mỗi một lớp đƣợc sử dụng các filter khác nhau thơng thƣờng có hàng trăm hàng nghìn filter nhƣ vậy và kết hợp kết quả của chúng lại. Ngoài ra có một số layer khác nhƣ pooling/subsampling layer dùng để chắt lọc lại các thơng tin hữu ích hơn (loại bỏ các thông tin nhiễu).
Trong quá trình huấn luyện mạng (traning) CNN tự động học các giá trị qua các lớp
filter dựa vào cách thức mà bạn thực hiện. Ví dụ trong tác vụ phân lớp ảnh, CNNs sẽ cố gắng tìm ra thơng số tối ƣu cho các filter tƣơng ứng theo thứ tự raw pixel > edges > shapes > facial > high-level features. Layer cuối cùng đƣợc dùng để phân lớp ảnh.
Trong mơ hình CNN có 2 khía cạnh cần quan tâm là tính bất biến (Location Invariance) và tính kết hợp (Compositionality). Với cùng một đối tƣợng, nếu đối tƣợng này đƣợc chiếu theo các gốc độ khác nhau (translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị ảnh hƣởng đáng kể. Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển (translation), phép quay (rotation) và phép co giãn (scaling). Tính kết hợp cục bộ cho ta các cấp độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và trừu tƣợng hơn thơng qua convolution từ các filter. Đó là lý do tại sao CNNs cho ra mơ hình với độ chính xác rất cao. Cũng giống nhƣ cách con ngƣời nhận biết các vật thể trong tự nhiên.
Mạng CNN sử dụng 3 ý tƣởng cơ bản:
29
Các trƣờng tiếp nhận cục bộ (local receptive field)
Trọng số chia sẻ (shared weights)
Tổng hợp (pooling).
2.3.3. Kiến trúc DenseNet áp dụng vào phân loại cho bài toán
ResNet chúng ta phân tách hàm số thành một hàm xác định và một hàm phi tuyến: F(x) = x +g (x)
Cùng nhắc lại công thức triển khai Taylor tại x =0:
Công thức của ResNet cũng gần tƣơng tự nhƣ triển khai taylor tại đạo hàm bậc nhất, g(x) tƣơng ứng với thành phần số dƣ. Taylor sẽ càng chuẩn xác nếu chúng ta phân rã đƣợc số dƣ thành nhiều đạo hàm bậc cao hơn.
Ý tƣởng của DenseNet cũng nhƣ vậy, chúng ta sẽ sử dụng một mạng lƣới các kết nối tắt dày đặc để liên kết các khối với nhau.
Từ đầu vào x ta sẽ áp dụng liên tiếp một chuỗi các ánh xạ liên tiếp với cấp độ phức tạp tăng dần:
x→f1(x) x→f2(x,f1(x)) ... x→f4(x,f3(x,f2(x,f1(x))))
DenseNet sẽ khác so với ResNet đó là chúng ta khơng cộng trực tiếp x vào f(x) mà thay vào đó, các đầu ra của từng phép ánh xạ có cùng kích thƣớc dài và rộng sẽ đƣợc nối với nhau thành một khối theo chiều sâu. Sau đó để giảm chiều dữ liệu chúng ta áp dụng tầng chuyển tiếp (translation layer). Tầng này là kết hợp của một layer tích chập giúp giảm độ sâu và một max pooling giúp giảm kích thƣớc dài và rộng. Qua đó sẽ dễ dàng hình dung hơn qua hình vẽ bên dƣới:
30 Hình 2. 13. Kiến trúc DenseNet.
Và bên dƣới là chi tiết của từng layers trong DenseNet.
Kết quả là DenseNet121 chỉ với 8 triệu tham số nhƣng có độ chính xác cao hơn so với ResNet50 với gần 26 triệu tham số trên bộ dữ liệu ImageNet.
DenseNet đồng thời cũng áp dụng BatchNormalization trƣớc khi thực hiện tích chập ở các tầng chuyển tiếp nên giảm đƣợc triệt tiêu đạo hàm (vanishing gradient descent).
31 Kết luận: DenseNet (2016): Là bƣớc phát triển tiếp theo của ResNet khi kế thừa kiến trúc khối và phát triển kết nối tắt theo một mạng dày đặc.