Типы нейронных сетей


Краткий обзор популярных нейронных сетей / Habr

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

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

Начну с классики.


Многослойный перцептрон
Самая известная и очень старая архитектура, в которой идут подряд несколько слоев нейронов — входной, один или несколько скрытых слоев, и выходной слой. Почти всегда обучается методом обратного распространения ошибки — что автоматически означает, что мы должны предоставить для обучения набор пар «входной вектор — правильный выход». Тогда входной вектор отправится на вход сети, последовательно будут рассчитаны состояния всех промежуточных нейронов, и на выходе образуется выходной вектор, который мы и сравним с правильным. Расхождение даст нам ошибку, которую можно распространить обратно по связям сети, вычислить вклад в итоговую ошибку каждого нейрона, и скорректировать его веса, чтобы ее исправить. Повторив эту процедуру много тысяч раз, возможно выйдет обучить сеть.
Сеть такого типа обычно очень хорошо справляется с задачами, где:
1. ответ действительно зависит только от того, что мы даем на вход сети, и никак не зависит от истории входов (т.е. это не динамический процесс, или, по крайней мере, мы дали на вход исчерпывающую информацию об этом процессе в форме, пригодной для обработки сетью).
2. ответ не зависит/слабо зависит от высоких степеней и/или произведений параметров — функции этого типа сеть строить почти не умеет.
3. в наличии есть достаточно много примеров (желательно иметь не менее сотни примеров на каждую связь сети), или у вас есть большой опыт борьбы с эффектом специализации. Это связано с тем, что имея много коэффициентов, сеть может банально запомнить много конкретных примеров, и выдавать на них отличный результат — но ее прогнозы не будут иметь ничего общего с реальностью в случае, если дать на вход примеры не из обучающей выборки.

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

Рекуррентный перцептрон
На первый взгляд похож на обычный перцептрон, единственное существенное отличие состоит в том, что его выходы попадают ему же на входы, и участвуют в обработке уже следующего входного вектора. То есть, в случае рекуррентного перцептрона имеет место не набор отдельных, ничем не связанных образов, а некоторый процесс, и значение имеют не только сами входы, но и то, в какой последовательности они поступают. Из-за этого возникают отличия в методе обучения — используется то же самое обратное распространение ошибки, но для того, чтобы ошибка попала по рекуррентной связи в прошлое, используются разные ухищрения (если подойти к задаче «в лоб» — то возникнет проблема ухода ошибки на бесконечное число циклов назад). В остальном же ситуация похожа на обычный перцептрон — для обучения нужно иметь достаточно длинную последовательность пар вход-выход, которую нужно много раз прогнать через сеть, чтобы ее обучить (или же иметь под рукой мат. модель искомого процесса, которую можно гонять во всевозможных условиях, и в реалтайме давать результаты сети для обучения).
Сеть такого типа обычно хорошо решает задачи управления динамическими процессами (начиная от классической задачи стабилизации перевернутого маятника, и до любых систем, которыми вообще хоть как-то получается управлять), предсказания динамических процессов, кроме курса валют :), и вообще всего, где помимо явно наблюдаемого входа у системы есть некоторое внутреннее состояние, которое не совсем понятно как использовать.

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

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

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

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

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

P.S. я намеренно не затрагивал сеть Кохонена и подобные ей архитектуры, т.к. не могу сказать о них ничего нового, и на эту тему здесь уже есть отличная статья: habrahabr.ru/blogs/artificial_intelligence/51372

UPD: а еще здесь есть отличная статья о сверточных сетях, суть которых состоит в обучении набора ядер, с которыми сворачивается изображение, и применения нескольких слоев такой фильтрации последовательно: habrahabr.ru/blogs/artificial_intelligence/74326

habr.com

Классификация и типы нейронных сетей

Можно провести следующую классификацию нейронных сетей:

Характер обучения

Классификация нейронных сетей по характеру обучения делит их на:

  • нейронные сети, использующие обучение с учителем;
  • нейронные сети, использующие обучение без учителя.

Рассмотрим это подробнее.

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

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

Настройка весов

  • сети с фиксированными связями – весовые коэффициенты нейронной сети выбираются сразу, исходя из условий задачи;
  • сети с динамическими связями – для них в процессе обучения происходит настройка синаптических весов.

Тип входной информации

  • аналоговая – входная информация представлена в форме действительных чисел;
  • двоичная – вся входная информация в таких сетях представляется в виде нулей и единиц.

Применяемая модель нейронной сети

Сети прямого распространения – все связи направлены строго от входных нейронов к выходным. К таким сетям относятся, например: простейший персептрон (разработанный Розенблаттом) и многослойный персептрон.

Реккурентные нейронные сети – сигнал с выходных нейронов или нейронов скрытого слоя частично передается обратно на входы нейронов входного слоя.

Радиально базисные функции – вид нейронной сети, имеющий скрытый слой из радиальных элементов и выходной слой из линейных элементов. Сети этого типа довольно компактны и быстро обучаются. Предложены в работах Broomhead and Lowe (1988) и Moody and Darkin (1989). Радиально базисная сеть обладает следующими особенностями: один скрытый слой, только нейроны скрытого слоя имеют нелинейную активационную функцию и синаптические веса входного и скрытого слоев равны единицы.

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

Источник

Типы нейронных сетей

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

Стоит заметить, что хотя большинство этих аббревиатур общеприняты, есть и исключения. Под RNN иногда подразумевают рекурсивную нейронную сеть, но обычно имеют в виду рекуррентную. Также можно часто встретить использование аббревиатуры RNN, когда речь идёт про любую рекуррентную НС. Автокодировщики также сталкиваются с этой проблемой, когда вариационные и шумоподавляющие автокодировщики (VAE, DAE) называют просто автокодировщиками (AE). Кроме того, во многих аббревиатурах различается количество букв “N” в конце, поскольку в каких-то случаях используется “neural network”, а в каких-то — просто “network”.

Часть 1: Базовые архитектуры

Нейронные сети прямого распространения (feed forward neural networks, FF или FFNN) и перцептроны (perceptrons, P) очень прямолинейны, они передают информацию от входа к выходу. Нейронные сети часто описываются в виде слоёного торта, где каждый слой состоит из входных, скрытых или выходных клеток. Клетки одного слоя не связаны между собой, а соседние слои обычно полностью связаны. Самая простая нейронная сеть имеет две входных клетки и одну выходную, и может использоваться в качестве модели логических вентилей. FFNN обычно обучается по методу обратного распространения ошибки, в котором сеть получает множества входных и выходных данных. Этот процесс называется обучением с учителем, и он отличается от обучения без учителя тем, что во втором случае множество выходных данных сеть составляет самостоятельно. Вышеупомянутая ошибка является разницей между вводом и выводом. Если у сети есть достаточное количество скрытых нейронов, она теоретически способна смоделировать взаимодействие между входным и выходными данными. Практически такие сети используются редко, но их часто комбинируют с другими типами для получения новых.

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

Нейронная сеть Хопфилда (Hopfield network, HN) — это полносвязная нейронная сеть с симметричной матрицей связей. Во время получения входных данных каждый узел является входом, в процессе обучения он становится скрытым, а затем становится выходом. Сеть обучается так: значения нейронов устанавливаются в соответствии с желаемым шаблоном, после чего вычисляются веса, которые в дальнейшем не меняются. После того, как сеть обучилась на одном или нескольких шаблонах, она всегда будет сводиться к одному из них (но не всегда — к желаемому). Она стабилизируется в зависимости от общей “энергии” и “температуры” сети. У каждого нейрона есть свой порог активации, зависящий от температуры, при прохождении которого нейрон принимает одно из двух значений (обычно -1 или 1, иногда 0 или 1). Такая сеть часто называется сетью с ассоциативной памятью; как человек, видя половину таблицы, может представить вторую половину таблицы, так и эта сеть, получая таблицу, наполовину зашумленную, восстанавливает её до полной.

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

Машина Больцмана (Boltzmann machine, BM) очень похожа на сеть Хопфилда, но в ней некоторые нейроны помечены как входные, а некоторые — как скрытые. Входные нейроны в дальнейшем становятся выходными. Машина Больцмана — это стохастическая сеть. Обучение проходит по методу обратного распространения ошибки или по алгоритму сравнительной расходимости. В целом процесс обучения очень похож на таковой у сети Хопфилда.

Ограниченная машина Больцмана (restricted Boltzmann machine, RBM) удивительно похожа на машину Больцмана и, следовательно, на сеть Хопфилда. Единственной разницей является её ограниченность. В ней нейроны одного типа не связаны между собой. Ограниченную машину Больцмана можно обучать как FFNN, но с одним нюансом: вместо прямой передачи данных и обратного распространения ошибки нужно передавать данные сперва в прямом направлении, затем в обратном. После этого проходит обучение по методу прямого и обратного распространения ошибки.

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

Разреженный автокодировщик (sparse autoencoder, SAE) — в каком-то смысле противоположность обычного. Вместо того, чтобы обучать сеть отображать информацию в меньшем “объёме” узлов, мы увеличиваем их количество. Вместо того, чтобы сужаться к центру, сеть там раздувается. Сети такого типа полезны для работы с большим количеством мелких свойств набора данных. Если обучать сеть как обычный автокодировщик, ничего полезного не выйдет. Поэтому кроме входных данных подаётся ещё и специальный фильтр разреженности, который пропускает только определённые ошибки.

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

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

Сеть типа “deep belief” (deep belief networks, DBN) — это название, которое получил тип архитектуры, в которой сеть состоит из нескольких соединённых RBM или VAE. Такие сети обучаются поблочно, причём каждому блоку требуется лишь уметь закодировать предыдущий. Такая техника называется “жадным обучением”, которая заключается в выборе локальных оптимальных решений, не гарантирующих оптимальный конечный результат. Также сеть можно обучить (методом обратного распространения ошибки) отображать данные в виде вероятностной модели. Если использовать обучение без учителя, стабилизированную модель можно использовать для генерации новых данных.

Свёрточные нейронные сети (convolutional neural networks, CNN) и глубинные свёрточные нейронные сети (deep convolutional neural networks, DCNN) сильно отличаются от других видов сетей. Обычно они используются для обработки изображений, реже для аудио. Типичным способом применения CNN является классификация изображений: если на изображении есть кошка, сеть выдаст “кошка”, если есть собака — “собака”. Такие сети обычно используют “сканер”, не парсящий все данные за один раз. Например, если у вас есть изображение 200×200, вы не будете сразу обрабатывать все 40 тысяч пикселей. Вместо это сеть считает квадрат размера 20 x 20 (обычно из левого верхнего угла), затем сдвинется на 1 пиксель и считает новый квадрат, и т.д. Эти входные данные затем передаются через свёрточные слои, в которых не все узлы соединены между собой. Эти слои имеют свойство сжиматься с глубиной, причём часто используются степени двойки: 32, 16, 8, 4, 2, 1. На практике к концу CNN прикрепляют FFNN для дальнейшей обработки данных. Такие сети называются глубинными (DCNN).

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

Источник

Часть 2: Продвинутые конфигурации

Глубинные свёрточные обратные графические сети (deep convolutional inverse graphics networks, DCIGN) названы слегка некорректно, поскольку они по сути являются вариационными автокодировщиками, кодирующая и декодирующая части которых представлены свёрточной и развёртывающей НС соответственно. Сети такого типа моделируют свойства в виде вероятностей, поэтому их можно научить создавать картинку с собакой и кошкой, даже если сеть видела только картинки, на которых было только одно из животных. Возможно и удаление одного из двух объектов. Также были созданы сети, которые могли менять источник освещения и вращать объект. Сети такого типа обычно обучают методом обратного распространения ошибки.


Генеративные состязательные сети (generative adversarial networks, GAN) — это сети другого вида, они похожи на близнецов. Такие сети состоят из любых двух (обычно из FF и CNN), одна из которых контент генерирует, а другая — оценивает. Сеть-дискриминатор получает обучающие или созданные генератором данные. Степень угадывания дискриминатором источника данных в дальнейшем участвует в формировании ошибки. Таким образом, возникает состязание между генератором и дискриминатором, где первый учится обманывать первого, а второй — раскрывать обман. Обучать такие сети весьма тяжело, поскольку нужно не только обучить каждую из них, но и настроить баланс.


Рекуррентные нейронные сети (recurrent neural networks, RNN) — это сети типа FFNN, но с особенностью: нейроны получают информацию не только от предыдущего слоя, но и от самих себя предыдущего прохода. Это означает, что порядок, в котором вы подаёте данные и обучаете сеть, становится важным. Большой сложностью сетей RNN является проблема исчезающего (или взрывного) градиента, которая заключается в быстрой потере информации с течением времени. Конечно, это влияет лишь на веса, а не состояния нейронов, но ведь именно в них накапливается информация. Обычно сети такого типа используются для автоматического дополнения информации.


Сети с долгой краткосрочной памятью (long short term memory, LSTM) стараются решить вышеупомянутую проблему потери информации, используя фильтры и явно заданную клетку памяти. У каждого нейрона есть клетка памяти и три фильтра: входной, выходной и забывающий. Целью этих фильтров является защита информации. Входной фильтр определяет, сколько информации из предыдущего слоя будет храниться в клетке. Выходной фильтр определяет, сколько информации получат следующие слои. Ну а забывающий фильтр, каким бы странным не казался, также выполняет полезную функцию: например, если сеть изучает книгу и переходит на новую главу, какие-то символы из старой можно забыть. Такие сети способны научиться создавать сложные структуры, например, писать как Шекспир или сочинять простую музыку, но и ресурсов они потребляют немало.


Управляемые рекуррентные нейроны (gated recurrent units, GRU) — это небольшая вариация предыдущей сети. У них на один фильтр меньше, и связи реализованы иначе. Фильтр обновления определяет, сколько информации останется от прошлого состояния и сколько будет взято из предыдущего слоя. Фильтр сброса работает примерно как забывающий фильтр.


Нейронные машины Тьюринга (neural Turing machines, NTM) можно рассматривать как абстрактную модель LSTM и попытку показать, что на самом деле происходит внутри нейронной сети. Ячейка памяти не помещена в нейрон, а размещена отдельно с целью объединить эффективность обычного хранилища данных и мощь нейронной сети. Собственно, поэтому такие сети и называются машинами Тьюринга — в силу способности читать и записывать данные и менять состояние в зависимости от прочитанного они являются тьюринг-полными.


Двунаправленные RNN, LSTM и GRU (bidirectional recurrent neural networks, bidirectional long / short term memory networks и bidirectional gated recurrent units, BiRNN, BiLSTM и BiGRU) не показаны в таблице, поскольку они ничем не отличаются от своих однонаправленных вариантов. Разница заключается в том, что эти сети используют не только данные из «прошлого», но и из «будущего». Например, обычную сеть типа LSTM обучают угадывать слово «рыба», подавая буквы по одной, а двунаправленную — подавая ещё и следующую букву из последовательности. Такие сети способны, например, не только расширять изображение по краям, но и заполнять дыры внутри.


Глубинные остаточные сети (deep residual networks, DRN) — это очень глубокие сети типа FFNN с дополнительными связями между отделёнными друг от друга слоями. Такие сети можно обучать на шаблонах глубиной аж до 150 слоёв — гораздо больше, чем можно было бы ожидать. Однако, было показано, что эти сети мало чем отличаются от рекуррентных, и их часто сравнивают с сетями LSTM.


Нейронная эхо-сеть (echo state networks, ESN) — это ещё одна разновидность рекуррентных сетей. Её особенностью является отсутствие сформированных слоёв, т.е. связи между нейронами случайны. Соответственно, метод обратного распространения ошибки не срабатывает. Вместо этого нужно подавать входных данные, передавать их по сети и обновлять нейроны, наблюдая за выходными данными.


Метод экстремального обучения (extreme learning machines, ELM) — это, по сути, сеть типа FFNN, но со случайными связями. Они очень похожи на сети  LSM и ESN, но используются как FFNN. Так происходит не только потому, что они не рекуррентны, но и потому, что их можно обучать просто методом обратного распространения ошибки.


Метод неустойчивых состояний (liquid state machines, LSM) похож на эхо-сеть, но есть существенное отличие: сигмоидная активация заменена пороговой функцией, а каждый нейрон является накопительной ячейкой памяти. Таким образом, при обновлении нейрона его значение не становится равным сумме соседей, а прибавляется само к себе, и при достижении порога сообщается другим нейронам.


Метод опорных векторов (support vector machines, SVM) находит оптимальные решения задачи оптимизации. Классическая версия способна категоризировать линейно разделяемые данные: например, различать изображения с котом Томом и с котом Гарфилдом. В процессе обучения сеть как бы размещает все данные на 2D-графике и пытается разделить данные прямой линией так, чтобы с каждой стороны были данные только одного класса и чтобы расстояние от данные до линии было максимальным. Используя трюк с ядром, можно классифицировать данные размерности n. Что характерно, этот метод не всегда рассматривается как нейронная сеть.


И наконец, нейронные сети Кохонена (Kohonen networks, KN), также известные как самоорганизующиеся карты (self organising (feature) maps, SOM, SOFM), завершают наш список. Эти сети используют соревновательное обучение для классификации данных без учителя. Сети подаются входные данные, после чего сеть определяет, какие из нейронов максимально совпадают с ними. После этого эти нейроны изменяются для ещё большей точности совпадения, в процессе двигая за собой соседей. Иногда карты Кохонена также не считаются нейронными сетями.

Источник

datascientist.one

Нейронные сети, фундаментальные принципы работы, многообразие и топология / Habr

Нейронные сети совершили революцию в области распознавания образов, но из-за неочевидной интерпретируемости принципа работы, их не используют в таких областях, как медицина и оценка рисков. Требуется наглядное представление работы сети, которое сделает её не чёрным ящиком, а хотя бы «полупрозрачным». Cristopher Olah, в работе «Neural Networks, Manifolds, and Topology» наглядно показал принципы работы нейронной сети и связал их с математической теорией топологии и многообразия, которая послужила основой для данной статьи. Для демонстрации работы нейронной сети используются низкоразмерные глубокие нейронные сети.

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

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

Рассмотрим принцип работы сети на примере

Начнем с простого набора данных — двух кривых на плоскости. Задача сети научится классифицировать принадлежность точек кривым.

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

Начнем с простейшего класса нейронной сети, с одним входным и выходным слоем. Такая сеть пытается отделить два класса данных, разделив их линией.

Такая сеть не используется на практике. Современные нейронные сети обычно имеют несколько слоёв между их входом и выходом, называемыми «скрытыми» слоями.

Схема простой сети


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

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

В предыдущей визуализации рассмотрены данные в «сыром» представлении. Вы можете представить это, посмотрев на входной слой. Теперь, рассмотрим его после того, как он будет преобразован первым слоем. Вы можете представить это, посмотрев на скрытый слой.
Каждое измерение соответствует активации нейрона в слое.

Скрытый слой обучается на представлении, так чтобы данные были линейно разделимы.

Непрерывная визуализация слоев

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

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

Рассмотрим слой tanh для конкретного примера. Tanh-слой tanh (Wx + b) состоит из:

  1. Линейного преобразование «весовой» матрицей W
  2. Перевод с помощью вектора b
  3. Точечное применение tanh.

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

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

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

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

Топология слоев tang


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

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

Теорема

Слои с N входами и N выводами являются гомоморфизмами, если весовая матрица W не является вырожденной. (Нужно быть осторожным в отношении домена и диапазона.)

Доказательство:1. Предположим, что W имеет ненулевой детерминант. Тогда это биективная линейная функция с линейным обратным. Линейные функции непрерывны. Итак, умножение на W является гомеоморфизмом.
2. Отображения — гомоморфизмы
3. tanh (и сигмоиды и softplus, но не ReLU) являются непрерывными функциями с непрерывными обратными. Они являются биекциями, если мы внимательно относимся к области и диапазону, который мы рассматриваем. Применение их поточечно, является гомоморфизмом.

Таким образом, если W имеет ненулевой детерминант, слой является гомеоморфным.


Топология и классификация


Рассмотрим двухмерный набор данных с двумя классами A, B⊂R2:

А = {х | d (х, 0) <1/3}

В = {х | 2/3 <d (х, 0) <1}

A красный, B синий

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

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

Для этой сети обучения недостаточно для достижения стопроцентного результата.
Алгоритм попадает в непроизводительный локальный минимум, но способен достичь ~ 80% точности классификации.

В этом примере был только один скрытый слой, но он не срабатывал.
Утверждение. Либо каждый слой является гомоморфизмом, либо весовая матрица слоя имеет определитель 0.

Доказательство:

Если это гомоморфизм, то A по-прежнему окружен B, и линия не может их разделить. Но предположим, что она имеет детерминант 0: тогда набор данных коллапсирует на некоторой оси. Поскольку мы имеем дело с чем-то, гомеоморфным исходному набору данных, A окруженных B, и коллапсирование на любой оси означает, что мы будем иметь некоторые точки из A и B смешенными, и что приводит к невозможности для различения.


Если мы добавим третий скрытый элемент, проблема станет тривиальной. Нейронная сеть узнает следующее представление:

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

A=[−1/3,1/3]
B=[−1,−2/3]∪[2/3,1]
Без использования слоя из двух или более скрытых элементов мы не можем классифицировать этот набор данных. Но, если мы используем сеть с двумя элементами, мы научимся представлять данные как хорошую кривую, которая позволяет нам разделять классы с помощью линии:

Что происходит? Один скрытый элемент учится срабатывать, когда x> -1/2, и один учится срабатывать, когда x> 1/2. Когда первый срабатывает, но не второй, мы знаем, что мы находимся в A.

Гипотеза многообразия


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

Многомерная гипотеза состоит в том, что естественные данные образуют низкоразмерные многообразия в пространстве имплантации. Есть и теоретические [1], и экспериментальные[2] причины полагать, что это правда. Если это так, то задача алгоритма классификации состоит в том, чтобы отделить пучок запутанных многообразий.

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

Связи и гомотопии


Еще один интересный набор данных — два связанных тора A и B.

Как и предыдущие наборы данных, которые мы рассмотрели, этот набор данных не может быть разделен без использования n + 1 измерений, а именно четвёртого измерения.

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

Относительно простая бессвязность.

Если нейронная сеть, использующая слои только с тремя юнитами, может ее классифицировать, то она является бессвязной. (Вопрос: Может ли все бессвязности классифицироваться по сети только с тремя бессвязностями, теоретически?)

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

Формально, изотопия окружающего пространства между многообразиями А и В является непрерывной функцией F: [0,1] × X → Y такая, что каждый Ft является гомеоморфизмом из X в его диапазон, F0 является тождественной функцией, а F1 отображает A в B. Т.е. Ft непрерывно переходит из отображения A в себя, к отображению A в B.

Теорема: существует изотопия окружающего пространства между входом и представлением сетевого уровня, если: a) W не является вырожденной, b) мы готовы перенести нейроны в скрытый слой и c) имеется более 1 скрытого элемента.

Доказательство:

1. Самая сложная часть — линейное преобразование. Чтобы это было возможно, нам нужно, чтобы W обладала положительным определителем. Наша предпосылка заключается в том, что она не равна нулю, и мы можем перевернуть знак, если он отрицательный, переключив два скрытых нейрона, и поэтому можем гарантировать, что определитель положителен. Пространство положительных детерминантных матриц является связным, поэтому существует p: [0,1] → GLn ®5 такое, что p (0) = Id и p (1) = W. Мы можем непрерывно переходить от функции тождества к W-преобразованию с помощью функции x → p (t) x, умножая x в каждой точке времени t на непрерывно переходящую матрицу p (t).
2. Мы можем непрерывно переходить от функции тождества к b-отображению с помощью функции x → x + tb.
3. Мы можем непрерывно переходить от тождественной функции к поточечному использованию σ с функцией: x → (1-t) x + tσ (x)


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

Связи и узлы являются одномерными многообразиями, но нам нужны 4 измерения, чтобы сети могли распутать все из них. Точно так же может потребоваться еще более высоко размерное пространство, чтобы иметь возможность разложить n-мерные многообразия. Все n-мерные многообразия могут быть разложены в 2n + 2 размерностях. [3]

Легкий выход


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

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

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

Улучшенные слои для манипулирования многообразиями?

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

Возможно, имеет смысл иметь совсем другой слой, который мы можем использовать в композиции с более традиционными?

Перспективным является изучение векторного поля с направлением, в котором мы хотим сдвинуть многообразие:

А затем деформируем пространство, основанное на векторном поле:

Можно было бы изучить векторное поле в неподвижных точках (просто взять некоторые фиксированные точки из набора тестовых данных для использования в качестве якорей) и каким-то образом интерполировать.

Векторное поле выше имеет вид:

Р (х) =( v0f0 (х) + v1f1 (х) )/( 1 + 0 (х) + f1 (х))


Где v0 и v1 — векторы, а f0 (x) и f1 (x) — n-мерные Гауссианы.

K-Nearest Neighbor Layers


Линейная разделимость может быть огромной и, возможно, необоснованной потребностью в нейронных сетях. Естественным является применение метода k-ближайших соседей (k-NN). Однако, успех k-NN в значительной степени зависит от представления, которое он классифицирует, поэтому требуется хорошее представление до того, как k-NN сможет работать хорошо.

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

К сожалению, даже при сложной архитектуре использование k-NN снижает вероятность ошибки — и использование более простых архитектур ухудшает результаты.

Заключение


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

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

Ссылки на источники и пояснения[1] A lot of the natural transformations you might want to perform on an image, like translating or scaling an object in it, or changing the lighting, would form continuous curves in image space if you performed them continuously.

[2] Carlsson et al. found that local patches of images form a klein bottle.
[3] This result is mentioned in Wikipedia’s subsection on Isotopy versions.

habr.com

Свёрточная нейронная сеть — Википедия

3D-анимация хода свёртки. Значения в ядре можно извлечь независимо друг от друга. Для периферийных областей входов применяются различные подходы заполнения.

Свёрточная нейронная сеть (англ. convolutional neural network, CNN) — специальная архитектура искусственных нейронных сетей, предложенная Яном Лекуном в 1988 году[1] и нацеленная на эффективное распознавание образов[2], входит в состав технологий глубокого обучения (англ. deep learning). Использует некоторые особенности зрительной коры[3], в которой были открыты так называемые простые клетки, реагирующие на прямые линии под разными углами, и сложные клетки, реакция которых связана с активацией определённого набора простых клеток. Таким образом, идея свёрточных нейронных сетей заключается в чередовании свёрточных слоёв (англ. convolution layers) и субдискретизирующих слоёв (англ. subsampling layers или англ. pooling layers, слоёв подвыборки). Структура сети — однонаправленная (без обратных связей), принципиально многослойная. Для обучения используются стандартные методы, чаще всего метод обратного распространения ошибки. Функция активации нейронов (передаточная функция) — любая, по выбору исследователя.

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

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

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

Архитектура свёрточной нейронной сети Типовая архитектура свёрточной нейронной сети

В обычном перцептроне, который представляет собой полносвязную нейронную сеть, каждый нейрон связан со всеми нейронами предыдущего слоя, причём каждая связь имеет свой персональный весовой коэффициент. В свёрточной нейронной сети в операции свёртки используется лишь ограниченная матрица весов небольшого размера, которую «двигают» по всему обрабатываемому слою (в самом начале — непосредственно по входному изображению), формируя после каждого сдвига сигнал активации для нейрона следующего слоя с аналогичной позицией. То есть для различных нейронов выходного слоя используются одна и та же матрица весов, которую также называют ядром свёртки. Её интерпретируют как графическое кодирование какого-либо признака, например, наличие наклонной линии под определённым углом. Тогда следующий слой, получившийся в результате операции свёртки такой матрицей весов, показывает наличие данного признака в обрабатываемом слое и её координаты, формируя так называемую карту признаков (англ. feature map). Естественно, в свёрточной нейронной сети набор весов не один, а целая гамма, кодирующая элементы изображения (например линии и дуги под разными углами). При этом такие ядра свёртки не закладываются исследователем заранее, а формируются самостоятельно путём обучения сети классическим методом обратного распространения ошибки. Проход каждым набором весов формирует свой собственный экземпляр карты признаков, делая нейронную сеть многоканальной (много независимых карт признаков на одном слое). Также следует отметить, что при переборе слоя матрицей весов её передвигают обычно не на полный шаг (размер этой матрицы), а на небольшое расстояние. Так, например, при размерности матрицы весов 5×5 её сдвигают на один или два нейрона (пикселя) вместо пяти, чтобы не «перешагнуть» искомый признак.

