Как сделать регуляризацию в наборе инструментов Matlab NN - PullRequest
0 голосов
/ 08 мая 2019

Мой набор данных имеет 150 независимых переменных и 10 предикторов или ответ. Проблема состоит в том, чтобы найти отображение между входными и выходными переменными. Есть 1000 точек данных, из которых 70% я использовал для обучения и 30% для тестирования. Я использую нейронную сеть прямой связи с 10 скрытыми нейронами, как описано в этом документе Matlab . Я оцениваю производительность с помощью команды

perf_Train = perform(net,TrainedData',lblTrain')

YPred = net(XTest);
perf_Test = perform(net,YPred,lblTest')

, который в основном дает среднеквадратичную ошибку между фактическим и прогнозируемым (оценочным) откликом на обучение и тестирование. Мои данные тестирования не могут правильно соответствовать обученной модели, однако данные обучения подходят очень хорошо.

Задача 1 : мои результаты обучения всегда меньше, чем показатель эффективности теста, т. Е. perf_Train = 0.0867 и perf_Test = 0.567

Это переоснащение или недостаточно?

Задача2 : Как правильно настроить данные теста? Теория говорит, что для преодоления переоснащения и недостаточной подгонки, нам нужно сделать регуляризацию. Есть ли какой-либо параметр, который необходимо ввести в функцию, такой как регуляризация, чтобы преодолеть это?

1 Ответ

1 голос
/ 08 мая 2019

Это переоснащение, так как ошибка обучения ниже, чем ошибка теста. Я бы порекомендовал установить меньшее количество эпох (итераций) для вашей тренировки или использовать меньше тренировочных данных. Я также рекомендовал бы проверить, чтобы данные об обучении и тесте выбирались случайным образом.

Для регулирования его можно установить так:

net.performParam.regularization = 0.5;

Коэффициент производительности зависит от модели, 0,5 - это только пример.

Для более подробной информации, вы можете обратиться к документации ниже. https://www.mathworks.com/help/deeplearning/ug/improve-neural-network-generalization-and-avoid-overfitting.html#bss4gz0-38

...