1 скрытый слой с 1000 нейронов против 10 скрытых слоев с 100 нейронами

13

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

Итак, мой вопрос: действительно ли имеет значение, если, например, у нас есть 1 большой скрытый слой из 1000 нейронов против 10 скрытых слоев по 100 нейронов в каждом?

Стивен Джонсон
источник

Ответы:

12

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

  • Большая площадь, более высокая цена
  • Небольшое количество спален, более низкая цена

Второй слой может заключить:

  • Большая площадь + небольшое количество спален = большие спальни = + - эффект

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

Проверьте этот ответ

Томас В.
источник
Большое спасибо за ваш ответ. Просто чтобы уточнить, когда вы пишете «это создает вашу сеть [...]», вы имеете в виду случай, когда у меня много скрытых слоев с меньшим количеством нейронов в каждом, чем с большим количеством нейронов в меньшем количестве слоев?
Стивен Джонсон
@ StefhenJohnson Ой, я редактировал вопрос. Я имею в виду глубокую сеть (несколько слоев).
Томас В.
Хороший ответ, еще раз спасибо. Может быть, мне следует продолжить это в другой теме, но считаете ли вы, что подобные рассуждения применимы к рекуррентным нейронным сетям, таким как GRU или LSTM?
Стивен Джонсон
@StephenJohnson Вы имеете в виду одноуровневые рекуррентные сети по сравнению с многоуровневыми рекуррентными сетями или имеете ввиду их повторяющиеся соединения?
Томас В.
Я имею в виду, в общем, из-за того, что они имеют повторяющиеся соединения, позволяющие им отображать контексты на более длинные расстояния, получат ли такие сети выгоду от того, что они Deep так же, как обычная сеть прямой связи? Возможно, их нельзя сравнивать таким образом, поскольку рекуррентные сети обычно используются при использовании последовательных данных, таких как аудио.
Стивен Джонсон
4

Есть так много аспектов.

1. Тренировка: тренировка глубоких сетей - тяжелая работа из-за исчезающей (взрывающейся сзади) проблемы градиента. Поэтому создание нейронной сети 10x100 не рекомендуется.

2. Обученная производительность сети:

  • Потеря информации: Классическое использование нейронных сетей является проблемой классификации . Это означает, что мы хотим получить определенную информацию из данных. (Например, есть ли лицо на картинке или нет.) Так что обычно проблема классификации имеет много входных данных и мало выходных данных, причем размер скрытых слоев уменьшается от входа к выходу. Однако мы теряем информацию, используя меньше нейронов слой за слоем. (Т.е. мы не можем воспроизвести исходное изображение, основываясь на том факте, есть ли на нем лицо или нет.) Поэтому вы должны знать, что вы теряете информацию, используя 100 нейронов, если размер входного сигнала (скажем, 1000).
  • Сложность информации: Однако более глубокие сети (как упоминал Томас У) могут извлекать более сложную информацию из входных данных. Несмотря на это, не рекомендуется использовать 10 полностью связанных слоев. Рекомендуется использовать сверточные / relu / maxpooling или другие типы слоев. Огненные слои могут сжать некоторую существенную часть входов. (Например, есть ли какая-либо линия в определенной части изображения) Вторые слои могут сказать: в этом месте на рисунке есть определенная форма. И т. Д.

Поэтому более глубокие сети более «умны», но структура сети 10х100 - хороший выбор.

betontalpfa
источник
1

Если решаемая задача линейно разделима, один слой из 1000 нейронов может работать лучше, чем 10 слоев с каждым из 100 нейронов. Если задача нелинейная и не выпуклая, вам нужны глубокие нейронные сети.

Шридхар Велури
источник
2
Если проблема линейно разделима, вам вообще не нужны скрытые слои
Амедео Барагиола
0

Я думаю, у вас есть путаница в основах нейронных сетей. Каждый слой имеет отдельную функцию активации и весы подключения ввода / вывода.

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

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

ahmadjordan
источник