Một số kiến trúc CNN thông dụng

Một phần của tài liệu (LUẬN văn THẠC sĩ) phân lớp đồng phục sinh viên dùng mô hình học sâu (Trang 43 - 51)

Như đã bàn luận ở phần trên, việc xây dựng kiến trúc của mô hình CNN hoàn toàn tùy thuộc vào ý đồ của người thiết kế. Ở phần này, luận văn chỉ giới thiệu một số kiến trúc mà tác giả nhận thấy nó được sử dụng, nhắc đến trong nhiều công trình nghiên cứu khác, chứ không khẳng định mô hình nào là thông dụng nhất.

LeNet-5

LeNet [12] là một trong những kiến trúc CNN ra đời đầu tiên và nổi tiếng nhất được Yann LeCin phát triển từ đầu năm 1998. Cấu trúc của LeNet có đầy đủ các thành phần của một mạng CNN với các tầng Convolution, Pooling và tầng FC để giải quyết bài toán nhận diện chữ ký số với bộ dữ liệu MINIST. Đến nay LeNet đã trải qua nhiều phiên bản với độ lỗi (error rate) được cải tiến đáng kể LeNet-1 (1,7%), LeNet-4 (1,1%), LeNet-5 (0,95%), Boosted LeNet-4 (0,7%). Độ lỗi của mô hình LeNet giảm dần do quá trình học của nó ngày càng sâu hơn, với nhiều tầng convolution, pooling và FC hơn.

Hình 2.17. Mô hình LeNet-1

Hình 2.18. Mô hình LeNet-4

Thông số của mô hình LeNet-5:

- Kiến trúc tổng quát : Đầu vào - CONV - POOL - CONV - POOL - FC - FC - Softmax - Đầu ra.

- Đầu vào : ảnh trắng đen 32x32 pixel

- CONV 1 : 6 bộ lọc 5x5, stride = 1, tạo thành 6 biểu đồ đặc trưng 28x28. - POOL 1 : average pooling với bộ lọc 2x2, stride =2, tạo thành 6 biểu đồ

đặc trưng 14x14.

- CONV 2 : 16 bộ lọc 5x5, stride = 1, tạo thành 16 biểu đồ đặc trưng 10x10.

- POOL 2 : average pooling với bộ lọc 2x2, stride =2, tạo thành 16 biểu đồ đặc trưng 5x5.

- FC 1 : gồm 120 nơ-ron 1x1 liên kết với 400 nơ-ron (5x5x16) từ tầng trước.

- FC 2 : gồm 84 nơ-ron 1x1 liên kết với 120 nơ-ron từ tầng trước.

- Đầu ra : kích hoạt softmax, chuẩn hóa 84 nơ-ron thành phân bổ xác suất cho 10 phân lớp.

VGG-16

VGG-16 hay VGGNet [13] là mô hình của nhóm tác giả Karen Simonyan và Andrew Zisserman đề xuất trong cuộc thi ILSVRC năm 2014 của ImageNet (một cuộc thi về nhận dạng hình ảnh với quy mô lớn). Mô hình VGGNet có độ lỗi thấp nhất trong nhiệm vụ phân lớp hình ảnh trong cuộc thi.

Hình 2.20. Mô hình VGG-16

VGG-16 ra đời năm 2014 là một biến tấu độc đáo trong các mô hình mạng CNN. Nếu một số mô hình trước đó như LeNet hay AlexNet đều xây dựng theo kiểu lặp lại các cặp xử lý CONV – POOLING, thì ngoài phương thức này, VGG-16 sử dụng thêm các chuỗi Convolution liên tiếp CONV – CONV – CONV ở phân đoạn giữa và cuối của mô hình. Việc này nếu suy xét có thể nói nó làm mất khá nhiều thời gian trong khâu tính toán của mô hình nhưng kết quả đạt được của nó thì đáng để cân nhắc. Các đặc trưng sau nhiều tầng tích chập liên tục vẫn sẽ được giữ lại và khái quát hơn so với việc ta thực hiện pooling mỗi lần tích chập. Hơn nữa, ở giai đoạn hiện tại, phần cứng của máy tính đã phát triển mạnh hơn với sự ra đời của bộ xử lý đồ họa GPU khiến cho việc xử lý khối lượng phép tính phức tạp đã không còn là một vấn đề quá khó khăn.

Mô hình được gọi là VGG-16 với con số 16 tương ứng với 13 tầng CONV và 3 tầng fully connected. Trong đó 13 tầng CONV được sắp theo thứ tự thực hiện 2 lần 2 tầng CONV – CONV và 3 lần 3 tầng CONV – CONV – CONV, sau mỗi lần thực hiện sẽ thực hiện một lần max - pooling. VGG-16 có một phiên bản học sâu hơn nữa là VGG-19 với một chút bổ sung là thêm 1 lần 3 tầng CONV – CONV – CONV.