Операция субдискретизации (англ. subsampling, англ. pooling, также переводимая как «операция подвыборки» или операция объединения), выполняет уменьшение размерности сформированных карт признаков. В данной архитектуре сети считается, что информация о факте наличия искомого признака важнее точного знания его координат, поэтому из нескольких соседних нейронов карты признаков выбирается максимальный и принимается за один нейрон уплотнённой карты признаков меньшей размерности. За счёт данной операции, помимо ускорения дальнейших вычислений, сеть становится более инвариантной к масштабу входного изображения.

Рассмотрим типовую структуру свёрточной нейронной сети более подробно. Сеть состоит из большого количества слоёв. После начального слоя (входного изображения) сигнал проходит серию свёрточных слоёв, в которых чередуется собственно свёртка и субдискретизация (пулинг). Чередование слоёв позволяет составлять «карты признаков» из карт признаков, на каждом следующем слое карта уменьшается в размере, но увеличивается количество каналов. На практике это означает способность распознавания сложных иерархий признаков. Обычно после прохождения нескольких слоёв карта признаков вырождается в вектор или даже скаляр, но таких карт признаков становятся сотни. На выходе свёрточных слоёв сети дополнительно устанавливают несколько слоёв полносвязной нейронной сети (перцептрон), на вход которому подаются оконечные карты признаков.

Слой свёртки[править | править код]

Нейроны слоя свёртки, преобразуемые по нескольким выходным каналам

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

Особенностью свёрточного слоя является сравнительно небольшое количество параметров, устанавливаемое при обучении. Так например, если исходное изображение имеет размерность 100×100 пикселей по трём каналам (это значит 30000 входных нейронов), а свёрточный слой использует фильтры c ядром 3x3 пикселя с выходом на 6 каналов, тогда в процессе обучения определяется только 9 весов ядра, однако по всем сочетаниям каналов, то есть 9×3×6 =162, в таком случае данный слой требует нахождения только 162 параметров, что существенно меньше количества искомых параметров полносвязной нейронной сети.

Слой активации[править | править код]

Скалярный результат каждой свёртки попадает на функцию активации, которая представляет собой некую нелинейную функцию. Слой активации обычно логически объединяют со слоем свёртки (считают, что функция активации встроена в слой свёртки). Функция нелинейности может быть любой по выбору исследователя, традиционно для этого использовали функции типа гиперболического тангенса (f(x)=tanh⁡(x){\displaystyle f(x)=\tanh(x)}, f(x)=|tanh⁡(x)|{\displaystyle f(x)=|\tanh(x)|}) или сигмоиды (f(x)=(1+e−x)−1{\displaystyle f(x)=(1+e^{-x})^{-1}}). Однако в 2000х годах была предложена[4] и исследована[5] новая функция активации — ReLU (сокращение от англ. rectified linear unit), которая позволила существенно ускорить процесс обучения и одновременно упростить вычисления (за счёт простоты самой функции)[6], что означает блок линейной ректификации, вычисляющий функцию f(x)=max(0,x){\displaystyle f(x)=\max(0,x)}. То есть по сути это операция отсечения отрицательной части скалярной величины. По состоянию на 2017 год эта функция и её модификации (Noisy ReLU, Leaky ReLU и другие) являются наиболее часто используемыми функциями активации в глубоких нейросетях, в частности, в свёрточных. Существует методика определения оптимального числа блоков линейной ректификации [7].

Пулинг или слой субдискретизации[править | править код]

Пулинг с функцией максимума и фильтром 2×2 с шагом 2

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

Кроме пулинга с функцией максимума можно использовать и другие функции — например, среднего значения или L2-нормирования. Однако практика показала преимущества именно пулинга с функцией максимума, который включается в типовые системы.

В целях более агрессивного уменьшения размера получаемых представлений, всё чаще находят распространение идеи использования меньших фильтров[8] или полный отказ от слоёв пулинга.[9]

Полносвязная нейронная сеть[править | править код]

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

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

Наиболее простым и популярным способом обучения является метод обучения с учителем (на маркированных данных) — метод обратного распространения ошибки и его модификации. Но существует также ряд техник обучения свёрточной сети без учителя. Например, фильтры операции свёртки можно обучить отдельно и автономно, подавая на них вырезанные случайным образом кусочки исходных изображений обучающей выборки и применяя для них любой известный алгоритм обучения без учителя (например, автоассоциатор или даже метод k-средних) — такая техника известна под названием patch-based training. Соответственно, следующий слой свёртки сети будет обучаться на кусочках от уже обученного первого слоя сети. Также можно скомбинировать сверточную нейросеть с другими технологиями глубинного обучения. Например, сделать свёрточный авто-ассоциатор[10], свёрточную версию каскадных ограниченных машин Больцмана, обучающихся за счёт вероятностного математического аппарата[11], свёрточную версию разреженного кодирования (англ. sparse coding), названную deconvolutional networks («развертывающими» сетями)[12].

Для улучшения работы сети, повышения её устойчивости и предотвращения переобучения применяется также исключение(дропаут)— метод тренировки подсети с выбрасыванием случайных одиночных нейронов.

  • Один из лучших алгоритмов по распознаванию и классификации изображений.
  • По сравнению с полносвязной нейронной сетью (типа перцептрона) — гораздо меньшее количество настраиваемых весов, так как одно ядро весов используется целиком для всего изображения, вместо того, чтобы делать для каждого пикселя входного изображения свои персональные весовые коэффициенты. Это подталкивает нейросеть при обучении к обобщению демонстрируемой информации, а не попиксельному запоминанию каждой показанной картинки в мириадах весовых коэффициентов, как это делает перцептрон.
  • Удобное распараллеливание вычислений, а следовательно, возможность реализации алгоритмов работы и обучения сети на графических процессорах.
  • Относительная устойчивость к повороту и сдвигу распознаваемого изображения.
  • Обучение при помощи классического метода обратного распространения ошибки.
  • Слишком много варьируемых параметров сети; непонятно, для какой задачи и вычислительной мощности какие нужны настройки. Так, к варьируемым параметрам можно отнести: количество слоёв, размерность ядра свёртки для каждого из слоёв, количество ядер для каждого из слоёв, шаг сдвига ядра при обработке слоя, необходимость слоёв субдискретизации, степень уменьшения ими размерности, функция по уменьшению размерности (выбор максимума, среднего и т. п.), передаточная функция нейронов, наличие и параметры выходной полносвязной нейросети на выходе свёрточной. Все эти параметры существенно влияют на результат, но выбираются исследователями эмпирически. Существует несколько выверенных и прекрасно работающих конфигураций сетей, но не хватает рекомендаций, по которым нужно строить сеть для новой задачи.
  1. ↑ Y. LeCun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard and L. D. Jackel: Backpropagation Applied to Handwritten Zip Code Recognition, Neural Computation, 1(4):541-551, Winter 1989.
  2. ↑ Convolutional Neural Networks (LeNet) - DeepLearning 0.1 documentation (неопр.). DeepLearning 0.1. LISA Lab. Дата обращения 31 августа 2013.
  3. Matusugu, Masakazu; Katsuhiko Mori; Yusuke Mitari; Yuji Kaneda. Subject independent facial expression recognition with robust face detection using a convolutional neural network (англ.) // Neural Networks : journal. — 2003. — Vol. 16, no. 5. — P. 555—559. — doi:10.1016/S0893-6080(03)00115-1.
  4. (2000) "Digital selection and analogue amplification coexist in a cortex-inspired silicon circuit". 405: 947–951. 
  5. (2011) "Deep sparse rectifier neural networks" in AISTATS.. 
  6. (2010) "Rectified linear units improve restricted Boltzmann machines" in ICML.. Проверено 2016-12-22.  Архивная копия от 24 марта 2014 на Wayback Machine
  7. Romanuke, Vadim. Appropriate number and allocation of ReLUs in convolutional neural networks (англ.) // Research Bulletin of NTUU “Kyiv Polytechnic Institute” : journal. — 2017. — Vol. 1. — P. 69—78. — doi:10.20535/1810-0546.2017.1.88156.
  8. ↑ Graham, Benjamin (2014-12-18), Fractional Max-Pooling, arΧiv:1412.6071 [cs.CV] 
  9. ↑ Springenberg, Jost Tobias; Dosovitskiy, Alexey; Brox, Thomas & Riedmiller, Martin (2014-12-21), Striving for Simplicity: The All Convolutional Net, arΧiv:1412.6806 [cs.LG] 
  10. ↑ Jain, V. and Seung, S. H. (2008). Natural image denoising with convolutional networks. In NIPS’2008.
  11. ↑ Lee, H., Grosse, R., Ranganath, R., and Ng, A. Y. (2009a). Convolutional deep belief networks for scalable unsupervised learning of hierarchical representations. In ICML’2009.
  12. ↑ Zeiler, M., Krishnan, D., Taylor, G., and Fergus, R. (2010). Deconvolutional networks. In CVPR’2010.

ru.wikipedia.org

Искусственный нейрон — Википедия

Схема искусственного нейрона
1.Нейроны, выходные сигналы которых поступают на вход данному
2.Сумматор входных сигналов
3.Вычислитель передаточной функции
4.Нейроны, на входы которых подаётся выходной сигнал данного
5.wi{\displaystyle w_{i}} — веса входных сигналов

Иску́сственный нейро́н (математический нейрон Маккаллока — Питтса, формальный нейрон[1]) — узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона. Математически, искусственный нейрон обычно представляют как некоторую нелинейную функцию от единственного аргумента — линейной комбинации всех входных сигналов. Данную функцию называют функцией активации[2] или функцией срабатывания, передаточной функцией. Полученный результат посылается на единственный выход. Такие искусственные нейроны объединяют в сети — соединяют выходы одних нейронов с входами других. Искусственные нейроны и сети являются основными элементами идеального нейрокомпьютера.[3]

Биологический нейрон состоит из тела диаметром от 3 до 100 мкм, содержащего ядро (с большим количеством ядерных пор) и другие органеллы (в том числе сильно развитый шероховатый ЭПР с активными рибосомами, аппарат Гольджи), и отростков. Выделяют два вида отростков. Аксон — обычно длинный отросток, приспособленный для проведения возбуждения от тела нейрона. Дендриты — как правило, короткие и сильно разветвлённые отростки, служащие главным местом образования влияющих на нейрон возбуждающих и тормозных синапсов (разные нейроны имеют различное соотношение длины аксона и дендритов). Нейрон может иметь несколько дендритов и обычно только один аксон. Один нейрон может иметь связи с 20 тысячами других нейронов. Кора головного мозга человека содержит около 80 миллиардов нейронов.

Математическая модель искусственного нейрона была предложена У. Маккалоком и У. Питтсом вместе с моделью сети, состоящей из этих нейронов. Авторы показали, что сеть на таких элементах может выполнять числовые и логические операции[4]. Практически сеть была реализована Фрэнком Розенблаттом в 1958 году как компьютерная программа, а впоследствии как электронное устройство — перцептрон. Первоначально нейрон мог оперировать только с сигналами логического нуля и логической единицы[5], поскольку был построен на основе биологического прототипа, который может пребывать только в двух состояниях — возбужденном или невозбужденном. Развитие нейронных сетей показало, что для расширения области их применения необходимо, чтобы нейрон мог работать не только с бинарными, но и с непрерывными (аналоговыми) сигналами. Такое обобщение модели нейрона было сделано Уидроу и Хоффом[6], которые предложили в качестве функции срабатывания нейрона использовать логистическую кривую.

Связи между искусственными нейронами[править | править код]

Связи, по которым выходные сигналы одних нейронов поступают на входы других, часто называют синапсами по аналогии со связями между биологическими нейронами. Каждая связь характеризуется своим весом. Связи с положительным весом называются возбуждающими, а с отрицательным — тормозящими[7]. Нейрон имеет один выход, часто называемый аксоном по аналогии с биологическим прототипом. С единственного выхода нейрона сигнал может поступать на произвольное число входов других нейронов.

Математически нейрон представляет собой взвешенный сумматор, единственный выход которого определяется через его входы и матрицу весов следующим образом:

y=f(u){\displaystyle y=f(u)}, где u=∑i=1nwixi+w0x0{\displaystyle u=\sum _{i=1}^{n}w_{i}x_{i}+w_{0}x_{0}}

Здесь xi{\displaystyle x_{i}} и wi{\displaystyle w_{i}} — соответственно сигналы на входах нейрона и веса входов, функция u называется индуцированным локальным полем, а f(u) — передаточной функцией. Возможные значения сигналов на входах нейрона считают заданными в интервале [0,1]{\displaystyle [0,1]}. Они могут быть либо дискретными (0 или 1), либо аналоговыми. Дополнительный вход x0{\displaystyle x_{0}} и соответствующий ему вес w0{\displaystyle w_{0}} используются для инициализации нейрона[8]. Под инициализацией подразумевается смещение активационной функции нейрона по горизонтальной оси, то есть формирование порога чувствительности нейрона[5]. Кроме того, иногда к выходу нейрона специально добавляют некую случайную величину, называемую сдвигом. Сдвиг можно рассматривать как сигнал на дополнительном, всегда нагруженном, синапсе.

Передаточная функция f(u){\displaystyle f(u)} определяет зависимость сигнала на выходе нейрона от взвешенной суммы сигналов на его входах. В большинстве случаев она является монотонно возрастающей и имеет область значений [−1,1]{\displaystyle [-1,1]} или [0,1]{\displaystyle [0,1]}, однако существуют исключения. Также для некоторых алгоритмов обучения сети необходимо, чтобы она была непрерывно дифференцируемой на всей числовой оси[8]. Искусственный нейрон полностью характеризуется своей передаточной функцией. Использование различных передаточных функций позволяет вносить нелинейность в работу нейрона и в целом нейронной сети.

В основном, нейроны классифицируют на основе их положения в топологии сети. Разделяют:

  • Входные нейроны — принимают исходный вектор, кодирующий входной сигнал. Как правило, эти нейроны не выполняют вычислительных операций, а просто передают полученный входной сигнал на выход, возможно, усилив или ослабив его;
  • Выходные нейроны — представляют из себя выходы сети. В выходных нейронах могут производиться какие-либо вычислительные операции;
  • Промежуточные нейроны — выполняют основные вычислительные операции[9].
