Как практически оценить вклад "конкретного" входа в работу НС? - страница 2

 
nikelodeon:

В чём неожиданность???


Ну во-первых я сразу обнаружил одну застаревшую ошибку)

Во-вторых, я думал что убирая входы, я буду понижать информативность входа так тем самым будет уменьшаться результативность НС в целом. Какие-то входы будут ухудшать сильно, какие-то чуток. А возможно найду такие входы, удаление которые вообще не на что не влияют, и я их выкину для упрощения сети. Я конечно нашел "пустышки", нашел входы без которых НС недееспособна, но я и нашел входы убирая которые я увеличиваю результат работы НС в целом. Это сюрприз для меня, либо обучение ни к черту, либо вход слишком противоречив и просто вреден.

Вобщем пищу для размышления получил на несколько дней.

 
Figar0:


Ну во-первых я сразу обнаружил одну застаревшую ошибку)

Во-вторых, я думал что убирая входы, я буду понижать информативность входа так тем самым будет уменьшаться результативность НС в целом. Какие-то входы будут ухудшать сильно, какие-то чуток. А возможно найду такие входы, удаление которые вообще не на что не влияют, и я их выкину для упрощения сети. Я конечно нашел "пустышки", нашел входы без которых НС недееспособна, но я и нашел входы убирая которые я увеличиваю результат работы НС в целом. Это сюрприз для меня, либо обучение ни к черту, либо вход слишком противоречив и просто вреден.

Вобщем пищу для размышления получил на несколько дней.


может получится так что при следующем обучении ( на другой выборке ) они понадобятся...
 
Figar0:

Не совсем пятнично, но ...

Есть НС, любая, есть вход А={A1, A2, .... A20}. Обучаем НС и получаем удовлетворяющий нас результат. Как нам практически оценить вклад каждого элемента входа A1, A2, ... A20 в этот результат?

Варианты навскидку пришедшие мне в голову:

1) Как-то просуммировать и посчитать все веса элемента с которыми он проходит через сеть. Не совсем понятно как это сделать, сильно придется погрузиться в работу сети, где-то как-то высчитать какие-то коэффициенты и т.д.

2) Попробывать как-то "занулить", или например перевернуть элемент входного вектора и посмотреть как это скажется на конечном результате. Пока остановился на нем.

Но прежде чем реализовывать этот второй вариант решил посоветоваться. Может кто думал на ту тему уже дольше чем я? Может кто-то книжечку-статейку посоветует?

Один из распространенных и действенных методов - анализ весов НС после обучения. Веса инициализируются так, чтобы их значения были не сильно отличны от нуля, например, среднее 0, стандартное отклонение 0,1. После обучения, веса, относящиеся к не значимым входам будут по модулю близки к нулю, веса значимых входов будут сильно отличны от нуля. Проверено - работает на синтетических данных.
 
LeoV:

Степень влияния каждого входа реально оценить практически не возможно. Есть всякие математические формулы, в специализированных прогах степень влияния можно расчитать автоматически. Но все эти расчеты лишь некая условная величина, которая реально мало что говорит, поскольку может нести в себе большую погрешность.


Да я это вообщем-то осознаю, логичнее было бы провести анализ входов в той же Statistic'e, но это связано с большими трудозатрами по переносу туда в принципе работающей системы. Так же мне понятна вся неодназначность трактовки подобных экспериментов. Но польза есть и это уже точно.

 
Vizard:

может получится так что при следующем обучении ( на другой выборке ) они понадобятся...
Наверно именно так, но есть НС, она обучена, она работает, а значит может обойтись без выбракованых входов и имеет смысл от них отказаться для упрощения сети, улчшения ее обощающей способности и повышения качества обучения меньшими затратами.
 
Figar0:
Наверно именно так, но есть НС, она обучена, она работает, а значит может обойтись без выбракованых входов и имеет смысл от них отказаться для упрощения сети, улчшения ее обощающей способности и повышения качества обучения меньшими затратами.
+100500. Согласен. Зачем лишние входы, если без них работа сети не деградирует? Нужно избавиться однозначно.
 
alexeymosc:
Один из распространенных и действенных методов - анализ весов НС после обучения. Веса инициализируются так, чтобы их значения были не сильно отличны от нуля, например, среднее 0, стандартное отклонение 0,1. После обучения, веса, относящиеся к не значимым входам будут по модулю близки к нулю, веса значимых входов будут сильно отличны от нуля. Проверено - работает на синтетических данных.


Ну это в принципе первое что мне пришло в голову, вот только не смог придумать как подобный анализ попроще реализовать в рамках своей системы. Потому пошел методом от обратного.

 
Обратите что написал Леонид, а он чертовски прав. Найти влияние входов на выход сети, задача не разрешимая. Да отсеить не нужные, согласен можно, НО Определить степень влияния того или иного входа на выход практически не возможно.

