Из чего состоит компьютерная нейросеть

Обновлено: 01.07.2024

Они рисуют картины, пишут стихи, водят автомобили и обыгрывают человека в Го. Их внедряют в свои сервисы ведущие компании мира. Google посвятила целый блок нейросетям и ИИ на I/O 2017, Apple на WWDC 2017 рассказала о планах их применения, Qualcomm и Facebook объявили о совместной работе над машинным обучением — главным инструментом их развития. Того и гляди, через несколько лет какая-нибудь особенно умная сеть самообучится до уровня полноценного ИИ, и всем настанет полный «Скайнет». О том, возможно ли это, что вообще такое нейросети и как они работают — в этой статье.

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

Краткая история

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

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

1960 год. Более пятнадцати лет ушло на создание первого нейрокомпьютера, или персептрона «Марк-1», который был разработан психологом и нейрофизиологом Фрэнком Розенблаттом. Устройство с помощью фотоэлементов могло распознавать отпечатанные на карточках буквы.

Чем «думают» нейронные сети — объяснение на пальцах

Первый нейрокомпьютер «Марк-1»

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

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

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

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

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

Принцип работы — на пальцах

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

Чем «думают» нейронные сети — объяснение на пальцах

Схематичное изображение нейронной связи в мозге человека

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

Чем «думают» нейронные сети — объяснение на пальцах

Схема строения персептрона

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

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

Суть обучаемости ИНС

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

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

Чем «думают» нейронные сети — объяснение на пальцах

Упрощённая схема многослойной нейросети с обратной нейронной связью

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

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

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

Чем «думают» нейронные сети — объяснение на пальцах

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

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

Области применения

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

«В Яндексе нейросети используются, чтобы делать самые разные сервисы лучше. Например, в поиске (чтобы лучше понимать смысл пользовательских запросов), при модерации рекламы на соответствие картинок и текста, в поиске по картинкам (понимает, что изображено на картинке с помощью компьютерного зрения), при фильтрации взрослого контента, а также в комплексе речевых технологий SpeechKit. SpeechKit, в частности, работает в голосовом помощнике Яндекса, который недавно появился в бета-версии, а нейросети в компьютерном зрении помогают беспилотным автомобилям Яндекс.Такси», — руководитель службы компьютерного зрения «Яндекса» Александр Крайнов.

Чем «думают» нейронные сети — объяснение на пальцах

Автомобиль-беспилотник Яндекса

Для удобства объединим вышеперечисленное в категорию потребительского использования ИНС — чрезвычайно обширную, но не единственную. Учитывая, что человеческий мозг — по-прежнему загадка для человека, нейропсихологами, нейролингвистами и прочими нейроспециалистами ведётся активное изучение разума и интеллекта, в том числе с помощью ИНС. Так, компания IBM и Швейцарский федеральный технический институт Лозанны в 2005 году запустили Blue Brain Project, в рамках которого надеются создать максимально точную компьютерную модель человеческого мозга. Ещё один любопытный эксперимент, но попроще, IBM провела совместно с компанией «Двадцатый век фокс»: они «показали» суперкомпьютеру Watson фильм, тот довольно точно определил наиболее эмоциональные его фрагменты и смонтировал трейлер.

Разумеется, ИНС активно помогает осваивать новые технологии и развивать существующие. Взять хотя бы те же беспилотные автомобили, в которых нейросети в режиме реального времени анализируют окружающую обстановку. IBM Watson из года в год открывает для себя всё новые области, включая медицину. В Google существует целое подразделение, которое занимается непосредственно искусственным интеллектом… Стоп. Значит, нейросети всё-таки успели стать искусственным интеллектом или, по крайней мере, есть такая вероятность в будущем? Снова обращаемся к специалисту.

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

Чем «думают» нейронные сети — объяснение на пальцах

Вывод

Искусственные нейронные сети прочно вошли во все IT-сферы: технология сколь проста по сути, столь и перспективна. Причём теоретический предел этой перспективы до сих пор неизвестен, а визуализация работы нейросети порой даёт весьма неожиданные результаты. Это немного пугает, особенно учитывая, что даже профильные специалисты аккуратно уходят от ответа на вопрос: станет ли когда-нибудь нейросеть искусственным интеллектом — таким, каким мы знаем его из книжек, например, Айзека Азимова? Впрочем, не все: один из пионеров в области Рэй Куртцвейл предсказывает, что ИИ сможет успешно проходить тест Тьюринга в 2029 году, а к 2045-му станет умнее человека. Но пока этого не произошло, почему бы в своё удовольствие не рисовать страшных котиков и не делать селфи в стиле Репина или Пикассо.

image

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

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

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

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

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

image

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

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

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

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

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

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

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

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

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

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

image

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


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

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


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

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

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


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

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

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


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


Это самая распространенная функция активации, ее диапазон значений [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.


H1input = 1*0.45+0*-0.12=0.45
H1output = sigmoid(0.45)=0.61

H2input = 1*0.78+0*0.13=0.78
H2output = sigmoid(0.78)=0.69

O1input = 0.61*1.5+0.69*-2.3=-0.672
O1output = sigmoid(-0.672)=0.33

O1ideal = 1 (0xor1=1)

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

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

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

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

ИНС умеет все то же самое, но работает намного медленнее и сравнивая нейросеть с живым существом, ее мощность пока находится на уровне мухи. Все же наш мозг добился отличной работоспособности спустя 50 000 лет эволюции (если мы говорим о Homo sapiens), а нейросети существуют не более 65 лет. Современные технологии сильно шагнули вперед и нет никаких сомнений, что через 10-15 лет нейрокомпьютеры вплотную приблизятся по своим возможностям к человеческому мозгу благодаря стремительному развитию нейросетей и искусственного интеллекта в целом.

Содержание:

  • История создания ИНС
  • Что такое нейросеть
  • Как работают нейронные сети
  • Где эффективны ИНС
  • Преимущества нейросети
  • Недостатки нейронной сети
  • Виды ИНС
  • Нейросети в реальной жизни

Искусственные нейронные сети - история создания

Впервые о нейронных сетях начали говорить в далеких 50-х годах прошлого века. В период с 1943 по 1950 год были представлены миру первые две основополагающие ученые работы. Одна из них - статья 1943 года от двух выдающихся ученых Уорена Маккалока и Уолтера Питтса освещала математическую модель нейронной сети, а в 1949 году канадский нейропсихолог Дональд Хебб выпустил книгу "Организация поведения" , в которой было подробное описание процесса самообучения ИНС.

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

В 1974 году Пол Вербос разработал алгоритм обратного распространения ошибки, который используется и по сей день для обучения ИНС. Начиная с 1985 года Джон Хопфилд предлагает миру свое виденье устройства и работы нейросети, которая способна решать некоторые виды задач. Именно работы Джона Хопфилда вновь разогревают нешуточный интерес мировой общественности к искусственным нейронным сетям. В 90-е годы прошлого века алгоритм обратного распространения ошибки получил существенное развитие, за счет чего былая критика Минского касательно неработоспособности сетей была окончательно опровергнута. На сегодняшний день ИНС является главным подразделом машинного обучения.

Нейросеть - в целом об ИНС

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

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

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

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

А вот как выглядит наш с вами мозг, упрощенный до ИНС.

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

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

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

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

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

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

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

  • пороговая функция;
  • гистерезис;
  • сигмоид.

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

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

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

Когда эффективны ИНС?

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

Простые и средние по сложности, принцип решения которых известен:


В марте 2016 года программа Alpha Go, разработанная «дочкой» Google – компанией DeepMind, обыграла Ли Седолема, чемпиона мира в игре Го. Вслед за шахматами это стало новым эпохальным поражением человека перед машиной.

Сейчас алгоритмы, похожие на работу мозга, могут писать вполне неплохие материалы, что доказывает робот-журналист Wordsmith от компании Automated Insights. Они «работают» на крупнейшие поисковики типа Яндекс и Google, помогая нам быстро отыскивать нужную информацию, прогнозируют поведение биржевых индексов, помогают маркетологам таргетировать целевую аудиторию, осуществляют качественные смысловые переводы со многих языков и даже активно используются в медицине.

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


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

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

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


Уолтер Питс

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

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

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


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

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

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

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

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

Что такое нейронная сеть? Базовая информация о нейронных сетях

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

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

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

Виды нейронных сетей

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

Но это далеко не все варианты классификации и виды нейронных сетей. Также их делят: 1. В зависимости от типов нейронов: — однородные; — гибридные. 2. В зависимости от метода нейронных сетей по обучению: — обучение с учителем; — без учителя; — с подкреплением. 3. По типу входной информации нейронные сети бывают: — аналоговые; — двоичные; — образные. 4. По характеру настройки синапсов: — с фиксированными связями; — с динамическими связями.

Ещё существуют понятия гетероассоциативные или автоассоциативные нейросети.

Схема и концепция работы

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

Как мы знаем, 1-й запуск нейросети не даст верных результатов, ведь она ещё не натренирована. Если мы говорим о понятии функции активации, то эта функция используется в целях нормализации входных данных. Этих функций бывает много, но хотелось бы выделить основные, имеющие самое широкое распространение. Главное отличие — диапазон значений, где они функционируют: — линейная функция f(x) = x. Является наиболее простой из всех, должна применяться лишь для тестирования созданной нейросети либо передачи данных в исходной форме; — сигмоид — более распространённая функция активации. Диапазон значений — от нуля до единицы. Также её называю логистической функцией; — гиперболический тангенс. Метод нужен для охвата также и отрицательных значений. Когда их применение не предусмотрено, гиперболический тангенс не нужен.

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

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

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

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

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

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

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

Где применяют нейронные сети?

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

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

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

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

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

P. S. Одно дело читать, другое дело — практиковаться. Если вас интересует развитие навыков работы с современными нейронными сетями (neural networks) и вы хотели изучить различные связанные технологии из категории «нейро», ждём вас на наших курсах. Все занятия проходят онлайн, потребуется только компьютер и интернет. Специалистом может стать каждый.

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

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