Hình 2.21. Mô tả quá trình xử lý của mô hình VGG-16

Như đã nêu về ý đồ giữ lại thật nhiều đặc trưng của ảnh nhất, mô hình VGG- 16 đã sử dụng những bộ lọc nhỏ nhất có thể. Mỗi tầng CONV sử dụng bộ lọc 3x3 với stride = 1. Tầng Pooling sử dụng phương pháp max-pooling với bộ lọc 2x2 với stride = 2. Trong 3 tầng FC, thì 2 tầng đầu tiên đều có 4096 nơ-ron liên kết với nhau, đến tầng cuối cùng để đáp ứng yêu cầu phân lớp 1000 ảnh của ILSVRC 2014 thì nó mới sử dụng hàm softmax để đưa về 1000 nơ-ron.

Mô hình VGG đã chiến thắng một số đối thủ mạnh như AlexNet và GoogLeNet. Nó đã được chứng minh rằng độ sâu của mô hình học có ảnh hưởng cao đến độ chính xác của bài toán phân loại và bằng cách sử dụng kiến trúc CNN thông thường với độ sâu tăng đáng kể vẫn có thể đạt được hiệu suất tốt trên bộ dữ liệu lớn và đầy thách thức như ImageNet.

ResNet

Tiếp tục với cuộc thi ILSVRC năm 2015 của ImageNet [3], một mô hình mới đã được đề xuất với độ lỗi chỉ còn 3,57%. Đó chính là mô hình ResNet [14] do các nhà nghiên cứu của Microsoft phát triển. ResNet là viết tắt của Residual Network, một mô hình dựa trên cấu tạo cơ bản của CNN, ý tưởng của nó có một điểm giống với VGG-16 là tạo thành nhiều tầng để cho việc học được sâu hơn.

Một số thuật toán deep learning (với nhiều tầng và số lượng tham số lớn) thường gặp phải vấn đề vanishing gradient hoặc exploding gradient [14]. Ta sẽ đi nhanh về 2 khái niệm này, gradient trong toán học có nghĩa là đạo hàm. Trong CNN, ta biết việc huấn luyện của mô hình chính là việc cập nhật các trọng số sao cho các đặc trưng được trích xuất của ảnh phù hợp nhất với phân lớp của ảnh. Việc tìm giá trị lớn nhất hay nhỏ nhất chính là tính đạo hàm của hàm số đó. Trên thực tế

khi ta càng học sâu hơn, đi xuống các tầng thấp hơn thì giá trị của đạo hàm sẽ nhỏ dần tới một mức độ nhất định thì nó dường như không còn thay đổi trọng số của đặc trưng nữa, khiến chúng không hội tụ thì hiện tượng này gọi là vanishing gradient. Trong một số trường hợp khác thì ngược lại, đạo hàm làm các giá trị trọng số bị thay đổi quá lớn làm cho nó phân kỳ (hay phân rã) thì hiện tượng này gọi là exploding gradient. Vấn đề khó khăn của deep learning ta phải tăng số tầng để mô hình học sâu hơn và cho kết quả tối ưu hơn nhưng khi tăng số tầng quá lớn thì độ chính xác của mô hình lại bắt đầu bão hòa, thậm chí có nguy cơ bị giảm, tức là mô hình không học được gì thêm nữa.

Đóng góp lớn nhất của ResNet là tìm ra giải pháp cho vấn đề này. Residual có thể dịch là phần thừa hay phần còn lại. Nhưng ở đây tác giả hướng tới tính kế thừa từ các phần trước đó. Ý tưởng chính của mô hình là tạo thành các residual block nhằm tạo mối liên kết đến với các tầng đã thực hiện trước đó. Giống như việc ta học tập lại kinh nghiệm do cha ông để lại.

Hình 2.22. Mô tả một residual block

Trong hình trên, với x là đặc trưng đã được học, qua một số tầng convolution và pooling ta thu được các đặc trưng F(x). Ta sẽ gộp cả x và F(x) lại và đưa vào tầng sau để học tiếp, việc này sẽ khiến mô hình dễ học hơn và có sự thay đổi rõ rệt thay vì không học thêm được gì thêm khi hàm F(x) đã tiến đến bão hòa.

Với cách làm này ResNet có 2 phiên bản là ResNet 34 và ResNet 50. Cơ bản 2 phiên bản này chỉ khác nhau về cấu trúc của một residual block. ResNet 34 sử dụng bộ lọc 3x3 ở 2 tầng CONV và giữ nguyên kích thước của ảnh. Trong khi ResNet 50 lại có cấu tạo như nút thắt cổ chai, nó dùng các bộ lọc 1x1 để giảm kích thước ảnh ở tầng đầu tiên và khôi phục kích thước ở tầng cuối kèm theo một bộ lọc 3x3 để xử lý

