Русские Блоги
Сколько скрытых слоев и нейронов используется в искусственных нейронных сетях
В этой статье описывается, сколько скрытых слоев используется в искусственных нейронных сетях, сколько нейронов содержится в каждом скрытом слое, цель использования скрытых слоев и нейронов, и какие результаты всегда будут приносить при увеличении количества скрытых слоев и числа нейронов. ,
Новички искусственных нейронных сетей (ANN), вероятно, столкнутся с некоторыми проблемами. Некоторые из этих вопросов включают, сколько скрытых слоев используется? Сколько нейронов содержится в каждом скрытом слое? Какова цель использования скрытых слоев и нейронов? Будет ли увеличение количества скрытых слоев и нейронов всегда приносить лучшие результаты?
Я очень рад сообщить вам, что на эти вопросы можно ответить.
Искусственные нейронные сети вдохновлены биологическими нейронными сетями. Для простоты он представлен как ряд сетевых слоев в информатике. Эти слои делятся на три категории: входной слой, скрытый слой и выходной слой.
Относительно легко понять количество входных и выходных слоев и количество их нейронов. Каждая искусственная нейронная сеть имеет отдельный входной слой и выходной слой. Количество нейронов во входном слое равно количеству входных переменных в обрабатываемых данных. Количество нейронов в выходном слое равно количеству выходов, связанных с каждым входом. Однако настоящая проблема заключается в том, как узнать скрытые слои и количество нейронов, которые они содержат.
Вот некоторые рекомендации, которым можно следовать, чтобы узнать количество скрытых слоев в задаче классификации и количество нейронов, содержащихся в каждом скрытом слое:
▪ На основе данных нарисуйте ожидаемую границу решения для разделения нескольких классов;
▪ Представлять границу решения в виде набора прямых линий. Обратите внимание, что такая комбинация прямых линий должна подчиняться границе решения;
▪ Количество выбранных линий равно количеству скрытых нейронов в первом скрытом слое;
▪ Чтобы соединить прямые линии, созданные предыдущим слоем, добавляется новый скрытый слой. Следует отметить, что каждый раз, когда необходимо создать соединение между прямыми линиями в предыдущем скрытом слое, необходимо добавить новый скрытый слой;
▪ Количество скрытых нейронов в каждом новом скрытом слое равно количеству устанавливаемых соединений;
Чтобы прояснить ситуацию, давайте использовать предыдущие методы и принципы, чтобы привести несколько примеров.
Примеры 1
Давайте начнем с простой задачи классификации на рисунке ниже. Каждый образец имеет два входа и выход, представляющий метку класса. Это очень похоже на проблему XOR.
Первый вопрос, на который нужно ответить — нужен ли скрытый слой. Чтобы ответить на этот вопрос, необходимо соблюдать следующие правила:
В искусственных нейронных сетях скрытые слои необходимы только тогда, когда данные должны быть разделены нелинейно.
Глядя на рисунок 2, кажется, что классы должны быть нелинейно разделены, и строка не может быть завершена. Поэтому мы должны использовать скрытые слои, чтобы получить наилучшую границу решения. В этом случае мы все еще можем не использовать скрытый слой, но это повлияет на точность классификации. Поэтому лучше использовать скрытые слои.
Чтобы понять, зачем нам нужен скрытый слой, нам сначала нужно ответить на два важных вопроса:
1. Какое количество скрытых слоев требуется?
2. Какое количество скрытых нейронов содержится в каждом скрытом слое?
Следуя предыдущему процессу, первый шаг — нарисовать границу решения, которая разделяет два класса. По крайней мере одна возможная граница принятия решения будет правильно разделять данные, как показано на рисунке:

Используя набор прямых линий для представления границы решения, эта идея исходит из использования однослойных персептронов в качестве строительных блоков для построения любой искусственной нейронной сети. Однослойный персептрон — это линейный классификатор, который разделяет несколько классов в соответствии с линейным уравнением, созданным следующим уравнением:
y = w_1*x_1 + w_2*x_2+⋯+ w_i*x_i + b
среди нихx_iСредства ввода,w_iВыразить свой вес,bПредставляет отклонение,yУказывает на вывод. Поскольку каждый добавленный скрытый нейрон будет увеличивать количество весов, рекомендуется использовать наименьшее количество скрытых нейронов для выполнения задачи.Кроме того, использование большего количества скрытых нейронов, чем фактически требуется, также увеличит сложность.
Возвращаясь к нашему примеру, искусственная нейронная сеть состоит из множества сетей персептронов, точно так же, как сеть, построенная из нескольких прямых линий.
В этом примере граница решения заменяется набором прямых линий. Эти прямые линии начинаются с точки, где граничная кривая меняет направление, и в этих точках проходят две прямые линии, каждая в другом направлении.
Поскольку граничная кривая меняет направление только в одной точке (серый кружок показан на рисунке ниже), то нужны только две прямые линии, то есть две однослойные сети персептрона, и каждый перцептрон создает только одну прямую линию.

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

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

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

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

Итак, сколько прямых линий нам нужно? Две прямые проходят через каждую точку сверху и снизу, так что всего их четыре. Средняя точка будет иметь две прямые линии, совместно используемые другими точками. Созданная прямая линия показана на рисунке 8:

Поскольку первый скрытый слой будет иметь то же количество нейронов скрытого слоя, что и прямая линия, то у него будет четыре нейрона. Другими словами, он содержит четыре классификатора, каждый из которых создается однослойным персептроном. В настоящее время искусственная нейронная сеть будет производить четыре выхода, и каждый выход будет поступать из классификатора. Следующим шагом является объединение этих классификаторов, чтобы сеть могла производить только один выход. Другими словами, эти прямые линии соединены другими скрытыми слоями, образуя единую кривую.
Модельер выбирает макет сети. Подходящая структура сети — это создание второго скрытого слоя с двумя скрытыми нейронами. Первый скрытый нейрон соединит первые две линии, а последний скрытый нейрон соединит последние две линии. Это второй скрытый слой. Результат показан на рисунке 9.

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

После завершения проектирования структуры сети полная архитектура сети показана на рисунке 11.

