что такое полносвязная нейронная сеть

Структура и принцип работы полносвязных нейронных сетей

Как я отмечал во введении, простейшая НС – персептрон, представляет собой упрощенное отражение работы биологической сети, состоящей из нейронов, соединенных между собой дендридами и аксонами:

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

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

Каждая связь между нейронами имеет определенный вес:

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть— от j-го нейрона к i-му нейрону

и, сигнал, проходя по ней, меняет свое значение в соответствии с этим весом:

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

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

В концепции персептрона функции активации выбираются пороговыми:

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Причем, везде, «да» означает +1, а нет – 0. Наша девочка так воспитана, что положительно относится к наличию квартиры и красоте, и отрицательно к тяжелому року. Она больше любит лирическую музыку. Именно поэтому веса связей для дома и красивого парня – положительные, а для рока установлено отрицательное значение. В момент знакомства, на вход ее НС поступают сигналы что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сетьв виде значений +1 – для «да» и 0 – для «нет». Затем, каждое входное значение умножается на вес синаптической связи, по которой следует к выходному нейрону. На входе формируется суммарный сигнал в виде:

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Далее, это значение проходит через функцию активации:

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

и на выходе нейрона формируется сигнал «да» или «нет».

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

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Это как раз граничное значение порога функции что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть. Симпатия появилась, но тяжелый рок чуть все не испортил.

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

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Снова на грани была сформирована симпатия. А вот если бы симпатичный парень любил рок, то было бы значение:

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

И шансов познакомиться с нашей девочкой у него не было бы никаких. Конечно, максимальные шансы имеет симпатичный парень с квартирой и равнодушный к року. В этом случае сумма равна:

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Уверенная симпатия. Вот общий принцип работы НС. Однако при такой простой структуре наша девочка не способна к сложным умозаключениям. Например, если она встречает парня с квартирой, обожающего рок, то ни за что не согласится с ним встречаться. Вне зависимости: красив он или нет. А вот если он красив, то готова пойти с ним на встречу, даже если он любит рок и не имеет квартиры. Такие более сложные выводы может позволить себе девочка с дополнительным слоем нейронов.

Здесь первый нейрон скрытого слоя будет активироваться всякий раз, когда встречается парень с квартирой и обожающий рок (красота в его работе не имеет значения – вес связи равен 0). А второй нейрон этого же слоя активируется при встрече с красивым парнем. При этом остальные два фактора не имеют значения. То есть, мы здесь получаем уже некоторое обобщение наблюдаемых факторов: красивый, остальное не важно и с квартирой, но слушающий рок. Результирующая симпатия теперь будет формироваться, если первое обобщение отсутствует, а второе – присутствует.

Например, встречается симпатичный молодой человек (второй нейрон загорается). Теперь важно, чтобы первый не включился. Для этого парень может любить рок, но не иметь квартиры (вероятно, она опасается, что при наличии постоянного жилья ей придется часто слышать ненавистный рок), или, иметь квартиру, но не любить рок. Или же, не иметь ни того, ни другого.

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

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

Вот так, в самом простом случае работает НС прямого распространения. И, чтобы вы могли со всем этим самостоятельно поиграться, я приведу пример ее реализации на языке Python:

Источник

[ В закладки ] Зоопарк архитектур нейронных сетей. Часть 1

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

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

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

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

У изображения нейросетей в виде графов есть один недостаток: граф не покажет, как сеть работает. Например, вариационный автоэнкодер (variational autoencoders, VAE) выглядит в точности как простой автоэнкодер (AE), в то время как процесс обучения у этих нейросетей совершенно разный. Сценарии использования различаются еще сильнее: в VAE на вход подается шум, из которого они получают новый вектор, в то время как AE просто находят для входных данных ближайший соответствующий вектор из тех, что они “помнят”. Добавлю еще, что этот обзор не имеет цели объяснить работу каждой из топологий изнутри (но это будет темой одной из следующих статей).

