Лекция
Привет, Вы узнаете о том , что такое архитектура нейронных сетей, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое архитектура нейронных сетей, классификация нейросетей, виды нейросетей, неросеть, свертка, сверхточные нейросети, рекуррентные нейросети, cnn, rnn , настоятельно рекомендую прочитать все из категории Computational Neuroscience (вычислительная нейронаука) Теория и приложения искусственных нейронных сетей.
Моя цель — дать вам базовую терминологию и понимание, что к чему в этой области, из каких кирпичиков собираются нейросети, и как это использовать.
План доклада такой.
Нейронная сеть (также искусственная нейронная сеть, ИНС) — математическая модель, а также ее программное или аппаратное воплощение, построенная по принципу организации и функционирования биологических нейронных сетей — сетей нервных клеток живого организма. Это понятие возникло при изучении процессов, протекающих в мозге, и при попытке смоделировать эти процессы. Первой такой попыткой были нейронные сети У. Маккалока и У. Питтса . После разработки алгоритмов обучения получаемые модели стали использовать в практических целях: в задачах прогнозирования, для распознавания образов, в задачах управления и др.
ИНС представляет собой систему соединенных и взаимодействующих между собой простых процессоров (искусственных нейронов). Такие процессоры обычно довольно просты (особенно в сравнении с процессорами, используемыми в персональных компьютерах). Каждый процессор подобной сети имеет дело только с сигналами, которые он периодически получает, и сигналами, которые он периодически посылает другим процессорам. И, тем не менее, будучи соединенными в достаточно большую сеть с управляемым взаимодействием, такие по отдельности простые процессоры вместе способны выполнять довольно сложные задачи.
Нейронные сети не программируются в привычном смысле этого слова, они обучаются. Возможность обучения — одно из главных преимуществ нейронных сетей перед традиционными алгоритмами. Технически обучение заключается в нахождении коэффициентов связей между нейронами. В процессе обучения нейронная сеть способна выявлять сложные зависимости между входными данными и выходными, а также выполнять обобщение. Это значит, что в случае успешного обучения сеть сможет вернуть верный результат на основании данных, которые отсутствовали в обучающей выборке, а также неполных и/или «зашумленных», частично искаженных данных.
Вычислительные системы, основанные на нейронных сетях, обладают рядом качеств, которые отсутствуют в машинах с архитектурой фон Неймана (но присущи мозгу человека):
ИНС может рассматриваться как направленный граф со взвешенными связями, в котором искусственные нейроны являются узлами. По архитектуре связей ИНС могут быть сгруппированы в два класса (рис. 5): сети прямого распространения, в которых графы не имеют петель, и рекуррентные сети, или сети с обратными связями.
В ряде нейронных сетей активирующая функция может зависеть не только от весовых коэффициентов связей , но и от времени передачи импульса (сигнала) по каналам связи . Поэтому в общем виде активирующая (передающая) функция связи от элемента к элементу имеет вид: . Тогда синхронной сетью называют такую сеть, у которой время передачи каждой связи равно либо нулю, либо фиксированной постоянной . Асинхронной называют такую сеть у которой время передачи для каждой связи между элементами и свое, но тоже постоянное.
В нейронных сетях прямого распространения (англ. feedforward neural network) все связи направлены строго от входных нейронов к выходным. Примерами таких сетей являются перцептрон Розенблатта, многослойный перцептрон, сети Ворда.
Сигнал с выходных нейронов или нейронов скрытого слоя частично передается обратно на входы нейронов входного слоя (обратная связь). Рекуррентная сеть Хопфилда «фильтрует» входные данные, возвращаясь к устойчивому состоянию и, таким образом, позволяет решать задачи компрессии данных и построения ассоциативной памяти[22]. Частным случаем рекуррентных сетей являются двунаправленные сети. В таких сетях между слоями существуют связи как в направлении от входного слоя к выходному, так и в обратном. Классическим примером является Нейронная сеть Коско.
Разработаны нейронные сети, использующие в качестве активационных функций радиально-базисные (также называются RBF-сетями). Общий вид радиально-базисной функции:
, например,
где — вектор входных сигналов нейрона, — ширина окна функции, — убывающая функция (чаще всего, равная нулю вне некоторого отрезка).
Радиально-базисная сеть характеризуется тремя особенностями:
Такие сети представляют собой соревновательную нейронную сеть с обучением без учителя, выполняющую задачу визуализации и кластеризации. Является методом проецирования многомерного пространства в пространство с более низкой размерностью (чаще всего, двумерное), применяется также для решения задач моделирования, прогнозирования и др. Является одной из версий нейронных сетей Кохонена[23]. Самоорганизующиеся карты Кохонена служат, в первую очередь, для визуализации и первоначального («разведывательного») анализа данных[24].
Сеть РБФ (радиально-базисных функций) — искусственная нейронная сеть, которая использует радиальные базисные функции как функции активации.
АРТ ‑ Адаптивная резонансная теория, сети адаптивного резонанса — разновидность искусственных нейронных сетей основанная на теории адаптивного резонанса Стивена Гроссберга и Гейла Карпентера. Включает в себя модели, использующие обучение с учителем и без учителя и используются при решении задач распознавания образов и предсказания.
Нейронные сети различают по:
· структуре сети (связей между нейронами);
· особенностям модели нейрона;
· особенностям обучения сети.
По структуре нейронные сети можно разделить (рисунок 8) на:
· неполносвязные (или слоистые) и полносвязные;
· со случайными и регулярными связями;
· с симметричными и несимметричными связями.
Рисунок 8 – Классификация нейронных сетей по структуре
Неполносвязные нейронные сети (описываемые неполносвязным ориентированным графом и обычно называемые перцептронами), подразделяются на однослойные (простейшие перцептроны) и многослойные, с прямыми, перекрестными и обратными связями. В нейронных сетях с прямыми связями нейроны j-ого слоя по входам могут соединяться только с нейронами i-ых слоев, где j > i , т.е. с нейронами нижележащих слоев. В нейронных сетях с перекресными связями допускаются связи внутри одного слоя, т.е. выше приведенное неравенство заменяется на j > = i . В нейронных сетях с обратными связями используются и связи j-ого слоя по входам с i-ым при j < i.
С точки зрения топологии можно выделить три основных типа нейронных сетей:
· полносвязные (рисунок 9, а);
· многослойные или слоистые (рисунок 9, б);
· слабосвязные (с локальными связями) (рисунок 9, в).
Рисунок 9 – Архитектуры нейронных сетей: а – полносвязная сеть, б – многослойная сеть с последовательными связями, в – слабосвязные сети
В полносвязных нейронных сетях каждый нейрон передает свой выходной сигнал остальным нейронам, в том числе и самому себе. Все входные сигналы подаются всем нейронам. Выходными сигналами сети могут быть все или некоторые выходные сигналы нейронов после нескольких тактов функционирования сети.
В многослойных нейронных сетях нейроны объединяются в слои. Слой содержит совокупность нейронов с едиными входными сигналами. Число нейронов в слое может быть любым и не зависит от количества нейронов в других слоях. В общем случае сеть состоит из Q слоев, пронумерованных слева направо. Внешние входные сигналы подаются на входы нейронов входного слоя (его часто нумеруют как нулевой), а выходами сети являются выходные сигналы последнего слоя. Кроме входного и выходного слоев в многослойной нейронной сети есть один или несколько скрытых слоев. Связи от выходов нейронов некоторого слоя q к входам нейронов следующего слоя (q+1) называются последовательными.
В свою очередь, среди многослойных нейронных сетей выделяют следующие типы.
1) Монотонные. Это частный случай слоистых сетей с дополнительными условиями на связи и нейроны. Каждый слой кроме последнего (выходного) разбит на два блока: возбуждающий и тормозящий. Связи между блоками тоже разделяются на тормозящие и возбуждающие. Если от нейронов блока А к нейронам блока В ведут только возбуждающие связи, то это означает, что любой выходной сигнал блока является монотонной неубывающей функцией любого выходного сигнала блока А. Если же эти связи только тормозящие, то любой выходной сигнал блока В является невозрастающей функцией любого выходного сигнала блока А. Для нейронов монотонных сетей необходима монотонная зависимость выходного сигнала нейрона от параметров входных сигналов.
2) Сети без обратных связей. В таких сетях нейроны входного слоя получают входные сигналы, преобразуют их и передают нейронам первого скрытого слоя, и так далее вплоть до выходного, который выдает сигналы для интерпретатора и пользователя. Если не оговорено противное, то каждый выходной сигнал q-гo слоя подастся на вход всех нейронов (q+1)-гo слоя; однако возможен вариант соединения q-гo слоя с произвольным (q+p)-м слоем.
Среди многослойных сетей без обратных связей различают полносвязанные (выход каждого нейрона q-гo слоя связан с входом каждого нейрона (q+1)-гo слоя) и частично полносвязанные. Классическим вариантом слоистых сетей являются полносвязанные сети прямого распространения (рисунок 10).
Рисунок 10 – Многослойная (двухслойная) сеть прямого распространения
3) Сети с обратными связями. В сетях с обратными связями информация с последующих слоев передается на предыдущие. Среди них, в свою очередь, выделяют следующие:
· слоисто-циклические, отличающиеся тем, что слои замкнуты в кольцо: последний слой передает свои выходные сигналы первому; все слои равноправны и могут как получать входные сигналы, так и выдавать выходные;
· слоисто-полносвязанные состоят из слоев, каждый из которых представляет собой полносвязную сеть, а сигналы передаются как от слоя к слою, так и внутри слоя; в каждом слое цикл работы распадается на три части: прием сигналов с предыдущего слоя, обмен сигналами внутри слоя, выработка выходного сигнала и передача к последующему слою;
· полносвязанно-слоистые, по своей структуре аналогичные слоисто-полносвязанным, но функционирующим по-другому: в них не разделяются фазы обмена внутри слоя и передачи следующему, на каждом такте нейроны всех слоев принимают сигналы от нейронов как своего слоя, так и последующих.
В качестве примера сетей с обратными связями на рисунке 11 представлены частично-рекуррентные сети Элмана и Жордана.
Рисунок 11 – Частично-рекуррентные сети: а – Элмана, б – Жордана
В слабосвязных нейронных сетях нейроны располагаются в узлах прямоугольной или гексагональной решетки. Каждый нейрон связан с четырьмя (окрестность фон Неймана), шестью (окрестность Голея) или восемью (окрестность Мура) своими ближайшими соседями.
Известные нейронные сети можно разделить по типам структур нейронов на:
· гомогенные (однородные);
· гетерогенные.
Гомогенные сети состоят из нейронов одного типа с единой функцией активации, а в гетерогенную сеть входят нейроны с различными функциями активации.
Еще одна классификация делит нейронные сети на:
· синхронные;
· асинхронные.
В первом случае в каждый момент времени лишь один нейрон меняет свое состояние, во втором – состояние меняется сразу у целой группы нейронов, как правило, у всего слоя. Алгоритмически ход времени в нейронных сетях задается итерационным выполнением однотипных действий над нейронами.
По используемым на входах и выходах сигналам нейронные сети можно разделить на:
· аналоговые;
· бинарные.
Бинарные оперируют только двоичными сигналами, и выход каждого нейрона может принимать значение либо логического ноля (заторможенное состояние) либо логической единицы (возбужденное состояние).
По моделированию времени нейронные сети подразделяются на сети:
· с непрерывным временем;
· с дискретным временем.
Для программной реализации применяется как правило дискретное время.
По способу подачи информации на входы нейронной сети различают:
· подачу сигналов на синапсы входных нейронов;
· подачу сигналов на выходы входных нейронов;
· подачу сигналов в виде весов синапсов входных нейронов;
· аддитивную подачу на синапсы входных нейронов.
По способу съема информации с выходов нейронной сети различают:
· съем с выходов выходных нейронов;
· съем с синапсов выходных нейронов;
· съем в виде значений весов синапсов выходных нейронов;
· аддитивный съем с синапсов выходных нейронов.
По организации обучения разделяют обучение нейронных сетей:
· с учителем (supervised neural networks);
· без учителя (nonsupervised).
При обучении с учителем предполагается, что есть внешняя среда, которая предоставляет обучающие примеры (значения входов и соответствующие им значения выходов) на этапе обучения или оценивает правильность функционирования нейронной сети и в соответствии со своими критериями меняет состояние нейронной сети или поощряет (наказывает) нейронную сеть, запуская тем самым механизм изменения ее состояния.
По способу обучения разделяют обучение:
· по входам
· по выходам.
При обучении по входам обучающий пример представляет собой только вектор входных сигналов, а при обучении по выходам в него входит и вектор выходных сигналов, соответствующий входному вектору.
По способу предъявления примеров различают:
· предъявление одиночных примеров
· предъявление "страницы" примеров.
В первом случае изменение состояния нейронной сети (обучение) происходит после предъявления каждого примера. Во втором – после предъявления "страницы" (множества) примеров на основе анализа сразу их всех.
Под состоянием нейронной сети, которое может изменяться, обычно понимается:
· веса синапсов нейронов (карта весов – map) (коннекционистский подход);
· веса синапсов и пороги нейронов (обычно в этом случае порог является более легко изменяемым параметром, чем веса синапсов);
· установление новых связей между нейронами (свойство биологических нейронов устанавливать новые связи и ликвидировать старые называется пластичностью).
По особенностям модели нейрона различают нейроны с разными нелинейными функциями:
пороговой ;
Наиболее часто в качестве функций активации используются следующие виды сигмоид:
Функция Ферми (экспоненциальная сигмоида):
Рациональная сигмоида (при =0 вырождается в т.н. пороговую функцию активации):
Гиперболический тангенс:
,
где s — выход сумматора нейрона, — произвольная константа.
Перечисленные функции относятся к однопараметрическим.
Также используются многопараметрические передаточные функции, например, .
Наиболее распространенные модели нейронных сетей:
· модель Хопфилда;
· машина Больцмана;
· сеть Кохонена;
· модель Хэмминга;
· многослойный персептрон.
рис.5. Об этом говорит сайт https://intellect.icu . Базовые архитектуры нейронных сетей
Рассмотрим базовую терминологию и понимание, что к чему в этой области, из каких кирпичиков собираются нейросети, и как это использовать.
введение про то, что такое нейрон, нейросеть, глубокая нейросеть, чтобы мы с вами общались на одном языке.
Дальше - важные тренды, что происходит в этой области. Затем мы рассмотрим архитектуру нейросетей, рассмотрим 3 основных их класса. Э
После этого рассмотрим 2 сравнительно продвинутых темы и закончим небольшим обзором фреймворков и библиотек для работы с нейросетями.
Еще одна полезная вещь, которую нужно знать для обсуждения нейросетей. Я уже рассказал, как работает один нейрон: как каждый вход умножает на веса, на коэффициенты, суммирует, умножает на нелинейность. Это, скажем так, продакшн-режим работы нейрона, то есть inference, как он работает в уже обученном виде.
Есть совсем другая задача — обучить нейрон. Обучение заключается в том, чтобы найти эти правильные веса. Обучение построено на простой идее, что если мы на выходе нейрона знаем, какой должен быть ответ, и знаем, какой он получился, нам становится известна эта разница, ошибка. Эту ошибку можно отправить обратно ко всем входам нейрона и понять, какой вход насколько сильно повлиял на эту ошибку, и соответственно, подкорректировать вес на этом входе так, чтобы ошибку уменьшить.
Это основная идея Backpropagation, алгоритма обратного распространения ошибки. Этот процесс можно прогнать по всей сети и для каждого нейрона найти, как его веса можно модифицировать. Для этого нужно взять производные, но в принципе в последнее время это не требуется. Все пакеты для работы с нейросетями автоматически дифференцируют. Если еще 2 года назад надо было вручную писать сложные производные для хитрых слоев, то сейчас пакеты делают это сами.
Что сейчас происходит с качеством и сложностью моделей
Во-первых, точность нейросетей растет, и очень сильно растет. Уже есть несколько примеров, когда нейросети приходят в какую-то область и вытесняют целиком классический алгоритм. Так уже было в обработке изображений и в распознавании речи, так произойдет еще в разных областях. То есть появляются нейросети, которые очень сильно уменьшают ошибку.
На диаграмме фиолетовым цветом выделен Deep Learning, голубым – классический алгоритм компьютерного зрения. Видно, что появился Deep Learning, ошибка уменьшилась и продолжает уменьшаться дальше. Именно поэтому Deep Learning целиком вытесняет все, условно, классические алгоритмы.
Другая важная веха — то, что мы начинаем обгонять по качеству человека. На соревновании ImageNet это впервые произошло в 2015 году. Но на самом деле нейросетевые системы, которые по качеству превосходят человека, появились раньше. Первый задокументированный внятный случай — это 2011 год, когда была построена система, которая распознавала немецкие дорожные знаки и делала это в 2 раза лучше человека.
Второй важный тренд — сложность нейросетей растет. В терминах глубины растет глубина. Если победитель 2012 года на ImageNet — сеть AlexNet — там было меньше 10 слоев, то в 2014 году их было уже больше 20, в 2015 — под 150. В этом году, кажется, уже за 200. Что будет дальше — непонятно, возможно, будет еще больше.
http://cs.unc.edu/~wliu/papers/GoogLeNet.pdf
Кроме того, что растет глубина, растет и сама архитектурная сложность. Вместо того, чтобы слои просто стыковать один за другим, они начинают ветвиться, появляются блоки, структура. В общем, архитектурная сложность тоже растет.
https://culurciello.github.io/tech/2016/06/04/nets.html
Это график точности различных нейросетей. Здесь указано время, которое требуется на выполнение, на просчет этой сети, то есть некая вычислительная нагрузка. Размер кружка — это количество параметров, которые описываются нейросетью. Интересно сравнить классическую сеть AlexNet — победителя 2012 года и более поздние сети. Они лучше по точности, но, как правило, содержат меньше параметров. Это тоже важный тренд, что нейросети усложняются очень умно. То есть архитектура изменяется так, что даже несмотря на то, что число слоев 150, общее количество параметров оказывается меньше, чем в 6-7-слойной сети, которая в 2012 году была. Архитектура как-то усложняется очень интересным способом.
Еще один тренд — рост объемов данных. В 1998 году для обучения сверточной
нейросети, которая распознавала рукописные чеки, было использовано 10 7 пикселей, в 2012 году (IMAGENET) — 10 14.
7 порядков за 14 лет — это безумная разница и огромный сдвиг!
При этом количество транзитов на процессоре тоже растет, растут вычислительные мощности — закон Мура действует. За эти 14 лет процессоры стали условно в 1000 раз быстрее. Это видно на примере GPUs, которые сейчас доминируют в области Deep Learning. Практически все считается на графических ускорителях.
Компания NVIDIA перепрофилировалась из игровой фактически в компанию для искусственного интеллекта. Ее экспоненты оставили далеко позади экспоненты Intel, которые на этом фоне вообще не смотрятся.
Это картинка 2013 года, когда топовая видеокарта была 4,5 TFLOPS. Сейчас новый TITAN X — это уже 11 TFLOPS. В общем, экспонента продолжается!
На самом деле можно ожидать, что в ближайшее время появится FPGA’сики, которые частично потеснят GPU, и, может быть, со временем появятся даже нейроморфные процессоры. Следите за этим — там тоже много интересного происходит.
Fully Connected Feed-Forward Neural Networks, FNN
Первая классическая архитектура — полносвязные нейросети прямого распространения, или Fully Connected Feed-Forward Neural Network, FNN.
Многослойный Perceptron — это вообще классика нейросетей. Та картинка нейросетей, которую вы видели, это он и есть — многослойная полносвязная сеть. Полносвязная — это значит, что каждый нейрон связан со всеми нейронами предыдущего слоя. Хорошая сеть, работает, для классификации годится, многие задачи классификации успешно решаются.
Однако у нее есть 2 проблемы: Много параметров и Затухающие градиенты
продолжение следует...
Часть 1 Введение в архитектуры нейронных сетей. Классификация и виды нейросетей, принцип работы
Часть 2 Архитектуры нейросетей: Сверточные нейросети - Введение в архитектуры нейронных сетей.
Часть 3 Sequence Learning и парадигма seq2seq - Введение в архитектуры нейронных
Анализ данных, представленных в статье про архитектура нейронных сетей, подтверждает эффективность применения современных технологий для обеспечения инновационного развития и улучшения качества жизни в различных сферах. Надеюсь, что теперь ты понял что такое архитектура нейронных сетей, классификация нейросетей, виды нейросетей, неросеть, свертка, сверхточные нейросети, рекуррентные нейросети, cnn, rnn и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Computational Neuroscience (вычислительная нейронаука) Теория и приложения искусственных нейронных сетей
Комментарии
Оставить комментарий
Computational Neuroscience (вычислительная нейронаука) Теория и приложения искусственных нейронных сетей
Термины: Computational Neuroscience (вычислительная нейронаука) Теория и приложения искусственных нейронных сетей