Эта статья является оригинальным содержанием сообщества Yunqi и не может быть воспроизведена без разрешения.
Интеллектуальная рекомендация
Реализация JavaScript Hashtable
причина Недавно я смотрю на «Структуру данных и алгоритм — JavaScript», затем перейдите в NPMJS.ORG для поиска, я хочу найти подходящую ссылку на библиотеку и записывать его, я могу исполь.
MySQL общие операции
jdbc Транзакция: транзакция, truncate SQL заявление Transaction 100 000 хранимая процедура mysql msyql> -определить новый терминатор,Пробелов нет mysql>delimiter // mysql> -создание хранимой .
Используйте Ansible для установки и развертывания TiDB
жизненный опыт TiDB — это распределенная база данных. Настраивать и устанавливать службы на нескольких узлах по отдельности довольно сложно. Чтобы упростить работу и облегчить управление, рекомендуетс.
Последняя версия в 2019 году: использование nvm под Windows для переключения между несколькими версиями Node.js.
С использованием различных интерфейсных сред вы можете переключаться между разными версиями в любое время для разработки. Например, развитие 2018 года основано наNode.js 7x версия разработана. Тебе эт.
![]()
Шаблон проектирования — Создать тип — Заводской шаблон
Заводская модель фабрикиPattern Решать проблему: Решен вопрос, какой интерфейс использовать принципСоздайте интерфейс объекта, класс фабрики которого реализуется его подклассом, чтобы процесс создания.
Сколько скрытых слоев и скрытых узлов необходимо в нейронной сети?
До сих пор в этой серии статей, посвященной нейронным сетям, мы обсуждали нейросети перцептрон, многослойные нейросети и способы разработки таких нейросетей с использованием языка Python. Прежде чем мы перейдем к обсуждению того, сколько скрытых слоев и узлов вы можете выбрать для использования, ознакомьтесь с содержанием серии выше, в меню.
Резюмируем информацию скрытых слоях
Во-первых, давайте повторим некоторые важные моменты о скрытых узлах в нейронных сетях.
- Перцептроны, состоящие только из входных узлов и выходных узлов (называемые однослойными перцептронами), не очень полезны, потому что они не могут аппроксимировать сложные связи вход-выход, которые характеризуют многие типы реальных явлений. Более конкретно, однослойные перцептроны ограничены линейно разделимыми задачами. Как мы видели в седьмой статье («Продвинутое машинное обучение с многослойным перцептроном»), даже такая базовая функция, как логическая функция «исключающее ИЛИ» (XOR), не является линейно разделимой.
- Добавление скрытого слоя между входным и выходным слоями превращает перцептрон в универсальный аппроксиматор, что, по сути, означает, что он способен захватывать и воспроизводить чрезвычайно сложные связи вход-выход.
- Наличие скрытого слоя делает обучение немного более сложным, потому что весовые коэффициенты между входным и скрытым слоями косвенным образом влияют на конечную ошибку (этот термин я использую для обозначения разницы между выходным значением нейросети и целевым значением, заданным обучающими данными).
- Методика, которую мы используем для обучения многослойного перцептрона, называется обратным распространением: мы распространяем конечную ошибку обратно в сторону входа нейросети таким образом, который позволяет нам эффективно изменять веса, которые не подключены непосредственно к выходному узлу. Процедура обратного распространения является расширяемой, т.е. та же самая процедура позволяет нам обучать веса, связанные с произвольным числом скрытых слоев.
Следующая диаграмма обобщает базовую структуру многослойного перцептрона.
Рисунок 1 – Нейронная сеть многослойный перцептрон, или MLP (multilayer perceptron)
Сколько скрытых слоев?
Как и следовало ожидать, на этот вопрос нет простого ответа. Однако самое важное, что нужно понять, это то, что перцептрон с одним скрытым слоем – это крайне мощная вычислительная система. Если вы не получаете адекватных результатов с одним скрытым слоем, попробуйте сначала другие усовершенствования – может быть, вам нужно оптимизировать скорость обучения, увеличить количество эпох обучения или расширить набор обучающих данных. Добавление второго скрытого слоя увеличивает сложность кода и время обработки.
Следует также помнить, что перегруженная нейронная сеть – это не просто напрасная трата ресурсов процессора и усилий на написание кода – она может на самом деле принести «положительный вред», делая сеть более восприимчивой к переобучению (перетренированности).
Мы говорили о переобучении еще в четвертой статье («Понятие обучения простой нейронной сети»), в которой приводилась следующая диаграмма как способ визуализации работы нейронной сети, решение которой недостаточно обобщено.
Рисунок 2 – Переобученная (перетренированная) нейросеть
Супермощный перцептрон может обрабатывать обучающие данные таким образом, который в некоторой степени аналогичен тому, как люди иногда могут «перемудрить» над чем-либо.
Когда мы уделяем слишком много внимания деталям и прикладываем чрезмерные интеллектуальные усилия к проблеме, которая на самом деле довольно проста, мы упускаем «общую картину» и в итоге получаем решение, которое окажется неоптимальным. Аналогичным образом, перцептрон с избыточной вычислительной мощностью и недостаточными обучающими данными может использовать слишком специфическое решение вместо поиска обобщенного решения (пример показан на следующем рисунке), которое будет более эффективно классифицировать новые входные выборки.
Рисунок 3 – Хорошо обученная нейросеть
Итак, когда нам действительно нужно несколько скрытых слоев? Я не могу дать вам никаких рекомендаций из личного опыта. Лучшее, что я могу сделать, это передать опыт доктора Джеффа Хитона (смотрите страницу 158 текста по ссылке), который утверждает, что один скрытый слой позволяет нейронной сети аппроксимировать любую функцию, включающую «непрерывное преобразование из одного конечного пространства в другое».
С двумя скрытыми уровнями нейросеть может «представить произвольную границу решения с произвольной точностью».
Сколько скрытых узлов?
Поиск оптимальной размерности для скрытого слоя потребует проб и ошибок. Как обсуждалось выше, слишком большое количество узлов нежелательно, но их должно быть достаточно, чтобы нейросеть могла уловить сложности связей вход-выход.
Метод проб и ошибок – это хорошо, но вам понадобится обоснованная отправная точка. В той же книге, ссылка на которую приведена выше (на странице 159), доктор Хитон упоминает три практических правила для выбора размерности скрытого слоя. Я буду опираться на них, предлагая рекомендации, основанные на моей смутной интуиции в обработке сигналов.
- Если в нейросети только один выходной узел, и вы считаете, что требуемая связь вход-выход довольно проста, начните с размерности скрытого слоя, равной двум третям входной размерности.
- Если у вас есть несколько выходных узлов или вы считаете, что требуемая связь вход-выход является сложной, сделайте размерность скрытого слоя равной сумме входная размерность плюс выходная размерность (но при этом она должна оставаться меньше удвоенной входной размерности).
- Если вы считаете, что требуемая связь вход-выход является крайне сложной, установите размерность скрытого слоя равной на единицу меньше удвоенной входной размерности.
Заключение
Надеюсь, что эта статья помогла вам понять процесс конфигурирования и подстройки скрытого слоя многослойного перцептрона.
В следующей статье мы рассмотрим влияние размерности скрытого слоя, используя мою реализацию на Python и несколько примеров задач.
Что такое скрытые слои?
Эта статья призвана дать обзор того, как работают слои в нейронной сети.
В частности, эта статья посвящена скрытому слою нейронной сети.
Если вы хотите понять, что такое нейронные сети, прочтите:
Что такое уровни нейронной сети?
Подумайте о слое как о контейнере нейронов. Слой группирует вместе несколько нейронов. Он используется для хранения набора нейронов.

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

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

