Как определить количество слоев и нейронов скрытого слоя нейронной сети?
Как определить количество слоев и нейронов скрытого слоя нейронной сети?

Автор: Йойо Люминг Редактор: Питер

Привет всем, я Питер~

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

https://zhuanlan.zhihu.com/p/100419971

1. Введение

BPнейронная сеть В основном состоит извходной слойСкрытый слойвыходной слойсоставляют,Введите ивыходной Количество узлов в слое фиксировано.

Будь то задача регрессии или классификации, выбор подходящего количества слоев и количества узлов скрытых слоев в значительной степени повлияет на производительность нейронной сети.

Источник изображения: Эндрю Нг-Глубокое обучение

Количество узлов во входном и выходном слоях легко получить:

  • Количество нейронов во входной слое: равно количеству входных переменных в данных, подлежащих обработке.
  • выходной Количество нейронов: равно количеству выходов, связанных с каждым входом.

трудность:Но настоящая трудность заключается в том,Определите подходящее количество Скрытого слоя и его нейронов.

2. Количество скрытых слоев

Как определить количество скрытых слоев – важный вопрос. Первое, что следует отметить:

В нейронных сетях скрытые слои необходимы тогда и только тогда, когда данные разделены нелинейно!

Since a single sufficiently large hidden layer is adequate for approximation of most functions, why would anyone ever use more? One reason hangs on the words “sufficiently large”. Although a single hidden layer is optimal for some functions, there are others for which a single-hidden-layer-solution is very inefficient compared to solutions with more layers.——Neural Smithing: Supervised Learning in Feedforward Artificial Neural Networks, 1999

поэтому,Для общегоПростойизданныенабор,Обычно достаточно одного-двух слоев накрытого слоя.。Но для тех, кто занимается временными рядами или компьютерным зрениемизсложныйданныенабор,Вам нужно добавить дополнительные слои. Однослойная нейронная сеть может использоваться только для представления функции линейного разделения.,Это очень простой вопрос,Например, два класса в задаче классификации можно аккуратно разделить прямой линией.

Specifically, the universal approximation theorem states that a feedforward network with a linear output layer and at least one hidden layer with any “squashing” activation function (such as the logistic sigmoid activation function) can approximate any Borel measurable function from one finite-dimensional space to another with any desired non-zero amount of error, provided that the network is given enough hidden units.——Deep learning, 2016

Таким образом, для соответствия нелинейным функциям можно использовать несколько скрытых слоев.

Количество скрытых слоев и эффекты/цели нейронных сетей можно суммировать в следующей таблице:

Если коротко подвести итог -

  • Нет Скрытый слой:может быть выражено только как линейно разделимоефункцияили решение
  • Скрытый слойчисло=1:Может подойти любой“Содержит переход из одного конечного пространства в другое конечное пространство.изнепрерывное картографирование”изфункция
  • Скрытый слойчисло=2:Правильное сочетаниеизактивацияфункция Может представлять произвольную точностьизпроизвольная граница решения,и может соответствовать любому плавному отображению с любой точностью
  • Скрытый слойчисло>2:плодовитыйиз Скрытый слой может изучать сложные описания (своего рода автоматическое проектирование функций)

Empirically, greater depth does seem to result in better generalization for a wide variety of tasks. This suggests that using deep architectures does indeed express a useful prior over the space of functions the model learns.——Deep learning, 2016

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

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

В специальных областях, таких как CV и NLP,Вы можете использовать CNN, RNN, внимание и другие специальные методы.,Вы не можете просто накапливать несколько слоев, не задумываясь о реальной ситуации. сеть。Попробуйте перенести и точно настроить существующие предварительно обученные модели, чтобы получить вдвое больший результат, прилагая вдвое меньше усилий.

Источник: новички спрашивают, сколько-скрытых-слоев-нейронов можно использовать в искусственных нейронных сетях

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

3. Количество нейронов в скрытом слое

Использование слишком малого количества нейронов в скрытом слое приведет к недостаточной подгонке.

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

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

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

Источник изображения: Эндрю Нг-Глубокое обучение

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

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

Существует много мудростей о том, как определить количество нейронов.

Мастер stackoverflow дал для справки эмпирическую формулу:

Существует еще один метод для справки. Количество нейронов обычно можно грубо определить по следующим принципам:

  • Количество скрытых нейронов должно быть во входной слойизразмер ивыходной между размерами слоя.
  • Количество скрытых нейронов должно быть входной 2/3 размера слоя плюс выходной 2/3 размера слоя.
  • Количество скрытых нейронов должно быть меньше входной В два раза больше слоя.

в целом,Скрытый слой Нейроны самые лучшиечисло Потребности в количествеПолучено путем непрерывных экспериментов,Рекомендуется начинать с меньшего количества, например от 1 до 5 слоев и от 1 до 100 нейронов.,Если недостаточно, медленно добавляйте больше слоев и нейронов.,В случае переобучения уменьшите количество слоев и нейронов.

также,В реальном процессе вы также можете рассмотреть возможность введенияПакетная нормализация, отсев, регуляризацияУменьшить переоснащениеизметод。


4. Справочные материалы

  1. LeCun, Yann, Yoshua Bengio, and Geoffrey Hinton. "Deep learning."nature521.7553 (2015): 436-444.
  2. Heaton Research: The Number of Hidden Layers
  3. Ahmed Gad, Beginners Ask “How Many Hidden Layers/Neurons to Use in Artificial Neural Networks?”
  4. Jason Brownlee, How to Configure the Number of Layers and Nodes in a Neural Network
  5. Lavanya Shukla, Designing Your Neural Networks

Заявление об авторских правах

Авторские права принадлежат первоначальному автору и используются только для академического обмена.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose