Настройки Нейронной сети для быстрого обучения

Я создаю инструмент для предсказания времени и стоимости проектов программного обеспечения на основе прошлых данных. Инструмент использует нейронную сеть, чтобы сделать это и до сих пор, результаты обещают, но я думаю, что могу сделать намного больше оптимизации только путем изменения свойств сети. Кажется, нет никаких правил или даже многих лучших практик когда дело доходит до этих настроек поэтому, если бы кто-либо с опытом мог бы помочь мне, я был бы очень признателен за его.

Входные данные составлены из серии целых чисел, которые могли повыситься настолько высоко, как пользователь хочет пойти, но большинство будет находиться под 100,000, я думал бы. Некоторые будут всего 1. Они - детали как число людей на проекте и стоимости проекта, а также детали об объектах базы данных и вариантах использования.

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

Алгоритм должен работать на веб-сервере, таким образом, я поместил в какой-то мере для остановки обучения, когда похоже, что это не идет никуда. Это установлено на 10 000 учебных повторений.

В настоящее время, когда я пытаюсь обучить его с некоторыми данными, которые немного варьируются, но хорошо в рамках того, что мы ожидаем, что пользователи поместят в него, требуется много времени для обучения, поражая 10 000 итеративных пределов много раз.

Это - первый раз, когда я использовал нейронную сеть, и я действительно не знаю, что ожидать. Если Вы могли бы дать мне некоторые подсказки, какие настройки я должен использовать для сети и для итеративного предела, я был бы очень признателен за его.

Спасибо!

7
задан Zaid 29 May 2010 в 09:39
поделиться

1 ответ

Прежде всего, спасибо за столько информации о своей сети! Вот несколько советов, которые должны дать вам более ясную картину.

  • Вам необходимо нормализовать вводимые данные. Если один узел видит среднее значение 100 000, а другой - 0,5, вы не увидите одинакового воздействия от двух входов. Вот почему вам нужно их нормализовать.
  • Только 5 скрытых нейронов на 10 входных узлов? Я помню, как где-то читал, что вам нужно как минимум удвоить количество входов; попробуйте 20+ скрытых нейронов. Это даст вашей модели нейронной сети возможность разработать более сложную модель. Однако слишком много нейронов и ваша сеть будут просто запоминать набор обучающих данных.
  • Устойчивое обратное распространение - это нормально. Просто помните, что существуют и другие алгоритмы обучения, такие как Левенберг-Марквардт.
  • Сколько у вас обучающих наборов? Нейронным сетям обычно требуется большой набор данных, чтобы делать полезные прогнозы.
  • Подумайте о добавлении фактора импульса в свой алгоритм силовой тренировки, чтобы ускорить процесс, если вы еще этого не сделали.
  • Онлайн-обучение обычно лучше подходит для создания обобщенных прогнозов, чем пакетное обучение. Первый обновляет веса после запуска каждого обучающего набора через сеть, а второй обновляет сеть после прохождения каждого набора данных. Это ваш вызов.
  • Ваши данные дискретны или непрерывны? Нейронные сети, как правило, лучше справляются с 0 с и 1 с, чем с непрерывными функциями.Если это первое, я бы рекомендовал использовать функцию активации сигмовидной кишки. Комбинация функций активации tanh и linear для скрытого и выходного уровней, как правило, хорошо справляется с непрерывно изменяющимися данными.
  • Вам нужен еще один скрытый слой? Это может помочь, если ваша сеть имеет дело со сложным отображением поверхностей ввода-вывода.
10
ответ дан 7 December 2019 в 01:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: