DEEPLEARNING: HIỂU VỀ GoogeNET
GoogleNet là một mạng Neuron phức hợp sâu 22 lớp, là một biến thể của mạng khởi đầu, một mạng Neuron cấu trúc sâu được phát triển bới các nghiên cứu tại Google.
Kiến trúc GoogleNet được trình bày trong Thử thách nhận dạng hình ảnh quy mô lớn ImageNet 2014 (ILSVRC14) đã giải quyết nhiệm vụ thị giác máy tính như phân loại hình ảnh và phát hiện đối tượng.
Ngày nay, GoogleNet được sử dụng cho các nhiệm vụ thị giác máy tính khác như phát hiện và nhận dạng khuôn mặt , đào tạo đối thủ,v.v.
Các phát triển liên quan
Deep learning
Deep learning là một lĩnh vực học tập liên quan đến việc sử dụng mạng Neuron nhân tạo (ANN) để giải quyết các nhiệm vụ thị giác máy tính như phân loại hình ảnh, phát hiện đối tượng và ước lượng tư thế.
Các cấu hình khác nhau của ANN như mạng Neuron tích tụ (CNN), mạng Neuron lặp lại (RNN), mạng Neuron sâu (DNN) có thể trích xuất các tính năng từ các định nghĩa dữ liệu khác nhau như văn bản, hình ảnh, video, …
Từ “deep” trong Deep leaning đề cập nhiều hơn một kiến trúc mạng Neuron phân lớp.
LeNet và AlexNet
Là một người thự hành Deep leaning, LeNet-5 và AlexNet có thể là mạng Neuron mà bạn đã gặp trước đây.
Mạng Neuron tích tụ Lenet-5 được giới thiệu vào năm 1998 bởi Yann LeCun và các cộng sự. Trong bài báo “Gradient-based learning is applied to document recognition” (tạm dịch: học tập dựa trên Gradient được áp dụng để nhận dạng tài liệu).
LeNet đã trình bày việc sử dụng mạng Neuron tích tụ cho nhiệm vụ phân loại hình ảnh thị giác máy tính.
Vào năm 2012, AlexNet, một kuến trúc mạng Neuron tích tụ đã giới thiệu thành phần của các lớp tích chập xếp chồng lên nhau liên tiếp. những người tạo ra AlexNet đã đào tạo mạng bằng cách sử dụng các đơn vị xử lí đồ họa (GPU).
Sự ra đời của CNN, bộ dữ liệu lớn hơn, tài nguyên máy tính hiệu quả và kiến trúc CNN trực quan đã dẫn đến sự phát triển nhanh chóng của các giả pháp hiệu quả cho các tác vụ thị giác máy tính hằng ngày.
Các nhà nghiên cứu phát hiện ra rằng sự gia tăng các lớp đơn vị trong mạng dẫn đến hiệu suất đáng kể. Nhưng việc tăng các lớp để tạo ra nhiều mạng rộng lớn hơn phải trả một cái giá đắt. Các mạng lớn dễ bị trang bị quá mức và phải gặp các vấn đề về độ dốc phát nổ hoặc biến mất.
Kiến trúc GoogleNet đã giải quyết hấu hết các vấn đề mà các mạng lớn gặp phải, chủ yếu thông qua việc sử dụng Module Inception.
Mô-đun khởi động là một kiến trúc mạng Neuron thúc đẩy phát hiện tính năng ở các quy mô khác nhau thông qua các bộ lọc phức hợp và các bộ lọc khác nhau và giảm chi phí tính toán của việc đào tạo một mạng mở rộng thông qua việc giảm kích thước.
GoogLeNet
Kiến trúc GoogLeNet bao gồm 22 lớp (27 lớp bao gồm cả các lớp gộp) và một phần của các lớp này là tổng cộng 9 mô-đun khởi động (hình 4).
Bảng dưới đây mô tả kiến trúc GoogLeNet thông thường. Hãy xem nhanh bảng trước khi đọc thêm về các đặc điểm và tính năng của bảng.
Đặc điểm và tính năng của bảng cấu hình GoogLeNet (hình 1)
- Lớp đầu vào của kiến trúc GoogLeNet lấy hình ảnh có kích thước 224 x 224.
- Loại: Điều này đề cập đến tên của lớp hiện tại của thành phần trong kiến trúc
- Kích thước bản vá: Đề cập đến kích thước của cửa sổ quét được sử dụng trên các lớp chuyển đổi và tổng hợp. Cửa sổ quét rác có chiều cao và chiều rộng bằng nhau.
- Stride: Xác định lượng dịch chuyển mà bộ lọc / cửa sổ trượt tiếp nhận hình ảnh đầu vào.
- Kích thước đầu ra: Kích thước kết quả đầu ra (chiều cao, chiều rộng, số lượng bản đồ đặc trưng) của thành phần kiến trúc hiện tại sau khi đầu vào được chuyển qua lớp.
- Độ sâu: Tham khảo số cấp / lớp trong một thành phần kiến trúc.
- # 1×1 # 3×3 # 5×5: Đề cập đến các bộ lọc chập khác nhau được sử dụng trong mô-đun khởi động.
# 3X3 giảm # giảm 5×5: Đề cập đến số lượng bộ lọc 1×1 được sử dụng trước các chuyển đổi.
Pool Proj: Đây là số lượng bộ lọc 1×1 được sử dụng sau khi gộp chung trong một mô-đun khởi động.
Tham số : Đề cập đến số lượng trọng số trong thành phần kiến trúc hiện tại.
Hoạt động : Đề cập đến số lượng các phép toán được thực hiện trong thành phần.
Khi mới thành lập, kiến trúc GoogLeNet được thiết kế để trở thành một cường quốc với hiệu quả tính toán cao hơn so với một số người tiền nhiệm của nó hoặc các mạng tương tự được tạo ra vào thời điểm đó.
Một phương pháp mà GoogLeNet đạt được hiệu quả là thông qua việc giảm hình ảnh đầu vào, đồng thời giữ lại thông tin không gian quan trọng.
Lớp chuyển đổi đầu tiên trong hình 2 sử dụng kích thước bộ lọc (bản vá) là 7×7, tương đối lớn so với các kích thước bản vá khác trong mạng. Mục đích chính của lớp này là giảm ngay hình ảnh đầu vào, nhưng không làm mất thông tin không gian bằng cách sử dụng kích thước bộ lọc lớn.
Kích thước hình ảnh đầu vào (chiều cao và chiều rộng) được giảm theo hệ số bốn ở lớp chuyển đổi thứ hai và hệ số tám trước khi đến mô-đun khởi động đầu tiên, nhưng số lượng bản đồ đối tượng lớn hơn được tạo.
Lớp chuyển đổi thứ hai có độ sâu là hai và tận dụng khối chuyển đổi 1×1, do tác động của việc giảm kích thước. Giảm kích thước thông qua khối chuyển đổi 1×1 cho phép giảm tải tính toán bằng cách giảm số lượng hoạt động của lớp
Kiến trúc GoogLeNet bao gồm chín mô-đun khởi động như được mô tả trong hình 3.
Đáng chú ý, có hai lớp tổng hợp tối đa giữa một số mô-đun khởi động.
Mục đích của các lớp tổng hợp tối đa này là để giảm mẫu đầu vào khi nó được chuyển tiếp qua mạng. Điều này đạt được thông qua việc giảm chiều cao và chiều rộng của dữ liệu đầu vào.
Giảm kích thước đầu vào giữa mô-đun khởi động là một phương pháp hiệu quả khác để giảm tải tính toán của mạng.
Lớp tổng hợp trung bình có giá trị trung bình trên tất cả các bản đồ đối tượng được tạo bởi mô-đun khởi động cuối cùng và giảm chiều cao và chiều rộng đầu vào xuống 1×1.
Một lớp bỏ qua (40%) được sử dụng ngay trước lớp tuyến tính. Lớp bỏ qua là một kỹ thuật chính quy hóa được sử dụng trong quá trình đào tạo để ngăn chặn việc trang bị quá mức của mạng.
Lớp tuyến tính bao gồm 1000 đơn vị ẩn, tương ứng với 1000 lớp có trong tập dữ liệu Imagenet.
Lớp cuối cùng là lớp softmax; lớp này sử dụng hàm softmax, một hàm kích hoạt được sử dụng để lấy phân phối xác suất của một bộ số trong một vectơ đầu vào.
Đầu ra của một hàm kích hoạt softmax là một vectơ trong đó tập giá trị của nó đại diện cho xác suất xuất hiện một lớp hoặc sự kiện. Tất cả các giá trị trong vectơ đều cộng lại bằng 1.
Bộ phân loại phụ trợ
Trước khi kết thúc việc khám phá kiến trúc GoogLeNet, có một thành phần nữa đã được những người tạo ra mạng triển khai để điều chỉnh và ngăn chặn việc trang bị quá mức. Thành phần bổ sung này được gọi là Bộ phân loại bổ trợ .
Một vấn đề chính của một mạng lưới rộng lớn là chúng bị giảm độ dốc gradient biến mất. Biến đổi gradient giảm xuống xảy ra khi cập nhật các trọng số phát sinh từ việc nhân giống ngược là không đáng kể trong các lớp dưới cùng do giá trị gradient tương đối nhỏ. Đơn giản chỉ cần giữ, mạng ngừng học trong quá trình đào tạo.
Các bộ phân loại bổ trợ được thêm vào các lớp trung gian của kiến trúc, cụ thể là lớp thứ ba (Inception 4 [a]) và thứ sáu (Inception4 [d]).
Bộ phân loại bổ trợ chỉ được sử dụng trong quá trình đào tạo và bị loại bỏ trong quá trình suy luận. Mục đích của bộ phân loại phụ trợ là thực hiện phân loại dựa trên các đầu vào trong phần giữa của mạng và cộng tổn thất được tính toán trong quá trình huấn luyện trở lại tổng tổn thất của mạng.
Tổn thất của các bộ phân loại phụ trợ được tính theo trọng số, nghĩa là tổn thất tính toán được nhân với 0,3.
Dưới đây là hình ảnh mô tả cấu trúc của một bộ phân loại phụ trợ.
Một bộ phân loại phụ trợ bao gồm lớp nhóm trung bình, lớp chuyển đổi, hai lớp được kết nối đầy đủ, lớp bỏ qua (70%) và cuối cùng là lớp tuyến tính có chức năng kích hoạt softmax.
Mỗi bộ phân loại phụ trợ được bao gồm nhận làm đầu vào cho các kích hoạt từ các mô-đun khởi động trước đó.
Hình ảnh bên dưới minh họa kiến trúc GoogLeNet hoàn chỉnh, với tất cả các chuông và còi của nó.
Phần kết luận
Kiến trúc GoogLeNet đã thực hiện tốt các nhiệm vụ phân loại trong thử thách phân loại ILSVRC 2014, trong đó Kiến trúc đứng đầu với 5 lỗi hàng đầu là 6,67% mà không cần bất kỳ đào tạo nào về dữ liệu bên ngoài.
Việc hiểu kiến trúc GoogLeNet là rất quan trọng đối với bất kỳ người thực hành deep learning nào đang tìm cách hiểu sự phát triển của mạng chuyển đổi sâu trong lĩnh vực deep learning. Có thể thu được kiến thức rộng lớn bằng cách xem xét lại các nỗ lực nghiên cứu được thực hiện trong vài năm trở lại đây.
GoogLeNet hiện là một kiến trúc chủ yếu trong hầu hết các thư viện ML phổ biến như TensorFlow, Keras, PyTorch, v.v. Và với việc sử dụng học chuyển giao, bạn có thể sử dụng mạng GoogLeNet được đào tạo trên imagenet mà không cần tự triển khai hoặc đào tạo mạng.
Nguồn tham khỏa: Deep learning: GoogleNet Explained.