На что способны нейронные сети. Нейронные сети: практическое применение. Нейронные сети умеют обучаться

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

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

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

Биологические нейронные сети

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

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

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

История нейронных сетей

Какова же история развития нейронных сетей в науке и технике? Она берет свое начало с появлением первых компьютеров или ЭВМ (электронно-вычислительная машина) как их называли в те времена. Так еще в конце 1940-х годов некто Дональд Хебб разработал механизм нейронной сети, чем заложил правила обучения ЭВМ, этих «протокомпьютеров».

Дальнейшая хронология событий была следующей:

  • В 1954 году происходит первое практическое использование нейронных сетей в работе ЭВМ.
  • В 1958 году Франком Розенблатом разработан алгоритм распознавания образов и математическая аннотация к нему.
  • В 1960-х годах интерес к разработке нейронных сетей несколько угас из-за слабых мощностей компьютеров того времени.
  • И снова возродился уже в 1980-х годах, именно в этот период появляется система с механизмом обратной связи, разрабатываются алгоритмы самообучения.
  • К 2000 году мощности компьютеров выросли настолько, что смогли воплотить самые смелые мечты ученых прошлого. В это время появляются программы распознавания голоса, компьютерного зрения и многое другое.

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

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

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

Применение нейронных сетей

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

  • Машинное обучение (machine learning), представляющее собой разновидность искусственного интеллекта. В основе его лежит обучение ИИ на примере миллионов однотипных задач. В наше время машинное обучение активно внедряют поисковые системы Гугл, Яндекс, Бинг, Байду. Так на основе миллионов поисковых запросов, которые все мы каждый день вводим в Гугле, их алгоритмы учатся показывать нам наиболее релевантную выдачу, чтобы мы могли найти именно то, что ищем.
  • В роботехнике нейронные сети используются в выработке многочисленных алгоритмов для железных «мозгов» роботов.
  • Архитекторы компьютерных систем пользуются нейронными сетями для решения проблемы параллельных вычислений.
  • С помощью нейронных сетей математики могут разрешать разные сложные математические задачи.

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

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

  • сверточные нейронные сети,
  • реккурентные нейронные сети,
  • нейронную сеть Хопфилда.

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

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

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

Рекуррентные нейронные сети

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

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

Рекуррентные нейронные сети применяются в распознавании и обработке текстовых данных (в частотности на их основе работает Гугл переводчик, алгоритм Яндекс «Палех», голосовой помощник Apple Siri).

Нейронные сети, видео

И в завершение интересное видео о нейронных сетях.

В 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. На примере обработанных им фотографий можно представить, как машина видит то или иное изображение своим «мозгом». Конечно, пока неразборчивые сплетения больше похожи на негативное воздействие психоделических наркотиков. Тем не менее это уже первый серьезный шаг на пути к полноценному искусственному интеллекту.

Нейронные сети

Схема простой нейросети. Зелёным обозначены входные элементы, жёлтым - выходной элемент

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

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

Хронология

Известные применения

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

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

Экспериментальный подбор характеристик сети

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

Экспериментальный подбор параметров обучения

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

Собственно обучение сети

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

Проверка адекватности обучения

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

Классификация по типу входной информации

  • Аналоговые нейронные сети (используют информацию в форме действительных чисел);
  • Двоичные нейронные сети (оперируют с информацией, представленной в двоичном виде).

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

  • Обучение с учителем - выходное пространство решений нейронной сети известно;
  • Обучение без учителя - нейронная сеть формирует выходное пространство решений только на основе входных воздействий. Такие сети называют самоорганизующимися;
  • Обучение с подкреплением - система назначения штрафов и поощрений от среды.

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

Классификация по времени передачи сигнала

В ряде нейронных сетей активирующая функция может зависеть не только от весовых коэффициентов связей w i j , но и от времени передачи импульса (сигнала) по каналам связи τ i j . По этому в общем виде активирующая (передающая) функция связи c i j от элемента u i к элементу u j имеет вид: . Тогда синхронной сетью i j каждой связи равна либо нулю, либо фиксированной постоянной τ . Асинхронной называют такую сеть у которой время передачи τ i j для каждой связи между элементами u i и u j свое, но тоже постоянное.

Классификация по характеру связей

Сети прямого распространения (Feedforward)

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

Рекуррентные нейронные сети‎

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

Радиально-базисные функции

Искусственные нейронные сети, использующие в качестве активационных функций радиально-базисные (такие сети сокращённо называются RBF-сетями). Общий вид радиально-базисной функции:

, например,

где x - вектор входных сигналов нейрона, σ - ширина окна функции, φ(y ) - убывающая функция (чаще всего, равная нулю вне некоторого отрезка).

Радиально-базисная сеть характеризуется тремя особенностями:

1. Единственный скрытый слой

2. Только нейроны скрытого слоя имеют нелинейную активационную функцию

3. Синаптические веса связей входного и скрытого слоев равны единице

Про процедуру обучения - см. литературу

Самоорганизующиеся карты

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

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

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

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

  1. Случайным образом выбирается точка данных x .
  2. Определяется ближайший к x узел карты (BMU - Best Matching Unit).
  3. Этот узел перемещается на заданный шаг по направлению к x. Однако, он перемещается не один, а увлекает за собой определенное количество ближайших узлов из некоторой окрестности на карте. Из всех двигающихся узлов наиболее сильно смещается центральный - ближайший к точке данных - узел, а остальные испытывают тем меньшие смещения, чем дальше они от BMU. В настройке карты различают два этапа - этап грубой (ordering) и этап тонкой (fine-tuning) настройки. На первом этапе выбираются большие значения окрестностей и движение узлов носит коллективный характер - в результате карта «расправляется» и грубым образом отражает структуру данных; на этапе тонкой настройки радиус окрестности равен 1-2 и настраиваются уже индивидуальные положения узлов. Кроме этого, величина смещения равномерно затухает со временем, то есть она велика в начале каждого из этапов обучения и близка к нулю в конце.
  4. Алгоритм повторяется определенное число эпох (понятно, что число шагов может сильно изменяться в зависимости от задачи).

Известные типы сетей

  • Сеть Хэмминга;
  • Неокогнитрон;
  • Хаотическая нейронная сеть;
  • Сеть встречного распространения;
  • Сеть радиальных базисных функций (RBF-сеть);
  • Сеть обобщенной регрессии;
  • Вероятностная сеть;
  • Сиамская нейронная сеть;
  • Сети адаптивного резонанса.

Отличия от машин с архитектурой фон Неймана

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

  • Массовый параллелизм;
  • Распределённое представление информации и вычисления;
  • Способность к обучению и обобщению;
  • Адаптивность;
  • Свойство контекстуальной обработки информации;
  • Толерантность к ошибкам;
  • Низкое энергопотребление.

Нейронные сети - универсальные аппроксиматоры

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

Примеры приложений

Предсказание финансовых временных рядов

Входные данные - курс акций за год. Задача - определить завтрашний курс. Проводится следующее преобразование - выстраивается в ряд курс за сегодня, вчера, за позавчера, за позапозавчера. Следующий ряд - смещается по дате на один день и так далее. На полученном наборе обучается сеть с 3 входами и одним выходом - то есть выход: курс на дату, входы: курс на дату минус 1 день, минус 2 дня, минус 3 дня. Обученной сети подаем на вход курс за сегодня, вчера, позавчера и получаем ответ на завтра. Нетрудно заметить, что в этом случае сеть просто выведет зависимость одного параметра от трёх предыдущих. Если желательно учитывать ещё какой-то параметр (например, общий индекс по отрасли), то его надо добавить как вход (и включить в примеры), переобучить сеть и получить новые результаты. Для наиболее точного обучения стоит использовать метод ОРО , как наиболее предсказуемый и несложный в реализации.

Психодиагностика

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

Хемоинформатика

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

