Как выбрать количество скрытых слоев и узлов в нейронной сети?

Что делает количество скрытых слоев в многослойной нейронной сети персептрона в том, как ведет себя нейронная сеть? Тот же вопрос для количества узлов в скрытых слоях?

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

Как выбрать количество скрытых слоев и узлов для решения этой проблемы?

Ответ 1

Примечание: этот ответ был верным в момент его создания, но с тех пор устарел.


Редко можно иметь более двух скрытых слоев в нейронной сети. Количество слоев обычно не будет параметром вашей сети, о котором вы будете очень беспокоиться.

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

Bengio, Y. и LeCun, Y., 2007. Масштабирование алгоритмов обучения в сторону ИИ. Крупномасштабные машины ядра, (1), стр .1-41.

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

Ответ 2

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

Ответ 3

Большинство проблем, которые я видел, были решены с помощью 1-2 скрытых слоев. Доказано, что MLP с одним скрытым слоем являются универсальными аппроксиматорами функций (Hornik et al.). Более скрытые слои могут сделать проблему проще или сложнее. Обычно вам нужно попробовать разные топологии. Я слышал, что вы не можете добавить произвольное количество скрытых слоев, если хотите тренировать свой MLP с помощью backprop, потому что градиент станет слишком маленьким в первых слоях (у меня нет ссылки на это). Но есть некоторые приложения, в которых люди использовали девять слоев. Возможно, вас интересует стандартная проблема теста, которая решается различными классификаторами и топологиями MLP.

Ответ 4

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

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

ссылка на этот подход приведена в этой статье. https://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf

Ответ 5

Все приведенные выше ответы, конечно, правильны, но просто добавьте еще несколько идей: Вот некоторые общие правила, основанные на этой статье: "Приближенное число нейронов скрытого слоя в многоядерной архитектуре скрытого слоя" Саураба Карсолия


В общем:

  • Количество нейронов скрытого слоя составляет 2/3 (или от 70% до 90%) размера входного слоя. Если этого недостаточно, то число нейронов выходного слоя может быть добавлено позже.
  • Количество нейронов скрытого слоя должно быть менее чем в два раза больше числа нейронов во входном слое.
  • Размер нейронов скрытого слоя находится между размером входного слоя и размером выходного слоя.

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

Например. мы можем сделать GridSearch, чтобы определить "лучший" размер скрытого слоя.