Следует отметить, что не все (хотя и большинство) из используемых здесь сокращений общеприняты. Под RNN иногда понимают рекурсивные нейронные сети (recursive neural networks), но обычно эта аббревиатура означает рекуррентную нейронную сеть (recurrent neural network). Но и это еще не все: во многих источниках вы встретите RNN как обозначение для любой рекуррентной архитектуры, включая LSTM, GRU и даже двунапраленные варианты. Иногда похожая путаница происходит с AE: VAE, DAE и им подобные могут называть просто AE. Многие сокращения содержат разное количество N в конце: можно сказать “сверточная нейронная сеть” — CNN (Convolutional Neural Network), а можно и просто “сверточная сеть” — CN.

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

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

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Сети прямого распространения (Feed forward neural networks, FF or FFNN) и перцептроны (perceptrons, P) очень просты — они передают информацию от входа к выходу. Считается, что у нейронных сетей есть слои, каждый из которых состоит из входных, скрытых или выходных нейронов. Нейроны одного слоя между собой не связаны, при этом каждый нейрон этого слоя связан с каждым нейроном соседнего слоя. Простейшая мало-мальски рабочая сеть состоит из двух входных и одного выходного нейрона и может моделировать логический вентиль — базовый элемент цифровой схемы, выполняющий элементарную логическую операцию. FFNN обычно обучают методом обратного распространения ошибки, подавая модели на вход пары входных и ожидаемых выходных данных. Под ошибкой обычно понимаются различные степени отклонения выходных данных от исходных (например, среднеквадратичное отклонение или сумма модулей разностей). При условии, что сеть обладает достаточным количеством скрытых нейронов, теоретически она всегда сможет установить связь между входными и выходными данными. На практике использование сетей прямого распространения ограничено, и чаще они используются совместно с другими сетями.

Rosenblatt, Frank. “The perceptron: a probabilistic model for information storage and organization in the brain.” Psychological review 65.6 (1958): 386.

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Сети радиально-базисных функций (radial basis function, RBF) — это FFNN с радиально-базисной функцией в качестве функции активации. Больше здесь нечего добавить. Мы не хотим сказать, что она не используется, но большинство FFNN с другими функциями активации обычно не выделяют в отдельные группы.

Broomhead, David S., and David Lowe. Radial basis functions, multi-variable functional interpolation and adaptive networks. No. RSRE-MEMO-4148. ROYAL SIGNALS AND RADAR ESTABLISHMENT MALVERN (UNITED KINGDOM), 1988.

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Hopfield, John J. “Neural networks and physical systems with emergent collective computational abilities.” Proceedings of the national academy of sciences 79.8 (1982): 2554-2558.

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Цепи Маркова (Markov Chains, MC или discrete time Markov Chain, DTMC) — своего рода предшественники машин Больцмана (BM) и сетей Хопфилда (HN). В цепях Маркова мы задаем вероятности перехода из текущего состояния в соседние. Кроме того, это цепи не имеют памяти: последующее состояние зависит только от текущего и не зависит от всех прошлых состояний. Хотя цепь Маркова нельзя назвать нейронной сетью, она близка к ним и формирует теоретическую основу для BM и HN. Цепи Маркова также не всегда являются полносвязными.

Hayes, Brian. “First links in the Markov chain.” American Scientist 101.2 (2013): 252.

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Машины Больцмана (Boltzmann machines, BM) во многом похожи на сети Хопфилда, но в них некоторые нейроны помечены как входные, а некоторые остаются скрытыми. Входные нейроны становятся выходными, когда все нейроны в сети обновляют свои состояния. Сначала весовые коэффициенты присваиваются случайным образом, затем происходит обучение методом обратного распространения, или в последнее время все чаще с помощью алгоритма contrastive divergence (когда градиент вычисляется при помощи марковской цепи). BM — стохастическая нейронная сеть, так как в обучении задействована цепь Маркова. Процесс обучения и работы здесь почти такой же, как в сети Хопфилда: нейронам присваивают определенные начальные состояния, а затем цепь начинает свободно функционировать. В процессе работы нейроны могут принимать любое состояние, и мы постоянно перемещаемся между входными и скрытыми нейронами. Активация регулируется значением общей температуры, при понижении которой сокращается и энергия нейронов. Сокращение энергии вызывает стабилизацию нейронов. Таким образом, если температура задана верно, система достигает равновесия.