ở tầng giữa. Việc này giúp làm giảm số lượng phép tính khi chỉ phải áp dụng một bộ lọc 3x3 với một kích thước ảnh đã giảm đi một nữa.

Hình 2.23. Cấu trúc của ResNet 34 và ResNet 50

Hình 2.24. Mô tả qui trình tính toán của ResNet 50

Trong hình trên, ta có thể thấy ResNet là một mô hình học sâu với 4 khối convolution. Mỗi khối thể hiện một loạt các phép tích chập trên cùng một kích thước ảnh và áp dụng cấu trúc 3 tầng của ResNet 50. Biểu đồ đặc trưng của ảnh được giảm tịnh tiến bằng các lần tích chập với sự gia tăng độ sâu của quá trình học ở mỗi khối. Các đường nét liền thể hiện tính kế thừa từ những đặc trưng đã học trước của một tầng. Các đường nét đứt thể hiện tính kế thừa những đặc trưng đã học từ một khối với số chiều nhỏ hơn trước đó. Về sau người ta phát triển một mô hình khác là ResNeXt cũng bằng việc thay đổi lại cấu trúc residual block.

DenseNet

DenseNet [15] (Dense connected convolutional network) được công bố năm 2017. Ý tưởng đằng sau DenseNet đơn giản là việc tham chiếu các biểu đồ đặc trưng từ tầng trước trong mạng có thể rất hữu ích. Do đó, biểu đồ đặc trưng của mỗi

tầng được nối với đầu vào của mỗi tầng liên tiếp trong một khối dense. Điều này cho phép các tầng sau trong mạng tận dụng trực tiếp các đặc trưng từ các tầng trước đó, các đặc trưng trong mạng được tái sử dụng nhiều lần và hiệu quả hơn.

Hình 2.25. Biểu diễn mô hình DenseNet

Cái tên dense tức là dày đặc ban đầu có thể khiến ta lo lắng về độ phức tạp, số lượng phép tính toán khổng lồ phải thực hiện. Tuy nhiên, do mạng có khả năng sử dụng trực tiếp bất kỳ biểu đồ tính năng nào trước đó, các tác giả nhận thấy rằng họ có thể huấn luyện sâu hơn với số chiều của đầu ra rất nhỏ (ví dụ chỉ với 12 bộ lọc mỗi tầng), giúp giảm đáng kể tổng số tham số cần thiết. Các tác giả gọi số lượng bộ lọc được sử dụng trong mỗi tầng tích chập là tốc độ tăng trưởng (growth rate), vì mỗi tầng liên tiếp sẽ có nhiều lớp (đó là kết quả của việc tích lũy và nối tất cả các lớp trước của tầng trước với đầu vào của tầng tiếp theo). Với một mô hình CNN truyền thống nếu chúng ta có N tầng thì sẽ có N liên kết được tạo ra, còn với DenseNet sẽ tạo ta tới N * (N+1) / 2 liên kết.

Hình 2.26. Số lượng liên kết giữa các tầng trong DenseNet

Hãy tưởng tượng ban đầu ta có một ảnh (28,28,3). Ta khởi tạo biểu đồ đặc trưng bằng phép tích chập tạo ra một lớp (28,28,24). Sau mỗi lớp tiếp theo (trong dense block) nó sẽ tạo thêm K = 12 đặc trưng. Khi đó đầu ra tiếp theo sẽ là (28,28,24 +12), (28,28,24 +12+12). Ở mỗi khối dense sẽ có normalization, nonlinearity và dropout. Để giảm kích thước và độ sâu của biểu đồ đặc trưng thì các

tầng chuyển đổi (transition layer) sẽ được đặt giữa các khối dense, nó gồm CONV có bộ lọc 1x1, POOL dùng phép average pooling (2x2) với stride = 2, đầu ra giảm thành (14,14,48).

Ưu điểm của DenseNet so với ResNet là nó cho cùng kết quả độ chính xác khi thử nghiệm trên bộ dữ liệu của ImageNet với chỉ một nửa số phép tính toán. Việc sử dụng hiệu quả các biểu đồ đặc trưng cũng giúp DenseNet giải quyết hiệu quả vấn đề overfitting và vashing gradient.

Một phần của tài liệu (LUẬN văn THẠC sĩ) phân lớp đồng phục sinh viên dùng mô hình học sâu (Trang 43 - 51)

Tải bản đầy đủ (PDF)

(88 trang)