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


Как выглядят глубокие нейронные сети и почему они требуют так много памяти / Habr

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

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

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

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

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

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

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

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


Граф полного цикла обучения AlexNet в прямом и обратном направлении

Графический компилятор Poplar превратил описание AlexNet в вычислительный граф из 18,7 миллиона вершин и 115,8 миллиона ребер. Четко видимая кластеризация – результат прочной связи между процессами в каждом слое сети с более легкой связью между уровнями.

Другой пример – простая сеть с полной связью, прошедшая обучение на MNIST – простом наборе данных для компьютерного зрения, своего рода «Hello, world» в машинном обучении. Простая сеть для изучения этого набора данных помогает понять графы, которыми управляют приложения Poplar. Интегрируя библиотеки графов с такими средами, как TensorFlow, компания представляет один из простых путей для использования IPU в приложениях машинного обучения.

После того, как с помощью компилятора построился граф, его нужно выполнить. Это возможно с помощью движка Graph Engine. На примере ResNet-50 демонстрируется его работа.


Граф ResNet-50

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

Движок создает и управляет исполнением модели машинного обучения, используя граф, созданный компилятором. После развертывания Graph Engine контролирует и реагирует на IPU или устройства, используемые приложениями.

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

Почему глубоким сетям нужно так много памяти?


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

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

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

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

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

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

Например, 50-слойная сеть ResNet имеет около 26 миллионов весовых параметров и вычисляет 16 миллионов активаций в прямом направлении. Если вы используете 32-битное число с плавающей запятой для хранения каждого веса и активации, то для этого потребуется около 168Мб пространства. Используя более низкое значение точности для хранения этих весов и активаций, мы могли бы вдвое или даже вчетверо снизить это требование для хранения.

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

В графических процессорах ширина синапса составляет 1024 бит, так что они используют 32-битные данные с плавающей запятой, поэтому часто разбивают их на параллельно работающие mini-batch из 32 образцов для создания векторов данных по 1024 бит. Этот подход к организации векторного параллелизма увеличивает число активаций в 32 раза и потребность в локальном хранилище емкостью более 2 ГБ.

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

Дополнительная память также требуется для хранения входных данных, временных значений и инструкций программы. Измерение использования памяти при обучении ResNet-50 на высокопроизводительном графическом процессоре показало, что ей требуется более 7,5 ГБ локальной DRAM.

Возможно, кто-то решит, что более низкая точность вычислений может сократить необходимый объем памяти, но это не так. При переключении значений данных до половинной точности для весов и активаций вы заполните только половину векторной ширины SIMD, потратив половину имеющихся вычислительных ресурсов. Чтобы компенсировать это, когда вы переключаетесь с полной точности до половины точности на графическом процессоре, тогда придется удвоить размер mini-batch, чтобы вызвать достаточный параллелизм данных для использования всех доступных вычислений. Таким образом, переход на более низкую точность весов и активаций на графическом процессоре все еще требует более 7,5ГБ динамической памяти со свободным доступом.

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

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

Второй подход особенно эффективен, когда вся нейронная сеть может быть проанализированна на этапе компиляции, чтобы создать фиксированную выделенную память, так как издержки на управление памятью сокращаются почти до нуля. Выяснилось, что комбинация этих методов позволяет сократить использование памяти нейронной сетью в два-три раза.
Третий значительный подход был недавно обнаружен командой Baidu Deep Speech. Они применили различные методы экономии памяти, чтобы получить 16-кратное сокращение потребления памяти функциями активации, что позволило им обучать сети со 100 слоями. Ранее при том же объеме памяти они могли обучать сети с девятью слоями.

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

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

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

habr.com

Как работают нейронные сети: о сложной системе простыми словами

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

 

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

 

Нейронная сеть представляет собой последовательность связанных нейронов.

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

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

 

 

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

 

 

А теперь разбираем на примере

 

Предположим, нейросети необходимо решить, стоит ли идти на вечеринку. На выходе она даст одно бинарное решение, то есть выберет «да» (1) или «нет» (0).

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

 

 

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

Допустим, если сумма больше или равна 0,5, то выходной нейрон выдаст сигнал 1 — ответ «да». Если сумма меньше 0,5, то сигнал — 0, то есть принято решение не идти на вечеринку.

 

 

Теперь предположим, что на улице идет дождь, но на вечеринке будет алкоголь и друзья. В таком случае задаем условию с дождем вес –0,5, а остальным условиям 0,5. Тогда при подсчете получается результат 0,5. В таком случае нейрон выдаст сигнал 1 — идти на вечеринку.

 

 

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

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

Представим, что если на вечеринке будет алкоголь, а на улице будет идти дождь, то на вечеринку идти не нужно, даже если на ней будет друг.

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

 

 

Второй нейрон в скрытом слое работает по тому же принципу. Условие с другом обладает наибольшим весом в 0,9. Сигнал с наличием алкоголя имеет вес 0,5, а условие с дождем весит –0,4.

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

 

 

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

 

Статья была написана на основе этого видео:

 

 

Во второй его части (с 20-й минуты) идет речь о том, как запрограммировать эту простую нейросеть.

 

Читайте также: 

robo-hunter.com

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

Нейросети – что это такое, какова у них цель?

Нейросети (искусственные нейронные сети) представляют собой обучаемую систему.

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

Объединенные в сети такие нейроны способны решать широкий спектр задач.

Как создавались нейросети

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

В 1943 году Нейропсихолог Уоррен Мак-Каллок в тандеме с математиком Уолтером Питтсом попытались описать принципы действия нейросети. Через пятнадцать лет нейрофизиолог Фрэне Розенблатт подготовил образец искусственной нейросети.

И лишь в 2010 году был раскрыт потенциал машинного обучения.

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

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

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

Решаемые нейросетью задачи

Нейросети способны решать такие типы задач как сортировка, прогнозирование и распознавание событий и объектов.

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

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

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

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

Из чего состоит нейросеть

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

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

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

Обучение нейросети

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

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

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

Применение нейросетей

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

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

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

Спектр применения нейросетей достаточно велик и постоянно расширяется.

srochnyj-zaym.ru

Что такое нейросети? Где они используются? Опасны ли? Отвечаем просто на сложные вопросы. — ОколоIT на FullHub

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

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

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

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

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

Кто и как их создал?

Спасибо за создание столь удобного инструмента стоит сказать ученым У. Питту (W. Pitts) и У. Маккалоку (W. McCulloch). Они сформировали само понятие нейронной сети. Произошло это еще в 1943 году, а Н. Винер (N. Wiener) предложил реализовать концепцию при помощи вакуумных ламп. Он же в своей работе о кибернетике представил биологические процессы организма в виде математических моделей.

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

  • 1958 год — создание перцептона Ф. Розенблаттом (F. Rosenblatt). Используется для прогнозирования погоды, распознавания образов и подобных задач;
  • 1960 — разработка адалина Уидроу(B. Widrow B) и Хоффом (M. Hoff). Нашел применение в системах адаптивного управления и в задачах предсказания. До сих пор является стандартным элементом ряда систем обработки сигналов;
  • 1972 — создание нейронных сетей нового типа, способных работать в качестве памяти;
  • 1975 — появление когнитрона, самоорганизующейся сети для распознавания образов;
  • 2007 — создание Джеффри Хинтоном (Geoffrey Hinton) алгоритмов глубокого обучения.

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

Нейронные сети умеют обучаться?

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

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

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

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

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

Или вот инженер компании Nvidia использовал нейросеть для обучения камер наблюдения. Теперь, когда в камеру возле его дома попадает кот, автоматически включается система полива газона — кот тут же ретируется, а территория дома остается непомеченной. Любопытно, что сеть обучалась распознавать котов с помощью картинок в Google по запросу «кот».

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

И хваленая Prisma тоже использует нейросети?

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

К слову, еще в прошлом году получил популярность похожий онлайн-сервис http://deepdreamgenerator.com/. После того, как пользователь отправляет в него картинку, программа выдает изображение таким, каким его видит нейросеть, занимающаяся распознаванием объектов. Многих тогда веселили изображения, больше напоминающие визуальные галлюцинации. Но это отличный пример процесса самообучения. В самом начале на обработанных картинках тут и там были видны мордочки собак, которые со временем исчезли, уступив место более привычным предметам обихода. Многие тогда удивлялись — откуда они берутся, если ими там даже и не пахло? Ответ прост: для начального обучения нейросети использовались как раз фотографии собак. Вот ИНС и видела их повсюду до того, как выучила новые предметы.

Нейросети обыгрывают людей?

Не так давно разработчики нейросетей Google DeepMind активно делились очередным достижением — созданием программы AlphaGo, которая смогла обыграть в го одного из сильнейших чемпионов мира, корейца Ли Сидоля.

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

Может ли нейросеть подобрать мой пароль?

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

Нейросети следят за мной?

Одна из областей использования нейросетей — распознавание лиц. В перспективе такая система сможет в реальном времени обрабатывать изображение с камер наблюдения и опознавать людей на них.

Казалось бы, самое время начинать бить тревогу — полноценный Большой брат не за горами, но давайте взглянем на ситуацию с иной точки зрения. Во-первых, мы и сами добровольно «сливаем» немало личной информации в Сеть — вспомнить хотя бы обвинения в адрес голосового ассистента Google и Windows 10. О том, плохо это или хорошо, можно спорить до хрипоты, но закончилось все вполне ожидаемым спадом интереса к теме, после чего она закономерно канула в Лету. А нейросети этих корпораций тем временем продолжают собирать наши данные, пусть и анонимно.

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

Нейросеть — будущий Скайнет?

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

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

Что ждет нас в будущем?

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

fullhub.ru

2. Введение – Нейронные сети

В этой главе я в общих чертах расскажу о предмете данного учебника (и сайта) — искусственных нейронных сетях. Что это такое, какими преимуществами они обладают и так далее.

Популярность

Тема машинного обучения, интеллектуальных алгоритмов и искусственного интеллекта чрезвычайно популярна в наше время. Это легко можно увидеть, наблюдая за новостями на различных IT порталах. Подтверждает это и статистика. На графиках ниже представлены данные сервиса Google Trends с 2005(9) по настоящее время.

Поиск в интернете по машинному обучению (мир):

Новости по той же теме (мир):

Новости по искусственному интеллекту (мир):

Новости по искусственному интеллекту (Россия):

Как видно, тема известная.

Терминология

Разберемся с терминологией. Что такое искусственный интеллект, машинное обучение и искусственные нейронные сети. Как они связаны?

Начнем с самого важного, с искусственного интеллекта.

Искусственный интеллект (ИИ) (Artificial intelligence, AI):

1. наука о создании интеллектуальных (умных) машин (чаще всего — компьютерных программ).

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

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

Другими словами искусственный интеллект и наука о творческих системах, и сама способность «творить» этих систем.

Теперь настала очередь разобраться с термином «машинное обучение».

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

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

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

Искусственные нейронные сети (ИНС) (Artificial neural networks, ANN) — упрощенные модели биологических нейронных сетей.

Среди множества вариантов обучающихся алгоритмов особенно выделяют нейросети

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

В целом об ИНС

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

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

Зададимся вопросом. А что такое биологические нейронные сети? Если вы помните школьную программу по биологии, то ответ скорее всего сразу пришел вам в голову. Вообще-то «голова» и есть один из ответов на этот вопрос. Точнее не голова, а наши мозги. Мозги есть не только у нас, но и у многих других животных. У животных без мозгов (медузы, черви) все равно есть нервная система.

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

Теперь задумаемся. А из чего состоит нервная система или мозг? Ответ очевиден — из нейронов. Наш мозг, как и любая биологическая нейронная сеть, состоит из совокупности нейронов. Строение биологического нейрона показано на рисунке ниже.

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

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

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

Искусственный нейрон
(Artificial neuron) — упрощенная модель биологического нейрона.

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

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

Таким образом логично приходим к другому определению ИНС.

Искусственная нейронная сеть (ИНС) — совокупность взаимодействующих между собой искусственных нейронов.

Почему нейросети работают?

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

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

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

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

Синапс (Synapsis) — место стыка выхода одного нейрона и входа другого, в котором происходит усиление/ослабление сигнала.

На рисунке ниже цветом выделены синапсы (в центре сверху на картинке можно увидеть один из синапсов в деталях). Красный цвет — главный нейрон на картинке. Желтый цвет — выходы соседних нейронов.

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

У каждого биологического нейрона тысячи входов. Каждый из них соединен с выходами других нейронов. Значит, имеем тысячи синапсов на каждый нейрон. Помножим это число на миллиарды нейронов в биологических нейросетях (в головном мозге 85 миллиардов нейронов!). Получаем огромное число синапсов.

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

Именно так и происходит преобразование множества входных сигналов в верное решение на выходе.

Уровень сложности нейросетей

Выше я уже говорил, что мы уменьшаем количество нейронов для искусственных нейронных сетей (миллиарды нейронов моделировать мы не можем). Насколько сильно мы уменьшаем это количество? Внимание на картинку ниже.

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

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

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

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

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

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

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

Проблемы малой/средней сложности, которые точно известно, как решать:

  • решить простое уравнение
  • вывести на экране окно программы
  • распечатать документ на принтере

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

Проблемы малой/средней сложности, которые частично известно, как решать:

  • простейшее прогнозирование
  • расчет погрешностей
  • приближенное решение уравнений

Такие задачи можно решать при помощи специальных статистических методов.

Проблемы высокой сложности, которые непонятно, как решать:

  • распознавание образов
  • распознавание речи
  • сложные прогнозы

На этом типе задач я остановлюсь подробнее.

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

А теперь вы поставили себе задачу — написать компьютерную программу, которая по данной картинке распознает лица. Можно даже проще. Попробуйте накидать приблизительный алгоритм распознавания лиц на бумаге. У вас ничего не выйдет. И все потому, что вы на бессознательном уровне распознаете лица, а бессознательное вы контролировать не можете. Делаете, но не знаете как.

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

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

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

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

Преимущества нейронных сетей

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

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

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

Устойчивость к шумам входных данных

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

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

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

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

Адаптация к изменениям

Представьте, что вы математик. Вы решаете уравнения с помощью каких-то компьютерных программ.

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

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

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

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

Отказоустойчивость

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

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

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

Сверхвысокое быстродействие

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

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

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

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

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

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

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

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

Перечислим их.

Ответ всегда приблизительный

Начнем с человеческого мозга.

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

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

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

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

Нейронные сети не способны давать точные и однозначные ответы.

Принятие решений в несколько этапов

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

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

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

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

Нейронные сети не могут решать задачу по шагам.

Вычислительные задачи

Этот недостаток искусственных нейронных сетей в какой-то степени является следствием двух предыдущих недостатков.

Обратите внимание на картинку ниже. Как заставить сеть провести эти преобразования?

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

Предположим, что вы каким-то образом смогли доставить эти данные в сеть

Вторая проблема – последовательные шаги. Уже описанный выше недостаток.

И вишенка на торте – невозможность выдачи точных результатов. Это можно представить себе следующим образом. Вы учите нейросеть:

– 2 + 3 = ?
= 983
– Неправильно! = 5.
2 + 3 = ?
= 5
– Правильно!
2 + 4 = ?
= 5
– Неправильно! = 6.
2 + 4 = ?
= 5.5

И так будет происходить всегда.

Нейронные сети не способны решать вычислительные задачи.

Выводы

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

Вопросы и задачи

Основы очень важны для дальнейшего понимания материала. Обязательно добейтесь четкого ответа на все нижеприведенные вопросы!

Сформулируйте оба определения ИИ

Искусственный интеллект: 1) наука о создании интеллектуальных машин 2) свойство интеллектуальных систем проявлять творческие качества.

Что такое машинное обучение?

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

Расположите по порядку вложенности: ИНС, ИИ, машинное обучение.

ИИ – наука. Машинное обучение – подраздел ИИ. ИНС – подраздел машинного обучения.

Что такое искусственный нейрон и искусственная нейронная сеть? В чем их отличие от биологических версий?

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

Объясните, как работают нейронные сети (в целом)

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

При решении каких задач применяются нейронные сети?

Нейронные сети чаще всего применяют тогда, когда точный алгоритм решения задачи неизвестен (распознавание лиц, речи, прогнозирование).

Перечислите плюсы нейронных сетей

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

Перечислите недостатки нейронных сетей

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

neuralnet.info


Смотрите также



© 2010- GutenBlog.ru Карта сайта, XML.