Hinton, Geoffrey E., and Terrence J. Sejnowski. “Learning and releaming in Boltzmann machines.” Parallel distributed processing: Explorations in the microstructure of cognition 1 (1986): 282-317.

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Ограниченная машина Больцмана (Restricted Boltzmann machine, RBM), как ни удивительно, очень похожа на обычную машину Больцмана. Основное отличие RBM от BM в том, что они ограничены, и следовательно, более удобны в использовании. В них каждый нейрон не связан с каждым, а только каждая группа нейронов соединена с другими группами. Входные нейроны не связаны между собой, нет соединений и между скрытыми нейронами. RBM можно обучать так же, как и FFPN, за небольшим отличием: вместо передачи данных вперед и последующего обратного распространения ошибки, данные передаются вперед и назад (к первому слою), а затем применяется прямое и обратное распространение (forward-and-back propagation).

Smolensky, Paul. Information processing in dynamical systems: Foundations of harmony theory. No. CU-CS-321-86. COLORADO UNIV AT BOULDER DEPT OF COMPUTER SCIENCE, 1986.

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Автоэнкодеры (Autoencoders, AE) — нечто подобное FFNN, это скорее другой способ использования FFNN, чем принципиально новая архитектура. Основная идея автоэнкодеров — автоматическое кодирование (как при сжатии, а не при шифровании) информации, отсюда и название. Сеть напоминает по форме песочные часы, так как скрытый слой меньше, чем входной и выходной; к тому же она симметрична относительно средних слоев (одного или двух, в зависимости от четности/нечетности общего количества слоев). Самый маленьких слой почти всегда средний, в нем информация максимально сжата. Все, что расположено до середины — кодирующая часть, выше середины — декодирующая, а в середине (вы не поверите) — код. AE обучают методом обратного распространения ошибки, подавая входные данные и задавая ошибку равной разницу между входом и выходом. AE можно построить симметричными и с точки зрения весов, выставляя кодирующие веса равными декодирующим.

Bourlard, Hervé, and Yves Kamp. “Auto-association by multilayer perceptrons and singular value decomposition.” Biological cybernetics 59.4-5 (1988): 291-294.

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Разреженный автоэнкодер (Sparse autoencoder, AE) — в некоторой степени антипод AE. Вместо того чтобы обучать сеть представлять блоки информации на меньшем “пространстве”, мы кодируем информацию так, чтобы она занимала больше места. И вместо того чтобы заставлять систему сходиться в центре, а затем обратно расширяться до исходного размера, мы, наоборот, увеличиваем средние слои. Сети этого типа могут применяться для извлечения множества маленьких деталей из набора данных. Если бы мы стали обучать SAE тем же методом, что и AE, мы получили бы в большинстве случаев абсолютно бесполезную сеть, где на выходе получается ровно то же, что и на входе. Чтобы этого избежать, мы вместо входных данных выдаем на выходе входные данные плюс штраф за количество активированных нейронов в скрытом слое. Это в какой-то мере напоминает биологическую нейронную сеть (spiking neural network), в которой не все нейроны постоянно находятся в возбужденном состоянии.

Marc’Aurelio Ranzato, Christopher Poultney, Sumit Chopra, and Yann LeCun. “Efficient learning of sparse representations with an energy-based model.” Proceedings of NIPS. 2007.

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Архитектура вариационных автоэнкодеров (VAE) такая же, как и у обычных, но обучают их другому — приблизительному вероятностному распределению входных образцов. Это в какой-то степени возвращение к истокам, так как VAE немножко ближе к машинам Больцмана. Тем не менее, они опираются на Байесовскую математику касательно вероятностных суждений и независимости, которые интуитивно понятны, но требуют сложных вычислений. Базовый принцип можно сформулировать так: принимать в расчет степень влияния одного события на другое. Если в одном месте происходит определенное событие, а другое событие случается где-то еще, то эти события вовсе не обязательно связаны. Если они не связаны, то распространение ошибки должно это учитывать. Это полезный подход, так как нейронные сети — своего рода огромные графы, и иногда бывает полезно исключить влияние одних нейронов на другие, проваливаясь в нижние слои.

Kingma, Diederik P., and Max Welling. “Auto-encoding variational bayes.” arXiv preprint arXiv:1312.6114 (2013).

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Шумоподавляющие (помехоустойчивые) автоэнкодеры (Denoising autoencoders, DAE) — это такое AE, которым на подаем на вход не просто данные, а данные с шумом (например, делая картинку более зернистой). Тем не менее, ошибку мы вычисляем прежним методом, сравнивая выходной образец с оригиналом без шума. Таким образом, сеть запоминает не мелкие детали, а крупные черты, так как запоминание небольших деталей, постоянно меняющихся из-за шума, часто не приводит никуда.

Vincent, Pascal, et al. “Extracting and composing robust features with denoising autoencoders.” Proceedings of the 25th international conference on Machine learning. ACM, 2008.

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Глубокие сети доверия (Deep belief networks, DBN) — сети, представляющие собой композицию нескольких RBM или VAE. Такие сети показали себя эффективно обучаемыми одна за другой, когда каждая сеть должна научиться кодировать предыдущую. Этот метод также называют “жадное обучение”, он заключается в принятии оптимального на данный момент решение, чтобы получить подходящий, но, возможно, не оптимальный результат. DBN могут обучаться методами contrastive divergence или обратным распространением ошибки и учатся представлять данные в виде вероятностной модели, в точности как RBM или VAE. Однажды обученную и приведенную к стационарному состоянию модель можно использовать для генерации новых данных.

Bengio, Yoshua, et al. “Greedy layer-wise training of deep networks.” Advances in neural information processing systems 19 (2007): 153.

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Свёрточные нейронные сети (convolutional neural networks, CNN) и глубокие свёрточные нейронные сети (deep convolutional neural networks, DCNN) кардинально отличаются от других сетей. Они используются в основном для обработки изображений, иногда для аудио и других видов входных данных. Типичным способом применения CNN является классификация изображений: если на вход подается изображение кошки, сеть выдаст «кошка», если картинка собаки — «собака». Такие сети обычно используют «сканер», не обрабатывающий все данные за один раз. Например, если у вас есть изображение 200х200, вы захотите строить слой сети из 40 тысяч узлов. Вместо это сеть считает квадрат размера 20х20 (обычно из левого верхнего угла), затем сдвинется на 1 пиксель и считает новый квадрат, и т.д. Заметьте, что мы не разбиваем изображение на квадраты, а скорее ползем по нему. Эти входные данные затем передаются через свёрточные слои, в которых не все узлы соединены между собой. Вместо этого каждый узел соединен только со своими ближайшими соседями. Эти слои имеют свойство сжиматься с глубиной, причём обычно они уменьшаются на какой-нибудь из делителей количества входных данных (например, 20 узлов в следующем слое превратятся в 10, в следующем — в 5), часто используются степени двойки. Кроме сверточных слоев есть также так называемые слои объединения (pooling layers). Объединение — это способ уменьшить размерность получаемых данных, например, из квадрата 2х2 выбирается и передается наиболее красный пиксель. На практике к концу CNN прикрепляют FFNN для дальнейшей обработки данных. Такие сети называются глубокими (DCNN), но названия их обычно взаимозаменяемы.

