Изучаем нейронные сети за четыре шага. Простыми словами о сложном: что такое нейронные сети

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

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


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



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


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


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


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



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



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


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


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

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

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

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

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

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


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



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



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

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


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


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


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


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



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

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

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



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


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


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

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

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


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


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


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


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


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



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


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



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




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


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


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


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


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

    Обучение.

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


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


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


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


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



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


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



    Веса моей нейронной сети не настроены, и я никак не могу понять к какому ресурсу должна относится эта статья.

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

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

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

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

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

    Следующим важным шагом стала разработка Дональдом Хеббом первого алгоритма вычисления ИНС в 1949 году, который стал основополагающем на несколько последующих десятилетий. В 1958 году Фрэнком Розенблаттом был разработан парцептрон - система, имитирующая процессы головного мозга. В свое время технология не имела аналогов и до сих пор является основополагающей в нейронных сетях. В 1986 году практически одновременно, независимо друг от друга американскими и советскими учеными был существенно доработан основополагающий метод обучения многослойного перцептрона . В 2007 году нейронные сети перенесли второе рождение. Британский информатик Джеффри Хинтоном впервые разработал алгоритм глубокого обучения многослойных нейронных сетей, который сейчас, например, используется для работы беспилотных автомобилей.

    Коротко о главном

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

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

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

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

    Сегодняшнее положение

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

    На сегодняшний день рынок нейронных сетей огромен - это миллиарды и миллиарды долларов. Как показывает практика, большинство технологий нейросетей по всему миру мало отличаются друг от друга. Однако применение нейросетей - это очень затратное занятие, которое в большинстве случаев могут позволить себе только крупные компании. Для разработки, обучения и тестирования нейронных сетей требуются большие вычислительные мощности, очевидно, что этого в достатке имеется у крупных игроков на рынке ИТ. Среди основных компаний, ведущих разработки в этой области можно отметить подразделение Google DeepMind, подразделение Microsoft Research, компании IBM, Facebook и Baidu.

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

    Почему нейросети еще далеки до человеческого мозга?

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

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

    Итог

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

    Для тех, кто хочет знать больше

    • Большая нейронная война: что на самом деле затевает Google
    • Как когнитивные компьютеры могут изменить наше будущее

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Это не единственные варианты классификации сетей.

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

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

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

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

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

    Таким образом, нейронные сети находят широкое применение в следующих областях:

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

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

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

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

    В составе сети имеются три типа нейронов: входной, скрытый и выходной. Причём если сеть однослойная, то скрытых нейронов она не содержит. Кроме этого, есть разновидность единиц, носящих названия нейрон смещения и контекстный нейрон.

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

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

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

    При этом веса выставляются в случайном порядке.

    Схема работы нейронной сети

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

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

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

    • Линейная функция f(x) = x, самая простая из всех возможных, используется только для тестирования созданной нейронной сети или передачи данных в исходном виде.
    • Сигмоид считается самой распространённой функцией активации и имеет вид f(x) = 1 / 1+e-×; при этом диапазон её значений от 0 до 1. Она ещё называется логистической функцией.
    • Чтобы охватить и отрицательные значения используют гиперболический тангенс. F(x) = e²× - 1 / e²× + 1 — такой вид имеет эта функция и диапазон который она имеет от -1 до 1. Если нейронная сеть не предусматривает использование отрицательных значений, то использовать её не стоит.

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

    Интеграция — это счётчик, который увеличивается с каждым тренировочным сетом.

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

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

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

    Что такое нейрон смещения и для чего он нужен?

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

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

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

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

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

    Наличие нейрона смещения позволит исправить ситуацию и получить иной результат. Целесообразность использования нейронов смещения определяется путём тестирования сети с ними и без них и сравнения результатов.

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