А теперь представьте ситуаци. Вы нашли 2 входа которые не дают сети слить при форварде. Вы добаляете третий вход, который значительно улучшает работу сети. Какой вы сделаете вывод? Что этот вход имеет высокое влияние на выход сети. А на самом деле третий вход будет производить некое красткосрочное возмущение, да и то пару раз за весь период торговли. Но именно это возмущение и будет решающим. Хоть и сам факт возмущения будет незначительный. Также как и убрав один из двух первых входов, Вы вообще не сможете получить удовлетворительного результата. Другое дело направить работу вот по какому направлению.

При обучении сети происходит поиск локальных минимумов функции. Вернее поиск идёт глобального минимума ошибки, НО по средством перехода от локального ниже к глобальному.

Не редко а то и часто встречал такое что локальный минимум функции, в будущем показывает просто идеальные результаты.

Задача проста, подобрать такие входы сети (их потом менять то и не придёться) которые позволяли бы сети во время тренировки иметь локальные минимумы которыце зарабатывают в будущем.

Скажем при тренировки вы в среднем имеете порядка 10-20 локальных минимумов, и из них хотябы один правильный. Но лучше отбирать так чтоб прибыльных локальных минимумов было как можно больше......

Как вам такая задачка????? Это больше похоже реалии....
 
nikelodeon:
Обратите что написал Леонид, а он чертовски прав. Найти влияние входов на выход сети, задача не разрешимая. Да отсеить не нужные, согласен можно, НО Определить степень влияния того или иного входа на выход практически не возможно.

А теперь представьте ситуаци. Вы нашли 2 входа которые не дают сети слить при форварде. Вы добаляете третий вход, который значительно улучшает работу сети. Какой вы сделаете вывод? Что этот вход имеет высокое влияние на выход сети. А на самом деле третий вход будет производить некое красткосрочное возмущение, да и то пару раз за весь период торговли. Но именно это возмущение и будет решающим. Хоть и сам факт возмущения будет незначительный. Также как и убрав один из двух первых входов, Вы вообще не сможете получить удовлетворительного результата. Другое дело направить работу вот по какому направлению.

Это тоже верно. Есть и обратная ситуация: теоретически возможно, что есть два входа с высокой информативностью и один с низкой. По логике, хочется убрать третий, но если его убрать, то разрушится сложная квадро-взаимосвязь (три входа - выход), и два оставшихся входа будут уже не столь информативны. И чтобы эти сложные взаимосвязи выявить нужно такой космический мат.аппарат применить, и технически это оформить, что ого-ого (ну для меня, по крайней мере). Все сложно, не надо думать, что легко. НС это на 80% эмпирический поиск.
 
nikelodeon:

А теперь представьте ситуаци. Вы нашли 2 входа которые не дают сети слить при форварде. Вы добаляете третий вход, который значительно улучшает работу сети. Какой вы сделаете вывод? Что этот вход имеет высокое влияние на выход сети. А на самом деле третий вход будет производить некое красткосрочное возмущение, да и то пару раз за весь период торговли. Но именно это возмущение и будет решающим. Хоть и сам факт возмущения будет незначительный. Также как и убрав один из двух первых входов, Вы вообще не сможете получить удовлетворительного результата. Другое дело направить работу вот по какому направлению.

Понятно, что входы взаимосвязаны и трактовка результатов подобных экспериментов самый важный аспект. Я исключаю входы не только по одному, но и их различные комбинации пока от 1-5 (я думаю дальше расширю это диапазон до половины всех входов) аналог Вашему добавлению еще одного входа и смотрю на изменения отклика НС, как на этапе обучения так и форварда.

nikelodeon:

При обучении сети происходит поиск локальных минимумов функции. Вернее поиск идёт глобального минимума ошибки, НО по средством перехода от локального ниже к глобальному.

Не редко а то и часто встречал такое что локальный минимум функции, в будущем показывает просто идеальные результаты.

Задача проста, подобрать такие входы сети (их потом менять то и не придёться) которые позволяли бы сети во время тренировки иметь локальные минимумы которые зарабатывают в будущем.

Скажем при тренировки вы в среднем имеете порядка 10-20 локальных минимумов, и из них хотябы один правильный. Но лучше отбирать так чтоб прибыльных локальных минимумов было как можно больше......

Как вам такая задачка????? Это больше похоже реалии....

Реалии у всех разные) В частности я не ищу минимум ошибки, я ищу максимум профита, минимум просадки, удовлетворяющий меня ПФ и т.д. Т.е у меня локальные максимумы, правда сути это не меняет. А предложенная Вами задачка у меня худо-бедно, но давно решена...

Причина обращения: