Что такое нейронная сеть в информатике. Что такое микрофон XLR и почему он вам нужен? Как работает нейронная сеть

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

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

Илон Маск после того, как колонизировал Марс

Джеффри Хинтон - один из создателей концепции глубокого обучения, призер премии Тьюринга 2019 года и инженер . На прошлой неделе, во время конференции разработчиков I/O, Wired взял у него интервью и обсудил его увлечение мозгом и возможностью смоделировать компьютер на основе нейронной структуры мозга. Долгое время эти идеи считались дурацкими. Интересная и увлекательная беседа о сознании, будущих планах Хинтона и о том, можно ли научить компьютеры видеть сны.

В первой половине 2016 года мир услышал о множестве разработок в области нейронных сетей - свои алгоритмы демонстрировали Google (сеть-игрок в го AlphaGo), Microsoft (ряд сервисов для идентификации изображений), стартапы MSQRD, Prisma и другие.

В закладки

Редакция сайт рассказывает, что из себя представляют нейронные сети, для чего они нужны, почему захватили планету именно сейчас, а не годами раньше или позже, сколько на них можно заработать и кто является основными игроками рынка. Своими мнениями также поделились эксперты из МФТИ, «Яндекса», Mail.Ru Group и Microsoft.

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

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

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

Руководитель направления «Поиск Mail.ru» в Mail.Ru Group Андрей Калинин отмечает, что нейронные сети способны решать такие же задачи, как и другие алгоритмы машинного обучения, разница заключается лишь в подходе к обучению.

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

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

В ближайшей перспективе (5-10 лет), полагает Шершульский, нейронные сети будут использоваться ещё шире:

Представьте себе сельскохозяйственный комбайн, исполнительные механизмы которого снабжены множеством видеокамер. Он делает пять тысяч снимков в минуту каждого растения в полосе своей траектории и, используя нейросеть, анализирует - не сорняк ли это, не поражено ли оно болезнью или вредителями. И обрабатывает каждое растение индивидуально. Фантастика? Уже не совсем. А через пять лет может стать нормой. - Влад Шершульский, Microsoft

Заведующий лабораторией нейронных систем и глубокого обучения Центра живых систем МФТИ Михаил Бурцев приводит предположительную карту развития нейронных сетей на 2016-2018 годы:

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

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

Почему нейронные сети стали так популярны именно сейчас

Учёные занимаются разработкой искусственных нейронных сетей более 70 лет. Первую попытку формализовать нейронную сеть относят к 1943 году, когда два американских учёных (Уоррен Мак-Каллок и Уолтер Питтс) представили статью о логическом исчислении человеческих идей и нервной активности.

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

Трудоёмкая и длительная часть процесса разработки нейронной сети - её обучение. Для того, чтобы нейронная сеть могла корректно решать поставленные задачи, требуется «прогнать» её работу на десятках миллионов наборов входных данных. Именно с появлением различных технологий ускоренного обучения и связывают распространение нейросетей Андрей Калинин и Григорий Бакунов.

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

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

Каковы объёмы рынка нейронных сетей

«Очень легко посчитать. Можно взять любую область, в которой используется низкоквалифицированный труд, - например, работу операторов колл-центров - и просто вычесть все людские ресурсы. Я бы сказал, что речь идет о многомиллиардном рынке даже в рамках отдельной страны. Какое количество людей в мире задействовано на низкоквалифицированной работе, можно легко понять. Так что даже очень абстрактно говоря, думаю, речь идет о стомиллиардном рынке во всем мире», - говорит директор по распространению технологий «Яндекса» Григорий Бакунов.

По некоторым оценкам, больше половины профессий будет автоматизировано – это и есть максимальный объём, на который может быть увеличен рынок алгоритмов машинного обучения (и нейронных сетей в частности).- Андрей Калинин, Mail.Ru Group

