Что делать с нейронной сетью. Нейронные сети

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

Что такое нейронные сети?

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

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

Главной способностью ИНС является их возможность к обучению. С каждым использованием, с каждым прогоном нейронная сеть допускает все меньше ошибок и выдает результат все более близкий к идеальному. Вот небольшой пример: ИНС просят установить, что нарисовано на картинке. Обработав 100 примеров сеть понимает, что это собака, обработав 1 000 — сможет определить породу, обработав 1 000 000 — возраст.

Кто и как их создал?

Спасибо за создание столь удобного инструмента стоит сказать ученым У. Питту (W. Pitts) и У. Маккалоку (W. McCulloch). Они сформировали само понятие нейронной сети. Произошло это еще в 1943 году , а Н. Винер (N. Wiener) предложил реализовать концепцию при помощи вакуумных ламп. Он же в своей работе о кибернетике представил биологические процессы организма в виде математических моделей.

Спустя 6 лет, в 1949-м, Д. Веббом (D. Hebb) был предложен первый алгоритм обучения, а последующие годы отметились созданием сразу нескольких принципиальных вариантов ИНС:

  • 1958 год — создание перцептона Ф. Розенблаттом (F. Rosenblatt). Используется для прогнозирования погоды, распознавания образов и подобных задач;
  • 1960 — разработка адалина Уидроу(B. Widrow B) и Хоффом (M. Hoff). Нашел применение в системах адаптивного управления и в задачах предсказания. До сих пор является стандартным элементом ряда систем обработки сигналов;
  • 1972 — создание нейронных сетей нового типа, способных работать в качестве памяти;
  • 1975 — появление когнитрона, самоорганизующейся сети для распознавания образов;
  • 2007 — создание Джеффри Хинтоном (Geoffrey Hinton) алгоритмов глубокого обучения.

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

Нейронные сети умеют обучаться?

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

Где используются нейросети?

Если на секунду задуматься и присмотреться, окажется, что на самом деле они уже применяются повсеместно.

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

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

Или вот инженер компании Nvidia использовал нейросеть для обучения камер наблюдения. Теперь, когда в камеру возле его дома попадает кот, автоматически включается система полива газона — кот тут же ретируется, а территория дома остается непомеченной. Любопытно, что сеть обучалась распознавать котов с помощью картинок в Google по запросу «кот».

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

И хваленая Prisma тоже использует нейросети?

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

К слову, еще в прошлом году получил популярность похожий онлайн-сервис http://deepdreamgenerator.com/ . После того, как пользователь отправляет в него картинку, программа выдает изображение таким, каким его видит нейросеть, занимающаяся распознаванием объектов. Многих тогда веселили изображения, больше напоминающие визуальные галлюцинации. Но это отличный пример процесса самообучения. В самом начале на обработанных картинках тут и там были видны мордочки собак, которые со временем исчезли, уступив место более привычным предметам обихода. Многие тогда удивлялись — откуда они берутся, если ими там даже и не пахло? Ответ прост: для начального обучения нейросети использовались как раз фотографии собак. Вот ИНС и видела их повсюду до того, как выучила новые предметы.

Нейросети обыгрывают людей?

Не так давно разработчики нейросетей Google DeepMind активно делились очередным достижением — созданием программы AlphaGo, которая смогла обыграть в го одного из сильнейших чемпионов мира, корейца Ли Сидоля.

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

Может ли нейросеть подобрать мой пароль?

Может, причем, вполне успешно. Но вопрос стоит ставить иначе: стоит ли оно того? Как бы ни был умен искусственный разум, предложить что-то лучшее, чем банальный перебор вариантов, он просто не в состоянии. Результат получится не лучше, чем у самого примитивного алгоритма или простого ручного перебора. С другой стороны, можно дать нейронной сети проанализировать все последние действия пользователя, памятные даты и дни рождения семьи и близких, наиболее частые места чекинов, любимые фильмы, книги, игры и так далее. Дело за малым — найти очень много желающих раскрыть свой настоящий пароль, на которых нейросеть могла бы обучиться.

Нейросети следят за мной?

Одна из областей использования нейросетей — распознавание лиц. В перспективе такая система сможет в реальном времени обрабатывать изображение с камер наблюдения и опознавать людей на них.

Казалось бы, самое время начинать бить тревогу — полноценный Большой брат не за горами, но давайте взглянем на ситуацию с иной точки зрения. Во-первых, мы и сами добровольно «сливаем» немало личной информации в Сеть — вспомнить хотя бы обвинения в адрес голосового ассистента Google и Windows 10. О том, плохо это или хорошо, можно спорить до хрипоты, но закончилось все вполне ожидаемым спадом интереса к теме, после чего она закономерно канула в Лету. А нейросети этих корпораций тем временем продолжают собирать наши данные, пусть и анонимно.

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

Нейросеть — будущий Скайнет?

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

Добавьте ему оболочку из металла, сервоприводы и перед нами окажется полноценный робот. Ждет ли нас восстание? Илон Маск и Стивен Хокинг, например, уже сейчас бьют тревогу. Но хочется думать, что разработчики предпримут все необходимые меры для защиты от подобного. Да и три закона робототехники Азимова станут немалым подспорьем.

Что ждет нас в будущем?

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

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

На выходе пользователь получает картинку такой, какой её «видят» нейронные сети. Как это работает и что такое MNIST? Сегодня мы расскажем вам базовые принципы работы искусственного интеллекта.

Экскурс в биологию

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

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

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

Что такое искусственная нейронная сеть?

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

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

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

Что внутри?

Для создания ИНС можно применять разные инструменты и языки программирования, в качестве обучения наибольшей популярностью пользуются нейронные сети на Python. Этот скриптовый язык один из самых простых в освоении идеально подходит для разработки ИНС. Менее популярны нейронные сети на Java ввиду более сложного написания.

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

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

Машинное обучение

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

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

Однако в некоторых случаях «неправильные учебники» могут свести на нет все старания разработчиков. Скудный набор однообразных картинок приведет к тому, что программа попросту «зазубрит» нужные определения для каждого изображения и не будет анализировать его мельчайшие детали. Специально для таких целей существует база MNIST (Mixed National Institute of Standards and Technology). Она включает в себя десятки стандартизированных образцов рукописных цифр на изображениях размером 28х28 пикселей.

MNIST полностью открыта для использования, каждый желающий разработчик может проверить работоспособность своей нейронной сети по базе. Кроме MNIST можно воспользоваться базой ImageNet от Стэнфордского университета. Она включает в себя около 14 млн. изображений разного формата.

Виды нейронных сетей

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

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

Цель и сфера применения

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

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

Пока приложения для украшения селфи и сервисы поиска людей по одной фотографии остаются единственными сферами использования нейронных сетей. Однако Vinci, Snapchat или FaceApp – всего лишь вершина айсберга. ИНС могут дать значительный импульс для автоматизации транспортной, финансовой, развлекательной и других сфер. Благодаря искусственному интеллекту в скором времени можно будет избавиться от монотонного человеческого труда.

Более того, даже творчество можно поставить на поток. Усилиями разработчиков «Яндекса» появился первый музыкальный альбом «404», записанный нейронной сетью. Альбом стал первым сборником несуществующей группы Нейронная Оборона, основанной на стиле текстов Егора Летова.

ИНС могут стать отправной точкой для дальнейшего развития ассистентов вроде Siri или Cortana. Уже сейчас такие системы могут поддержать простой разговор и ответить на нужный запрос пользователя. Сервис Deep Dream, запустивший бум вокруг нейронных сетей в 2016 году является побочным продуктом от разработчиков Google. На примере обработанных им фотографий можно представить, как машина видит то или иное изображение своим «мозгом». Конечно, пока неразборчивые сплетения больше похожи на негативное воздействие психоделических наркотиков. Тем не менее это уже первый серьезный шаг на пути к полноценному искусственному интеллекту.

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

Что такое многослойный персептрон кратко

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

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

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

Использование нейронных сетей

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

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

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

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

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

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

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

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

Дело в том, что головной мозг состоит из 10 миллиардов нейронов, каждый из которых имеет по 10 000 связей. Это чрезвычайно энергоэкономичная и помехоустойчивая система, созданная миллионами лет . В чем же состоит отличие?

Различия принципа работы мозга и нейронных сетей

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

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

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

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

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

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

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

Об этом интереснейшем классе импульсных нейронных сетей мы поговорим далее:

Видео на тему сути нейронный сетей простым языком:

