Khái niệm này là gì và làm thế nào để tính toán các giá trị của nút cổ chai? Làm thế nào để những giá trị này giúp phân loại hình ảnh? Hãy giải thích bằng những từ đơn giản.
Khái niệm này là gì và làm thế nào để tính toán các giá trị của nút cổ chai? Làm thế nào để những giá trị này giúp phân loại hình ảnh? Hãy giải thích bằng những từ đơn giản.
Câu trả lời:
Nút thắt trong mạng lưới thần kinh chỉ là một lớp có ít nơ-ron hơn lớp bên dưới hoặc bên trên nó. Có một lớp như vậy khuyến khích mạng nén các biểu diễn tính năng để phù hợp nhất với không gian có sẵn, để có được sự mất mát tốt nhất trong quá trình đào tạo.
Trong CNN (chẳng hạn như mạng Inception của Google), các lớp nút cổ chai được thêm vào để giảm số lượng bản đồ tính năng (còn gọi là "kênh") trong mạng, điều này có xu hướng tăng lên trong mỗi lớp. Điều này đạt được bằng cách sử dụng các kết quả 1x1 với ít kênh đầu ra hơn các kênh đầu vào.
Bạn thường không tính trực tiếp trọng số cho các lớp cổ chai, quy trình đào tạo xử lý điều đó, như đối với tất cả các trọng số khác. Chọn một kích thước tốt cho lớp nút cổ chai là điều bạn phải đoán, sau đó thử nghiệm, để tìm các kiến trúc mạng hoạt động tốt. Mục tiêu ở đây thường là tìm một mạng tổng quát tốt cho các hình ảnh mới và các lớp nút cổ chai giúp bằng cách giảm số lượng tham số trong mạng trong khi vẫn cho phép nó sâu và thể hiện nhiều bản đồ đặc trưng.
Hãy tưởng tượng, bạn muốn tính lại lớp cuối cùng của một mô hình được đào tạo trước:
Input->[Freezed-Layers]->[Last-Layer-To-Re-Compute]->Output
Để huấn luyện [Tính toán lại lớp cuối cùng] , bạn cần đánh giá kết quả đầu ra của [Lớp đóng băng] nhiều lần cho một dữ liệu đầu vào nhất định. Để tiết kiệm thời gian, bạn chỉ có thể tính toán các thông số này một lần .
Input#1->[Freezed-Layers]->Bottleneck-Features-Of-Input#1
Sau đó, bạn lưu trữ tất cả các tính năng của nút cổ chai # i và trực tiếp sử dụng chúng để huấn luyện [Lớp cuối cùng để tính toán lại].
Giải thích từ chức năng "cache_bottlenecks" của ví dụ "image_retraining":
Bởi vì chúng tôi có thể đọc cùng một hình ảnh nhiều lần (nếu không có biến dạng được áp dụng trong quá trình đào tạo), nó có thể tăng tốc mọi thứ lên rất nhiều nếu chúng tôi tính toán các giá trị lớp cổ chai một lần cho mỗi hình ảnh trong quá trình tiền xử lý, và sau đó chỉ cần đọc các giá trị được lưu trong bộ nhớ cache đó nhiều lần trong quá trình đào tạo.
Nút cổ chai kéo dài là giai đoạn khởi tố cuối cùng trước khi bắt đầu đào tạo thực tế với nhận dạng dữ liệu. Đó là giai đoạn mà cấu trúc dữ liệu được hình thành từ mỗi hình ảnh đào tạo mà giai đoạn đào tạo cuối cùng có thể diễn ra và phân biệt hình ảnh với mọi hình ảnh khác được sử dụng trong tài liệu đào tạo. Hơi giống dấu vân tay của hình ảnh.
Nó liên quan đến lệnh đào tạo lại và như tên cho thấy, đây là người tiêu dùng thời gian chính của việc thực hiện lệnh. Số lượng tài liệu đào tạo có thể phải được thỏa hiệp nếu nút cổ chai này dường như quá tốn thời gian.
Vì nó là một lệnh dòng lệnh, tôi không biết thuật toán chính xác. Thuật toán là mã công khai trong Github nhưng được cho là rất phức tạp (thời gian thực hiện rất dài theo định nghĩa) mà tôi tin rằng tôi không thể chỉ viết nó ra trong loại câu trả lời này.