Я хочу обучить нейронную сеть для выполнения классификации сигналов.Соответствующие параметры обратной прокладки
The network has 50 inputs of the format: [-1 .. 1]
50 hidden layers (not restricted)
10 outputs
hyperbolic tangent (not restricted)
Я ограничен в библиотеку (hnn), чтобы сделать обучение.
Моя проблема заключается в том, что я не знаю, каков процент соответствующий обучения и количество учебных итераций
Я пробовал много возможных настроек в диапазоне:
[1K - 10K] training iterations
[0.001 - 1.5] learning rate
Но когда я снова загружаю свои данные обучения в обученную нейронную сеть, я получаю очень плохие результаты (в форме матрицы замешательства) - не более 2 классов классифицируются правильно.
Каков соответствующий набор этих двух параметров для входных данных?
При поиске аналогичных случаев в литературе я обнаружил, что в разных случаях используются разные настройки параметров, не объясняя причинно-следственных связей.
Эксперименты: Упомянутый библиотека имеет функцию trainUntilErrorBelow (пояснений). Я использовал эту функцию, чтобы узнать, как быстро я могу достичь определенной ошибки, изменив функцию активации и количество скрытых слоев.
Я выбрал следующие:
minimum error: 300
learning rate: 0.01
Результаты: гиперболического тангенса:
1 hidden layer (50 neurons) - 32.12 sec
2 hidden layers (50/50 neurons) - 31.51 sec
3 hidden layers (50/50/50 neurons) - 12.18 sec
4 hidden layers (50/50/50/50 neurons) - 42.28 sec
сигмовидной:
1 hidden layer (50 neurons) - 21.32 sec
2 hidden layers (50/50 neurons) - 274.29 sec
3 hidden layers (50/50/50 neurons) - ∞ sec
4 hidden layers (50/50/50/50 neurons) - ∞ sec
Разумно предположить, что гиперболический активация касательной функция с 3 скрытыми слоями (50/50/50 ne urons) является хорошим выбором для сетевой архитектуры?
В общем, вам нужны пробные ошибки для этих гиперпараметров. Это является причиной наблюдения огромного диапазона в литературе. Я уверен, что проблема в вашем случае - это не скорость обучения, а сетевая архитектура и, возможно, ваш набор данных. Когда вы уже пробовали некоторые курсы обучения, вам следует потратить некоторое время на регулирование. Ваша сеть может перерабатывать все время. Добавьте некоторую регуляцию L1/L2 к весам или даже что-то вроде слоя отсечки. – sascha
@sascha спасибо, пытаясь запустить некоторые эксперименты, чтобы определить соответствующие настройки для гиперпараметров –
@MocialovBoris Как сказал Саша, это больше похоже на проблему с классифицируемыми данными. Для классификации сигналов вы обычно (часто;) вычисляете некоторые функции, формирующие сами сигналы (среднее значение, преобразование Фурье, коэффициенты блаха), а затем классифицируйте эти функции. Здесь есть особенности, которые вы принимаете (искусство больше, чем наука); другое, более или менее правильное правило, чтобы нормализовать данные, чаще всего в [-1,1]. Каковы ваши 50 входов? Какие у них ценности? Почему у вас 50 выходных узлов (раньше вы упомянули 10)? – Luis