«Алгоритмы машинного обучения - это следующий шаг в автоматизации любых процессов, в разработке любого программного обеспечения. Поэтому рынок как минимум совпадает со всем рынком ПО, а, скорее, превосходит его, потому что становится возможно делать новые интеллектуальные решения, недоступные старому ПО», - продолжает руководитель направления «Поиск Mail.ru» в Mail.Ru Group Андрей Калинин.

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

В последние несколько месяцев на рынке появилось сразу несколько громких развлекательных проектов, использующих нейронные сети - это и популярный видеосервис , который социальная сеть Facebook, и российские приложения для обработки снимков (в июне инвестиции от Mail.Ru Group) и и другие.

Способности собственных нейронных сетей демонстрировали и Google (технология AlphaGo выиграла у чемпиона в го; в марте 2016 года корпорация продала на аукционе 29 картин, нарисованных нейросетями и так далее), и Microsoft (проект CaptionBot , распознающий изображения на снимках и автоматически генерирующий подписи к ним; проект WhatDog , по фотографии определяющий породу собаки; сервис HowOld , определяющий возраст человека на снимке и так далее), и «Яндекс» (в июне команда встроила в приложение «Авто.ру» сервис для распознавания автомобилей на снимках; представила записанный нейросетями музыкальный альбом; в мае создала проект LikeMo.net для рисования в стиле известных художников).

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

«Игры - характерная особенность нашего поведения как биологического вида. С одной стороны, на игровых ситуациях можно смоделировать практически все типичные сценарии человеческого поведения, а с другой - и создатели игр и, особенно, игроки могут получить от процесса массу удовольствия. Есть и сугубо утилитарный аспект. Хорошо спроектированная игра приносит не только удовлетворение игрокам: в процессе игры они обучают нейросетевой алгоритм. Ведь в основе нейросетей как раз и лежит обучение на примерах», - говорит Влад Шершульский из Microsoft.

«В первую очередь это делается для того, чтобы показать возможности технологии. Другой причины, на самом деле, нет. Если речь идёт о Prisma, то понятно, для чего это делали они. Ребята построили некоторый пайплайн, который позволяет им работать с картинками. Для демонстрации этого они избрали для себя довольно простой способ создания стилизаций. Почему бы и нет? Это просто демонстрация работы алгоритмов», - говорит Григорий Бакунов из «Яндекса».

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

Основные игроки на рынке нейронных сетей

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

Среди основных игроков рынка Калинин упоминает Google и её подразделение Google DeepMind, создавшее сеть AlphaGo, и Google Brain. Собственные разработки в этой области есть у Microsoft - ими занимается лаборатория Microsoft Research. Созданием нейронных сетей занимаются в IBM, Facebook (подразделение Facebook AI Research), Baidu (Baidu Institute of Deep Learning) и другие. Множество разработок ведётся в технических университетах по всему миру.

Директор по распространению технологий «Яндекса» Григорий Бакунов отмечает, что интересные разработки в области нейронных сетей встречаются и среди стартапов. «Я бы вспомнил, например, компанию ClarifAI . Это небольшой стартап, сделанный когда-то выходцами из Google. Сейчас они, пожалуй, лучше всех в мире умеют определять содержимое картинки». К таким стартапам относятся и MSQRD, и Prisma, и другие.

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

