Новички в искусственных нейронных сетях (ИНС) могут задать несколько вопросов. Некоторые из этих вопросов включают в себя, какое количество скрытых слоев следует использовать? Сколько скрытых нейронов в каждом скрытом слое? Какова цель использования скрытых слоев / нейронов? Всегда ли увеличение количества скрытых слоев / нейронов дает лучшие результаты? Я рад сообщить, что мы смогли ответить на такие вопросы. Чтобы было ясно, ответить на них может быть слишком сложно, если решаемая проблема сложна. К концу этой статьи вы, по крайней мере, сможете понять, как на них будут отвечать, и сможете проверить себя на простых примерах.

Вступление

ИНС вдохновлена ​​биологической нейронной сетью. Для простоты в информатике он представлен в виде набора слоев. Эти слои делятся на три класса: входные, скрытые и выходные.

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

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

  1. На основе данных нарисуйте ожидаемую границу решения для разделения классов.
  2. Выразите границу решения в виде набора линий. Обратите внимание, что комбинация таких линий должна соответствовать границе решения.
  3. Количество выбранных линий представляет количество скрытых нейронов в первом скрытом слое.
  4. Чтобы соединить линии, созданные предыдущим слоем, добавляется новый скрытый слой. Обратите внимание, что новый скрытый слой добавляется каждый раз, когда вам нужно создать соединения между линиями в предыдущем скрытом слое.
  5. Количество скрытых нейронов в каждом новом скрытом слое равно количеству соединений, которые необходимо установить.

Чтобы было понятнее, давайте применим предыдущие рекомендации к ряду примеров.

Пример 1

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

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

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

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

Чтобы добавить скрытые слои, нам нужно ответить на следующие два вопроса:

  1. Какое необходимое количество скрытых слоев?
  2. Какое количество скрытых нейронов на каждом скрытом слое?

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

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

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

y = w_1*x_1 + w_2*x_2 + ⋯ + w_i*x_i + b

Где x_i - это вход, w_i - его вес, b - смещение, а y - выход. Поскольку каждый добавленный скрытый нейрон увеличивает количество весов, рекомендуется использовать наименьшее количество скрытых нейронов, которые выполняют задачу. Использование большего количества скрытых нейронов, чем требуется, добавит сложности.

Возвращаясь к нашему примеру, сказать, что ИНС построена с использованием нескольких сетей персептронов, то же самое, что сказать, что сеть построена с использованием нескольких линий.

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

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

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

До этого момента у нас есть единственный скрытый слой с двумя скрытыми нейронами. Каждый скрытый нейрон можно рассматривать как линейный классификатор, который представлен в виде линии, как на рисунке 3. Будет два выхода, по одному от каждого классификатора (т. Е. Скрытого нейрона). Но мы должны создать единый классификатор с одним выходом, представляющим метку класса, а не двумя классификаторами. В результате выходы двух скрытых нейронов должны быть объединены в один выход. Другими словами, две линии должны быть соединены другим нейроном. Результат показан на рисунке 4.

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

Зная количество скрытых слоев и их нейронов, сетевая архитектура завершена, как показано на рисунке 5.

Пример 2

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

Согласно руководящим принципам, первым шагом является построение границы принятия решения, показанной на рисунке 7 (a).

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

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

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

Конструктор модели должен выбрать схему сети. Одна возможная сетевая архитектура - построить второй скрытый слой с двумя скрытыми нейронами. Первый скрытый нейрон соединит первые две линии, а последний скрытый нейрон соединит последние две линии. Результат второго скрытого слоя. Результат второго слоя показан на рисунке 9.

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

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

Для получения дополнительной информации,

Краткое введение в глубокое обучение + решение XOR с использованием ИНС

SlideShare: https://www.slideshare.net/AhmedGadFCIT/brief-introduction-to-deep-learning-solving-xor-using-anns

YouTube: https://www.youtube.com/watch?v=EjWDFt-2n9k