Книжный каталог

Создаем нейронную сеть

Перейти в магазин

Сравнить цены

Описание

Эта книга представляет собой введение в теорию и практику создания нейронных сетей. Она предназначена для тех, кто хочет узнать, что такое нейронные сети, где они применяются и как самому создать такую сеть, не имея опыта работы в данной области. Автор простым и понятным языком объясняет теоретические аспекты, знание которых необходимо для понимания принципов функционирования нейронных сетей и написания соответствующих программных инструкций. Изложение материала сопровождается подробным описанием процедуры поэтапного создания полностью функционального кода, который реализует нейронную сеть на языке Python и способен выполняться даже на таком миниатюрном компьютере, как Raspberry Pi Zero. Основные темы книги: - нейронные сети и системы искусственного интеллекта; - структура нейронных сетей; - сглаживание сигналов, распространяющихся по нейронной сети, с помощью функции активации; - тренировка и тестирование нейронных сетей; - интерактивная среда программирования IPython; - использование нейронных сетей в качестве классификаторов объектов; - распознавание образов с помощью нейронных сетей. Об авторе Тарик Рашид - специалист в области количественного анализа данных и разработки решений на базе продуктов с открытым исходным кодом. Имеет ученую степень по физике и степень магистра по специальности "Machine Learning and Data Mining". Проживая в Лондоне, он возглавляет местную группу разработчиков Python (насчитывающую около 3000 участников), организует многочисленные семинары и часто выступает с докладами на международных конференциях.

Сравнить Цены

Предложения интернет-магазинов
Создаем нейронную сеть Создаем нейронную сеть 2220 р. labirint.ru В магазин >>
Тарик Рашид Создаем нейронную сеть Тарик Рашид Создаем нейронную сеть 1258 р. ozon.ru В магазин >>
Джон Рэйти Зажги себя! Жизнь – в движении. Революционное знание о влиянии физической активности на мозг Джон Рэйти Зажги себя! Жизнь – в движении. Революционное знание о влиянии физической активности на мозг 399 р. litres.ru В магазин >>
Рэйти Д. Зажги себя! Жизнь - в движении. Революционное знание о влиянии физической активности на мозг Рэйти Д. Зажги себя! Жизнь - в движении. Революционное знание о влиянии физической активности на мозг 680 р. bookvoed.ru В магазин >>
Андрей Дашков «Жилец» Андрей Дашков «Жилец» 14.99 р. litres.ru В магазин >>
Пионер с проволочной сеткой липкая сеть рыболовная сеть клетка сеть рыбалка сеть белая полоса сетка селедка трава карп карп карп рыба сеть трехслойная Шен сетка однослойная плавающая сеть висит 1,5 метра 100 метров 5 пальцев Пионер с проволочной сеткой липкая сеть рыболовная сеть клетка сеть рыбалка сеть белая полоса сетка селедка трава карп карп карп рыба сеть трехслойная Шен сетка однослойная плавающая сеть висит 1,5 метра 100 метров 5 пальцев 1883.23 р. jd.ru В магазин >>
Правдина Н. Создаем прекрасное тело Правдина Н. Создаем прекрасное тело 93 р. chitai-gorod.ru В магазин >>

Статьи, обзоры книги, новости

Изучаем нейронные сети за четыре шага

Изучаем нейронные сети за четыре шага

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

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

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

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

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

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

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

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

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

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

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

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

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

Я очень рекомендую посмотреть серию видео от Welch Labs для улучшения понимания процесса.

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

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

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

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

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

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

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

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

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

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

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

Скриншот из руководства Мэтта Мазура по методу обратного распространения ошибки.

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

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

Шаг 4. Создание своей нейронной сети

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

Ещё одной полезной статьёй оказалась A Neural Network in 11 lines of Python от IAmTrask. В ней содержится удивительное количество знаний, сжатых до 11 строк кода.

Скриншот руководства от IAmTrask

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

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

После этого можно ознакомиться с руководством Wild ML от Denny Britz, в котором разбираются нейронные сети посложнее.

Скриншот из руководства WildML

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

Для поиска хороших наборов данных можете посетить мой сайт Datasets.co и выбрать там подходящий.

Так или иначе, теперь вам лучше начать свои эксперименты, чем слушать мои советы. Лично я сейчас изучаю Python-библиотеки для программирования нейронных сетей, такие как Theano, Lasagne и nolearn.

Источник:

tproger.ru

Нейронные сети для начинающих

Создаем нейронную сеть

Привет всем читателям Habrahabr, в этой статье я хочу поделиться с Вами моим опытом в изучении нейронных сетей.

Мое знакомство с нейронными сетями произошло, когда вышло приложение Prisma. Оно обрабатывает любую фотографию, с помощью нейронных сетей, и воспроизводит ее с нуля, используя выбранный стиль. Заинтересовавшись этим, я бросился искать статьи и «туториалы», в первую очередь, на Хабре. И к моему великому удивлению, я не нашел ни одну статью, которая четко и поэтапно расписывала алгоритм работы нейронных сетей. Информация была разрознена и в ней отсутствовали ключевые моменты. Также, большинство авторов бросается показывать код на том или ином языке программирования, не прибегая к детальным объяснениям.

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

П ервым и самым важным моим открытием был плейлист американского программиста Джеффа Хитона, в котором он подробно и наглядно разбирает принципы работы нейронных сетей и их классификации. После просмотра этого плейлиста, я решил создать свою нейронную сеть, начав с самого простого примера. Вам наверняка известно, что когда ты только начинаешь учить новый язык, первой твоей программой будет Hello World. Это своего рода традиция. В мире машинного обучения тоже есть свой Hello world и это нейросеть решающая проблему исключающего или(XOR). Таблица исключающего или выглядит следующим образом:

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

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

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

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

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

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

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

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

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

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

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

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

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

Важно помнить , что нейроны оперируют числами в диапазоне [0,1] или [-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. Теперь когда у нас есть входные данные, мы можем получить выходные данные, подставив входное значение в функцию активации (подробнее о ней далее). Теперь, когда у нас есть выходные данные, мы передаем их дальше. И так, мы повторяем для всех слоев, пока не дойдем до выходного нейрона. Запустив такую сеть в первый раз мы увидим, что ответ далек от правильно, потому что сеть не натренирована. Чтобы улучшить результаты мы будем ее тренировать. Но прежде чем узнать как это делать, давайте введем несколько терминов и свойств нейронной сети.

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

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

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

Имеет смысл использовать гиперболический тангенс, только тогда, когда ваши значения могут быть и отрицательными, и положительными, так как диапазон функции [-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, которая сохраняет баланс в вычислении ошибки.

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

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

I1=1, I2=0, w1=0.45, w2=0.78 ,w3=-0.12 ,w4=0.13 ,w5=1.5 ,w6=-2.3.

O1ideal = 1 (0xor1=1)

Результат — 0.33, ошибка — 45%.

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

Источник:

webhamster.ru

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

автоматизация процессов распознавания образов,

Основу нейронной сети составляет нейрон — элемент, который имитирует работу нейронов мозга.

Как видно – у нейрона есть входы (синапсы), которые соединены с выходами других нейронов. И есть выход (аксон) сигнал с которого поступает на синапсы других нейронов.

Каждый синапс характеризуется величиной синаптической связи – её так же называют весом Wi.

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

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

Значение на выходе нейрона – это функция от его состояния.

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

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

Т.е. нейрон (линейный классификатор) определяет — входные данные относятся либо к группе A, либо к группе B.

Это можно представить, если рассмотреть линию в 2-мерном пространстве.

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

Классический пример задачи, которая не по зубам однослойному перцептрону — исключающее ИЛИ (XOR — exclusive OR).

Для XOR, не существует способа провести одну линию, которая отделяет точки TRUE: (1,0) и (0,1) от точек FALSE: (0,0) и (1,1).

Т.о. точки XOR линейно неразделимы.

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

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

— самый распространённый тип ИНС — многослойный перцептрон.

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

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

простая нейронная сеть для решения задачи логического И/ИЛИ/искл. ИЛИ

Два нейрона первого(входного) слоя, 4 нейрона скрытого слоя и один нейрон на выходе.

нам нужно распознать, символ цифры на матрице 10x10, то входной слой будет состоять из 100 нейронов – по нейрону на ячейку. А выходной слой должен иметь столько нейронов, сколько символов для распознавания. Т.к. нужно распознавать цифру – то должно быть 10 выходных нейронов. Со скрытым слоем такой определённости нет :)

ещё пример, который сразу приходит на ум – это входные нейроны на каждый рецептор робота, а выходные нейроны на каждый исполнительный механизм :)

Всего несколько минут чтения, а от таинственности ИНС не осталось и следа ;) Даже как-то грустно, что это, всего лишь, матрицы коэффициентов :(

«Формула жизни» опять ускользнула в туман загадок :)

  • кибербиология,
  • нейронная сеть,
  • нейрон,
  • классификация,
  • перцептрон,
  • XOR,
  • машинное обучение
  • +3
  • 6 июля 2011, 08:36
  • noonv
Комментарии ( 3 )

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

Источник:

robocraft.ru

Бум нейросетей: Кто делает нейронные сети, зачем они нужны и сколько денег могут приносить

Бум нейросетей: Кто делает нейронные сети, зачем они нужны и сколько денег могут приносить

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Статьи по теме

Нашли опечатку? Выделите фрагмент и отправьте нажатием Ctrl+Enter

Источник:

vc.ru

Создаем нейронную сеть в городе Новосибирск

В этом интернет каталоге вы можете найти Создаем нейронную сеть по разумной стоимости, сравнить цены, а также посмотреть похожие предложения в категории Компьютеры и интернет. Ознакомиться с свойствами, ценами и рецензиями товара. Доставка товара выполняется в любой населённый пункт России, например: Новосибирск, Улан-Удэ, Воронеж.