Я создаю инструмент для прогнозирования времени и стоимости программных проектов на основе прошлых данных. Инструмент использует нейронную сеть для этого, и до сих пор результаты являются многообещающими, но я думаю, что я могу сделать намного больше оптимизации, просто изменив свойства сети. Там, кажется, нет каких-либо правил или даже много лучших практик, когда дело доходит до этих настроек, поэтому, если кто-нибудь с опытом может мне помочь, я бы очень признателен.Настройки нейронной сети для быстрого обучения
Входные данные состоят из целого ряда целых чисел, которые могут увеличиваться так же высоко, как пользователь хочет, но большинство из них будет меньше 100 000, я бы подумал. Некоторые из них будут такими же низкими, как 1. Они представляют собой такие детали, как количество людей в проекте и стоимость проекта, а также сведения о сущности базы данных и прецедентах.
Всего 10 входов и 2 выхода (время и стоимость). Я использую Resilient Propagation для обучения сети. В настоящее время он имеет: 10 входных узлов, 1 скрытый слой с 5 узлами и 2 выходных узла. Я тренируюсь, чтобы получить 5% -ную ошибку.
Алгоритм должен запускаться на веб-сервере, поэтому я поставил в меру, чтобы остановить обучение, когда похоже, что он никуда не денется. Для этого установлено 10 000 тренировочных итераций.
В настоящее время, когда я пытаюсь обучать его некоторыми данными, которые немного разнообразны, но в пределах того, что мы ожидаем от пользователей, он занимает много времени, чтобы тренироваться, ударяя предел в 10 000 итераций и снова.
Это первый раз, когда я использовал нейронную сеть, и я действительно не знаю, чего ожидать. Если бы вы могли дать мне несколько советов о том, какие настройки я должен использовать для сети и для ограничения итерации, я бы очень признателен.
Спасибо!
Спасибо за всю информацию! 1. Я думал о нормализации входных данных, но я не знаю, как это сделать, когда значение не имеет максимума, а некоторые значения могут сильно различаться. 2. Я попробовал с 20 скрытыми нейронами, и для некоторых данных вместо секунд потребовалось 5 часов вместо секунд. Казалось, что более 10 не было хорошо. 4. Количество наборов данных зависит от количества пользователей. Мы использовали около 5. 5. Мы используем инфраструктуру нейронной сети под названием Encog, я буду изучать изменение импульса, но я не знаю если это возможно. – danpalmer
6. Опять же, я не знаю, как работает каркас онлайн-обучения, я буду изучать это. 7. Данные все непрерывны, и я установил Линейные активации на все, потому что я бы предположил, что результаты должны отличаться в зависимости от результата. 8. Как и в пункте 2, я обнаружил, что с двумя слоями он наносил мой наложенный предел намного больше, а LOT больше работал. – danpalmer
Lol. Я тоже должен быть в постели, завтра. Я добавил немного нормализации. Это не очень хорошо, но все значения набора данных будут находиться между 0 и 1, а предсказания не будут намного выше. Я увеличил скорость обучения на 18000% на одном. Я продолжу тестирование и попытаюсь выполнить некоторые другие меры, но на данный момент это отличный результат. Большое спасибо за Вашу помощь! – danpalmer