Нейросети: что это такое и как работает. Нейросети для начинающих – нейронная сеть для чайников

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

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

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

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

Идея нейросети заключается в том, чтобы собрать сложную структуру из очень простых элементов. Вряд ли можно считать разумным один-единственный участок мозга - а вот люди обычно на удивление неплохо проходят тест на IQ. Тем не менее до сих пор идею создания разума «из ничего» обычно высмеивали: шутке про тысячу обезьян с печатными машинками уже сотня лет, а при желании критику нейросетей можно найти даже у Цицерона, который ехидно предлагал до посинения подбрасывать в воздух жетоны с буквами, чтобы рано или поздно получился осмысленный текст. Однако в XXI веке оказалось, что классики ехидничали зря: именно армия обезьян с жетонами может при должном упорстве захватить мир.

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

Работает перцептрон проще некуда: он получает несколько исходных чисел, умножает каждое на «ценность» этого числа (о ней чуть ниже), складывает и в зависимости от результата выдаёт 1 или –1. Например, мы фотографируем чистое поле и показываем нашему нейрону какую-нибудь точку на этой картинке - то есть посылаем ему в качестве двух сигналов случайные координаты. А затем спрашиваем: «Дорогой нейрон, здесь небо или земля?» - «Минус один, - отвечает болванчик, безмятежно разглядывая кучевое облако. - Ясно же, что земля».

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

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

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

Первые нейросети

Перцептроны устроены не намного сложнее, чем любые другие элементы компьютера, которые обмениваются единицами и нулями. Неудивительно, что первый прибор, устроенный по принципу нейросети - Mark I Perceptron, - появился уже в 1958 году, всего через десятилетие после первых компьютеров. Как было заведено в ту эпоху, нейроны у этого громоздкого устройства состояли не из строчек кода, а из радиоламп и резисторов. Учёный Фрэнк Розенблатт смог соорудить только два слоя нейросети, а сигналы на «Марк-1» подавались с импровизированного экрана размером в целых 400 точек. Устройство довольно быстро научилось распознавать простые геометрические формы - а значит, рано или поздно подобный компьютер можно было обучить, например, чтению букв.

Розенблатт и его перцептрон

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

Впрочем, были среди пионеров кибернетики и неисправимые скептики, самым грозным из которых оказался бывший однокурсник Розенблатта, Марвин Минский. Этот учёный обладал не менее громкой репутацией: тот же Азимов отзывался о нём с неизменным уважением, а Стэнли Кубрик приглашал в качестве консультанта на съёмки «Космической одиссеи 2001 года». Даже по работе Кубрика видно, что на самом деле Минский ничего не имел против нейросетей: HAL 9000 состоит именно из отдельных логических узлов, которые работают в связке друг с другом. Минский и сам увлекался машинным обучением ещё в 1950-х. Просто Марвин непримиримо относился к научным ошибкам и беспочвенным надеждам: недаром именно в его честь Дуглас Адамс назвал своего андроида-пессимиста.

В отличие от Розенблатта, Минский дожил до триумфа ИИ

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

Минский не собирался сильно критиковать коллегу: он просто честно отметил сильные и слабые стороны его проекта, а сам продолжил заниматься своими разработками. Увы, в 1971 году Розенблатт погиб - исправлять ошибки перцептрона оказалось некому. «Обычные» компьютеры в 1970-х развивались семимильными шагами, поэтому после книги Минского исследователи попросту махнули рукой на искусственные нейроны и занялись более перспективными направлениями.

Эпоха застоя

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

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

1993 год: капча уже морально устарела

К середине 1990-х исследователи сошлись на том, что самое полезное свойство нейросетей - их способность самостоятельно придумывать верные решения. Метод проб и ошибок позволяет программе самой выработать для себя правила поведения. Именно тогда стали входить в моду соревнования самодельных роботов, которых программировали и обучали конструкторы-энтузиасты. А в 1997 году суперкомпьютер Deep Blue потряс любителей шахмат, обыграв чемпиона мира Гарри Каспарова.

Строго говоря, Deep Blue не учился на своих ошибках, а попросту перебирал миллионы комбинаций

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

Вторая «оттепель» ИИ случилась, только когда изменилась сама философия программирования.

Нейросети наших дней

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

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

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

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

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

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

В сфере развлечений компьютеры продвинулись не хуже, чем в науке. За счёт машинного обучения им наконец поддались игры, алгоритмы выигрыша для которых придумать ещё сложнее, чем для шахмат. Недавно нейросеть AlphaGo разгромила одного из лучших в мире игроков в го, а программа Libratus победила в профессиональном турнире по покеру. Более того, ИИ уже постепенно пробирается и в кино: например, создатели сериала «Карточный домик» использовали big data при кастинге, чтобы подобрать максимально популярный актёрский состав.

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

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

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

Игры с ботами

Развлекаться с недоученными нейросетями очень весело: они порой выдают такие ошибки, что в страшном сне не приснится. А если ИИ начинает учиться, появляется азарт: «Неужто сумеет?» Поэтому сейчас набирают популярность интернет-игры с нейросетями.

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

Другое развлечение с «угадайкой» предлагает ИИ от Google : нужно накалякать за двадцать секунд рисунок к заданному слову, а нейросеть потом пробует угадать, что это было. Программа очень смешно промахивается, но порой для верного ответа хватает всего пары линий - а ведь именно так узнаём объекты и мы сами.

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

Революция откладывается

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

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

Сейчас самой крупной сетью располагает компания Digital Reasoning (хотя новые рекорды появляются чуть ли не каждый месяц) - в их творении 160 миллиардов элементов. Для сравнения: в одном кубическом миллиметре мышиного мозга около миллиарда связей. Причём биологам пока удалось описать от силы участок в пару сотен микрометров, где нашлось около десятка тысяч связей. Что уж говорить о людях!

Один слой умеет узнавать людей, другой - столы, третий - ножи…

Такими 3D-моделями модно иллюстрировать новости о нейросетях, но это всего лишь крошечный участок мышиного мозга

Кроме того, исследователи советуют осторожнее относиться к громким заявлениям Google и IBM. Никаких принципиальных прорывов в «когнитивных вычислениях» с 1980-х годов не произошло: компьютеры всё так же механически обсчитывают входящие данные и выдают результат. Нейросеть способна найти закономерность, которую не заметит человек, - но эта закономерность может оказаться случайной. Машина может подсчитать, сколько раз в твиттере упоминается «Оскар», - но не сможет определить, радуются пользователи результатам или ехидничают над выбором киноакадемии.

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

Сказки про Скайнет


Хотя нам самим сложно удержаться от иронии на тему бунта роботов, серьёзных учёных не стоит даже и спрашивать о сценариях из «Матрицы» или «Терминатора»: это всё равно что поинтересоваться у астронома, видел ли он НЛО. Исследователь искусственного интеллекта Элиезер Юдковски, известный по роману « », написал ряд статей, где объяснил, почему мы так волнуемся из-за восстания машин - и чего стоит опасаться на самом деле.

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

Бояться надо не врагов, а чересчур усердных друзей. У любой нейросети есть мотивация: если ИИ должен гнуть скрепки, то, чем больше он их сделает, тем больше получит «награды». Если дать хорошо оптимизированному ИИ слишком много ресурсов, он не задумываясь переплавит на скрепки всё окрестное железо, потом людей, Землю и всю Вселенную. Звучит безумно - но только на человеческий вкус! Так что главная задача будущих создателей ИИ - написать такой жёсткий этический кодекс, чтобы даже существо с безграничным воображением не смогло найти в нём «дырок».

* * *

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

Сделай сам


Нейронную сеть можно сделать с помощью спичечных коробков - тогда у вас в арсенале появится фокус, которым можно развлекать гостей на вечеринках. Редакция МирФ уже попробовала - и смиренно признаёт превосходство искусственного интеллекта. Давайте научим неразумную материю играть в игру «11 палочек». Правила просты: на столе лежит 11 спичек, и в каждый ход можно взять либо одну, либо две. Побеждает тот, кто взял последнюю. Как же играть в это против «компьютера»? Очень просто.

  1. Берём 10 коробков или стаканчиков. На каждом пишем номер от 2 до 11.
  2. Кладём в каждый коробок два камешка - чёрный и белый. Можно использовать любые предметы - лишь бы они отличались друг от друга. Всё - у нас есть сеть из десяти нейронов!

Теперь начинается игра.

  1. Нейросеть всегда ходит первой. Для начала посмотрите, сколько осталось спичек, и возьмите коробок с таким номером. На первом ходу это будет коробок №11.
  2. Возьмите из нужного коробка любой камешек. Можно закрыть глаза или кинуть монетку, главное - действовать наугад.
  3. Если камень белый - нейросеть решает взять две спички. Если чёрный - одну. Положите камешек рядом с коробком, чтобы не забыть, какой именно «нейрон» принимал решение.
  4. После этого ходит человек - и так до тех пор, пока спички не закончатся.

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

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

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

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

Иерархия классов

Существует три базовых класса TNeuron, TLayer, TNeuralNet. Все остальные являются производными от них. На рис.1 приведена иерархия классов, сплошными линиями показано наследование (стрелкой указан потомок), пунктирными в каких классах они используются.

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

TNeuronHopf , потомок TNeuron, реализует нейрон используемый в нейронной сети Хопфилда, единственным отличием от базового класса, является использования активационной функции в перекрытом методе ComputeOut.

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

Основным назначением базового класса TLayer и его потомков TLayerHopf и TLayerBP является объединение нейронов в слой, для упрощения работы с нейронами.

Компонент TNeuralNet базовый компонент для всех видов нейронных сетей. TNeuralNet обеспечивает необходимую функциональность производных компонентов. Этот компонент поддерживает методы для работы со слоями сети (AddLayer, DeleteLayer) и методы для манипуляций с исходными данными (AddPattern, DeletePattern, ResetPatterns). Метод Init служит для построения нейронной сети. Большинство методов объявленных в разделе public в базовом компоненте и его потомках – виртуальные, что позволяет легко перекрывать их.
Компонент TNeuralNetHopf реализует нейронную сеть Хопфилда.

Дополнительно включены следующие методы: InitWeights – запоминает предъявленные образцы в матрице образов и метод Calc – вычисляет выход сети Хопфилда.

Компонент TNeuralNetBP реализует многослойную нейронную сеть обучаемую по алгоритму обратного распространения ошибки.

Дополнительно включены следующие методы: Compute – вычисляет выход нейронной сети, используется после обучения сети; TeachOffLine – обучает нейронную сеть. Компонент позволяет в режиме design-time, в окне Object Inspector, конструировать нейронную сеть добавляя или удаляя слои и нейроны в сети. Для этого используется редактор свойств NeuronsInLayer, имеющий следующий вид:

Совместимость с Neural Network Wizard

Следующим компонентом является TNeuralNetExtented порожденный от TNeuralNetBP, который обеспечивает полную совместимость с Neural Network Wizard. Дополнительно включены следующие методы: для записи (LoadPhase1, LoadPhase2, LoadPhase4, LoadNetwork) и чтения (SavePhase1, SavePhase2, SavePhase4, SaveNetwork) обученной нейронной сети в формате *.nnw; LoadDataFrom – загружает данные из текстового файла, а также метод NormalizeData нормализации входных и выходных данных; Train – для обучения нейронной сети; ComputeUnPrepData – для вычисления выхода сети, используется в том случае, если у вас входные значения ненормализованы.

Компонент позволяет в режиме design-time, в окне Object Inspector, выбирать нужные поля, а также задавать тип нормализации полей. Для этих целей используется редактор свойств, имеющий следующий вид:

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

Демонстрационные программы

В качестве демонстрационных примеров приведены три программы, показывающие возможности предложенных компонентов.

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

Программа XOR_Problem , реализует функцию "исключающее или", которая является стандартным тестом, после знаменитой работы Минского и Пейперта "Перцептроны". В основе программы лежит компонент TNeuralNetBP.

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

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

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

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

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

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

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

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

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

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

И как же оно работает

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

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

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

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

Схема перцептрона — простейшей однослойной нейросети

Запрограммировать нельзя обучить

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

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

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

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

А вот эта же, немного адаптированная ИНС осваивается за рулеем другой игры — Mario Kart.

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

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

В основе всего — алгоритмы, созданные природой

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

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

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

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

Почему ИНС — это все же не ИИ

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

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

Говоря проще, Александр Македонский и сейчас смог бы разрубить Гордиев узел. А нейросеть — нет.

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

Если вы хотите получать новости на Facebook, нажмите «нравится»

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

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

С чего всё началось

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

Спустя несколько лет группа американских учёных смоделировала искусственную нейросеть, которая могла отличать фигуры квадратов от остальных фигур.

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

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

Какими бывают нейронные сети и что они умеют

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

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

Нейроны делятся на группы, каждая группа вычисляет заданную ей характеристику. В 1993 году французский учёный Ян Лекун показал миру LeNet 1 - первую свёрточную нейронную сеть, которая быстро и точно могла распознавать цифры, написанные на бумаге от руки. Смотрите сами:

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

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

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

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

Использование такого рода нейросетей - это возможность анализировать и генерировать данные, составлять базы и даже делать прогнозы.

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

Комбинированные нейросети (свёрточные + рекуррентные)

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

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

Благодаря этому процессу:

1. Skype внедрил возможность синхронного перевода уже для 10 языков. Среди которых, на минуточку, есть русский и японский - одни из самых сложных в мире. Конечно, качество перевода требует серьёзной доработки, но сам факт того, что уже сейчас вы можете общаться с коллегами из Японии по-русски и быть уверенными, что вас поймут, вдохновляет.

2. Яндекс на базе нейронных сетей создал два поисковых алгоритма: «Палех» и «Королёв». Первый помогал найти максимально релевантные сайты для низкочастотных запросов. «Палех» изучал заголовки страниц и сопоставлял их смысл со смыслом запросов. На основе «Палеха» появился «Королёв». Этот алгоритм оценивает не только заголовок, но и весь текстовый контент страницы. Поиск становится всё точнее, а владельцы сайтов разумнее начинают подходить к наполнению страниц.

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

4. У Google Inbox с помощью нейросетей осуществляется ответ на сообщение. Развитие технологий идет полный ходом, и сегодня сеть уже изучает переписку и генерирует возможные варианты ответа. Можно не тратить время на печать и не бояться забыть какую-нибудь важную договорённость.

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

6. Facebook активно работает над DeepText AI - программой для коммуникаций, которая понимает жаргон и чистит чатики от обсценной лексики.

7. Приложения вроде Prisma и Fabby, созданные на нейросетях, создают изображения и видео:

Colorize восстанавливает цвета на чёрно-белых фото (удивите бабушку!).

MakeUp Plus подбирает для девушек идеальную помаду из реального ассортимента реальных брендов: Bobbi Brown, Clinique, Lancome и YSL уже в деле.

Apple и Microsoft постоянно апгрейдят свои нейронные Siri и Contana.

Искусственная нейронная сеть

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

А что ещё нас ждет в будущем?

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

Аграрный сектор

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

Медицина

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

Маркетинг

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

Ecommerce

Ecommerce будет внедрён повсеместно. Уже не потребуется переходить в интернет-магазин по ссылке: вы сможете купить всё там, где видите, в один клик.

Например, читаете вы эту статью через несколько лет. Очень вам нравится помада на скрине из приложения MakeUp Plus (см. выше). Вы кликаете на неё и попадаете сразу в корзину. Или смотрите видео про последнюю модель Hololens (очки смешанной реальности) и тут же оформляете заказ прямо из YouTube.

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

P. S. Зинаида Фолс - нейронная сеть Яндекса, пишущая стихи. Оцените произведение, которое машина написала, обучившись на Маяковском (орфография и пунктуация сохранены):

« Это »

это
всего навсего
что-то
в будущем
и мощь
у того человека
есть на свете все или нет
это кровьа вокруг
по рукам
жиреет
слава у
земли
с треском в клюве

Впечатляет, правда?

Нейросети для чайников

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

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

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

Важно

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

Нейросети: что это такое и как работает

В идеале, загрузив первичные данные и сопоставив топологию классов, нейросеть далее уже сама сможет классифицировать новую информацию. Допустим, мы решили загрузить изображение 3х5 пикселей. Простая арифметика нам подскажет, что входов будет: 3*5=15. А сама классификация определит общее количество выходов, т.е. нейронов. Другой пример: нейросети необходимо распознать букву “С”. Заданный порог – полное соответствие букве, для этого потребуется один нейрон с количеством входов, равных размеру изображения.

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

нейросети

Нейросети для чайников

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

Пишем свою нейросеть: пошаговое руководство

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

Чтобы разобраться в проблеме, нужно узнать первопричину, которая кроется совсем на поверхности. Вспоминая Сару Коннор, с содроганием сердца понимаем, что некогда пионеры компьютерных разработок Уоррен Мак-Каллок и Уолтер Питтс преследовали корыстную цель создания первого Искусственного Интеллекта.

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

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

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

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

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

При написании первичного кода объяснять свои действия нужно буквально по пальцам. Если мы работаем, например, с изображениями, то на первом этапе значение для нас будет иметь её размер и класс. Если первая характеристика подскажет нам количество входов, то вторая поможет самой нейросети разобраться с информацией. В идеале, загрузив первичные данные и сопоставив топологию классов, нейросеть далее уже сама сможет классифицировать новую информацию. Допустим, мы решили загрузить изображение 3х5 пикселей. Простая арифметика нам подскажет, что входов будет: 3*5=15. А сама классификация определит общее количество выходов, т.е. нейронов. Другой пример: нейросети необходимо распознать букву “С”. Заданный порог – полное соответствие букве, для этого потребуется один нейрон с количеством входов, равных размеру изображения.

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

Как и в любом обучении, ученика за неправильный ответ нужно наказывать, а за верный мы ничего давать не будем. Если верный ответ программа воспринимает как False, то увеличиваем вес входа на каждом синапсе. Если же, наоборот, при неверном результате программа считает результат положительным или True, то вычитаем вес из каждого входа в нейрон. Начать обучение логичнее со знакомства с нужным нам символом. Первый результат будет неверным, однако немного подкорректировав код, при дальнейшей работе программа будет работать корректно.

Приведенный пример алгоритма построения кода для нейронной сети называется парцетроном.

Бывают и более сложные варианты работы нейросетей с возвратом неверных данных, их анализом и логическими выводами самой сети. Например, онлайн-предсказатель будущего вполне себе запрограммированная нейросеть. Такие проги способны обучаться как с учителем, так и без него, и носят название адаптивного резонанса. Их суть заключается в том, что у нейронов уже есть свои представления об ожидании о том, какую именно информацию они хотят получить и в каком виде. Между ожиданием и реальностью проходит тонкий порог так называемой бдительности нейронов, которая и помогает сети правильно классифицировать поступающую информацию и не упускать ни пикселя. Фишка АР нейросети в том, что учится она самостоятельно с самого начала, самостоятельно определяет порог бдительности нейронов. Что, в свою очередь, играет роль при классифицировании информации: чем бдительнее сеть, тем она дотошнее.

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

нейронные сети,
методы анализа данных:
от исследований до разработок и внедрений

Главная
Услуги
Нейронные сети
базовые идеи
возможности
преимущества

Как использовать
программирование
точность решения
НС и ИИ
Программы
Статьи
Блог
Об авторе / контакты

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Именно программные нейросети получили широкое распространение в последние годы. Их внедряют как в научное, так и в прикладное и даже развлекательное ПО. Ярким примером тому могут стать популярные мобильные приложения для обработки фотографий и стилизации их под картины, вроде Prisma или веб-сервисы наподобие Ostagram :

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

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

Снабжённые собственной памятью, такие процессоры (IPU - сокр. от Intelligent Processor Unit) смогут в разы ускорить выполнение различных расчётов, даже в сравнении с используемыми нынче решениями на базе плат видеоускорения с графическими процессорами (GPU).

Популярные сервисы с нейросетями

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

Нейросети в изобразительном искусстве

Фактически именно с изобразительного искусства, а точнее с фотообработки, и начался в прошлом году информационный бум вокруг нейросетей. В AppStore и Google Play появилось уже упомянутое нами приложение Prisma . С тех пор у него появилось довольно много подражателей, которые превращают фотографии пользователей в оригинальные картины. Однако, нейросети умеют не только стилизовать фото, но и самостоятельно рисовать, дорисовывать или угадывать Ваши рисунки!

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

Очень большое распространение получили также нейросети, которые дорисовывают Ваши "художества". Например, из кривых каляк-маляк мышью нейросеть Neural Doodle может создать вполне приличные картины в стиле известных художников-импрессионистов. А, например, простенький онлайн-сервис Pix2Pix превращает Ваши каракули в котов:)

Много различных разработок на базе нейросетей есть у уже упомянутого Гугла. Для экспериментов с ними даже создан отдельный сайт AIExperiments . Среди всех сервисов мне лично приглянулась небольшая игра под названием . Вам даётся задание за 20 секунд нарисовать что-то, а искусственный интеллект попытается за это время по незавершённому рисунку угадать, что Вы пытаетесь изобразить:

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

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

Нейросети в музыке

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

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

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

Зато генератор музыки доступен всем и работает весьма сносно! В бесплатной версии Вы можете генерировать треки в стилях хип-хоп, саундтрек к фильмам, рок, фолк или поп 90-х. Из настроек доступен выбор настроения, темпа, длительности, тональности и набора инструментов для будущей композиции:

Нейросети в других отраслях

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

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

Кстати, в данный момент ведётся активное обучение нейросети под названием Pix2Code , которая призвана облегчить (а то и вовсе заменить) работу верстальщика сайтов. Задача данной сети - генерация функционального кода сайта на HTML и CSS по предоставленному макету в формате JPEG.

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

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

Выводы

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

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

P.S. Разрешается свободно копировать и цитировать данную статью при условии указания открытой активной ссылки на источник и сохранения авторства Руслана Тертышного.