Ответы об IT

Ответы об IT

» » Нейронные сети: какие бывают и как их используют бренды. Нейронные сети: что это такое, где используются, как устроены и какую функцию выполняют? Что делать с нейронной сетью

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

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

Что такое многослойный персептрон кратко

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

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

Логическую схему принципа функционирования перцептрона легче всего представить с помощью графического рисунка с различными цветами и связями между ними:

Использование нейронных сетей

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

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

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

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

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

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

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

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

Дело в том, что головной мозг состоит из 10 миллиардов нейронов, каждый из которых имеет по 10 000 связей. Это чрезвычайно энергоэкономичная и помехоустойчивая система, созданная миллионами лет . В чем же состоит отличие?

Различия принципа работы мозга и нейронных сетей

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

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

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

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

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

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

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

Об этом интереснейшем классе импульсных нейронных сетей мы поговорим далее:

Видео на тему сути нейронный сетей простым языком:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Можно привести следующую сильно упрощенную модель биологической нейронной сети:

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

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

Нейронные сети в искусственном интеллекте – это упрощенные модели биологических нейронных сетей.

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

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

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

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

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

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

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


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

Какие бывают нейронные сети?

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

Для чего нужны нейронные сети?

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

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

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

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

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

Что такое нейрон?


Нейрон - это вычислительная единица, которая получает информацию, производит над ней простые вычисления и передает ее дальше. Они делятся на три основных типа: входной (синий), скрытый (красный) и выходной (зеленый). Также есть нейрон смещения и контекстный нейрон о которых мы поговорим в следующей статье. В том случае, когда нейросеть состоит из большого количества нейронов, вводят термин слоя. Соответственно, есть входной слой, который получает информацию, n скрытых слоев (обычно их не больше 3), которые ее обрабатывают и выходной слой, который выводит результат. У каждого из нейронов есть 2 основных параметра: входные данные (input data) и выходные данные (output data). В случае входного нейрона: input=output. В остальных, в поле input попадает суммарная информация всех нейронов с предыдущего слоя, после чего, она нормализуется, с помощью функции активации (пока что просто представим ее f(x)) и попадает в поле output.


Важно помнить , что нейроны оперируют числами в диапазоне или [-1,1]. А как же, вы спросите, тогда обрабатывать числа, которые выходят из данного диапазона? На данном этапе, самый простой ответ - это разделить 1 на это число. Этот процесс называется нормализацией, и он очень часто используется в нейронных сетях. Подробнее об этом чуть позже.

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


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

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

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


В данном примере изображена часть нейронной сети, где буквами I обозначены входные нейроны, буквой H - скрытый нейрон, а буквой w - веса. Из формулы видно, что входная информация - это сумма всех входных данных, умноженных на соответствующие им веса. Тогда дадим на вход 1 и 0. Пусть w1=0.4 и w2 = 0.7 Входные данные нейрона Н1 будут следующими: 1*0.4+0*0.7=0.4. Теперь когда у нас есть входные данные, мы можем получить выходные данные, подставив входное значение в функцию активации (подробнее о ней далее). Теперь, когда у нас есть выходные данные, мы передаем их дальше. И так, мы повторяем для всех слоев, пока не дойдем до выходного нейрона. Запустив такую сеть в первый раз мы увидим, что ответ далек от правильно, потому что сеть не натренирована. Чтобы улучшить результаты мы будем ее тренировать. Но прежде чем узнать как это делать, давайте введем несколько терминов и свойств нейронной сети.

Функция активации

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

Линейная функция


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

Сигмоид


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

Гиперболический тангенс


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

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

Тренировочный сет - это последовательность данных, которыми оперирует нейронная сеть. В нашем случае исключающего или (xor) у нас всего 4 разных исхода то есть у нас будет 4 тренировочных сета: 0xor0=0, 0xor1=1, 1xor0=1,1xor1=0.

Итерация

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

Эпоха

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


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

Ошибка

Ошибка - это процентная величина, отражающая расхождение между ожидаемым и полученным ответами. Ошибка формируется каждую эпоху и должна идти на спад. Если этого не происходит, значит, вы что-то делаете не так. Ошибку можно вычислить разными путями, но мы рассмотрим лишь три основных способа: Mean Squared Error (далее MSE), Root MSE и Arctan. Здесь нет какого-либо ограничения на использование, как в функции активации, и вы вольны выбрать любой метод, который будет приносить вам наилучший результат. Стоит лишь учитывать, что каждый метод считает ошибки по разному. У Arctan, ошибка, почти всегда, будет больше, так как он работает по принципу: чем больше разница, тем больше ошибка. У Root MSE будет наименьшая ошибка, поэтому, чаще всего, используют MSE, которая сохраняет баланс в вычислении ошибки.