С точки зрения языка нейронной сети (у = вес * х + смещение), как я узнаю, какие переменные являются более важными, чем другие?
У меня есть нейронная сеть с 10 входами, 1 скрытый слой с 20 узлами и 1 выходной слой с 1 узлом. Я не уверен, как узнать, какие входные переменные являются более влиятельными, чем другие переменные. Я думаю, что, если вход важен, он будет иметь высоко взвешенную связь с первым слоем, но вес может быть положительным или отрицательным. Итак, что я могу сделать, это взять абсолютное значение весов ввода и суммировать их. Более важные входы будут иметь более высокие суммы.
Так, например, если длина волос является одним из входных данных, то он должен иметь 1 соединение с каждым из узлов в следующем слое, то есть 20 соединений (и, следовательно, 20 весов). Могу ли я просто взять абсолютное значение каждого веса и сложить их вместе?
источник
Ответы:
То, что вы описываете , действительно является одним из стандартных способов количественной оценки важности входных данных нейронной сети. Обратите внимание, что для того, чтобы это работало, входные переменные должны быть каким-то образом нормализованы. В противном случае веса, соответствующие входным переменным, которые, как правило, имеют большие значения, будут пропорционально меньше. Существуют различные схемы нормализации, такие как, например, вычитание среднего значения переменной и деление на ее стандартное отклонение. Если переменные не были нормализованы в первую очередь, вы можете выполнить коррекцию самих весов при вычислении важности, например, умножения на стандартное отклонение переменной.
,Ii=σi∑j=1nhidden|wij|
Здесь - стандартное отклонение i- го входа, I i - значение i- го входа, w i j - вес, соединяющий i- й вход с j- м скрытым узлом в первом слое, а n hidden - число скрытых узлов в первом слое.σi i Ii i wij i j nhidden
Другой метод заключается в использовании производной отображения нейронной сети по отношению к рассматриваемому входу, усредненной по входам.
Здесь - i- й вход, y - выход, а ожидаемое значение берется относительно вектора входов x .xi i y x
источник
Несколько грубая сила, но эффективное решение:
Попробуйте «сбросить» вход, используя константу для одной из ваших функций ввода. Затем обучите сеть для каждого из возможных случаев и посмотрите, как падает ваша точность. Важные входные данные обеспечат наибольшую выгоду для общей точности.
источник
Для мелкой сети это дает пример определения важности переменной.
Для действительно глубокой сети люди не слишком много говорят о переменной важности. Поскольку входные данные представляют собой необработанные элементы уровня, такие как пиксели в изображении.
источник
Максимум, что я нашел по этому поводу, детально перечислено на этом сайте, более конкретно, вы можете посмотреть на это . Если вы говорите только о линейных моделях, то вам нужно нормализовать веса, чтобы сделать их интерпретируемыми, но даже это может ввести в заблуждение больше об этом по упомянутой ссылке. Некоторые люди пытались сделать сложные весовые функции для интерпретации важности входных данных (Гарсона, Гедеона и Милна), но даже это может вводить в заблуждение, вы можете узнать об этом больше, прокрутив первую ссылку, которую я упомянул. В общем, я бы посоветовал продолжать интерпретировать результаты с недоверием.
согласился бы с ответом @ rhadar, но хотел бы добавить, что вместо использования какой-либо константы попробуйте использовать среднее значение для этого ввода и не забудьте переучить сеть.
PS: извините, не могу публиковать больше ссылок или комментариев, здесь не так много репутации.
источник
Учитывая, что у вас есть:
Кто-нибудь пробовал:
В этом случае, я думаю, что выходом будет число, обозначающее «важность» функции, поскольку этот выход также будет представлять выход пути этого 1 сигнала внутри сети.
Это как зажечь только одну лампочку внутри лабиринта и измерить свет, выходящий на выходе.
источник