Tôi đã loại bỏ 74% số nơ-ron từ một mạng nơ-ron. Điều này đã làm giảm độ chính xác chỉ 0,50%. Dưới đây là phân tích (có mã):
Một mạng nơ-ron đã được đào tạo luôn có những nơ-ron không đóng góp nhiều vào hiệu suất. Nhưng chúng vẫn tiêu tốn bộ nhớ. Những nơ-ron này có thể được loại bỏ mà không làm giảm đáng kể độ chính xác. Hãy xem cách xác định chúng!
Dưới đây là các bước: Bước 1) Huấn luyện mạng nơ-ron như thường lệ. Bước 2) Truyền tập xác thực qua mạng đã được huấn luyện, và cho mỗi nơ-ron trong các lớp ẩn, tính toán: - Độ kích hoạt trung bình - Phương sai của các độ kích hoạt (nếu độ kích hoạt có thể là -ve) Kiểm tra điều này👇
Bước 3) Cắt tỉa các nơ-ron có giá trị trung bình và phương sai kích hoạt gần bằng không vì chúng có ít tác động đến đầu ra của mô hình. Lý tưởng nhất, hãy vẽ biểu đồ hiệu suất qua nhiều ngưỡng cắt tỉa để chọn mô hình phù hợp với sự đánh đổi giữa kích thước và độ chính xác của bạn. Kiểm tra điều này 👇
Hãy xem mã code. Chúng ta bắt đầu bằng cách định nghĩa một mạng nơ-ron đơn giản và huấn luyện nó. Vì chúng ta sẽ tính toán các kích hoạt ở mức nơ-ron sau này để cắt tỉa, nên chúng ta trả về tất cả các kích hoạt trung gian trong quá trình truyền tiến. Kiểm tra cái này👇
Tiếp theo, chúng ta định nghĩa hai danh sách với ba phần tử: - Một danh sách sẽ lưu trữ giá trị trung bình của các kích hoạt - Một danh sách khác sẽ lưu trữ độ lệch chuẩn của các kích hoạt Chúng ta truyền tập xác thực qua mô hình của mình để tính toán các thống kê này cho mỗi lớp ẩn. Kiểm tra điều này 👇
Tại thời điểm này, hãy tạo một biểu đồ phân phối của các thống kê cấp nơ-ron mà chúng ta đã tạo ở trên. Như được mô tả bên dưới, hầu hết các nơ-ron có độ kích hoạt trung bình và độ lệch chuẩn của chúng đều phân bố nặng nề xung quanh các giá trị gần bằng không. Hãy thử cắt tỉa chúng tiếp theo.
Để cắt tỉa, chúng tôi lặp qua một danh sách các ngưỡng và: - Tạo một mạng mới và chuyển trọng số vượt qua ngưỡng. - Đánh giá mạng mới và tính toán tổng số tham số. - Thêm kết quả vào một danh sách. Kiểm tra điều này 👇
Bảng này so sánh độ chính xác và sự giảm kích thước của mô hình đã được cắt tỉa qua một số ngưỡng so với mô hình gốc. Tại mean=0.1 và std-dev=0.4: - Độ chính xác của mô hình giảm 0.08%. - Kích thước của mô hình giảm 62%. Đó là một sự giảm lớn. Kiểm tra điều này 👇
Đây là một kết quả thú vị khác. Tại mean=0.5 và std-dev=1: - Độ chính xác của mô hình giảm 0.5%. - Kích thước của mô hình giảm 74%. Vì vậy, về cơ bản, chúng ta có hiệu suất gần giống nhau với 1/4 số tham số. Kiểm tra điều này 👇
Tất nhiên, có một sự đánh đổi giữa độ chính xác và kích thước. Khi chúng ta giảm kích thước, độ chính xác của nó giảm (kiểm tra video). Nhưng trong hầu hết các trường hợp, độ chính xác không phải là chỉ số duy nhất mà chúng ta tối ưu hóa. Thay vào đó, một số chỉ số hoạt động như hiệu suất, bộ nhớ, v.v., là những yếu tố chính.
40,99K