
Иску́сственная нейро́нная се́ть (ИНС) – математическая модель, а также её программное или аппаратное воплощение, построенная по принципу организации и функционирования биологических нейронных сетей – сетей нервных клеток живого организма. Это понятие возникло при изучении процессов, протекающих в мозге, и при попытке смоделировать эти процессы. Первой такой попыткой были нейронные сети У.Маккалока и У.Питтса. После разработки алгоритмов обучения получаемые модели стали использовать в практических целях: в задачах прогнозирования, для распознавания образов, в задачах управления и др.
ИНС представляют собой систему соединённых и взаимодействующих между собой простых процессоров (искусственных нейронов). Такие процессоры обычно довольно просты (особенно в сравнении с процессорами, используемыми в персональных компьютерах). Каждый процессор подобной сети имеет дело только с сигналами, которые он периодически получает, и сигналами, которые он периодически посылает другим процессорам. И, тем не менее, будучи соединёнными в достаточно большую сеть с управляемым взаимодействием, такие локально простые процессоры вместе способны выполнять довольно сложные задачи.
• С точки зрения машинного обучения, нейронная сеть представляет собой частный случай методов распознавания образов, дискриминантного анализа, методов кластеризации и т. п.
• С математической точки зрения, обучение нейронных сетей – это многопараметрическая задача нелинейной оптимизации.
• С точки зрения кибернетики, нейронная сеть используется в задачах адаптивного управления и как алгоритмы для робототехники.
• С точки зрения развития вычислительной техники и программирования, нейронная сеть – способ решения проблемы эффективного параллелизма.
• С точки зрения искусственного интеллекта, ИНС является основой философского течения коннективизма и основным направлением в структурном подходе по изучению возможности построения (моделирования) естественного интеллекта с помощью компьютерных алгоритмов.
Нейронные сети не программируются в привычном смысле этого слова, они обучаются. Возможность обучения – одно из главных преимуществ нейронных сетей перед традиционными алгоритмами. Технически обучение заключается в нахождении коэффициентов связей между нейронами. В процессе обучения нейронная сеть способна выявлять сложные зависимости между входными данными и выходными, а также выполнять обобщение. Это значит, что в случае успешного обучения сеть сможет вернуть верный результат на основании данных, которые отсутствовали в обучающей выборке, а также неполных и/или «зашумленных», частично искаженных данных.
Нам кажется, что нейронные сети – это новая область. На самом деле она довольно старая. Первые исследования нейронных сетей восходят к концу XIX века. Таких работ есть несколько, и первая Нобелевская премия в этой области была присуждена итальянцу Гольджи и испанцу Рамону-и-Кахалю. Это была одна Нобелевская премия по физиологии или медицине, присужденная двум исследователям за дополняющие друг друга работы о нейронных сетях. Испанский ученый проделал большую работу над отдельными нейронами. Итальянец Гольджи, профессор Павийского университета (Рамон-и-Кахаль работал в Мадриде), первым проанализировал структуру нейронной сети: он открыл технику окрашивания тканей мозга, чтобы под микроскопом можно было увидеть детали нейронных сетей. Это были дополняющие друг друга работы.
Кроме того, была парижская работа ученого по фамилии Лапик. Мы и сейчас используем уравнение Лапика, затрагивающее нейронные сети. Его исследование было связано с физиологией, но также и с внешними наблюдениями. Он первым указал, что внутренняя работа нейрона и взаимодействие нейронов между собой основаны на спайках. Спайки – это очень короткие импульсы, в которых потенциал сначала растет, а затем падает. Какими бы ни были процессы, происходящие в нашем мозге, они основаны на обмене спайками. Этим исследованиям уже 120 лет.
Все это очень интересно, поскольку на долгое время эта область затихла. Проводились разные исследования, но к этой сфере внимание было умеренным вплоть до 1940-х годов, когда появилась работа Маккалока и Питтса. Они предложили упрощенную модель работы сети нейронов. Упрощение дошло до того, что им пришлось убрать идею спайков, и их представление о работе нейронов было детерминистским, то есть без элемента случайности, и основывалось на аналоговом принципе.
Если вы посмотрите книгу «Автоматы», опубликованную в конце 1940-х Принстонским институтом перспективных исследований, вы найдете в ней работу Маккалока и Питтса, а также другую интересную работу авторства Клини. Он стоял у истоков математики языков программирования: разработал регулярные выражения. Однако, если посмотреть на название статьи, можно понять, что он хотел создать математический аппарат для отображения коммуникации в сетях нейронов. Он считал, что делал именно это. В действительности Клини в конечном счете создал аппарат для отображения математических языков.
Описание спайков конца XIX – начала XX века, изучение активности нейронных сетей Гольджи и работы Рамона-и-Кахаля по исследованию индивидуальных клеток, а также работы, проделанные примерно 50 лет спустя Маккалоком, Питтсом и Клини, лежат в основе того, что сегодня мы называем нейронными сетями.
В области нейронных сетей есть еще один важный аспект: вы всегда будете думать, какое у них может быть полезное применение, поскольку мы видим много интересных вариантов. В основе этого лежат две математические теоремы, с помощью которых в 1980-х годах было показано, что нейронные сети можно использовать для аппроксимации непрерывных и ограниченных функций. Что такое непрерывная функция, понятно интуитивно, хотя это математический термин. Ограниченная функция значит, что для любого значения аргумента значение функции будет конечно. Было доказано, что нейронные сети можно использовать для аппроксимации непрерывных и ограниченных функций.
Это основа того, почему мы так широко используем нейросети. Если посмотреть на исследования, которые мы проводили в последние 10 лет и которые вернули нейронные сети в моду и сделали их практически применимыми, вы увидите, что они базируются на свойстве нейронных сетей к аппроксимации. Этого мы от них ждем. Мы берем большой объем данных, вводим их в нейросеть и подстраиваем ее параметры так, чтобы она аппроксимировала состояние настолько точно, насколько это возможно. Потом, если мы введем похожие данные, нейронная сеть выдаст верный или близкий ответ.
Существует две фазы: фаза обучения и фаза использования. Фаза обучения – это когда: вы берете данные и изменяете параметры контура или математического алгоритма, который представляет контур. Вы изменяете параметры так, чтобы они как можно больше соответствовали данным. Когда вы используете сеть, вы поступаете иначе: у вас есть уже обученная сеть, и вы вводите в нее данные, а она выдает вам ответ, очень похожий на то, чему она обучилась. Почему? Потому что она хорошо аппроксимирует непрерывные и ограниченные функции.
Так работают нейронные сети. В последнее время появилось так называемое глубокое обучение. Раньше использовался метод градиентного спуска, основанный на поиске эффективных алгоритмов для определения локальных минимумов функции ошибок между входящей информацией и необходимым результатом. В последнее время его вытеснило глубокое обучение, где вы используете множество уровней нелинейной оптимизации, так что вы подстраиваете параметры контура под данные как можно точнее. Глубокое обучение, с одной стороны, очень новое по сравнению с предыдущим обучением по методу обратного распространения ошибки. С другой стороны, оно возможно благодаря большей скорости и мощности современных вычислительных устройств, так что мы можем за короткое время провести много оптимизаций.
Другая важная форма обучения – это обучение с подкреплением. Многие прорывные результаты нейросетей в играх основаны на довольно старой технике, которая восходит к работам психологов, – обучении с подкреплением. Его около 30 лет назад разработал специалист в области теории вычислительных систем Саттон, а до него были исследования психологов, которые описывали механизм обучения с подкреплением у людей и животных. Обучение с подкреплением состоит в том, что вы выполняете действие, а дальше в зависимости от результата меняете параметры, способ выполнения действия так, чтобы в следующий раз быть успешнее. Потом вы повторяете этот процесс. Вы всегда подкрепляете тот выбор, который увеличивает шансы на успех, и ослабляете выбор, снижающий успешность выполнения задачи или деятельности – например, отслеживания летящих по небу объектов. Вы можете использовать обучение с подкреплением, чтобы слежение становилось лучше и лучше, адаптируете свои действия, чтобы следить за объектом более точно.
Когда речь заходит об играх, где вам нужно выполнять действия в определенной последовательности, вы пытаетесь менять свое поведение так, чтобы на каждом шаге ваше положение было лучше, чем на предыдущем. Вы думаете: «Я поступил вот так, и получилось плохо, а потом сделал вот так, и получилось хорошо. Буду и дальше делать, как в последний раз, потому что так лучше». Это процесс обучения с подкреплением. Оно может быть детальным, его могут поддерживать другие методы – например, уже упомянутое глубокое обучение, градиентный спуск и так далее. Они могут быть дополнением к этому процессу.
С одной стороны, мы имеем дело с очень старой областью – устоявшейся, со связями с нейрофизиологией и исследованиями мозга. С другой стороны, используем технологии, которые стали возможными из-за взрывного роста мощностей компьютеров. Мы знаем, что нейронные сети хороши в аппроксимации непрерывных и ограниченных функций, и из-за этого мы их и используем. С другой стороны, многие задачи, которые мы перед ними ставим, неразрешимы, то есть даже самый мощный компьютер в мире не сможет дать ответ на такие вопросы. Тем не менее мы используем эти устройства в некоторой эвристической манере.
В области нейронных сетей есть два важных открытых вопроса. Один – это воспроизводимость. Вы пытаетесь запомнить лицо, но оно представлено необычно: под углом, с особыми тенями или в особой позиции – такие отклонения могут значительно повлиять на результат. Какими свойствами должны обладать данные, которыми мы обучаем нейронные сети, чтобы нейронные сети стабильно принимали корректные решения? Это очень важная проблема, возникающая постоянно.
Второй важный вопрос: к какому классу проблем, кроме очевидных, – то есть непрерывных и ограниченных функций, – каковы проблемы вне этих хорошо изученных границ (а нам нужно решить столько задач!), к которым можно надежно применить нейронные сети? Это открытый вопрос.
Нейронные сети появились еще на рубеже 1950-1960-х годов и с тех пор пережили пару скачков в развитии, которые сменялись затишьем. Нынешний этап разработок начался примерно десять лет назад, когда вычислительные мощности компьютеров выросли, а ученые усовершенствовали принципы обучения глубоких (с несколькими слоями) нейронных сетей.
Обучаемость – ключевая черта нейронных сетей. Обычная программа действует строго по заложенным алгоритмам – в сущности, это подробная инструкция для задач, где решение продумано заранее. А нейронные сети до некоторой степени напоминают человеческий мозг и сами ищут способ справиться с проблемой. Имея входную и выходную информацию, они находят закономерности и далее ищут ответ в похожей ситуации. К примеру, если загрузить в правильно настроенную нейронную сеть тысячи фотографий кошек, то со временем она поймет, что же определяет облик этого животного, и различит питомца на новых картинках или видео. Впрочем, распознавание изображений далеко не единственная область применения.
Нейронные сети состоят из простых вычислительных блоков-процессоров, структурированных подобно клеткам головного мозга. Как нейроны принимают и передают электрический импульс, так и процессоры получают и дальше пересылают сигнал (им может быть фотография или другая неструктурированная информация).
Обычные компьютерные программы имеют дело с длинными последовательностями вычислений и не лучшим образом справляются с параллельными потоками. В нейронных сетях, наоборот, цепочки вычислений короткие, зато их очень много, и они обрабатываются одновременно – так же, как в мозге, где считанные клетки выполняют множество простых операций.
Нейронные сети лучше справляются с задачами, в которых нужно распознать закономерности, паттерны – в общем, где человек или привычные приложения обычно сдаются. Их используют в разного рода прогнозах (от фондовых рынков до погоды), распознавании речи, изображений, лиц, почерка, диагностике болезней, переводе с языка на язык, анализе текстов, управлении рисками и других областях. В перспективе исследователи и энтузиасты надеются придумать универсальную архитектуру для обработки любых данных. А пока строят специальные сети в зависимости от поставленной задачи, подчас шуточной или просто забавной.
7 самых забавных применений нейронных сетей
Интригующие заголовки, речи «под Обаму» и машинный «Гарри Поттер»
Норвежский программист Ларс Эйднес решил добавить компьютеру творческую искру. Для начала он научил нейронную сеть писать броские интернет-заголовки в духе «Семь секретов долголетия, о которых молчат тибетские ламы». Для этого он загрузил примерно 2 миллиона примеров с сайтов – корифеев жанра: BuzzFeed, Gawker, Jezebel, The Huffington Post и Upworthy. После тренировки сеть стала выдавать заголовки, в большинстве из которых была верная грамматика, а кое-где даже мелькал смысл. Потом Эйднес запустил целый новостной сайт, целиком написанный нейронными сетями. Новые заметки на нем выходят раз в 20 минут, а главная страница формируется исходя из просмотров статей и голосов читателей. Сегодня Click-o-Tron передает, что Джеймс Кэмерон защищает возможные проблемы с геями, Майли Сайрус исполнилось 13 лет, и вдобавок предлагает почитать о 16 самых подходящих городах для ресторана на кухне. Что-то подобное проделал и журналист технологического сайта Engadget Аарон Суппурис. Он запрограммировал бота на основе той же нейронной сети, что была у Эйднеса, и загрузил туда тексты Engadget. К третьей версии бот научился копировать стилистику авторов сайта и выдавал более-менее вразумительные заметки. Правда, Суппурис полагает, что без чудесных инноваций нейронные сети никогда не заменят живого журналиста, зато пригодятся как удобный вспомогательный инструмент. Другие экспериментаторы задавались еще более неординарными целями. Один научил нейронную сеть писать речи в стиле Барака Обамы – та неизменно желала божьего благословления. Другой загрузил книги о Гарри Поттере и получил новый том приключений юного волшебника. Третий натренировал сеть на любовных романах и строчках из песен Тейлор Свифт, чтобы компьютер подобающе описывал изображения на картинках. Исследователи Google тоже прогнали через сеть пикантное чтиво, чтобы та научилась писать в подобном стиле. Правда, сделали они это не ради забавы, а для дела: низкопробная беллетристика должна очеловечить язык голосового помощника и почтового клиента.
Нейроэпигон Егора Летова
Нейронные сети не раз сочиняли музыку, а творческих союзов человека и машины не в пример меньше. Самый громкий из недавних – альбом полувиртуального ансамбля «Нейронная оборона». Аналитик «Яндекса» Иван Ямщиков и его приятель Алексей Тихонов выложили десяток песен, стихи для которых написал компьютер. Сначала Тихонов придумал бота-подражателя, сочинявшего в духе Хармса и Пушкина, – друзьям захотелось что-нибудь сделать с этим творчеством, и они загрузили в сеть поэзию любимого певца, Егора Летова, получили стилистически выверенные куплеты, а потом спели их под гитару и драм-машину. Альбом под названием «404» продается на iTunes, Google Play, «Яндекс.Музыке». Судя по оценкам, поклонники остались довольны.
Новые карты для Magic: The Gathering и Hearthstone
Если нейронная сеть может писать, то ей не обязательно быть журналистом, Э.Л.Джеймс или Уильямом Шекспиром. Так рассудил аспирант из университета Алабамы и загрузил в сеть все известные карты из настольной игры Magic: The Gathering. Компьютер их обработал и принялся выдумывать собственные. Многие из карт получились бесполезными, другие – незаконченными (например, указано действие, но без условий применения). Впрочем, со временем сеть наловчилась и немного исправилась. Вскоре о проекте узнал пользователь Reddit под псевдонимом Scfdivine. Он повторил эксперимент, но с картами из похожей видеоигры Hearthstone. Карт в результате получилось меньше, и большинство из них нарушало баланс игры. Хотя некоторые эксперты сошлись во мнении, что у сети была слишком маленькая выборка (Hearthstone появилась сравнительно недавно), а компьютеру недоставало мощности – иначе опыт был бы удачнее.
Поливалка против котов и лазер против муравьев
Программист Роберт Бонд из компании Nvidia использует нейронные сети вместе с хитроумными устройствами. Он решил повеселить внуков установкой с маломощным лазером, приводами и зеркалами от принтера. Затем он загрузил в нейронную сеть видео с муравьями, чтобы компьютер научился различать этих насекомых, и научил штуковину замечать букашек на кухне и направлять на них яркий луч – не смертельный, но раздражающий. Недавно Бонд спас драгоценные клумбы супруги. Программист показал сети изображения кошек, встроил датчики в оросительную систему во дворе и повесил камеру: стоит кошке приблизиться к цветам, ее окатывает струей воды. По словам Бонда, соседские животные больше к ним не наведываются.
Нейронный алкотестер
Известный сервис FindFace ищет людей по фотографиям профиля в «ВКонтакте», а команда ученых из греческого Университета города Патры научилась распознавать по снимкам – правда, не простым, а инфракрасным – подвыпивших людей. Исследователи собрали 41 добровольца, налили им вина, сфотографировали и проанализировали кадры двумя способами. Сначала несколько нейросетей изучали по отдельности разные участки лица. Оказалось, что в подпитии в основном меняется температура лба. Дальше сеть рассматривала лица целиком. В итоге она научилась отличать трезвых от выпивших. Разработка кажется курьезной только на первый взгляд: если оборудовать ИК-камерами автомобили и общественные пространства, то можно оперативно выявлять возможных правонарушителей.
Видео-Prisma
Еще недавно соцсети наводняли однотипные фотографии, стилизованные под картины великих художников с помощью приложения Prisma. Обработанные кадры выглядели свежо, но сама идея не новаторская. Ученые из Тюбингенского университета опубликовали работу «Нейроалгоритм художественного стиля», в которой изложили свой метод преобразования изображения в стилистике другой картинки. Упомянутый выше норвежец Эйднес применил технологию к видео. Для этого ему пришлось обхитрить нейросеть, чтобы та обрабатывала соседние кадры не по отдельности и произвольно, а похожим образом. Эйднес написал код для измерения оптического потока между кадрами – ему удалось определить, как движутся снятые объекты, а нейросеть учитывала смещение при перерисовке. Для теста был выбран клип группы The xx на песню Islands: теперь в нем угадываются и Поллок, и Матисс, и роспись с античных амфор. Правда, поиграться с программой получится не скоро: даже на мощном железе один кадр обрабатывается целых три минуты.
Программа, раскрашивающая черно-белые снимки
Ричард Жэнг из университета в Беркли разработал систему, способную раскрашивать монохромные фото с помощью нейронных сетей. Его программа компьютерного зрения воспринимает и анализирует различные объекты на изображении, категоризрует их и присваивает им разные цвета. Чтобы научить распознавать систему различные текстуры: например, траву, кирпичную кладку, или шерсть животных, через нее «прогнали» миллионы самых разных фото. Демо-версию своей чудесной программы Жэнг представил на платформе Algorithmia, где ее может опробовать любой желающий. Чтобы раскрасить снимок, достаточно указать на него ссылку. После обработки пользователю предлагают сравнить оригинал и раскрашенную версию. Порой результаты не очень впечатляют, но разработчики обещают в ближайшее время программу усовершенствовать.
|