Введение

1. Искусственные нейронные сети

1.1 Параллели из биологии

1.2 Определение ИНС

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

1.4 Сбор данных для нейронной сети

2 Обучение

2.1 Алгоритм обратного распространения

2.2 Переобучение и обобщение

2.3 Модели теории адаптивного резонанса

3 Многослойный персептрон (MLP)

3.1 Обучение многослойного персептрона

4. Вероятностная нейронная сеть

5. Обобщенно-регрессионная нейронная сеть

6. Линейная сеть

7. Сеть Кохонена

8. Кластеризация

8.1 Оценка качества кластеризации

8.2 Процесс кластеризации

8.3 Применение кластерного анализа

1. Искусственные нейронные сети

Иску́сственные нейро́нные се́ти (ИНС) - математические модели, а также их программные или аппаратные реализации, построенные по принципу организации и функционирования биологических нейронных сетей - сетей нервных клеток живого организма. Это понятие возникло при изучении процессов, протекающих в мозге, и при попытке смоделировать эти процессы. Первой такой попыткой были нейронные сети Маккалока и Питтса. Впоследствии, после разработки алгоритмов обучения, получаемые модели стали использовать в практических целях: в задачах прогнозирования, для распознавания образов, в задачах управления и др.

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

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

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

1.1 Параллели из биологии

Нейронные сети возникли из исследований в области искусственного интеллекта, а именно, из попыток воспроизвести способность биологических нервных систем обучаться и исправлять ошибки, моделируя низкоуровневую структуру мозга (Patterson, 1996). Основной областью исследований по искусственному интеллекту в 60-е - 80-е годы были экспертные системы. Такие системы основывались на высокоуровневом моделировании процесса мышления (в частности, на представлении, что процесс нашего мышления построен на манипуляциях с символами). Скоро стало ясно, что подобные системы, хотя и могут принести пользу в некоторых областях, не ухватывают некоторые ключевые аспекты человеческого интеллекта. Согласно одной из точек зрения, причина этого состоит в том, что они не в состоянии воспроизвести структуру мозга. Чтобы создать искусственных интеллект, необходимо построить систему с похожей архитектурой.

Мозг состоит из очень большого числа (приблизительно 10,000,000,000) нейронов, соединенных многочисленными связями (в среднем несколько тысяч связей на один нейрон, однако это число может сильно колебаться). Нейроны - это специальная клетки, способные распространять электрохимические сигналы. Нейрон имеет разветвленную структуру ввода информации (дендриты), ядро и разветвляющийся выход (аксон). Аксоны клетки соединяются с дендритами других клеток с помощью синапсов. При активации нейрон посылает электрохимический сигнал по своему аксону. Через синапсы этот сигнал достигает других нейронов, которые могут в свою очередь активироваться. Нейрон активируется тогда, когда суммарный уровень сигналов, пришедших в его ядро из дендритов, превысит определенный уровень (порог активации).

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

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

Рис. 1 Нейрон

1.2 Определение ИНС

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

Искусственная нейронная сеть это совокупность нейронных элементов и связей между ними.

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


Рис. 2 - Искусственный нейрон

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

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

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

Функция f называется функцией активации.



Рис. 3 - Функция активации

Функция активации может иметь разный вид:

· пороговый (рис. 3.a),

· кусочно-линейный (рис. 3.б),

· сигмоид(рис. 3.в, 3.г).

Множество всех нейронов искусственной нейронной сети можно разделить на подмножества - т.н. слои. Взаимодействие нейронов происходит послойно.

Слой искусственной нейронной сети - это множество нейронов на которые в каждый такт времени параллельно поступают сигналы от других нейронов данной сети

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

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

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

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

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

Что такое нейронная сеть?


Нейронная сеть - это последовательность нейронов, соединенных между собой синапсами. Структура нейронной сети пришла в мир программирования прямиком из биологии. Благодаря такой структуре, машина обретает способность анализировать и даже запоминать различную информацию. Нейронные сети также способны не только анализировать входящую информацию, но и воспроизводить ее из своей памяти. Заинтересовавшимся обязательно к просмотру 2 видео из TED Talks: Видео 1 , Видео 2). Другими словами, нейросеть это машинная интерпретация мозга человека, в котором находятся миллионы нейронов передающих информацию в виде электрических импульсов.

Какие бывают нейронные сети?

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

Для чего нужны нейронные сети?

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

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

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

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

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

Что такое нейрон?


Нейрон - это вычислительная единица, которая получает информацию, производит над ней простые вычисления и передает ее дальше. Они делятся на три основных типа: входной (синий), скрытый (красный) и выходной (зеленый). Также есть нейрон смещения и контекстный нейрон о которых мы поговорим в следующей статье. В том случае, когда нейросеть состоит из большого количества нейронов, вводят термин слоя. Соответственно, есть входной слой, который получает информацию, n скрытых слоев (обычно их не больше 3), которые ее обрабатывают и выходной слой, который выводит результат. У каждого из нейронов есть 2 основных параметра: входные данные (input data) и выходные данные (output data). В случае входного нейрона: input=output. В остальных, в поле input попадает суммарная информация всех нейронов с предыдущего слоя, после чего, она нормализуется, с помощью функции активации (пока что просто представим ее f(x)) и попадает в поле output.


Важно помнить , что нейроны оперируют числами в диапазоне или [-1,1]. А как же, вы спросите, тогда обрабатывать числа, которые выходят из данного диапазона? На данном этапе, самый простой ответ - это разделить 1 на это число. Этот процесс называется нормализацией, и он очень часто используется в нейронных сетях. Подробнее об этом чуть позже.

Что такое синапс?


Синапс это связь между двумя нейронами. У синапсов есть 1 параметр - вес. Благодаря ему, входная информация изменяется, когда передается от одного нейрона к другому. Допустим, есть 3 нейрона, которые передают информацию следующему. Тогда у нас есть 3 веса, соответствующие каждому из этих нейронов. У того нейрона, у которого вес будет больше, та информация и будет доминирующей в следующем нейроне (пример - смешение цветов). На самом деле, совокупность весов нейронной сети или матрица весов - это своеобразный мозг всей системы. Именно благодаря этим весам, входная информация обрабатывается и превращается в результат.

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

Как работает нейронная сеть?


В данном примере изображена часть нейронной сети, где буквами I обозначены входные нейроны, буквой H - скрытый нейрон, а буквой w - веса. Из формулы видно, что входная информация - это сумма всех входных данных, умноженных на соответствующие им веса. Тогда дадим на вход 1 и 0. Пусть w1=0.4 и w2 = 0.7 Входные данные нейрона Н1 будут следующими: 1*0.4+0*0.7=0.4. Теперь когда у нас есть входные данные, мы можем получить выходные данные, подставив входное значение в функцию активации (подробнее о ней далее). Теперь, когда у нас есть выходные данные, мы передаем их дальше. И так, мы повторяем для всех слоев, пока не дойдем до выходного нейрона. Запустив такую сеть в первый раз мы увидим, что ответ далек от правильно, потому что сеть не натренирована. Чтобы улучшить результаты мы будем ее тренировать. Но прежде чем узнать как это делать, давайте введем несколько терминов и свойств нейронной сети.

Функция активации

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

Линейная функция


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

Сигмоид


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

Гиперболический тангенс


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

Тренировочный сет

Тренировочный сет - это последовательность данных, которыми оперирует нейронная сеть. В нашем случае исключающего или (xor) у нас всего 4 разных исхода то есть у нас будет 4 тренировочных сета: 0xor0=0, 0xor1=1, 1xor0=1,1xor1=0.

Итерация

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

Эпоха

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


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

Ошибка

Ошибка - это процентная величина, отражающая расхождение между ожидаемым и полученным ответами. Ошибка формируется каждую эпоху и должна идти на спад. Если этого не происходит, значит, вы что-то делаете не так. Ошибку можно вычислить разными путями, но мы рассмотрим лишь три основных способа: Mean Squared Error (далее MSE), Root MSE и Arctan. Здесь нет какого-либо ограничения на использование, как в функции активации, и вы вольны выбрать любой метод, который будет приносить вам наилучший результат. Стоит лишь учитывать, что каждый метод считает ошибки по разному. У Arctan, ошибка, почти всегда, будет больше, так как он работает по принципу: чем больше разница, тем больше ошибка. У Root MSE будет наименьшая ошибка, поэтому, чаще всего, используют MSE, которая сохраняет баланс в вычислении ошибки.