Созданием собственных нейросетей занимается и «Яндекс»: «В основном такие сети уже используются в работе с изображениями, со звуком, но мы исследуем их возможности и в других областях. Сейчас мы много экспериментов ставим в использовании нейросетей в работе с текстом». Разработки ведутся в университетах: в «Сколтехе», МФТИ, МГУ, ВШЭ и других.

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

    Допустим, я знаю о девушке две вещи - симпатична она мне или нет, а также, есть ли о чём мне с ней поговорить. Если есть, то будем считать это единицей, если нет, то - нулём. Аналогичный принцип возьмем и для внешности. Вопрос: “В какую девушку я влюблюсь и почему?”


    Можно подумать просто и бескомпромиссно: “Если симпатична и есть о чём поговорить, то влюблюсь. Если ни то и ни другое, то - увольте.”


    Но что если дама мне симпатична, но с ней не о чем разговаривать? Или наоборот?


    Понятно, что для каждого из нас что-то одно будет важнее. Точнее, у каждого параметра есть его уровень важности, или вернее сказать - вес. Если помножить параметр на его вес, то получится соответственно “влияние внешности” и “влияние болтливости разговора”.


    И вот теперь я с чистой совестью могу ответить на свой вопрос:


    “Если влияние харизмы и влияние болтливости в сумме больше значения “влюбчивость” то влюблюсь…”



    То есть, если я поставлю большой вес “болтологичности” дамы и маленький вес внешности, то в спорной ситуации я влюблюсь в особу, с которой приятно поболтать. И наоборот.



    Собственно, это правило и есть нейрон.


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


    Сделаем ещё несколько выводов:

    • Если оба веса будут малыми, то мне будет сложно влюбиться в кого бы-то ни было.
    • Если же оба веса будут чересчур большими, то я влюблюсь хоть в столб.
    • Заставить меня влюбиться в столб можно также, понизив порог влюбчивости, но прошу - не делайте со мной этого! Лучше давайте пока забудем про него, ок?

    Кстати о пороге

    Смешно, но параметр “влюбчивости” называется “порогом возбуждения”. Но, дабы эта статья не получила рейтинг “18+”, давайте договоримся говорить просто “порог”, ок?

    Нейронная сеть

    Не бывает однозначно симпатичных и однозначно общительных дам. Да и влюблённость влюблённости рознь, кто бы что ни говорил. Потому давайте вместо брутальных и бескомпромиссных “0” и “1”, будем использовать проценты. Тогда можно сказать - “я сильно влюблён (80%), или “эта дама не особо разговорчива (20%)”.


    Наш примитивный “нейрон-максималист” из первой части уже нам не подходит. Ему на смену приходит “нейрон-мудрец”, результатом работы которого будет число от 0 до 1, в зависимости от входных данных.



    “Нейрон-мудрец” может нам сказать: “эта дама достаточно красива, но я не знаю о чём с ней говорить, поэтому я не очень-то ей и восхищён”



    Немного терминологии

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


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


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


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


    В работе мне абсолютно всё равно, сколько денег у девушки, поэтому вес сделаю равным нулю.



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

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

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



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


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


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

    Долой максимализм.

    Помните, я говорил об отрицательном влияние денег на моё желание путешествовать с человеком? Так вот - я слукавил. Для путешествий лучше всего подходит персона, у которой денег не мало, и не много. Мне так интереснее и не буду объяснять почему.


    Но тут я сталкиваюсь с проблемой:


    Если я ставлю вес денег отрицательным, то чем меньше денег - тем лучше для путешествий.
    Если положительным, то чем богаче - тем лучше,
    Если ноль - тогда деньги “побоку”.


    Не получается мне вот так, одним весом, заставить нейрон распознать ситуацию “ни много -ни мало”!


    Чтобы это обойти, я сделаю два нейрона - “денег много” и “денег мало”, и подам им на вход денежный поток от нашей дамы.


    Теперь у меня есть два суждения: “много” и “мало”. Если оба вывода незначительны, то буквально получится “ни много - ни мало”. То есть, добавим на выход ещё один нейрон, с отрицательными весами:



    “Нимногонимало”. Красные стрелки - положительные связи, синие - отрицательные


    Вообще, это значит, что нейроны подобны элементам конструктора. Подобно тому, как процессор делают из транзисторов, мы можем собрать из нейронов мозг. Например, суждение “Или богата, или умна” можно сделать так:



    Или-или. Красные стрелки - положительные связи, синие – отрицательные




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


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


    Обращу ваше внимание, что добавление слоя из двух нейронов, позволило нейрону “ни много - ни мало” делать более сложное и взвешенное суждение, перейти на новый уровень логики. От “много” или “мало” - к компромиссному решению, к более глубокому, с философской точки зрения, суждению. А что если добавить скрытых слоёв ещё? Мы способны охватить разумом ту простую сеть, но как насчёт сети, у которой есть 7 слоёв? Способны ли мы осознать глубину её суждений? А если в каждом из них, включая входной, около тысячи нейронов? Как вы думаете, на что она способна?


    Представьте, что я и дальше усложнял свой пример с женитьбой и влюблённостью, и пришёл к такой сети. Где-то там в ней скрыты все наши девять нейрончиков, и это уже больше похоже на правду. При всём желании, понять все зависимости и глубину суждений такой сети - попросту невозможно. Для меня переход от сети 3х3 к 7х1000 - сравним с осознанием масштабов, если не вселенной, то галактики - относительно моего роста. Попросту говоря, у меня это не получится. Решение такой сети, загоревшийся выход одного из её нейронов - будет необъясним логикой. Это то, что в быту мы можем назвать “интуицией” (по крайней мере – “одно из..”). Непонятное желание системы или её подсказка.


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

    Обучение.

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


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


    1) Обучение с учителем (для романтиков). Насмотреться на голливудские мелодрамы и начитаться слезливых романов. Или же насмотреться на своих родителей и/или друзей. После этого, в зависимости от выборки, отправиться проверять полученные знания. После неудачной попытки - повторить всё заново, начиная с романов.


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


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



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


    Хороших вам весов и отличных обучающих выборок! Ну а если это уже и не нужно, то расскажите об этом кому-нибудь ещё.


    Теги:

    • нейронные сети
    • алгоритмы
    Добавить метки

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

    Например, в 2016 году нейронная сеть Google AlphaGo побила одного из лучших профессиональных игроков Counter-Strike: Global Offensive в мире со счетом 4-1. YouTube также объявил о том, что они будут использовать нейронные сети для лучшего понимания своих видео.

    Но что такое нейронная сеть? Как это работает? И почему они так популярны в машинной обработке?

    Компьютер как мозг

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

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

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

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

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

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

    Способность к обучению

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

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

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

    От нейронов к узлам

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


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

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

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

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

    От синапсов к соединениям

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


    Как вы можете видеть, вес соединения «B» выше, чем у соединения «A» и «C». Скажем, скрытый узел «4» сработает, только если он получает общий ввод «2» или больше. Это означает, что если «1» или «3» сработают по отдельности, то «4» не сработает, но «1» и «3» вместе вызовут узел. Узел «2» также может инициировать узел самостоятельно через соединение «B».

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

    Используя вышеприведенные соединения и вес, узел 4 может срабатывать только в том случае, если температура ниже -18 С и ветер выше 48 км/с, или он будет срабатывать, если вероятность снега превышает 70 процентов. Температура будет подаваться в узел 1, ветры к узлу 3 и вероятность попадания снега в узел 2. Теперь узел 4 может учитывать все это при определении того, какой сигнал следует отправить на выходной слой.

    Лучше, чем простая логика

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


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

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


    Исправление ошибки

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

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

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

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

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

    Постоянное улучшение

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

    Это может быть так же просто, как распознавание образов или столь же сложным, как и игра CS: GO.

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

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

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

    Вопросы глубины

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

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


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

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

    Приложения нейронной сети

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

    Для чего мы можем использовать эти увлекательные системы?

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

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

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

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

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

    Будущее нейронных сетей

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

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

    Знаете ли вы какие-либо интересные применения нейронных сетей? У вас есть опыт работы с ними самостоятельно? Что вас больше всего привлекает в этой технологии? Поделитесь своими мыслями в комментариях ниже!

    Введение

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

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

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

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

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

    2 Обучение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Рис. 1 Нейрон

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

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

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

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


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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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