Примечания

  1. Мак-Каллок У. С., Питтс В. ,Логическое исчисление идей, относящихся к нервной активности // В сб.: «Автоматы» под ред. К. Э. Шеннона и Дж. Маккарти. - М.: Изд-во иностр. лит., 1956. - с.363-384. (Перевод английской статьи 1943 г.)
  2. Pattern Recognition and Adaptive Control. BERNARD WIDROW
  3. Уидроу Б., Стирнс С. , Адаптивная обработка сигналов. - М.: Радио и связь, 1989. - 440 c.
  4. Werbos P. J. , Beyond regression: New tools for prediction and analysis in the behavioral sciences. Ph.D. thesis, Harvard University, Cambridge, MA, 1974.
  5. Галушкин А. И. Синтез многослойных систем распознавания образов. - М.: «Энергия», 1974.
  6. Rumelhart D.E., Hinton G.E., Williams R.J. , Learning Internal Representations by Error Propagation. In: Parallel Distributed Processing, vol. 1, pp. 318-362. Cambridge, MA, MIT Press. 1986.
  7. Барцев С. И., Охонин В. А. Адаптивные сети обработки информации. Красноярск: Ин-т физики СО АН СССР, 1986. Препринт N 59Б. - 20 с.
  8. BaseGroup Labs - Практическое применение нейросетей в задачах классификации
  9. Такой вид кодирования иногда называют кодом «1 из N»
  10. Открытые системы - введение в нейросети
  11. Миркес Е. М. ,Логически прозрачные нейронные сети и производство явных знаний из данных , В кн.: Нейроинформатика / А. Н. Горбань, В. Л. Дунин-Барковский, А. Н. Кирдин и др. - Новосибирск: Наука. Сибирское предприятие РАН, 1998. - 296 с ISBN 5020314102
  12. Упоминание этой истории в журнале «Популярная механика»
  13. http://www.intuit.ru/department/expert/neuro/10/ INTUIT.ru - Рекуррентные сети как ассоциативные запоминающие устройства]
  14. Kohonen, T. (1989/1997/2001), Self-Organizing Maps, Berlin - New York: Springer-Verlag. First edition 1989, second edition 1997, third extended edition 2001, ISBN 0-387-51387-6, ISBN 3-540-67921-9
  15. Зиновьев А. Ю. Визуализация многомерных данных . - Красноярск: Изд. Красноярского государственного технического университета, 2000. - 180 с.
  16. Горбань А. Н. , Обобщенная аппроксимационная теорема и вычислительные возможности нейронных сетей , Сибирский журнал вычислительной математики, 1998. Т.1, № 1. С. 12-24.
  17. Gorban A.N., Rossiyev D.A., Dorrer M.G. , MultiNeuron - Neural Networks Simulator For Medical, Physiological, and Psychological Applications , Wcnn’95, Washington, D.C.: World Congress on Neural Networks 1995 International Neural Network Society Annual Meeting: Renaissance Hotel, Washington, D.C., USA, July 17-21, 1995.
  18. Доррер М. Г. , Психологическая интуиция искусственных нейронных сетей , Дисс. ... 1998. Другие копии онлайн: ,
  19. Баскин И. И., Палюлин В. А., Зефиров Н. С., Применение искусственных нейронных сетей в химических и биохимических исследованиях, Вестн. Моск. Ун-Та. Сер. 2. Химия. 1999. Т.40. № 5.
  20. Гальберштам Н. М., Баскин И. И., Палюлин В. А., Зефиров Н. С. Нейронные сети как метод поиска зависимостей структура – свойство органических соединений // Успехи химии . - 2003. - Т. 72. - № 7. - С. 706-727.
  21. Баскин И. И., Палюлин В. А., Зефиров Н. С. Многослойные персептроны в исследовании зависимостей «структура-свойство» для органических соединений // Российский химический журнал (Журнал Российского химического общества им. Д.И.Менделеева) . - 2006. - Т. 50. - С. 86-96.

Ссылки

  • Artificial Neural Network for PHP 5.x - Серьезный проект по разработке нейронных сетей на языке программирования PHP 5.X
  • Форум, посвященный Нейронным Сетям и Генетическим Алгоритмам
  • Миркес Е. М. ,

Нейросети — это такие искусственные мозги, которые могут без труда обставить лучших игроков в го или шахматы, рисовать как известные художники, водить авто, быть кассирами в магазинах, писать песни. Пройдет лет 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. О том, плохо это или хорошо, можно спорить до хрипоты, но закончилось все вполне ожидаемым спадом интереса к теме, после чего она закономерно канула в Лету. А нейросети этих корпораций тем временем продолжают собирать наши данные, пусть и анонимно.

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

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

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

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

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

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

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

Шаг 1. Нейроны и метод прямого распространения

Так что же такое «нейронная сеть»? Давайте подождём с этим и сперва разберёмся с одним нейроном.

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

Круг ниже обозначает искусственный нейрон. Он получает 5 и возвращает 1. Ввод - это сумма трёх соединённых с нейроном синапсов (три стрелки слева).

В левой части картинки мы видим 2 входных значения (зелёного цвета) и смещение (выделено коричневым цветом).

Входные данные могут быть численными представлениями двух разных свойств. Например, при создании спам-фильтра они могли бы означать наличие более чем одного слова, написанного ЗАГЛАВНЫМИ БУКВАМИ, и наличие слова «виагра».

Входные значения умножаются на свои так называемые «веса», 7 и 3 (выделено синим).

Теперь мы складываем полученные значения со смещением и получаем число, в нашем случае 5 (выделено красным). Это - ввод нашего искусственного нейрона.

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

Если бы это был спам-фильтр, факт вывода 1 означал бы то, что текст был помечен нейроном как спам.

Иллюстрация нейронной сети с Википедии.

Если вы объедините эти нейроны, то получите прямо распространяющуюся нейронную сеть - процесс идёт от ввода к выводу, через нейроны, соединённые синапсами, как на картинке слева.

Шаг 2. Сигмоида

После того, как вы посмотрели уроки от Welch Labs, хорошей идеей было бы ознакомиться с четвертой неделей курса по машинному обучению от Coursera , посвящённой нейронным сетям - она поможет разобраться в принципах их работы. Курс сильно углубляется в математику и основан на Octave, а я предпочитаю Python. Из-за этого я пропустил упражнения и почерпнул все необходимые знания из видео.

Сигмоида просто-напросто отображает ваше значение (по горизонтальной оси) на отрезок от 0 до 1.

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

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

Это заняло целый день, и вряд ли результат получился удовлетворительным. Но это неважно, ведь я разобрался, как всё работает. Код можно увидеть .

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

Шаг 3. Метод обратного распространения ошибки

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

Поделитесь с друзьями или сохраните для себя:

Загрузка...