LeCun, Yann, et al. “Gradient-based learning applied to document recognition.” Proceedings of the IEEE 86.11 (1998): 2278-2324.

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Развёртывающие нейронные сети (deconvolutional networks, DN), также называемые обратными графическими сетями, — это свёрточные нейронные сети наоборот. Представьте, что вы передаёте сети слово “кошка” и обучаете ее генерировать картинки кошек путем сравнения получаемых картинок с реальными изображениями кошек. DNN тоже можно объединять с FFNN. Стоит заметить, что в большинстве случаев сети передаётся не строка, а бинарный классифицирующий вектор: например, — это кошка, — собака, а — и кошка, и собака. Вместо слоев объединения, которые часто встречаются в CNN, здесь присутствуют аналогичные обратные операции, обычно интерполяцию или экстраполяцию.

Zeiler, Matthew D., et al. “Deconvolutional networks.” Computer Vision and Pattern Recognition (CVPR), 2010 IEEE Conference on. IEEE, 2010.

wunderfund.io — молодой фонд, который занимается высокочастотной алготорговлей. Высокочастотная торговля — это непрерывное соревнование лучших программистов и математиков всего мира. Присоединившись к нам, вы станете частью этой увлекательной схватки.

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

Источник

Свёрточная нейронная сеть с нуля. Часть 4. Полносвязный слой

Время чтения: 10 минут

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

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

Что такое полносвязный слой

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Связь с матрицами

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Зачем нужен полносвязный слой

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

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Класс матрица

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

В конструкторе сохраним переданные размеры и создадим векторы с заданным числом элементов:

Перегрузим оператор круглые скобки для индексации:

Создадим класс для слоя

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

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

Создание слоя

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

Получение типа активационной функции

Так как мы решили (почему-то) передавать тип функции активации в виде строки, а внутри класса работаем со значением перечисления ActivationType, нам необходимо описать метод, получающий значение перечисления по введённой строке. В нём также нужно будет проверить, что введённая строка действительно описывает одну из функций активации, а не какой-нибудь мусор. Для этого мы будем бросать исключение, если ни одна из ожидаемых функций активации не подошла:

Инициализация весовых коэффициентов

Для инициализации обучаемых параметров нужно пройтись по всем значениям матрицы коэффициентов и задать им случайные значения. Исключение составляют веса смещения — им мы зададим значения 0.01:

Прямое распространение

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

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

Обратное распространение ошибки

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

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

Обновление весовых коэффициентов

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

Тестирование

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

Теперь же, имея возможность задать свои собственные веса слою проверим работу прямого и обратного распространения. Для этого, аналогично свёрточному слою, мы написали тестирующую функцию, но ввиду её тривиальности приведём лишь данные для тестирования и ожидаемые результаты. Для проверки создадим полносвязный слой, принимающий на входе тензор размером 1х1х8, и состоящий из 4 нейронов и использующий активационную функцию ReLU. Таким образом размер выходного тензора будет 1х1х4:

Если всё сделано правильно, то на выходе должен получиться следующий тензор:

Для обратного распространения зададим следующие градиенты:

Выполнив обратное распространение ошибки слой должен вернуть такой тензор:

Итоги

Мы познакомились с ещё одним слоем свёрточной нейронной сети. И хотя этот слой не самый главный в сети, он всё равно занимает второе место по значимости. На текущий момент у нас в распоряжении находятся уже 4 типа слоёв, которые позволяют перейти к самой главной части — созданию и обучению нашей собственной свёрточной сети.

что такое полносвязная нейронная сеть. Смотреть фото что такое полносвязная нейронная сеть. Смотреть картинку что такое полносвязная нейронная сеть. Картинка про что такое полносвязная нейронная сеть. Фото что такое полносвязная нейронная сеть

Программист, сооснователь programforyou.ru, в постоянном поиске новых задач и алгоритмов

Языки программирования: Python, C, C++, Pascal, C#, Javascript

Выпускник МГУ им. М.В. Ломоносова

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *