Аналіз чутливості в глибоких нейронних мережах


14

Після відповіді на питання ( витягування вагової важливості з одношарової мережі передачі вперед ) я шукаю висновок про релевантність входів у нейронні мережі.

Враховуючи глибоку сітку, де реконструкція важливості входу шляхом просування назад через шари від вивідного вузла, що цікавить, може бути важким або забираючи багато часу, мені було цікаво, чи існував якийсь теоретичний базис для аналізу чутливості для нейронної мережі, в основному трохи змінивши введіть і розгляньте, як змінюється цікавий вузол.

Чи існує канонічний спосіб проведення якогось аналізу чутливості в нейронних мережах?

Я дуже вітаю якийсь код Python для цього, якщо такий є

Відповіді:


12

Аналіз чутливості, який ви пропонуєте, відповідає вивченню часткових похідних виходів стосовно входів. Скажімо, вихідний вектор задається , де - вхідний вектор, а - функція, яку реалізує мережа. Якобіан з виходів WRT входів: y = f ( x ) x R d fyRmy=f(x)xRdf

Jij(x)=xjfi(x)

Якобіан дає локальну швидкість зміни кожного вихідного сигналу на кожен вхід, тому він говорить нам, як буде поводитись у відповідь на нескінченно малі збурення. Якщо ми почнемо з введення і додамо нескінченно мале значення до го вводу, ми очікуємо, що й вихід збільшиться на .x Δ j i Δ J i j ( x )fxΔjiΔJij(x)

Якщо має велику величину, це означає, що вихід є чутливим до входу поблизу від . Оскільки , як правило, нелінійне, це поняття чутливості залежить від входу; в деяких регіонах він може бути великим і в інших майже нульовим. Якщо ви хочете отримати якийсь підсумковий вимір того, наскільки сильно залежать результати від входів, вам доведеться агрегувати кілька вхідних значень. Наприклад, ви можете взяти абсолютне значення якобіян, усереднене за всіма входами в навчальному наборі (що виступає сурогатом для очікуваного значення wrt основного розподілу входів). Звичайно, такий підсумок призведе до відкидання інформації, тому може ввести в оману за певних обставин.i j x fJij(x)ijxf

Ви можете використовувати правило ланцюга, щоб отримати вираз для якобіан, аналогічно тому, як ви отримаєте градієнт функції втрати wrt параметрів для використання з backprop. Ви також можете обчислити його, використовуючи автоматичну диференціацію, використовуючи бібліотеку на кшталт Theano, TensorFlow і т. Д. Існує не так багато причин для здійснення кінцевої диференціації (тобто насправді імітувати збурення і вимірювати зміну у виході), якщо тільки функція, яку реалізує ваша мережа, не відрізняється ( в такому випадку якобійців не існує).

Пара застережень: Якщо входи мають різні одиниці / масштаби, ніж один одного, чутливість також матиме різні одиниці / масштаби, і їх неможливо порівняти безпосередньо. Стандартизація / масштабування входів - одне можливе рішення. Також важливо пам’ятати, що цей тип аналізу говорить нам про саму модель, але не обов’язково про базовий розподіл, який генерував дані. Наприклад, якщо два входи співвідносяться, модель може закінчитися використанням першого, але не другого. У цьому випадку ми виявимо, що чутливість висока для першого входу і низька для другого, але не слід робити висновок, що перший вхід по суті важливіший для прогнозування виходу в цілому.

Ця стаття повинна зацікавити.


чудова відповідь і чудова стаття! якщо хтось зацікавлений у застосуванні цього методу, ви можете знайти приємну реалізацію обчислення якобіан тут: medium.com/unit8-machine-learning-publication/…
pcko1
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.