Hàm kích hoạt được xây dựng để đảm bảo tính phi tuyến của mơ hình h́n luyện sau khi đã thực hiện một loạt các phép tính tốn tuyến tính qua các lớp tích chập, với đầu ra là một ảnh mới có kích thước giống với ảnh đầu vào, để đạt được điều này bằng cách chủn tổng trọng số các đầu vào của nó thơng qua một hàm kích hoạt, các giá trị điểm ảnh cũng hoàn toàn tương tự, trừ các giá trị âm đã bị loại bỏ.
Các hàm kích hoạt phi tuyến như ReLU hoặc sigmoid, tanh… để giới hạn phạm vi biên độ cho phép của giá trị đầu ra. Trong số các hàm kích hoạt này, hàm ReLU (ReLU
activation function) định nghĩa là f(x) = max(0,x) thường được chọn do cài đặt đơn giản,
tốc độ xử lý nhanh mà vẫn đảm bảo được tính tốn hiệu quả.
Hình 2.10: Các hàm kích hoạt
Hàm ReLU về cơ bản là nhằm hiệu chỉnh giá trị các nút trong mạng, nó có vai trị quan trọng trong quá trình xử lý của mạng CNN nhằm loại bỏ những phần tử âm và thay thế tất cả các phần tử âm bởi giá trị không (0).
2.3.3. Lớp lấy mẫu (Pooling)
Lớp lấy mẫu thường đi liền sau lớp tích chập và hàm kích hoạt ReLU để làm giảm kích thước ảnh đầu ra trong khi vẫn giữ được các thông tin quan trọng của ảnh đầu vào. Việc giảm kích thước dữ liệu có tác dụng làm giảm số lượng tham số, tăng hiệu quả tính toán và tránh được quá khớp dữ liệu (overfitting). Lớp lấy mẫu cũng sử dụng một cửa sổ trượt để qt tồn bộ các vùng trong ảnh như lớp tích chập, và thực hiện phép lấy mẫu thay vì phép tích chập, sẽ chọn lưu lại một giá trị duy nhất đại diện cho toàn bộ thông tin của vùng ảnh đó. Các phương thức lấy mẫu thường được sử dụng nhất hiện nay, đó là Max Pooling (lấy giá trị điểm ảnh lớn nhất) và Avarage Pooling (lấy giá trị trung bình của các điểm ảnh trong vùng ảnh cục bộ). Thông thường kỹ thuật được sử dụng là Max Pooling với cửa sổ phép lọc là 2 2 và bước nhảy stride = 2.
Như vậy, với mỗi ảnh đầu vào được đưa qua lấy mẫu sẽ thu được một ảnh đầu ra tương ứng, có kích thước giảm xuống đáng kể nhưng vẫn giữ được các đặc trưng cần thiết cho q trình tính tốn và nhận dạng.
Hình 2.11: Minh họa việc lấy mẫu con
2.3.4. Lớp kết nối đầy đủ
Lớp cuối cùng trong mơ hình CNN là lớp kết nối đầy đủ (fully connected layer), được thiết kế tương tự như trong mạng nơ-ron truyền thống, tất cả các điểm ảnh được kết nối đầy đủ với node trong lớp tiếp theo. Fully connected là cách kết nối các nơ-ron ở hai lớp với nhau trong đó lớp sau kết nối đẩy đủ với các nơ-ron ở lớp trước nó. Đây cũng là dạng kết nối thường thấy ở ANN, trong CNN lớp này thường được sử dụng ở các lớp phía cuối của kiến trúc mạng.
Hãy nhớ rằng đầu ra của cả hai lớp tích chập và lấy mẫu đều là khối lượng 3D, nhưng một lớp được kết nối đầy đủ sẽ mong đợi một vectơ 1D là các số. Vì vậy, san phẳng đầu ra của lớp lấy mẫu cuối cùng thành một vector và đó trở thành đầu vào cho lớp được kết nối đầy đủ.
Làm phẳng chỉ đơn giản là sắp xếp khối lượng 3D của các con số thành một vector 1D chứa xác suất của các đối tượng cần được dự đoán.
Hàm truyền đặt ở lớp cuối cùng trong mạng được sử dụng để phân lớp, ta có thể sử dụng hàm sigmoid để có đầu ra trong miền giá trị (0, 1) tương ứng với các giá trị phân bố xác xuất là 0% và 100%. Tuy nhiên, để có tổng xác xuất của các đầu ra là 100% thì cần phải được thực hiện chuẩn hóa các đầu ra bằng cách sử dụng hàm SoftMax với miền giá trị (0, 1).
Hàm truyền SoftMax sẽ so sánh kết quả dự đoán của mạng với nhãn thực sự đã có. Hàm có giá trị bé nếu kết quả dự đoán trùng với nhãn và ngược lại.
Trong đó, y là véc-tơ đầu ra, C là số lượng nhãn, c là nhãn đã biết.
Quá trình huấn luyện nhằm cập nhật các trọng số để tối thiểu hóa tổn hao, kỹ thuật lan truyền ngược được sử dụng cho quá trình huấn luyện.
* Phân lớp dữ liệu
Trong phần phân lớp, ta sử dụng một vài lớp với kết nối đầy đủ để xử lí kết quả của phần tích chập. Vì đầu vào của mạng liên kết đầy đủ là 1 chiều, ta cần làm phẳng đầu vào trước khi phân lớp. Lớp cuối cùng trong mạng CNN là một lớp liên kết đầy đủ, phần này hoạt động tương tự như mạng nơ-ron thông thường. Kết quả thu được cuối cùng cũng sẽ là một véc-tơ với các giá trị xác suất cho việc dự đoán như mạng nơ-ron thông thường.
Hình 2.12 mơ tả một ví dụ về mạng nơ-ron tích chập. Mạng gồm hai phần: phần tích chập và kết nối đầy đủ.
Phần tích chập rút trích tự động đặc trưng của dữ liệu đầu vào, lớp càng nhỏ thì học các đặc trưng thơ (mức thấp), lớp càng sâu thì học đặc trưng càng chi tiết (mức cao) của khái niệm cần học. Ví dụ trong hình cho thấy lớp đầu học các đặc trưng cạnh
(edge), các lớp kế tiếp học được đặc trưng các thành phần, rồi đến đặc trưng chi tiết của đối tượng học.
Hình 2.12: Một ví dụ về mơ hình học sâu dựa trên mạng nơ-ron tích chập
Các vùng sáng trong Hình 2.12 là vùng được “kích hoạt”, nghĩa là bộ lọc đã phát hiện ra mẫu mà nó đang tìm kiếm. Bộ lọc này dường như mã hóa một máy dò mắt và mũi. Khi đi sâu hơn vào mạng, các bản đồ đặc trưng trơng ít giống với hình ảnh gốc hơn và giống như một bản trình bày trừu tượng của nó. Lúc đầu có thể nhìn thấy được, nhưng sau đó nó trở nên không thể nhận ra. Lý do là bản đồ đặc trưng sâu hơn mã hóa các khái niệm cấp cao như “mũi” hoặc “tai” trong khi bản đồ đặc trưng cấp thấp hơn phát hiện các cạnh và hình dạng đơn giản. Đó là lý do tại sao bản đồ đặc trưng sâu hơn chứa ít thơng tin hơn về hình ảnh và nhiều thơng tin hơn về loại hình ảnh.
2.4. Kỹ thuật tối ưu mạng
Một trong những giải pháp nhằm tối ưu quá trình huấn luyện mạng được đề xuất là giảm số lượng các trọng số (weight) để tăng tốc độ tính tốn, giảm thời gian huấn luyện, tránh hiện tượng quá khớp khi mà lượng dữ liệu đầu vào là rất lớn như các bức ảnh màu, video…
Khi xây dựng được mạng CNN, ngoài kỹ thuật regularization và pooling ở lớp lấy mẫu để giảm kích thức ảnh sau khi tính tích chập để lấy các pixel đặc tính đặc trưng nhất, có thể thêm vào kỹ thuật dropout để tối ưu thời gian huấn luyện và tránh hiện tượng quá khớp (overfitting). Dropout cắt bớt số nơ-ron khi thực hiện thuật toán lan truyền ngược nhằm tăng tốc độ huấn luyện mạng. Dropout loại bỏ một cách ngẫu nhiên một số nơ-ron trong mạng bằng cách cho nó bằng 0 (bỏ kết nối). Có nghĩa là hệ thống sẽ quyết định ngõ ra trong khi thiếu thơng tin [20].
Q trình loại bỏ ngẫu nhiên các node được minh họa trong Hình 2.13. Ta sẽ xem xét ảnh hưởng của tỉ lệ này đến kết quả nhận dạng và phân loại ảnh trong phần thực nghiệm.
Hình 2.13: Mạng nơ-ron trước và sau quá trình Dropout
2.5. Một sớ Kiến trúc mạng CNN phổ biến
Có một số kiến trúc mạng nơ-ron tích chập nổi tiếng và thơng dụng hiện nay. Một số thử nghiệm cho thấy chúng có hiệu śt tốt hơn. Vì vậy, đơi khi nhiều người sử dụng mạng được thiết kế sẵn thay vì tự thiết kế mạng. Hầu hết các mạng CNN đều được thiết kế theo nguyên tắc chung:
• Giảm dần kích thước output mỗi lớp
• Tăng dần số lượng feature map
Trong khi các mạng CNN trước đây hầu hết theo dạng chỉ đơn giản thiết kế theo lối nhiều lớp Convolution xếp chồng lên nhau thì nhiều mạng mới đây đã thiết kế sáng tạo hơn và cho kết quả hiệu quả hơn. Các kiến trúc mạng này đóng vai trò rất quan trọng và áp dụng cho những nhiệm vụ cụ thể trong Computer Vision. Các mạng này được dùng nhiều trong việc trích xuất các feature để phục vụ cho các nhiệm vụ chuyên biệt.
2.5. 1. Kiến trúc LeNet-5
Kiến trúc LeNet-5 [21] được tạo ra bởi Yann Lecun năm 1998, để nhận diện chữ viết tay. Mơ hình này là cơ sở thiết kế cho các mạng sau này. Model ban đầu khá đơn giản và chỉ bao gồm 2 convolutional layers + 3 fully-connected layers. Mặc dù đơn giản nhưng nó đã cho thấy ưu thế vượt trội so với các thuật toán machine learning trong phân loại chữ số viết tay.
Trong kiến trúc mạng nơ-ron đầu tiên, để giảm chiều dữ liệu, Yan Lecun sử dụng Sub-Sampling Layer là một Average-Pooling Layer (các layer nhằm mục đích giảm chiều dữ liệu mà khơng thay đổi đặc trưng chúng ta còn gọi là Sub-Sampling Layer). Kiến trúc này khá khó huấn luyện trọng số nên ngày nay rất hạn chế được sử dụng trong các mạng CNN. Thay vào đó là các layer Max-Pooling.
Đầu vào của mạng LeNet có kích thước 32x32 và ít layers nên số lượng tham số của nó chỉ khoảng 60 nghìn.
Cấu trúc như hình vẽ
Hình 2.14: Mơ hình Kiến trúc LeNet-5
2.5. 2. Kiến trúc AlexNet
Được phát triển bởi Alex Krizhevsky năm 2012 trong cuộc thi ImageNet 2012. Phá vỡ lối mòn sử dụng các đặc trưng thủ cơng từ các thuật tốn truyền thống như HOG, SIFT, SURF thay cho các đặc trưng được huấn luyện trong các tác vụ học có giám sát của thị giác máy tính. Với những cải tiến so với mơ hình mơ hình kiến trúc LeNet-5:
+ Tăng cường kích thước mạng sâu hơn. + Đầu vào có độ phân giải lớn hơn.
+ Sử dụng local normalization để chuẩn hóa các layer giúp cho quá trình hội tụ nhanh hơn.
Ngoài ra mạng cịn cải tiến trong quá trình optimizer như: + Sử dụng hàm kích hoạt ReLU (Rectified Linear Unit).
+ Sử dụng dropout layer giúp giảm số lượng liên kết nơ-ron và kiểm soát overfitting.
+ Qua các layers, kích thước output giảm dần nhưng độ sâu tăng dần qua từng kernel.
Cho tới thời điểm hiện tại, kiến trúc mạng AlexNet [22] vẫn còn đang được sử dụng phổ biến và rộng rãi. Mạng AlexNet có năm lớp chập và ba lớp kết nối đầy đủ. Cấu trúc trong AlexNet được chia thành hai khối. Nguyên nhân vì tác giả đã sử dụng hai GPU để huấn luyện dữ liệu song song. Mạng này được sử dụng trong phân loại đối tượng quy mơ lớn. Lớp đầu ra có một nghìn nơ-ron. Đó là bởi vì kiến trúc ban đầu được thiết kế để phân loại một nghìn nhãn. Thơng thường, những người áp dụng kiến trúc mạng nơ-ron AlexNet sẽ thay thế lớp cuối cùng, phụ thuộc vào mục đích của họ.
Tác giả của mạng này đã làm nhiều thử nghiệm để có thể ra được mơ hình này có kết quả tốt nhất. Vì vậy, hiệu śt của cấu trúc này rất ổn định và mạng này được sử dụng rộng rãi trong nhiều ứng dụng.
Kiến trúc tương đối giống với LeNet-5. Khác biệt ở điểm mạng này được thiết kế lớn hơn, rộng hơn lượng tham số: 60.000.000 (gấp 1000 lần LeNet-5 ) Kiến trúc như hình dưới đây:
Hình 2.15: Mơ hình Kiến trúc AlexNet
2.5. 3. Kiến trúc VGG-16
Được phát triển năm 2014, là một biến thể sâu hơn nhưng lại đơn giản hơn so với kiến trúc convolution (từ gốc: convolutional structure) thường thấy ở CNN Kiến trúc như hình dưới, có thể thấy số mặc dù các lớp cao hơn được đơn giản hóa so với LeNet, AlexNet … thu gọn về kích thước nhưng số lượng lại lớn hơn, sâu hơn.
Bởi vì một cách dễ dàng nhất để cải thiện độ chính xác của mạng đó là gia tăng kích thước của mạng thơng qua độ sâu của chúng. Từ kiến trúc mạng VGG-16 [23] ta có thể thấy những cải tiến so với AlexNet:
+ Kiến trúc VGG-16 sâu hơn, bao gồm 13 layers tích chập 2 chiều (thay vì 5 so với AlexNet) và 3 layers fully connected.
+ Lần đầu tiên trong VGG-16 chúng ta xuất hiện khái niệm về khối (block) là những kiến trúc giống nhau lặp lại. Kiến trúc khối đã khởi nguồn cho một dạng kiến trúc hình mẫu rất thường gặp ở các mạng CNN trở về sau.
+ VGG-16 cũng là kiến trúc đầu tiên thay đổi thứ tự của các block khi xếp nhiều layers CNN + max pooling thay vì xen kẽ một layer CNN + max pooling. Các layers CNN sâu hơn có thể trích xuất đặc trưng tốt hơn so với chỉ 1 layers CNN.
+ VGG-16 chỉ sử dụng các bộ lọc kích thước nhỏ 3x3 thay vì nhiều kích thước bộ lọc như AlexNet. Kích thước bộ lọc nhỏ sẽ giúp giảm số lượng tham số cho mơ hình mà mang lại hiệu quả tính toán hơn. VD: Nếu sử dụng 2 bộ lọc kích thước 3 x 3 trên một featurs map (là output của một layer CNN) có độ sâu là 3 thì ta sẽ cần n_filters x kernel_size x kernel_size x n_channels = 2 x 3 x 3 x 3 = 54 tham số. Nhưng nếu sử dụng 1 bộ lọc kích thước 5 x 5 sẽ cần 5 x 5 x 3 = 75 tham số. Vì 2 bộ lọc 3 x 3 vẫn mang lại hiệu quả hơn so với 1 bộ lọc 5 x 5.
Mạng VGG-16 sâu hơn so với AlexNet và số lượng tham số của nó lên tới 138 triệu tham số. Ngoài ra còn một phiên bản nữa của VGG-16 là VGG-19 tăng cường thêm 3 layers về độ sâu.
2.5.4. Kiến trúc Inception (GoogleLeNet)
Vào năm 2014, các nhà nghiên cứu của google đã đưa ra mạng Inception [23] tham dự cuộc thi ImageNet 2014.
Kiến trúc này đã giải quyết một câu hỏi lớn trong mạng CNN đó là sử dụng kernel_size với kích thước bao nhiêu thì hợp lý. Các kiến trúc mạng nơ-ron trước đó đều sử dụng các bộ lọc với đa dạng các kích thước 11x11, 5x5, 3x3 cho tới nhỏ nhất là 1x1. Mơ hình này khá đặc biệt, khơng hoàn toàn là các lớp layer nối tiếp gối đầu lên nhau như các mạng trên. Mạng gồm các đơn vị gọi là “inception cell” - thực hiện convolution 1 input với nhiều filter khác nhau rồi tổng hợp lại, theo nhiều nhánh. Việc cùng kết hợp đồng thời các kernel này vào cùng một module có thể mang lại hiệu quả đó chính là kiến trúc khối Inception.
Để tiết kiệm tính toán, các convolution kích thước 1x1 được sử dụng để giảm chiều sâu chanel của input. Với mỗi 1 cell, sử dụng các 1x1, 3x3, 5x5 filter để extract các feature từ input.
Dưới đây là dạng 1 cell.
Các nhà nghiên cứu đã thử thay các filter 3x3, 5x5 bằng các filter lớn hơn như 7x7, 11x11. Có hiệu quả hơn về việc trích xuất các đặc trưng, tuy nhiên đánh đổi lại là thời gian tính toán lâu hơn rất nhiều. Người ta cũng nhận ra rằng 1 filter 5x5 có thể thay bằng 2 filter 3x3 nối nhau, hiệu quả tương đương nhưng tiết kiệm được tính toán rất lớn.
Dưới đây là kiến trúc mạng Inception
Mạng được xây dựng từ việc ghép các inception cell lại với nhau.
Hình 2.18: Mơ hình Kiến trúc Inception
Inception có một đặc điểm khá hay là có thêm 2 output phụ. Người ta tin rằng hai output phụ này không quá ảnh hưởng tới chất lượng của mạng trong khi train những epoch đầu. Nó giúp cho việc train diễn ra nhanh hơn khi tối ưu những layer đầu dựa vào các output phụ (trong những epoch đầu). Có thể nghĩ đơn giản rằng trong những epoch đầu, các layer càng gần cuối càng ít được tối ưu ngay, do đó chưa cần thiết phải tối ưu ngay. Sau một thời gian tối ưu các layer đầu rồi mới tối ưu các layer tiếp theo dựa vào final input. Việc này cải thiện khả năng tính toán và tốc độ train khá nhiều.