Phân tích độ nhạy trong mạng lưới thần kinh sâu


14

Sau một câu hỏi đã được trả lời ( Trích xuất tầm quan trọng của trọng lượng từ mạng chuyển tiếp nguồn cấp một lớp ) Tôi đang tìm kiếm suy luận về mức độ phù hợp của các đầu vào trong mạng thần kinh.

Xem xét một mạng lưới sâu, trong đó việc tái cấu trúc tầm quan trọng đầu vào bằng cách đi ngược qua các lớp từ nút đầu ra quan tâm có thể khó khăn hoặc tốn thời gian, tôi đã tự hỏi liệu có một số khung lý thuyết trong việc thực hiện phân tích độ nhạy cho mạng thần kinh, về cơ bản thay đổi một chút đầu vào và xem xét cách nút ouptut quan tâm thay đổi.

Có một cách chính tắc để thực hiện một số loại phân tích độ nhạy trong các mạng thần kinh?

Tôi thực sự hoan nghênh một số mã Python để làm như vậy, nếu có

Câu trả lời:


12

Phân tích độ nhạy mà bạn đề xuất tương ứng với việc kiểm tra các đạo hàm riêng của đầu ra đối với đầu vào. Giả sử vectơ đầu ra được cho bởi y = f ( x ) , trong đó x R d là vectơ đầu vào và f là hàm mà mạng thực hiện. Các Jacobian của kết quả đầu ra wrt đầu vào là:yRmy=f(x)xRdf

Jij(x)=xjfi(x)

Jacobian đưa ra tỷ lệ thay đổi cục bộ của từng đầu ra wrt mỗi đầu vào, vì vậy nó cho chúng ta biết sẽ hành xử như thế nào để đáp ứng với những xáo trộn vô hạn. Nếu chúng ta bắt đầu với đầu vào x và thêm một giá trị vô cùng Δ đến j thứ đầu vào, chúng tôi hy vọng các i th sản lượng sẽ tăng Δ J i j ( x )fxΔjiΔJij(x) .

Nếu có cường độ lớn, điều đó có nghĩa là đầu ra i nhạy cảm với đầu vào j trong vùng lân cận của x . Bởi vìJij(x)ijxfnói chung là phi tuyến, khái niệm độ nhạy này phụ thuộc vào đầu vào; nó có thể lớn ở một số vùng và gần bằng 0 ở những vùng khác. Nếu bạn muốn một số loại thước đo tóm tắt về mức độ mạnh mẽ của đầu ra phụ thuộc vào đầu vào, bạn phải tổng hợp trên nhiều giá trị đầu vào. Ví dụ: bạn có thể lấy giá trị tuyệt đối của Jacobian, tính trung bình trên tất cả các đầu vào trong tập huấn luyện (đóng vai trò thay thế cho giá trị dự kiến ​​sẽ phân phối phân phối đầu vào cơ bản). Tất nhiên, loại tóm tắt này sẽ kết thúc việc loại bỏ thông tin, do đó có thể gây hiểu nhầm trong một số trường hợp.

Bạn có thể sử dụng quy tắc chuỗi để lấy một biểu thức cho Jacobian, tương tự như cách bạn lấy được độ dốc của hàm mất dữ liệu ghi lại các tham số để sử dụng với backprop. Bạn cũng có thể tính toán nó bằng cách sử dụng phân biệt tự động, sử dụng thư viện như Theano, TensorFlow, v.v. trong trường hợp Jacobian không tồn tại).

Một vài cảnh báo: Nếu các đầu vào có các đơn vị / thang đo khác nhau, độ nhạy cũng sẽ có các đơn vị / thang đo khác nhau và không thể so sánh trực tiếp. Tiêu chuẩn hóa / nhân rộng các đầu vào là một giải pháp có thể. Điều quan trọng cần lưu ý là loại phân tích này cho chúng ta biết về chính mô hình, nhưng không nhất thiết là phân phối cơ bản tạo ra dữ liệu. Ví dụ, nếu hai đầu vào tương quan, mô hình có thể kết thúc bằng cách sử dụng đầu tiên nhưng không phải đầu vào thứ hai. Trong trường hợp này, chúng tôi thấy rằng độ nhạy cao cho đầu vào đầu tiên và thấp cho đầu vào thứ hai, nhưng không nên kết luận rằng đầu vào đầu tiên vốn đã quan trọng hơn để dự đoán đầu ra nói chung.

Bài viết này nên được quan tâm.


câu trả lời tuyệt vời và bài viết tuyệt vời! nếu bất cứ ai quan tâm đến việc thực hiện phương pháp này, bạn có thể tìm thấy một triển khai tốt đẹp của phép tính jacobian tại đây: Medium.com/unit8-machine-learning-publication/ Lỗi
pcko1
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.