Как определить количество слоев и узлов нейронной сети

В настоящее время я создаю nn для набора данных с 387 функциями и 3000 образцами. Выходы - 3 класса. Я настроил структуру сети следующим образом:

input- > 200 → {300- > 100} → 50- > output

Я выбрал правильное количество узлов и слоев? Как определить количество узлов каждого уровня (вход, скрытый и выходной)? Есть ли правило?

Ответ 1

Правила? Столько, сколько хотите, и нет. Вот выдержка из Часто задаваемые вопросы о нейральной сети, которая является хорошей страницей для консультаций по основным вопросам:

  1. A: Сколько скрытых единиц я должен использовать? ==========================================

    Невозможно определить хорошую топологию сети только с количество входов и выходов. Это критически зависит от числа примеров обучения и сложности классификации, которую вы пытаются учиться. Есть проблемы с одним входом и одним которые требуют миллионов скрытых единиц, а также проблемы с миллион входов и миллион выходов, для которых требуется только одна скрытая единица или вообще нет.
    Некоторые книги и статьи предлагают "правила thumb" для выбора топопологии - Ninputs plus Noutputs delied на два, может быть, с квадратным корнем там где-то - , но такое правила - полный мусор. Другие правила относятся к числу Имеющиеся примеры: используйте как можно больше скрытых единиц, количество весов в сети 10 меньше, чем число примеров. Такие правила касаются только переоборудования и ненадежным.

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

Ответ 2

Слои

Как Йошуа Бенджио, глава Монреальского института изучения алгоритмов примечания:

"Очень просто: просто продолжайте добавлять слои, пока тестовая ошибка больше не улучшится".

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

Узлы

Для вашей задачи:

  • Уровень ввода должен содержать 387 узлов для каждой из функций.
  • Выходной уровень должен содержать 3 узла для каждого класса.
  • Скрытые слои. Я нахожу, что постепенно уменьшение числа с нейронами внутри каждого слоя работает достаточно хорошо (этот список советов и трюков соглашается с этим при создании автокодеров для задач сжатия). Возможно, попробуйте 200 в первом скрытом слое и 100 во втором; снова это гиперпараметр, который должен быть оптимизирован и очень зависит от размера набора данных.

Ответ 3

Как они сказали, нет никакого "волшебного" правила для вычисления количества скрытых слоев и узлов Neural Network, но есть несколько советов или рекомендаций, которые могут помочь вам найти лучшие.

Количество скрытых узлов основано на соотношении между:

  • Количество входных и выходных узлов
  • Количество доступных учебных данных
  • Сложность функции, которая пытается быть изученной.
  • Алгоритм обучения

Чтобы свести к минимуму ошибку и иметь хорошо обученную сеть, вам нужно выбрать оптимальное количество скрытых слоев, а также узлы в каждом скрытом слое.

  • Слишком мало узлов приведет к высокой ошибке для вашей системы, поскольку прогностические факторы могут быть слишком сложными для небольшого количества узлов для захвата

  • Слишком много узлов будут переназначать ваши учебные данные и не обобщать хорошо

На этой странице вы можете найти общие советы:

Раздел - Сколько скрытых единиц следует использовать?

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

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

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

  • Количество скрытых слоев равно одному
  • Число нейронов в этом слое является средним числом нейронов во входном и выходном слоях.