В сложной нейронной сети с несколькими скрытыми слоями выходной слой получает входные данные от предыдущего скрытого слоя.
Сколько нейронов в выходном слое?
Возникает вопрос, пытаетесь ли вы работать над проблемой классификации или регрессии.
Если ваша нейронная сеть является регрессором, то выходной слой имеет единственный узел.
Если ваша нейронная сеть является классификатором, то она также имеет единственный узел. Если вы используете вероятностную функцию активации, такую как softmax, то выходной слой будет иметь по одному узлу для каждой метки класса в вашей модели.
Что такое скрытый слой?
Введение скрытых слоев делает нейронные сети превосходящими большинство алгоритмов машинного обучения.
Скрытые слои находятся между входным и выходным слоями, и это основная причина, по которой они называются скрытыми.
Слово «скрытые» означает, что они не видны внешним системам и являются «частными» для нейронной сети.
В нейронной сети может быть ноль или более скрытых слоев.
Одного скрытого слоя достаточно для большинства проблем.
Обычно каждый скрытый слой содержит одинаковое количество нейронов.
Чем больше количество скрытых слоев в нейронной сети, тем больше времени потребуется нейронной сети для создания выходных данных и тем более сложные проблемы может решить нейронная сеть.

Нейроны просто вычисляют взвешенную сумму входных данных и весов, добавляют смещение и выполняют функцию активации.
Сколько нейронов в скрытом слое?
Эксперименты показали, что оптимальное количество нейронов в скрытом слое можно определить по:

Коэффициент используется для предотвращения чрезмерной подгонки и представляет собой число от 1 до 10.
Скрытые слои нейронной сети
Скрытые слои нейронной сети — это слои, которые не являются ни входными, ни выходными, а являются промежуточными шагами в вычислениях сети.
Общие сведения о нейронных сетях и их слоях
Нейронные сети сумели совершить революцию в сере распознавания образов, но по причине невозможности точно интерпретировать принцип действия, их не применяют в таких сферах, как медицина и оценка рисков. Необходимо обеспечить наглядность представления работы сети, которое представит её не в виде чёрного ящика, а хотя бы сделает «полупрозрачным».
Изучить функционирование глубоких нейронных сетей в общем случае считается нетривиальной задачей. Проще изучать глубокие нейронные сети, имеющие низкую размерность, а именно, сети, в которых имеется лишь небольшое количество нейронов в каждом слое. Для сетей с низкой размерностью можно формировать визуализацию, для того чтобы можно было понимать процессы поведения и обучения таких сетей. Такая перспектива позволяет получать более глубокое понимание о поведении нейронных сетей и наблюдать связь, объединяющую нейронные сети с областью математики, называемой топологией.
Перцептроны, которые состоят только из входных и выходных узлов и называются однослойными перцептронами, считаются не очень полезными, так как они не способны к аппроксимации сложных связей вход-выход, характеризующих многие типы реальных явлений. А точнее, однослойные перцептроны ограничиваются решением линейно разделимых задач. И здесь следует отметить, что даже такая основная функция, как логическое «исключающее ИЛИ» (XOR), не считается как линейно разделимая.
Прибавление скрытого слоя между входным и выходным слоями способно превратить перцептрон в универсальный аппроксиматор, а это значит, что он сможет захватывать и воспроизводить чрезвычайно сложные связи между входом и выходом. Присутствие скрытого слоя может сделать процесс обучения немного более сложным, так как весовые коэффициенты между входным и скрытым слоями косвенно могут влиять на конечную ошибку. Ошибка обозначает разницу между выходным значением нейросети и целевым значением, которое задано обучающей информацией.
Метод, который обычно используется для обучения многослойного перцептрона, именуется обратным распространением, то есть, конечная ошибка распространяется обратно в сторону входа нейросети так, что можно эффективно менять веса, которые не подключены непосредственно к выходному узлу. Операция обратного распространения считается расширяемой, то есть, та же самая процедура может позволить обучать веса, которые связаны с произвольным количеством скрытых слоев.
Скрытые слои нейронной сети
На рисунке ниже приведена диаграмма, обобщающая базовую структуру многослойного перцептрона.

Рисунок 1. Структура многослойного перцептрона. Автор24 — интернет-биржа студенческих работ
На вопрос, сколько скрытых слоев необходимо создать, не существует простого ответа. Тем не менее следует отметить, что перцептрон даже с одним скрытым слоем представляет собой достаточно мощную вычислительную систему. Когда не удаётся получить адекватные результаты с одним скрытым слоем, то следует вначале попробовать другие модификации, такие как, оптимизация скорости обучения, увеличение количества эпох обучения или расширение набора обучающих данных. А прибавление второго скрытого слоя может увеличить сложность кода и время вычислений.
Необходимо также не забывать, что перегруженная нейронная сеть является не просто напрасной тратой ресурсов процессора и усилий на формирование кода, а ещё она способна на самом деле нанести «положительный вред», то есть, сделать сеть более восприимчивой к переобучению (перетренированности). Супермощный перцептрон способен вести обработку обучающих данных таким образом, который в определённой степени является аналогом того, как люди иногда могут «перемудрить» над чем-нибудь.
Когда человек уделяет слишком много внимания деталям и прикладывает чрезмерные интеллектуальные усилия к проблеме, которая на самом деле может быть достаточно простой, он упускает «общую картину» и в результате получает решение, которое может оказаться далеко не оптимальным. Аналогично, перцептрон, обладающий избытком вычислительной мощности и недостаточным количеством обучающих данных, способен использовать слишком специфическое решение, вместо того чтобы найти обобщенное решение, которое сможет более эффективно классифицировать новые входные выборки.
Так, когда же всё-таки действительно необходимо несколько скрытых слоев? Здесь можно сослаться на опыт доктора Джеффа Хитона, который утверждал, что один скрытый слой позволяет нейронной сети осуществить аппроксимацию любой функции, включающей непрерывное преобразование из одного конечного пространства в другое. С двумя скрытыми уровнями нейросеть способна предоставить произвольную границу решения с произвольной точностью.
Определение оптимальной размерности для скрытого слоя требует опираться на метод проб и ошибок. Как было указано выше, через чур большое количество узлов является нежелательным, но их количество должно быть достаточным, для того чтобы нейросеть смогла уловить сложности связей между входом и выходом.
Метод проб и ошибок конечно хорош, но, тем не менее, необходимо иметь обоснованную отправную точку. Существуют следующие практические правила, позволяющие выбрать размерности скрытого слоя: