Глибоке навчання: як я можу знати, які змінні важливі?


20

Щодо мовлення нейронної мережі (y = вага * x + зміщення), як я можу знати, які змінні важливіші за інші?

У мене є нейронна мережа з 10 входами, 1 прихованим шаром з 20 вузлами та 1 вихідним шаром, який має 1 вузол. Я не впевнений, як знати, які вхідні змінні впливають більше, ніж інші змінні. Я думаю, що якщо вхід важливий, він матиме високо зважене з'єднання з першим шаром, але вага може бути позитивним чи негативним. Тож, що я можу зробити, це взяти абсолютне значення вагових даних і підсумувати їх. Більш важливі входи матимуть більші суми.

Так, наприклад, якщо довжина волосся є одним із входів, то вона повинна мати 1 з'єднання з кожним із вузлів у наступному шарі, тому 20 з'єднань (а отже, 20 ваг). Чи можу я просто взяти абсолютне значення кожної ваги і підсумувати їх разом?


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

1
Я просто хочу, щоб будь-яка інформація, яка б підказувала важливу зміну, і я думаю, що це може бути хорошим способом.
користувач1367204

Відповіді:


16

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

Ii=σij=1nhidden|wij|.

Тут - це стандартне відхилення го вводу, - значення го входу, - вага, що з'єднує й вхід до го прихованого вузла в першому шарі, а - кількість прихованих вузлів у першому шарі. i I i i w i j i j n прихованоσiiIiiwijijnhidden

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

Ii=σi|dydxi|

Тут - й вхід, - вихід, а значення очікування приймається відносно вектора входів . i y xxiiyx


Чи буде це працювати, якщо я використовую лише з'єднання між входами та першим прихованим шаром (а не використовую всі приховані шари)?
користувач1367204

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

Я згадав інший підхід і додав його до відповіді.
Сем Марінеллі

11

Дещо жорстока сила, але ефективне рішення:

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


Це, безумовно, можливість.
SmallChess

6
Однак є невдача: навіть якщо функція є надзвичайно важливою, якщо є інша особливість, дуже корельована з першою, жодна з них не буде вважатися важливою за вашими критеріями (недолік першого компенсується наявністю останнього, хоча менш інформативним, але більше "унікальних" функцій виявляться важливішими для цього)
Firebug

Це колись називається тестуванням на абляцію (точніше
мікроабляцію

7

105

Для дрібної мережі це дає приклад визначення важливості змінної.

Для справді глибокої мережі люди не надто багато говорять про змінні значення. Оскільки вхідні дані - це функції рівня сировини, такі як пікселі на зображенні.


Я відредагував свій коментар, щоб відобразити, що я мав на увазі. Я мав на увазі сказати 20 вузлів у першому шарі, а не 5 вузлів. Велика частка і подяка за відмінні неглибокі / глибокі сітки.
користувач1367204

9
@ hxd1011 не бути педантичним розсудливим, але глибокий означає більше шарів, а не тисячі прихованих одиниць :).
Рафаель

3

Найбільше, що я знайшов про це, детально перелічено на цьому веб-сайті, точніше ви можете подивитися на цьому . Якщо ви говорите лише про лінійні моделі, то вам доведеться нормалізувати ваги, щоб зробити їх інтерпретаційними, але навіть це може ввести в оману більше на цьому посиланні. Деякі люди намагалися скласти складні функції ваг для інтерпретації важливості вхідних даних (Гарсон, Гедеон та Мілн), але навіть це може ввести в оману, ви можете дізнатися більше про це, як тільки прокрутите перше згадане я посилання. Загалом, я б радив іти далі, інтерпретуючи результати із зерном солі.

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

PS: Вибачте, не можете розмістити більше посилань або коментарів тут не мають великої репутації.


1

Враховуючи, що у вас є:

  1. Завдання класифікації
  2. Навчена модель
  3. Нормалізовані функції (від 0 до 1)

Хтось пробував:

  1. Нульова упередженість
  2. Кожен раз передайте як функції один гарячий вектор, де всі функції дорівнюють нулю, крім однієї.
  3. Вивчіть вихід.

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

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


Я не думаю, що це дуже допоможе. Ви хотіли б оцінити, наскільки різниця цього входу вплине на результат (сам по собі або в поєднанні з іншими особливостями)
elachell
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.