Линейная функция активации с насыщением

Линейная передаточная функция[править | править код]

Сигнал на выходе нейрона линейно связан со взвешенной суммой сигналов на его входе.

f(x)=tx{\displaystyle f(x)=tx},

где t{\displaystyle t} — параметр функции. В искусственных нейронных сетях со слоистой структурой нейроны с передаточными функциями такого типа, как правило, составляют входной слой. Кроме простой линейной функции могут быть использованы её модификации. Например полулинейная функция (если её аргумент меньше нуля, то она равна нулю, а в остальных случаях, ведет себя как линейная) или шаговая (линейная функция с насыщением), которую можно выразить формулой[10]:

f(x)={0if x≤01if x≥1xelse{\displaystyle f(x)={\begin{cases}0&{\text{if }}x\leq 0\\1&{\text{if }}x\geq 1\\x&{\text{else}}\end{cases}}}

При этом возможен сдвиг функции по обеим осям (как изображено на рисунке).

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

Пороговая функция активации

Пороговая передаточная функция[править | править код]

Другое название — функция Хевисайда. Представляет собой перепад. До тех пор пока взвешенный сигнал на входе нейрона не достигает некоторого уровня T{\displaystyle T} — сигнал на выходе равен нулю. Как только сигнал на входе нейрона превышает указанный уровень — выходной сигнал скачкообразно изменяется на единицу. Самый первый представитель слоистых искусственных нейронных сетей — перцептрон[11] состоял исключительно из нейронов такого типа[5]. Математическая запись этой функции выглядит так:

f(x)={1if x≥T0else{\displaystyle f(x)={\begin{cases}1&{\text{if }}x\geq T\\0&{\text{else}}\end{cases}}}

Здесь T=−w0x0{\displaystyle T=-w_{0}x_{0}} — сдвиг функции активации относительно горизонтальной оси, соответственно под x{\displaystyle x} следует понимать взвешенную сумму сигналов на входах нейрона без учёта этого слагаемого. Ввиду того, что данная функция не является дифференцируемой на всей оси абсцисс, её нельзя использовать в сетях, обучающихся по алгоритму обратного распространения ошибки и другим алгоритмам, требующим дифференцируемости передаточной функции.

Сигмоидальная функция активации

Сигмоидальная передаточная функция[править | править код]

Один из самых часто используемых, на данный момент, типов передаточных функций. Введение функций сигмоидального типа было обусловлено ограниченностью нейронных сетей с пороговой функцией активации нейронов — при такой функции активации любой из выходов сети равен либо нулю, либо единице, что ограничивает использование сетей не в задачах классификации. Использование сигмоидальных функций позволило перейти от бинарных выходов нейрона к аналоговым[12]. Функции передачи такого типа, как правило, присущи нейронам, находящимся во внутренних слоях нейронной сети.

Логистическая функция[править | править код]

Математически логистическую функцию можно выразить так:

σ(x)=1(1+exp⁡(−tx)){\displaystyle \sigma (x)={\frac {1}{(1+\exp(-tx))}}}

Здесь t — это параметр функции, определяющий её крутизну. Когда t стремится к бесконечности, функция вырождается в пороговую. При t=0{\displaystyle t=0} сигмоида вырождается в постоянную функцию со значением 0,5. Область значений данной функции находится в интервале (0,1). Важным достоинством этой функции является простота её производной:

dσ(x)dx=tσ(x)(1−σ(x)){\displaystyle {\cfrac {d\sigma (x)}{dx}}=t\sigma (x)(1-\sigma (x))}

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

Гиперболический тангенс[править | править код]

Использование функции гиперболического тангенса

th⁡(Ax)=eAx−e−AxeAx+e−Ax{\displaystyle \operatorname {th} (Ax)={\frac {e^{Ax}-e^{-Ax}}{e^{Ax}+e^{-Ax}}}}

отличается от рассмотренной выше логистической кривой тем, что его область значений лежит в интервале (-1;1). Так как верно соотношение

th⁡(t2x)=2σ(x)−1{\displaystyle \operatorname {th} \left({\frac {t}{2}}x\right)=2\sigma (x)-1},

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

Модифицированный гиперболический тангенс[править | править код]

Использование функции модифицированного гиперболического тангенса

mth⁡x=ex−e−xeax+e−bx,(a,b>1),{\displaystyle \operatorname {mth} x={\frac {e^{x}-e^{-x}}{e^{ax}+e^{-bx}}},(a,b>1),}

масштабированной по оси ординат до интервала [-1;1] позволяет получить семейство сигмоидальных функций.

Радиально-базисная функция передачи[править | править код]

Радиально-базисная функция передачи (RBF) принимает в качестве аргумента расстояние между входным вектором и некоторым наперед заданным центром активационной функции. Значение этой функции тем выше, чем ближе входной вектор к центру[15]. В качестве радиально-базисной можно, например, использовать функцию Гаусса:

y=exp⁡(−(S−R)22σ2){\displaystyle y=\exp \left(-{\frac {(S-R)^{2}}{2\sigma ^{2}}}\right)}.

Здесь S=||X−C||{\displaystyle S=||\mathbf {X} -\mathbf {C} ||} — расстояние между центром C{\displaystyle \mathbf {C} } и вектором входных сигналов X{\displaystyle \mathbf {X} }. Скалярный параметр σ{\displaystyle \sigma } определяет скорость спадания функции при удалении вектора от центра и называется шириной окна, параметр R{\displaystyle R} определяет сдвиг активационной функции по оси абсцисс. Сети с нейронами, использующими такие функции, называются RBF-сетями. В качестве расстояния между векторами могут быть использованы различные метрики[16], обычно используется евклидово расстояние:

S=∑j=1N(xj−cj)2{\displaystyle S={\sqrt {\sum _{j=1}^{N}{(x_{j}-c_{j})^{2}}}}}.

Здесь xj{\displaystyle x_{j}} — j{\displaystyle j}-я компонента вектора, поданного на вход нейрона, а cj{\displaystyle c_{j}} — j{\displaystyle j}-я компонента вектора, определяющего положение центра передаточной функции. Соответственно, сети с такими нейронами называются вероятностными и регрессионными[17].

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

Другие функции передачи[править | править код]

Перечисленные выше функции составляют лишь часть от множества передаточных функций, используемых на данный момент. В число других передаточных функций входят такие как[18]:

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

f(u)={1с вероятностьюP(u)0с вероятностью1−P(u){\displaystyle f(u)={\begin{cases}1&{\text{с вероятностью}}P(u)\\0&{\text{с вероятностью}}1-P(u)\end{cases}}},

где распределение вероятности P(u){\displaystyle P(u)} обычно имеет вид сигмоида:

σ(u)=A(T)1+exp⁡(−u/T){\displaystyle \sigma (u)={\frac {A(T)}{1+\exp(-u/T)}}},

a нормировочная константа A(T){\displaystyle A(T)} вводится для условия нормализации распределения вероятности ∫01σ(u)du=1{\displaystyle \int _{0}^{1}\sigma (u)du=1}. Таким образом, нейрон активируется с вероятностью P(u){\displaystyle P(u)}. Параметр T{\displaystyle T} — аналог температуры (но не температуры нейрона) и определяет беспорядок в нейронной сети. Если T{\displaystyle T} устремить к 0, стохастический нейрон перейдет в обычный нейрон с передаточной функцией Хевисайда (пороговой функцией).

Моделирование формальных логических функций[править | править код]

Нейрон с пороговой передаточной функцией может моделировать различные логические функции.

f(u)={1if u⩾T0else{\displaystyle f(u)={\begin{cases}1&{\text{if }}u\geqslant T\\0&{\text{else}}\end{cases}}}, где u=∑i=1nwixi+0{\displaystyle u=\sum _{i=1}^{n}w_{i}x_{i}+0}

Таблицы иллюстрируют, каким образом можно, задав веса входных сигналов и порог чувствительности, заставить нейрон выполнять конъюнкцию (логическое «И») и дизъюнкцию (логическое «ИЛИ») над входными сигналами, а также логическое отрицание входного сигнала[19]. Этих трех операций достаточно, чтобы смоделировать абсолютно любую логическую функцию любого числа аргументов.

НЕ T -1,0
w -1,5
x 0 1
f 1 0
И T 1,5
w1 1,0
w2 1,0
x1 0 0 1 1
x2 0 1 0 1
f 0 0 0 1
ИЛИ T 0,5
w1 1,0
w2 1,0
x1 0 0 1 1
x2 0 1 0 1
f 0 1 1 1
  1. ↑ Л. Г. Комарцова, А. В. Максимов «Нейрокомпьютеры», МГТУ им. Н. Э. Баумана, 2004 г., ISBN 5-7038-2554-7
  2. ↑ По аналогии с нейронами активации
  3. Миркес Е. М., Нейрокомпьютер. Проект стандарта. — Новосибирск: Наука, 1999. — 337 с. ISBN 5-02-031409-9
  4. ↑ В статье McCulloch W.S., Pitts W. A logical Calculus of Ideas Immanent in Nervous Activity — Bull. Mathematical Biophysics, 1943 online (недоступная ссылка)
  5. 1 2 3 Ясницкий, 2005, с. 29.
  6. ↑ В работе Widrow B., Hoff M.E. Adaptive switching circuits. 1960 IRE WESTCON Conferencion Record. — New York, 1960
  7. ↑ В. В. Круглов, В. В. Борисов — Искусственные нейронные сети. Теория и практика — с.11
  8. 1 2 В. А. Терехов — Нейросетевые системы управления — с.12-13
  9. ↑ В. В. Круглов, В. В. Борисов — Искусственные нейронные сети. Теория и практика — с.14
  10. ↑ В. В. Круглов, В. В. Борисов — Искусственные нейронные сети. Теория и практика — с.12
  11. ↑ Очень часто в литературе можно встретить название персептрон
  12. ↑ Ясницкий, 2005, с. 34.
  13. ↑ CIT forum — Нейрокомпьютеры — архитектура и реализация
  14. ↑ В. В. Круглов, В. В. Борисов — Искусственные нейронные сети. Теория и практика — с.13
  15. ↑ Ясницкий, 2005, с. 77.
  16. ↑ В. В. Круглов, В. В. Борисов — Искусственные нейронные сети. Теория и практика — с.349
  17. ↑ В. В. Круглов, В. В. Борисов — Искусственные нейронные сети. Теория и практика — с.348
  18. ↑ Text
  19. ↑ Ясницкий, 2005, с. 30.
  • Терехов В.А., Ефимов Д.В., Тюкин И.Ю. Нейросетевые системы управления. — 1-е. — Высшая школа, 2002. — С. 184. — ISBN 5-06-004094-1.
  • Круглов В. В., Борисов В. В. Искусственные нейронные сети. Теория и практика. — 1-е. — М.: Горячая линия - Телеком, 2001. — С. 382. — ISBN 5-93517-031-0.
  • Каллан Р. Основные концепции нейронных сетей = The Essence of Neural Networks First Edition. — 1-е. — «Вильямс», 2001. — С. 288. — ISBN 5-8459-0210-X.
  • Ясницкий Л. Н. Введение в искусственный интеллект. — 1-е. — Издательский центр «Академия», 2005. — С. 176. — ISBN 5-7695-1958-4.
  • Комарцова Л. Г., Максимов А. В. Нейрокомпьютеры. — 1-е. — Изд-во МГТУ им. Н.Э. Баумана, 2002. — С. 320. — ISBN 5-7038-1908-3.
  • Савельев А. В. Концепция многопроцессорного нейрона // Искусственный интеллект. Интеллектуальные и многопроцессорные системы. — Донецк-Таганрог- Минск, 2006. — С. 293-300.
  • Савельев А. В. Нейрокомпьютеры в изобретениях // журнал «Нейрокомпьютеры: разработка, применение»., Издательство "Радиотехника". — Москва, 2004. — № 2-3. — С. 33-49.
  • Lakhmi C. Jain; N.M. Martin Fusion of Neural Networks, Fuzzy Systems and Genetic Algorithms: Industrial Applications. — CRC Press, CRC Press LLC, 1998
  • Емельянов В. В., Курейчик В. В., Курейчик В. Н. Теория и практика эволюционного моделирования. — М: Физматлит, 2003.

ru.wikipedia.org

Оптическая нейросеть / Habr


Обученная многослойная фазовая маска (классификатор рукописных символов). Справа показана физическая модель оптической нейросети D²NN, напечатанная на 3D-принтере: слои 8×8 см с расстоянием 3 см друг между другом

Группа исследователей из Калифорнийского университета в Лос-Анджелесе разработала новый тип нейронной сети, которая в работе использует свет вместо электричества. В журнале Science опубликована статья с описанием идеи, рабочего устройства, его производительности и типов приложений, которые, по мнению авторов, хорошо вычислять в нейросети нового типа.

Полностью оптический фреймворк глубокого обучения Diffractive Deep Neural Network (D²NN), который физически сформирован из множества отражающих или прозрачных поверхностей. Эти поверхности работают сообща, выполняя произвольную функцию, усвоенную в результате обучения. В то время как получение результата и прогнозирование в физической сети организовано полностью оптически, обучающая часть с проектированием структуры отражающих поверхностей рассчитывается на компьютере.

Итак, в физической модели D²NN состоит из нескольких отражающих или прозрачных слоёв. На этих слоях каждая точка или пропускает, или отражает входящую волну. Таким образом, эта точка представляет собой искусственный нейрон, который соединён с нейронами следующих слоев через оптическую дифракцию. Структура D²NN показана на иллюстрации.


Дифракционная глубокая нейронная сеть (Diffractive Deep Neural Network, D²NN).

На иллюстрации А — схема из нескольких прозрачных/отражающих слоёв, где каждая точка представляет собой нейрон со сложным коэффициентом прозрачности или отражения. Эти коэффициенты выводятся путём глубокого обучения. После фазы обучения дизайн D²NN фиксируется — и на 3D-принтере печатаются соответствующие пластины, которые осуществляют вычисления по функции, полученной в результате предварительного обучения. В отличие от электронных компьютерных сетей, здесь вычисления осуществляются со скоростью света.

В ходе экспериментов учёные обучили и экспериментально опробовали несколько типов D²NN. На иллюстрации В показан классификатор рукописных символов, на иллюстрации С — линза (imaging lens).

В нижней части иллюстрации сравнивается работа дифракционной оптической нейросети (слева) и электронной нейросети (справа). Основываясь на когерентных волнах, D²NN работает с комплексными значениями на входе и мультипликативным смещением. Веса в D²NN основаны на дифракции в свободном пространстве и определяют когерентную интерференцию вторичных волн, которые являются фазой и/или амплитудой, смодулированной предыдущими слоями. Символ "ο" означает операцию произведения Адамара, то есть поразрядное логическое умножение соответствующих членов двух последовательностей равной длины.

Исследователи объясняют, что структура оптической нейросети организована по принципу Гюйгенса, в соответствии с которым каждый элемент волнового фронта можно рассматривать как центр вторичного возмущения, порождающего вторичные сферические волны, а результирующее световое поле в каждой точке пространства будет определяться интерференцией этих волн. Таким образом, искусственный нейрон в D²NN соединён с другими нейронами следующего слоя через вторичную волну, которая модулируется по амплитуде и фазе как входной интерференционной картиной, созданной более ранними слоями, так и локальным коэффициентом передачи/отражения в этой точке.

По аналогии со стандартными глубокими нейросетями можно рассматривать коэффициент передачи/отражения каждой точки/нейрона как мультипликативный термин «смещение» (bias), который итеративно корректируется в процессе обучения дифракционной сети, используя метод обратного распространения ошибки. После численного обучения конструкция D2NN фиксируется и определяются коэффициенты передачи/отражения нейронов всех слоев. Затем можно изготовить рассчитанные слои любым методом: 3D-печать, литография и т. д.

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

Для проверки идеи исследователи сделали нейросеть, способную распознавать цифры от нуля до девяти — и сообщать результат. После обучения на 55 000 изображений чисел распечатанная семислойная нейросеть показала точность 93,39%.

В распознавании модной одежды и обуви пятислойная нейросеть показала точность 81,13%, десятислойная — 86,60%.

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

Научная статья опубликована 26 июля 2018 года в журнале Science (doi: 10.1126/science.aat8084, pdf).

habr.com

Рекуррентная нейронная сеть — Википедия

Рекуррентные нейронные сети (РНС, англ. Recurrent neural network; RNN) — вид нейронных сетей, где связи между элементами образуют направленную последовательность. Благодаря этому появляется возможность обрабатывать серии событий во времени или последовательные пространственные цепочки. В отличие от многослойных перцептронов, рекуррентные сети могут использовать свою внутреннюю память для обработки последовательностей произвольной длины. Поэтому сети RNN применимы в таких задачах, где нечто целостное разбито на части, например: распознавание рукописного текста[1] или распознавание речи[2][3]. Было предложено много различных архитектурных решений для рекуррентных сетей от простых до сложных. В последнее время наибольшее распространение получили сеть с долговременной и кратковременной памятью (LSTM) и управляемый рекуррентный блок (GRU).

Джон Хопфилд в 1982 предложил Сеть Хопфилда. В 1993 нейронная система запоминания и сжатия исторических данных смогла решить задачу «очень глубокого обучения», в которой в рекуррентной сети разворачивалось более 1000 последовательных слоёв.[4]

Долгая краткосрочная память (LSTM)[править | править код]

Сеть с долговременной и кратковременной памятью (англ.  Long short term memory, LSTM); LSTM).[5] нашла применение в различных приложениях.

Начиная с 2007 года LSTM приобрела популярность и смогла вывести на новый уровень распознавание речи, показав существенное улучшение по сравнению с традиционными моделями.[6] В 2009 году появился подход классификации по рейтингу (Connectionist Temporal Classification, (CTC)). Этот метод позволил рекуррентным сетям подключить анализ контекста при распознавании рукописного текста.[7] В 2014 году китайская энциклопедия и поисковая система Baidu, используя рекуррентные сети с обучением по CTC смогли поднять на новый уровень показатели Switchboard Hub5’00, опередив традиционные методы.[8]

LSTM привела также к улучшению распознавания речи с большими словарями[2][3] и улучшения синтеза речи по тексту[9], и нашла также применение в операционной системе Google Android.[10] В 2015 году распознавание речи у Google значительно повысило показатели вплоть до 49 %, причиной того стало использование специальной системы обучения LSTM на базе CTC в системе Google voice search.[11]

LSTM вывело на новый уровень качество машинного перевода,[12], построения языковых моделей и[13] обработки многоязычного текста.[14] Сочетание LSTM со свёрточными нейронными сетями (CNN) позволило усовершенствовать автоматическое описание изображений.[15]

Существует много разновидностей, решений и конструктивных элементов рекуррентных нейронных сетей.

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

Полностью рекуррентная сеть[править | править код]

Это базовая архитектура разработана в 1980-х. Сеть строится из узлов, каждый из которых соединён со всеми другими узлами. У каждого нейрона порог активации меняется со временем и является вещественным числом. Каждое соединение имеет переменный вещественный вес. Узлы разделяются на входные, выходные и скрытые.

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

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

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

Рекурсивная сеть[править | править код]

Рекурсивные нейронные сети представляют собой более общий случай рекуррентных сетей, когда сигнал в сети проходит через структуру в виде дерева (обычно бинарные деревья).[16]Те же самые матрицы весов используются рекурсивно по всему графу в соответствии с его топологией.[17][18] Рекурсивные нейронные сети находят применение в задачах обработки естественного языка.[19] Существуют также тензорные рекурсивные нейронные сети (RNTN, Recursive Neural Tensor Network), которые используют тензорные функции для всех узлов в дереве.[20]

Нейронная сеть Хопфилда[править | править код]

Сеть Хопфилда — это такой тип рекуррентной сети, когда все соединения симметричны. Изобретена Джоном Хопфилдом в 1982 году и гарантируется, что динамика такой сети сходится к одному из положений равновесия. Если при создании соединений используют обучение Хебба[en], то сеть Хопфилда может работать как надежная ассоциативная память, устойчивая к изменению подключений.

Двунаправленная ассоциативная память (BAM)[править | править код]

Вариацией сети Хопфилда является двунаправленная ассоциативная память (BAM). BAM имеет два слоя, каждый из которых может выступать в качестве входного, находить (вспоминать) ассоциацию и генерировать результат для другого слоя.[21][22]Rául Rojas. [[2] в «Книгах Google» Neural networks: a systematic introduction] (англ.). — Springer, 1996. — P. 336. — ISBN 978-3-540-60505-8.

Сети Элмана и Джордана[править | править код]

Нейронная сеть Элмана представляет из себя трёхслойную нейронную сеть, слои которой называются на иллюстрации x, y, и z. Дополнительно к сети добавлен набор «контекстных блоков» (u на иллюстрации). Средний (скрытый) слой соединён с контекстными блоками с фиксированным весом, равным единице.[23] С каждым шагом времени на вход поступает информация, которая проходит прямой ход к выходному слою в соответствии с правилами обучения. Фиксированные обратные связи сохраняют предыдущие значения скрытого слоя в контекстных блоках (до того как скрытый слой поменяет значение в процессе обучения). Таким способом сеть сохраняет своё состояние, что может использоваться в предсказании последовательностей, выходя за пределы мощности многослойного перцептрона.

Нейронная сеть Джордана подобна сети Элмана. Однако контекстные блоки связаны не со скрытым слоем, а с выходным слоем. Контекстные блоки таким образом сохраняют своё состояние. Они обладают рекуррентной связью с собой.[23]

Сети Элмана и Джордана называют также «простыми рекуррентными сетями» (SRN).

Сеть Элмана[24]
ht=σh(Whxt+Uhht−1+bh)yt=σy(Wyht+by){\displaystyle {\begin{aligned}h_{t}&=\sigma _{h}(W_{h}x_{t}+U_{h}h_{t-1}+b_{h})\\y_{t}&=\sigma _{y}(W_{y}h_{t}+b_{y})\end{aligned}}}
Сеть Джордана[25]
ht=σh(Whxt+Uhyt−1+bh)yt=σy(Wyht+by){\displaystyle {\begin{aligned}h_{t}&=\sigma _{h}(W_{h}x_{t}+U_{h}y_{t-1}+b_{h})\\y_{t}&=\sigma _{y}(W_{y}h_{t}+b_{y})\end{aligned}}}

Обозначения переменных и функций:

Эхо-сети[править | править код]

Эхо-сеть (англ. echo state network; ESN) характеризуется одним скрытым слоем (который называется резервуаром) со случайными редкими связями между нейронами. При этом связи внутри резервуара фиксированы, но связи с выходным слоем подлежат обучению. Состояние резервуара (state) вычисляется через предыдущие состояния резервуара, а также предыдущие состояния входного и выходного сигналов. Так как эхо-сети обладают только одним скрытым слоем, они обладают достаточно низкой вычислительной сложностью, однако качество моделирования сильно зависит от начальных установок, которые грубо говоря случайны. Эхо-сети хорошо работают, воспроизводя временные ряды.[26] Вариацией эхо-сетей являются импульсные (спайковые) нейронные сети, известные также как жидкие нейронные сети ("жидкие" сети названы с использование метафоры расходящихся кругов по воде от падения камешка, что характеризует кратковременную память от входного события).[27]

Нейронный компрессор истории[править | править код]

Нейронный компрессор исторических данных - это блок, позволяющий в сжатом виде хранить существенные исторические особенности процесса, который является своего рода стеком рекуррентной нейронной сети, формируемым в процессе самообучения.[28] На уровне входного сигнала, нейронный компрессор истории пытается предсказать следующий вход по историческим данным. На следующий уровень рекуррентной сети поступают только те входные сигналы, которые не смогли быть предсказаны, и которые при этом способствуют изменению состояния компрессора. Каждый следующий слой сети точно также изучает сжатую историческую информацию с предыдущих слоёв. Таким образом входная последовательность может быть точно восстановлена по представлению последующих слоёв.

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

Таким образом сеть RNN можно разделить на два уровня слоёв: «сознательный» (более высокий уровень) и «подсознательный» автоматизатор (нижний уровень). После того, как верхний уровень научился прогнозировать и сжимать входы (которые непредсказуемы) с помощью автоматизатора, тогда автоматизатор может быть вынужден на следующей стадии обучения предсказывать сам или подражать через дополнительные или скрытые блоки более медленно меняющегося высшего уровня. Это упрощает работу автоматизатора, позволяя учесть долгосрочные, но редко меняющиеся воспоминания. В свою очередь, это помогает автоматизатору сделать многие из его некогда непредсказуемых входов предсказуемыми, так что высший уровень может сосредоточиться на оставшихся непредсказуемых событиях.[28]

Долгая краткосрочная память (LSTM)[править | править код]

Сеть с долговременной и кратковременной памятью (англ.  Long short term memory, LSTM) представляет собой систему глубинного обучения, при реализации которой удалось обойти проблему исчезновения или зашкаливания градиентов в процессе обучения методом обратного распространения ошибки. Сеть LSTM обычно модерируется с помощью рекуррентных вентилей, которые называются вентили (gates) «забывания».[30] Ошибки распространяются назад по времени через потенциально неограниченное количество виртуальных слоёв. Таким образом происходит обучение в LSTM [31], при этом сохраняя память о тысячах и даже миллионах временных интервалов в прошлом. Топологии сетей типа LSTM могут развиваться в соответствии со спецификой процесса.[32] В сети LSTM даже большие задержки между значимыми событиями могут учитываться, и тем самым высокочастотные и низкочастотные компоненты могут смешиваться.

Многие рекуррентные сети используют стеки данных, присущие LSTM [33] Сети могут обучаться с помощью "Классификации по времени и соединениям (CTC)" (англ. Connectionist Temporal Classification) [34] чтобы найти такую матрицу весов, в которой вероятность последовательности меток в наборе образцов при соответствующем входном потоке сводится к максимуму. CTC позволяет добиться как упорядочивания так и распознавания.

LSTM может также обучаться для распознавания контекстно-чувствительных языков, в отличие от предыдущих моделей, базировавшихся на скрытой марковской модели (HMM) и подобных идеях.[35]

Рекуррентные сети второго порядка[править | править код]

Рекуррентные сети второго порядка используют веса высших порядков wijk{\displaystyle w{}_{ijk}} вместо обычных весов wij{\displaystyle w{}_{ij}}, при этом входные параметры и параметры состояния могут получать в виде произведения. В этом случае сеть трансформируется (mapping) в конечный автомат как в процессе обучения, так и при стабилизации и представлении.[36][37]Долгая краткосрочная память в данном случае не имеет такой трансформации и проверки стабильности.

Управляемый рекуррентный блок[править | править код]

Управляемый рекуррентный блок (англ. Gated recurrent units; GRU) - механизм управления рекуррентной сети, предложенный в 2014 году. Производительность GRU в моделях речевого сигнала или полифонической музыки оказалась сопоставимой с долгой краткосрочной памятью (LSTM).[38] У данной модели меньше параметров, чем у LSTM, и в ней отсутствует выходное управление.[39]

  1. Graves, A.; Liwicki, M.; Fernandez, S.; Bertolami, R.; Bunke, H.; Schmidhuber, J. (англ.)русск.. A Novel Connectionist System for Improved Unconstrained Handwriting Recognition (англ.) // IEEE Transactions on Pattern Analysis and Machine Intelligence (англ.)русск. : journal. — 2009. — Vol. 31, no. 5.
  2. 1 2 Sak, Hasim Long Short-Term Memory recurrent neural network architectures for large scale acoustic modeling (неопр.) (недоступная ссылка) (2014). Дата обращения 9 декабря 2017. Архивировано 24 апреля 2018 года.
  3. 1 2 Li, Xiangang & Wu, Xihong (2014-10-15), Constructing Long Short-Term Memory based Deep Recurrent Neural Networks for Large Vocabulary Speech Recognition, arΧiv:1410.4281 [cs.CL] 
  4. Schmidhuber, Jürgen (англ.)русск.. Habilitation thesis: System modeling and optimization (англ.). — 1993. Page 150 ff demonstrates credit assignment across the equivalent of 1,200 layers in an unfolded RNN.
  5. Hochreiter, Sepp (англ.)русск.; Schmidhuber, Jürgen (англ.)русск.. Long Short-Term Memory (англ.) // Neural Computation (англ.)русск.. — 1997. — 1 November (vol. 9, no. 8). — P. 1735—1780. — doi:10.1162/neco.1997.9.8.1735.
  6. Fernández, Santiago; Graves, Alex; Schmidhuber, Jürgen. An Application of Recurrent Neural Networks to Discriminative Keyword Spotting (англ.) // Proceedings of the 17th International Conference on Artificial Neural Networks : journal. — Berlin, Heidelberg: Springer-Verlag, 2007. — Vol. ICANN'07. — P. 220—229. — ISBN 978-3-540-74693-5.
  7. Graves, Alex; Schmidhuber, Jürgen. Offline Handwriting Recognition with Multidimensional Recurrent Neural Networks (англ.) // Neural Information Processing Systems (NIPS) Foundation : journal / Bengio, Yoshua; Schuurmans, Dale; Lafferty, John; Williams, Chris editor-K. I.; Culotta, Aron. — 2009. — P. 545—552.
  8. ↑ Hannun, Awni; Case, Carl; Casper, Jared; Catanzaro, Bryan; Diamos, Greg; Elsen, Erich; Prenger, Ryan; Satheesh, Sanjeev; et al. (2014-12-17), Deep Speech: Scaling up end-to-end speech recognition, arΧiv:1412.5567 [cs.CL] 
  9. ↑ Bo Fan, Lijuan Wang, Frank K. Soong, and Lei Xie (2015). Photo-Real Talking Head with Deep Bidirectional LSTM. In Proceedings of ICASSP 2015.
  10. Zen, Heiga Unidirectional Long Short-Term Memory Recurrent Neural Network with Recurrent Output Layer for Low-Latency Speech Synthesis (неопр.). Google.com 4470–4474. ICASSP (2015).
  11. Sak, Haşim Google voice search: faster and more accurate (неопр.) (сентябрь 2015).
  12. Sutskever, L.; Vinyals, O.; Le, Q. Sequence to Sequence Learning with Neural Networks (неопр.) // Electronic Proceedings of the Neural Information Processing Systems Conference. — 2014. — Т. 27. — С. 5346. — Bibcode: 2014arXiv1409.3215S. — arXiv:1409.3215.
  13. ↑ Jozefowicz, Rafal; Vinyals, Oriol; Schuster, Mike; Shazeer, Noam & Wu, Yonghui (2016-02-07), Exploring the Limits of Language Modeling, arΧiv:1602.02410 [cs.CL] 
  14. ↑ Gillick, Dan; Brunk, Cliff; Vinyals, Oriol & Subramanya, Amarnag (2015-11-30), Multilingual Language Processing From Bytes, arΧiv:1512.00103 [cs.CL] 
  15. ↑ Vinyals, Oriol; Toshev, Alexander; Bengio, Samy & Erhan, Dumitru (2014-11-17), Show and Tell: A Neural Image Caption Generator, arΧiv:1411.4555 [cs.CV] 
  16. Goller, C.; Küchler, A. Learning task-dependent distributed representations by backpropagation through structure (англ.) // IEEE International Conference on Neural Networks, 1996 : journal. — 1996. — Vol. 1. — P. 347. — ISBN 0-7803-3210-5. — doi:10.1109/ICNN.1996.548916.
  17. ↑ Seppo Linnainmaa (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors. Master’s Thesis (in Finnish), Univ. Helsinki, 6-7.
  18. Griewank, Andreas; Walther, Andrea. [[1] в «Книгах Google» Evaluating Derivatives: Principles and Techniques of Algorithmic Differentiation] (англ.). — Second. — SIAM, 2008. — ISBN 978-0-89871-776-1.
  19. ↑ Socher, Richard; Lin, Cliff; Ng, Andrew Y. & Manning, Christopher D., Parsing Natural Scenes and Natural Language with Recursive Neural Networks, 28th International Conference on Machine Learning (ICML 2011) 
  20. Socher, Richard; Perelygin, Alex; Y. Wu, Jean; Chuang, Jason; D. Manning, Christopher; Y. Ng, Andrew; Potts, Christopher. Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank (англ.) // Emnlp 2013 : journal.
  21. ↑ Journal |date=1988 |title=Bidirectional associative memories |journal=IEEE Transactions on Systems, Man, and Cybernetics |volume=18 |issue=1 |pages=49–60 |doi=10.1109/21.87054 |last1=Kosko |first1=B.}}
  22. Rakkiyappan, R.; Chandrasekar, A.; Lakshmanan, S.; Park, Ju H. Exponential stability for markovian jumping stochastic BAM neural networks with mode-dependent probabilistic time-varying delays and impulse control (англ.) // Complexity : journal. — 2015. — 2 January (vol. 20, no. 3). — P. 39—65. — doi:10.1002/cplx.21503.
  23. 1 2 Cruse, Holk; Neural Networks as Cybernetic Systems, 2nd and revised edition
  24. Elman, Jeffrey L. Finding Structure in Time (неопр.) // Cognitive Science. — 1990. — Т. 14, № 2. — С. 179—211. — doi:10.1016/0364-0213(90)90002-E.
  25. Jordan, Michael I. Serial Order: A Parallel Distributed Processing Approach (англ.) // Advances in Psychology : journal. — 1997. — 1 January (vol. 121). — P. 471—495. — ISBN 9780444819314. — doi:10.1016/s0166-4115(97)80111-2.
  26. Jaeger, Herbert; Haas, Harald. Harnessing Nonlinearity: Predicting Chaotic Systems and Saving Energy in Wireless Communication (англ.) // Science : journal. — 2004. — 2 April (vol. 304, no. 5667). — P. 78—80. — doi:10.1126/science.1091277. — Bibcode: 2004Sci...304...78J. — PMID 15064413.
  27. ↑ W. Maass, T. Natschläger, and H. Markram. A fresh look at real-time computation in generic recurrent neural circuits. Technical report, Institute for Theoretical Computer Science, TU Graz, 2002.
  28. 1 2 Schmidhuber, Jürgen. Learning complex, extended sequences using the principle of history compression (англ.) // Neural Computation (англ.)русск. : journal. — Vol. 4, no. 2. — P. 234—242.
  29. Schmidhuber, Jürgen. Deep Learning (неопр.) // Scholarpedia. — 2015. — Т. 10, № 11. — С. 32832.
  30. Gers, Felix Learning Precise Timing with LSTM Recurrent Networks (PDF Download Available) (неопр.). ResearchGate. Дата обращения 13 июня 2017.
  31. Schmidhuber, Jürgen (англ.)русск.. Deep Learning in Neural Networks: An Overview (неопр.) // Neural Networks. — 2015. — January (т. 61). — С. 85—117. — doi:10.1016/j.neunet.2014.09.003. — arXiv:1404.7828. — PMID 25462637.
  32. Bayer, Justin; Wierstra, Daan; Togelius, Julian; Schmidhuber, Jürgen. Evolving Memory Cell Structures for Sequence Learning (англ.) // Artificial Neural Networks – ICANN 2009 : journal. — Springer, Berlin, Heidelberg, 2009. — 14 September (vol. Lecture Notes in Computer Science). — P. 755—764. — ISBN 978-3-642-04276-8. — doi:10.1007/978-3-642-04277-5_76.
  33. Fernández, Santiago; Graves, Alex; Schmidhuber, Jürgen. Sequence labelling in structured domains with hierarchical recurrent neural networks (англ.) // Proc. 20th Int. Joint Conf. on Artificial In℡ligence, Ijcai 2007 : journal. — 2007. — P. 774—779.
  34. Graves, Alex; Fernández, Santiago; Gomez, Faustino. Connectionist temporal classification: Labelling unsegmented sequence data with recurrent neural networks (англ.) // In Proceedings of the International Conference on Machine Learning, ICML 2006 : journal. — 2006. — P. 369—376.
  35. Gers, F. A.; Schmidhuber, E. LSTM recurrent networks learn simple context-free and context-sensitive languages (англ.) // IEEE Transactions on Neural Networks (англ.)русск. : journal. — 2001. — November (vol. 12, no. 6). — P. 1333—1340. — ISSN 1045-9227. — doi:10.1109/72.963769.
  36. ↑ C.L. Giles, C.B. Miller, D. Chen, H.H. Chen, G.Z. Sun, Y.C. Lee, «Learning and Extracting Finite State Automata with Second-Order Recurrent Neural Networks», Neural Computation, 4(3), p. 393, 1992.
  37. ↑ C.W. Omlin, C.L. Giles, «Constructing Deterministic Finite-State Automata in Recurrent Neural Networks» Journal of the ACM, 45(6), 937—972, 1996.
  38. ↑ Chung, Junyoung; Gulcehre, Caglar; Cho, KyungHyun & Bengio, Yoshua (2014), Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling, arΧiv:1412.3555 [cs.NE] 
  39. ↑ Recurrent Neural Network Tutorial, Part 4 – Implementing a GRU/LSTM RNN with Python and Theano – WildML (неопр.). Дата обращения 18 мая 2016.
  • Jordan, M. I. Serial order: A parallel distributed processing approach // Institute for Cognitive Science Report 8604. — University of California, San Diego, 1986.
  • Elman, J.L. Finding structure in time // Cognitive Science. — 1990. — С. 179—211. (недоступная ссылка)

ru.wikipedia.org

Генеративно-состязательная сеть — Википедия

Материал из Википедии — свободной энциклопедии

Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 7 сентября 2019; проверки требует 1 правка. Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 7 сентября 2019; проверки требует 1 правка.

Генеративно-состязательная сеть (англ. Generative adversarial network, сокращённо GAN) — алгоритм машинного обучения без учителя, построенный на комбинации из двух нейронных сетей, одна из которых (сеть G) генерирует образцы (см. Генеративная модель[en]),а другая (сеть D) старается отличить правильные («подлинные») образцы от неправильных (см. Дискриминативная модель[en]). Так как сети G и D имеют противоположные цели — создать образцы и отбраковать образцы — между ними возникает Антагонистическая игра. Генеративно-состязательную сеть описал Ян Гудфеллоу[en] из компании Google в 2014 году.[1]

Использование этой техники позволяет в частности генерировать фотографии, которые человеческим глазом воспринимаются как натуральные изображения. Например, известна попытка синтезировать фотографии кошек, которые вводят в заблуждение эксперта, считающего её естественными фото.[2] Кроме того GAN может использоваться для улучшения качества нечётких или частично испорченных фотографий.

В системе GAN одна из сетей (сеть G, от Generator) генерирует образцы (см. Генеративная модель[en]), а другая (сеть D, от Discriminator) старается отличить правильные («подлинные») образцы от неправильных (см. Дискриминативная модель[en]) .[1] Используя набор переменных латентного пространства, генеративная сеть пытается слепить новый образец, смешав несколько исходных образцов. Дискриминативная сеть обучается различать подлинные и поддельные образцы, а результаты различения подаются на вход генеративной сети так, чтобы она смогла подобрать лучший набор латентных параметров, и дискриминативная сеть уже не смогла бы отличить подлинные образцы от поддельных. Таким образом целью сети G является повысить процент ошибок сети D, а целью сети D является наоборот улучшение точности распознавания.[1][3]

Дискриминационная сеть D, анализируя образцы из оригинальных данных и из подделанных генератором, достигает некоторой точности различения. Генератор при этом начинает со случайных комбинаций параметров латентного пространства (см. Многомерное нормальное распределение), а после оценки полученных образцов сетью D, применяется Метод обратного распространения ошибки, который позволяет улучшить качество генерации, подправив входной набор латентных параметров. Постепенно искусственные изображения на выходе генеративной сети становятся всё более качественными.[4] Сеть D реализуется как Свёрточная нейронная сеть, в то время как сеть G наоборот разворачивает изображение на базе скрытых параметров.

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

Идея состязательного обучения была выдвинута в 2013 году Li, Gauci и Gross в 2013.[5] Этот метод называется также «обучением Тьюринга»,[6], так как ставит целью пройти Тест Тьюринга.

Популярные объяснения метода[править | править код]

Принцип состязательности в сети GAN нередко описывается через метафоры. Например, генеративная сеть уподобляется фальшивомонетчику или подделывателю картин, а дискриминативная — эксперту который стремится распознать подделку.[7][8]. Другой пример — образ двух боксёров, один из которых учился у мастера, а второй вынужден подражать ученику. [9].

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

В статьях исследователей приводятся примеры реализации GAN на базе библиотеки TensorFlow[12][13].

GAN используются для получения фотореалистичных изображений, например для элементов промышленного дизайна, дизайна интерьера, одежды, сумок, портфелей, сцен компьютерных игр и т. д. Сети GAN используются также в сети Facebook.[14] В последнее время системы GANs стали использоваться для подготовки кадров фильмов или мультипликации.[15] Также эти системы помогают воссоздать трёхмерную модель объекта с помощью фрагментарных изображений[16] и улучшить изображения, полученные из астрономических наблюдений.[17]

  1. 1 2 3 Goodfellow, Ian J.; Pouget-Abadie, Jean; Mirza, Mehdi; Xu, Bing; Warde-Farley, David; Ozair, Sherjil; Courville, Aaron & Bengio, Yoshua (2014), Generative Adversarial Networks, arΧiv:1406.2661 [stat.ML] 
  2. ↑ Salimans, Tim; Goodfellow, Ian; Zaremba, Wojciech; Cheung, Vicki; Radford, Alec & Chen, Xi (2016), Improved Techniques for Training GANs, arΧiv:1606.03498 [cs.LG] 
  3. Luc, Pauline; Couprie, Camille; Chintala, Soumith; Verbeek, Jakob. Semantic Segmentation using Adversarial Networks (неопр.) // NIPS Workshop on Adversarial Training, Dec , Barcelona, Spain. — 2016. — 25 November (т. 2016). — arXiv:1611.08408.
  4. ↑ Andrej Karpathy, Pieter Abbeel, Greg Brockman, Peter Chen, Vicki Cheung, Rocky Duan, Ian Goodfellow, Durk Kingma, Jonathan Ho, Rein Houthooft, Tim Salimans, John Schulman, Ilya Sutskever, And Wojciech Zaremba, Generative Models, OpenAI, <http://openai.com/blog/generative-models/>. Проверено 7 апреля 2016. 
  5. (July 6, 2013) "A Coevolutionary Approach to Learn Animal Behavior Through Controlled Interaction".: 223–230, Amsterdam, The Netherlands: ACM. 
  6. Li, Wei; Gauci, Melvin; Groß, Roderich. Turing learning: a metric-free approach to inferring behavior and its application to swarms (англ.) // Swarm Intelligence : journal. — 2016. — 30 August (vol. 10, no. 3). — P. 211—243. — doi:10.1007/s11721-016-0126-1.
  7. ↑ Фальшивомонетчики против банкиров: стравливаем adversarial networks в Theano
  8. ↑ Photo Editing with Generative Adversarial Networks (Part 1)
  9. ↑ Michael Dietz. On the intuition behind deep learning & GANs — towards a fundamental understanding (недоступная ссылка)
  10. ↑ Anders Boesen Lindbo Larsen and Søren Kaae Sønderby Generating Faces with Torch
  11. ↑ Photo Editing with Generative Adversarial Networks (Part 1)
  12. ↑ Generative Adversarial Nets in TensorFlow Agustinus Kristiadi
  13. ↑ Image Completion with Deep Learning in TensorFlow
  14. ↑ When Will Computers Have Common Sense? Ask Facebook (неопр.). Scientific American (20 июня 2016). Дата обращения 31 июля 2016.
  15. ↑ Generating Videos with Scene Dynamics (неопр.). web.mit.edu.
  16. ↑ 3D Generative Adversarial Network (неопр.). 3dgan.csail.mit.edu.
  17. ↑ Schawinski, Kevin; Zhang, Ce; Zhang, Hantian; Fowler, Lucas & Santhanam, Gokula Krishnan (2017-02-01), Generative Adversarial Networks recover features in astrophysical images of galaxies beyond the deconvolution limit, arΧiv:1702.00403 [astro-ph.IM] 

ru.wikipedia.org

Рекурсивные нейронные сети — Википедия

Материал из Википедии — свободной энциклопедии

Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 10 января 2020; проверки требует 1 правка. Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 10 января 2020; проверки требует 1 правка.

Рекурсивные нейронные сети (англ. Recursive neural network; RvNN) — вид нейронных сетей, работающих с данными переменной длины. Модели рекурсивных сетей используют иерархические структуры образцов при обучении. Например, изображения, составленные из сцен, объединяющих подсцены, включающие много объектов. Выявление структуры сцены и её деконструкция- нетривиальная задача. При этом необходимо как идентифицировать отдельные объекты, так и всю структуру сцены.

В рекурсивных сетях нейроны с одинаковыми весами активируются рекурсивно в соответствии со структурой сети. В процессе работы рекурсивной сети вырабатывается модель для предсказания для структур переменной размерности, так и скалярных структур через активацию структуры в соответствии с топологией. Сети RvNNs успешно применяются при обучении последовательных структур и деревьев в задачах обработки естественного языка, при этом фразы и предложения моделируются через векторное представление слов. RvNNs первоначально появились для распределённого представления структур, используя предикаты математической логики.[1] Разработки рекурсивных сетей и первые модели начались в середине 1990-х.[2][3]

Базовый элемент[править | править код]

Архитектура простой рекурсивной сети

В самой простой архитектуре узлы сети сходятся к родителям через матрицу весов скрытого слоя, используемую многократно через всю сеть, и нелинейную функцию активации типа гиперболического тангенса. Если c1 и c2 — n-мерные презентации узлов сети, то их родители также представляют собой n-мерные вектора, вычисляемые как

p1,2=tanh⁡(W[c1;c2]){\displaystyle p_{1,2}=\tanh \left(W[c_{1};c_{2}]\right)}

Здесь W — обученная матрица весов n×2n{\displaystyle n\times 2n}.

Эта архитектура с некоторым усовершенствованием используется для последовательной дешифровки натуральных сцен изображения или для структурирования предложений естественного языка.[4]

Рекурсивная каскадная корреляция (RecCC)[править | править код]

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

Рекурсивные сети без учителя[править | править код]

В 2004 году была предложена система обучения рекурсивной сети без учителя.[7][8]

Тензорные сети[править | править код]

Тензорные рекурсивные сети используют одну тензорную функцию для всех узлов дерева.[9]

Стохастический метод градиентного спуска[править | править код]

Для обучения используется обычно Стохастический метод градиентного спуска (SGD). Градиент определяется через сквозную структуру обратного распространения ошибок (BPTS), этот метод является модификацией обратного распространения ошибок во временных рядах, применяемого для обучения рекуррентных нейронных сетей.

В литературе подтверждается способность универсальной аппроксимации рекуррентными сетями по сетям типа дерева.[10][11]

Рекуррентная нейронная сеть[править | править код]

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

Тройная эхо-сеть (Tree Echo State Network)[править | править код]

Тройная эхо-сеть - эффективный пример рекурсивных нейронных сетей,[12] использующих парадигму резервуарного вычисления (Reservoir computing).

Расширения до графов[править | править код]

Расширение структуры до графов образует графическую нейронную сеть (GNN),[13], нейронную сеть для графов (NN4G),[14] и более новые свёрточные нейронные сети для графов.

  1. Goller, C.; Küchler, A. Learning task-dependent distributed representations by backpropagation through structure (англ.) // Neural Networks, 1996., IEEE : journal. — doi:10.1109/ICNN.1996.548916.
  2. 1 2 Sperduti, A.; Starita, A. Supervised neural networks for the classification of structures (англ.) // IEEE Transactions on Neural Networks (англ.)русск. : journal. — 1997. — 1 May (vol. 8, no. 3). — P. 714—735. — ISSN 1045-9227. — doi:10.1109/72.572108.
  3. Frasconi, P.; Gori, M.; Sperduti, A. A general framework for adaptive processing of data structures (англ.) // IEEE Transactions on Neural Networks (англ.)русск. : journal. — 1998. — 1 September (vol. 9, no. 5). — P. 768—786. — ISSN 1045-9227. — doi:10.1109/72.712151.
  4. Socher, Richard; Lin, Cliff; Ng, Andrew Y.; Manning, Christopher D. Parsing Natural Scenes and Natural Language with Recursive Neural Networks (англ.) // The 28th International Conference on Machine Learning (ICML 2011) : journal.
  5. Bianucci, Anna Maria; Micheli, Alessio; Sperduti, Alessandro; Starita, Antonina. Application of Cascade Correlation Networks for Structures to Chemistry (англ.) // Applied Intelligence : journal. — 2000. — Vol. 12, no. 1—2. — P. 117—147. — ISSN 0924-669X. — doi:10.1023/A:1008368105614.
  6. Micheli, A.; Sona, D.; Sperduti, A. Contextual processing of structured data by recursive cascade correlation (англ.) // IEEE Transactions on Neural Networks (англ.)русск. : journal. — 2004. — 1 November (vol. 15, no. 6). — P. 1396—1410. — ISSN 1045-9227. — doi:10.1109/TNN.2004.837783.
  7. Hammer, Barbara; Micheli, Alessio; Sperduti, Alessandro; Strickert, Marc. Recursive self-organizing network models (неопр.) // Neural Networks. — 2004. — Т. 17. — С. 1061—1085.
  8. Hammer, Barbara; Micheli, Alessio; Sperduti, Alessandro; Strickert, Marc. A general framework for unsupervised processing of structured data (англ.) // Neurocomputing : journal. — 2004. — 1 March (vol. 57). — P. 3—35. — doi:10.1016/j.neucom.2004.01.008.
  9. Socher, Richard; Perelygin, Alex; Y. Wu, Jean; Chuang, Jason; D. Manning, Christopher; Y. Ng, Andrew; Potts, Christopher. Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank (англ.) // EMNLP 2013 : journal.
  10. Hammer, Barbara. Learning with Recurrent Neural Networks (англ.). — Springer (англ.)русск., 2007. — ISBN 9781846285677.
  11. Hammer, Barbara; Micheli, Alessio; Sperduti, Alessandro. Universal Approximation Capability of Cascade Correlation for Structures (англ.) // Neural Computation (англ.)русск. : journal. — 2005. — 1 May (vol. 17, no. 5). — P. 1109—1159. — doi:10.1162/0899766053491878.
  12. Gallicchio, Claudio; Micheli, Alessio. Tree Echo State Networks (неопр.) // Neurocomputing. — 2013. — 4 February (т. 101). — С. 319—337. — doi:10.1016/j.neucom.2012.08.017.
  13. Scarselli, F.; Gori, M.; Tsoi, A. C.; Hagenbuchner, M.; Monfardini, G. The Graph Neural Network Model (англ.) // IEEE Transactions on Neural Networks (англ.)русск. : journal. — 2009. — 1 January (vol. 20, no. 1). — P. 61—80. — ISSN 1045-9227. — doi:10.1109/TNN.2008.2005605.
  14. Micheli, A. Neural Network for Graphs: A Contextual Constructive Approach (англ.) // IEEE Transactions on Neural Networks (англ.)русск. : journal. — 2009. — 1 March (vol. 20, no. 3). — P. 498—511. — ISSN 1045-9227. — doi:10.1109/TNN.2008.2010350.

ru.wikipedia.org

Нейронная сеть Хопфилда — Википедия

Нейро́нная сеть Хо́пфилда (англ. Hopfield network) — полносвязная нейронная сеть с симметричной матрицей связей. В процессе работы динамика таких сетей сходится (конвергирует) к одному из положений равновесия. Эти положения равновесия определяются заранее в процессе обучения, они являются локальными минимумами функционала, называемого энергией сети (в простейшем случае — локальными минимумами отрицательно определённой квадратичной формы на n-мерном кубе). Такая сеть может быть использована как автоассоциативная память, как фильтр, а также для решения некоторых задач оптимизации. В отличие от многих нейронных сетей, работающих до получения ответа через определённое количество тактов, сети Хопфилда работают до достижения равновесия, когда следующее состояние сети в точности равно предыдущему: начальное состояние является входным образом, а при равновесии получают выходной образ[1].

Ее вариацией является Нейронная сеть Хэмминга.

Схема сети Хопфилда с тремя нейронами

Нейронная сеть Хопфилда устроена так, что её отклик на запомненные m{\displaystyle m} эталонных «образов» составляют сами эти образы, а если образ немного исказить и подать на вход, он будет восстановлен и в виде отклика будет получен оригинальный образ. Таким образом, сеть Хопфилда осуществляет коррекцию ошибок и помех.

Сеть Хопфилда однослойная и состоит из N{\displaystyle N} искусственных нейронов. Каждый нейрон системы может принимать на входе и на выходе одно из двух состояний (что аналогично выходу нейрона с пороговой функцией активации):

yi={1,−1{\displaystyle y_{i}=\left\{{\begin{matrix}1,\\-1\end{matrix}}\right.}

Из-за их биполярной природы нейронные сети Хопфилда иногда называют спинами.

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

E=12∑i,j=1Nwijxixj{\displaystyle E={\frac {1}{2}}\sum _{i,j=1}^{N}w_{ij}x_{i}x_{j}}

где wij{\displaystyle w_{ij}} — элемент матрицы взаимодействий W{\displaystyle W}, которая состоит из весовых коэффициентов связей между нейронами. В процессе обучения формируется выходная матрица W{\displaystyle W}, которая запоминает m{\displaystyle m} эталонных «образов» — N-мерных бинарных векторов: Sm=(sm1,sm2,...,smN){\displaystyle S_{m}=(s_{m1},s_{m2},...,s_{mN})}, эти образы во время эксплуатации сети будут выражать отклик системы на входные сигналы, или иначе - окончательные значения выходов yi{\displaystyle y_{i}} после серии итераций.

В сети Хопфилда матрица связей является симметричной (wij=wji{\displaystyle w_{ij}=w_{ji}}), а диагональные элементы матрицы полагаются равными нулю (wii=0{\displaystyle w_{ii}=0}), что исключает эффект воздействия нейрона на самого себя и является необходимым для сети Хопфилда, но не достаточным условием устойчивости в процессе работы сети. Достаточным является асинхронный режим работы сети. Подобные свойства определяют тесную связь с реальными физическими веществами, называемыми спиновыми стёклами.

Матрица взаимодействий хранится на самих нейронах в виде весов при связях нейронов с другими нейронами.

Так например, если входной сигнал определяется 10 параметрами, то нейронная сеть Хопфилда формируется из одного уровня с 10 нейронами. Каждый нейрон связывается со всеми остальными 9-ю нейронами, таким образом в сети образуется 90 (10 x 9) связей. Для каждой связи определяется весовой коэффициент wij{\displaystyle w_{ij}}. Все веса связей и образуют матрицу взаимодействий, которая заполняется в процессе обучения.

Обучение сети заключается в том, что находятся веса матрицы взаимодействий так, чтобы запомнить m{\displaystyle m} векторов (эталонных образов, составляющих "память" системы).

Вычисление коэффициентов основано на следующем правиле: для всех запомненных образов Xi{\displaystyle X_{i}} матрица связи должна удовлетворять уравнению

Xi=WXi{\displaystyle X_{i}=WX_{i}}

поскольку именно при этом условии состояния сети Xi{\displaystyle X_{i}} будут устойчивы — попав в такое состояние, сеть в нём и останется.

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

wij=1N∑d=1..mXidXjd{\displaystyle w_{ij}={\frac {1}{N}}\sum _{d=1..m}X_{id}X_{jd}}

где N{\displaystyle N} — размерность векторов, m{\displaystyle m} — число запоминаемых выходных векторов, d{\displaystyle d} — номер запоминаемого выходного вектора, Xij{\displaystyle X_{ij}} — i-я компонента запоминаемого выходного j-го вектора.

Это выражение может стать более ясным, если заметить, что весовая матрица W{\displaystyle W} может быть найдена вычислением внешнего произведения каждого запоминаемого вектора с самим собой и суммированием матриц, полученных таким образом. Это может быть записано в виде

W=1N∑iXiXiT{\displaystyle W={\frac {1}{N}}\sum _{i}X_{i}X_{i}^{T}}

где Xi{\displaystyle X_{i}} — i-й запоминаемый вектор-столбец.

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

Особенности процесса обучения сети Хопфилда[править | править код]

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

Некоторые авторы относят сеть Хопфилда к обучению без учителя. Но это неверно, так как обучение без учителя предполагает отсутствие информации о том, к каким классам нужно относить стимулы. Для сети Хопфилда без этой информации нельзя настроить весовые коэффициенты, поэтому здесь можно говорить лишь о том, что такую сеть можно отнести к классу оптимизирующих сетей (фильтров). Отличительной особенностью фильтров является то, что матрица весовых коэффициентов настраивается детерминированным алгоритмом раз и навсегда, и затем весовые коэффициенты больше не изменяются. Это может быть удобно для физического воплощения такого устройства, так как на схемотехническом уровне реализовать устройство с переменными весовыми коэффициентами на порядок сложнее. Примером фильтра без обратных связей может служить алгоритм CC4 (Cornel classification), автором которого является S.Kak.

В сети Хопфилда есть обратные связи и поэтому нужно решать проблему устойчивости. Веса между нейронами в сети Хопфилда могут рассматриваться в виде матрицы взаимодействий W{\displaystyle W}. В работе Cohen, Grossberg[2] показано, что сеть с обратными связями является устойчивой, если её матрица симметрична и имеет нули на главной диагонали. Имеется много устойчивых систем другого типа, например, все сети прямого распространения, а также современные рекуррентные сети Джордана и Элмана, для которых не обязательно выполнять условие на симметрию. Но это происходит вследствие того, что на обратные связи наложены другие ограничения. В случае сети Хопфилда условие симметричности является необходимым, но не достаточным, в том смысле, что на достижение устойчивого состояния влияет ещё и режим работы сети. Ниже будет показано, что только асинхронный режим работы сети гарантирует достижение устойчивого состояния сети, в синхронном случае возможно бесконечное переключение между двумя разными состояниями (такая ситуация называется динамическим аттрактором, в то время как устойчивое состояние принято называть статическим аттрактором).

Пороговая функция F{\displaystyle F}, реализуемая нейроном сети Хопфилда.

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

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

Xi+1=F(WXi){\displaystyle X_{i+1}=F(WX_{i})}

где F{\displaystyle F} — активационная функция, Xi{\displaystyle X_{i}} и Xi+1{\displaystyle X_{i+1}} — текущее и следующее состояния сети, до тех пор, пока состояния Xi{\displaystyle X_{i}} и Xi+1{\displaystyle X_{i+1}} не совпадут (или, в случае синхронного режима работы, не совпадут состояния Xi−1{\displaystyle X_{i-1}} с Xi+1{\displaystyle X_{i+1}} и одновременно Xi−2{\displaystyle X_{i-2}} с Xi{\displaystyle X_{i}}). Именно этот процесс называется конвергенцией сети. Полученное устойчивое состояние Xi{\displaystyle X_{i}} (статический аттрактор), или, возможно, в синхронном случае пара {Xi,Xi+1{\displaystyle X_{i},X_{i+1}}} (динамический аттрактор), является ответом сети на данный входной образ.

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

Работа сети в режиме фильтрации (восстановление повреждённых образов)[править | править код]

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

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

X(t+1)=F(WX(t)){\displaystyle X(t+1)=F(WX(t))}

где F — активационная функция, X(t){\displaystyle X(t)} и X(t+1){\displaystyle X(t+1)} — текущее и следующее состояния сети, до тех пор, пока состояния X(t){\displaystyle X(t)} и X(t+1){\displaystyle X(t+1)} не совпадут (или, в случае синхронного режима работы, не совпадут состояния X(t−1){\displaystyle X(t-1)} с X(t+1){\displaystyle X(t+1)} и одновременно X(t−2){\displaystyle X(t-2)} с X(t){\displaystyle X(t)}). Именно этот процесс называется конвергенцией сети.

Это же можно описать так называемым локальным полем ai{\displaystyle a_{i}} действующим на нейрон xi{\displaystyle x_{i}} со стороны всех остальных нейронов сети: ai(t)=∑j=1,j≠iNwjixj(t−1){\displaystyle a_{i}(t)=\sum _{j=1,j\neq \;i}^{N}w_{ji}x_{j}(t-1)}.

После расчёта локального поля нейрона ai(t){\displaystyle a_{i}(t)} это значение используется для расчёта значения выхода через функцию активации, которая в данном случае является пороговой (с нулевым порогом). Соответственно, значение выхода нейрона і в текущий момент времени xi(t){\displaystyle x_{i}(t)} рассчитывается по формуле:

xi(t)=sign(∑j=1,j≠iNwjixj(t−1)){\displaystyle x_{i}(t)=sign\left(\sum _{j=1,j\neq \;i}^{N}w_{ji}x_{j}(t-1)\right)},

где wij{\displaystyle w_{ij}} — весовой коэффициент между нейронами i и j, xj(t−1){\displaystyle x_{j}(t-1)} — значения выходов нейрона j в предыдущий момент времени.

Во время работы сети Хопфилда признаком нахождения решения является момент, когда достигается аттрактор, статический (когда на каждом следующем шаге повторяется устойчивое состояние X(t){\displaystyle X(t)}) или, возможно, динамический (когда до бесконечности чередуются два разных состояния {X(t),X(t+1){\displaystyle X(t),X(t+1)}}). Это конечное состояние сети и является её реакцией на данный образ.

Нормальным ответом является такое устойчивое состояние, которое совпадает с одним из запомненных при обучении векторов. Но при некоторых условиях (в частности, при слишком большом количестве запомненных образов) результатом работы может стать так называемый ложный аттрактор («химера»), состоящий из нескольких частей разных запомненных образов. В синхронном режиме сеть может к тому же прийти к динамическому аттрактору. Обе эти ситуации в общем случае являются нежелательными, поскольку не соответствуют ни одному запомненному вектору — а соответственно, не определяют класс, к которому сеть отнесла входной образ.

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

Синхронный режим работы сети[править | править код]

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

При реально параллельном моделировании, этот режим фактически означает, что время передачи τij{\displaystyle \tau _{ij}} для каждой связи между элементами ui{\displaystyle u_{i}} и uj{\displaystyle u_{j}} одинаково для каждой связи, что приводит к параллельной работе всех связей, они одновременно меняют свои состояния, основываясь только на предыдущем моменте времени. Наличие таких синхронных тактов, которые можно легко выделить и приводит к пониманию синхронного режима. При синхронном режиме возможно (хотя и далеко не всегда наблюдается) бесконечное чередование двух состояний с разной энергией — так называемый динамический аттрактор. Поэтому синхронный режим практически для сети Хопфилда не используется, и рассматривается лишь как основа для понимания более сложного асинхронного режима.

Асинхронный режим работы сети[править | править код]

Если моделировать работу сети как последовательный алгоритм, то в асинхронном режиме работы состояния нейронов в следующий момент времени меняются последовательно: вычисляется локальное поле для первого нейрона в момент t{\displaystyle t}, определяется его реакция, и нейрон устанавливается в новое состояние (которое соответствует его выходу в момент t+1{\displaystyle t+1}), потом вычисляется локальное поле для второго нейрона с учётом нового состояния первого, меняется состояние второго нейрона, и так далее — состояние каждого следующего нейрона вычисляется с учетом всех изменений состояний рассмотренных ранее нейронов.

По сути при последовательной реализации сети Хопфилда явно не видно, в чём заключается асинхронность, но это видно, если сеть Хопфилда реализовать с параллельными вычислениями. В этом случае асинхронный режим сети Хопфилда упрощен, и носит частный случай по сравнению с общим видом асинхронных сетей, где время передачи τij{\displaystyle \tau _{ij}} для каждой связи между элементами ui{\displaystyle u_{i}} и uj{\displaystyle u_{j}} своё, но постоянное. Чтобы рассмотреть работу сети при параллельной реализации, необходимо ввести понятие такта — как минимальное время, за которое происходит передача сигнала по связи, то есть при τij=1{\displaystyle \tau _{ij}=1}. Тогда за промежуток времени между t{\displaystyle t} и t+1{\displaystyle t+1} происходит определённое количество тактов N. И именно в пределах времени из N тактов происходит асинхроность протекания сигналов и выполнения расчётов. То есть, например, когда нужно рассчитать состояние нейрона № 3, необходимо рассчитать состояние нейрона № 1 и состояние нейрона № 2 и умножить это на соответствующие веса w13{\displaystyle w_{13}} и w23{\displaystyle w_{23}}. Но, как оказывается, чтобы рассчитать состояние нейрона № 2, нужно знать обновлённое состояние нейрона № 1 и старое состояние нейрона № 3, умножить их на веса w12{\displaystyle w_{12}} и w32{\displaystyle w_{32}}. Понятно, что физически невозможно рассчитать состояние нейрона № 1 и состояние нейрона № 2 за одно и то же время, так как состояние нейрона № 2 зависит от состояния нейрона № 1. Поэтому связь между нейроном № 1 и нейроном № 3 имеет время передачи τij=2{\displaystyle \tau _{ij}=2}, и достигает нейрона № 3 за два такта. Именное такое разное время передачи τij{\displaystyle \tau _{ij}} и позволяет говорить о сети Хопфилда как о сети с асинхронным режимом.

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

Пример восстановления повреждённого изображения[править | править код]

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

Пусть имеется нейронная сеть размерностью N=100{\displaystyle N=100}, в матрицу связей записан набор чёрно-белых картинок (−1 — чёрный цвет, +1 — белый), среди которых есть изображение собачки (рисунок справа). Если установить начальное состояние сети близким к этому вектору (рисунок слева, искажённый образ), то в ходе динамики нейронная сеть восстановит исходное изображение (эталон). В этом смысле можно говорить о том, что сеть Хопфилда решает задачу распознавания образов (хотя, строго говоря, полученное эталонное изображение ещё нужно превратить в номер класса, что в некоторых случаях может быть весьма вычислительно ёмкой задачей).

Искажённый образ Эталон

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

Определить, устойчиво или нет состояние нейрона, можно на основании так называемой искусственной энергии нейрона в данном поле Ei=−sihi{\displaystyle E_{i}=-s_{i}h_{i}}. Если знак выхода (+1 или −1) нейрона совпадает с направлением локального поля (Ei<0{\displaystyle E_{i}<0}), то его положение энергетически устойчиво и в следующий момент времени состояние нейрона остаётся неизменным. В противном случае (Ei>0{\displaystyle E_{i}>0}) положение нейрона неустойчиво и он меняет свой знак, переходя в состояние si(t+1)=−si(t){\displaystyle s_{i}(t+1)=-s_{i}(t)} с энергией Ei(t+1)<Ei(t){\displaystyle E_{i}(t+1)<E_{i}(t)}.

Устойчивость при асинхронном способе достигается потому, что выполняется условие на общую энергию сети E(t+1)≤E(t){\displaystyle E(t+1)\leq E(t)}. В синхронном случае условие несколько изменяется, а именно: E(t+1)≤E(t−1){\displaystyle E(t+1)\leq E(t-1)}. В ситуации, когда происходят бесконечные циклические переходы, энергия двух разных состояний соответственно равна E(t){\displaystyle E(t)} и E(t+1){\displaystyle E(t+1)}. При этом состояния t+1{\displaystyle t+1} и t−1{\displaystyle t-1}, а также t{\displaystyle t} и t+2{\displaystyle t+2} — совпадают. Если образуется такое состояние, то его называется динамическим аттрактором. Если же совпадают состояния t{\displaystyle t} и t+1{\displaystyle t+1}, аттрактор называют статическим. В большинстве случаев динамические аттракторы являются нежелательными, так как не соответствуют какому-либо определённому ответу сети.

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

Обработка визуальных образов (фильтрация и ассоциативная память) — не единственная область применения модели Хопфилда. Динамическая процедура, описанная выше, на каждом шаге понижает значение энергии нейронной сети. Это позволяет решать комбинаторные задачи оптимизации, если они могут быть сформулированы как задачи минимизации энергии. Классической проблемой такого типа является задача коммивояжёра.

Решение задачи о коммивояжёре[править | править код]

(Задачу коммивояжера с помощью нейронной сети Хопфилда решить нельзя) Сеть Хопфилда может использоваться для решения задачи коммивояжера (нужно обойти все n городов и вернуться в исходный так, чтобы длина пройденного маршрута была минимальной). Для этого можно наложить, например, такие требования на сеть:

  1. Сеть должна состоять из N=n×n{\displaystyle N=n\times n} нейронов, которые мы будем рассматривать как квадрат из n{\displaystyle n} строк и n{\displaystyle n} столбцов.
  2. Ответ сети должен содержать только один активный нейрон в каждой строке и каждом столбце.
  3. Активный нейрон в первом столбце задаёт первый город маршрута, во втором столбце — второй город маршрута, и так далее.

Оказывается, что для решения этой задачи достаточно следующих простых соображений:

  • для выполнения условия 2 веса сети должны быть построены таким образом, чтобы каждый нейрон препятствовал активации других нейронов в своей строке и в своём столбце;
  • для минимизации длины пути необходимо, чтобы нейрон в i{\displaystyle i}-м столбце тем активнее препятствовал акт

ru.wikipedia.org

Оптические нейронные сети — Википедия

Материал из Википедии — свободной энциклопедии

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

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

Были предложены различные электронно-оптические устройства, реализующие реальное параллельное матричное умножение [1][2][3].

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

Таким образом, такие устройства являются физическими аналогами нейронной сети Хопфилда, нейронной сети Коско и многих других.

Оптические-бактериородопсиновые нейронные сети[править | править код]

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

Следует отметить, что бактериородопсин - не единственный белок используемый в этих целях. Также перспективным для исследования является фотоактивный жёлтый белок PYP (photoactive yellow protein) - рецепторный белок, который например у организма Ectothiorhodopspira halophila [4]. Этот белок обеспечивает отрицательный фототаксис бактерий - убегание от света.

  1. ↑ Athale R. A., Friedlander С. В., Kushner C. B. 1986. Attentive associative architectures and their implications to optical computing. Proceedings of the Society of Photo-Optical Instrumentation Engineering 625:179-88
  2. ↑ Farhat N. H., Psaltis D., Prata A., Paek E. 1985. Optical implementation of the Hopfield model. Applied optics 24:1469-75
  3. ↑ Fisher A. D., Giles C. L, Lee J. N. 1985. An adaptive optical computing element. Proceedings of the Optical Society of America Topical Meeting.
  4. ↑ синоним Halorhodospira halophila

ru.wikipedia.org


Смотрите также



© 2010- GutenBlog.ru Карта сайта, XML.