Нейронные сети: их применение, работа. Введение в искусственные нейронные сети Связи между нейронами в нейронной сети

НЕЙРО́ННЫЕ СЕ́ТИ искусственные, многослойные высокопараллельные (т. е. с большим числом независимо параллельно работающих элементов) логические структуры, составленные из формальных нейронов. Начало теории нейронных сетей и нейрокомпьютеров положила работа американских нейрофизиологов У. Мак-Каллока и У. Питтса «Логическое исчисление идей, относящихся к нервной деятельности» (1943), в которой они предложили математическую модель биологического нейрона. Среди основополагающих работ следует выделить модель Д. Хэбба, который в 1949 г. предложил закон обучения, явившийся стартовой точкой для алгоритмов обучения искусственных нейронных сетей. На дальнейшее развитие теории нейронной сети существенное влияние оказала монография американского нейрофизиолога Ф. Розенблатта «Принципы нейродинамики», в которой он подробно описал схему перцептрона (устройства, моделирующего процесс восприятия информации человеческим мозгом). Его идеи получили развитие в научных работах многих авторов. В 1985–86 гг. теория нейронных сетей получила «технологический импульс», вызванный возможностью моделирования нейронных сетей на появившихся в то время доступных и высокопроизводительных персональных компьютерах . Теория нейронной сети продолжает достаточно активно развиваться в начале 21 века. По оценкам специалистов, в ближайшее время ожидается значительный технологический рост в области проектирования нейронных сетей и нейрокомпьютеров. За последние годы уже открыто немало новых возможностей нейронных сетей, а работы в данной области вносят существенный вклад в промышленность, науку и технологии, имеют большое экономическое значение.

Основные направления применения нейронных сетей

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

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

Распознавание речи – одна из наиболее популярных областей применения нейронных сетей.

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

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

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

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

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

Структура нейронных сетей

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

Биологический нейрон (Cell) имеет ядро (Nucleus), а также отростки нервных волокон двух типов (рис. 1) – дендриты (Dendrites), по которым принимаются импульсы (Carries signals in), и единственный аксон (Axon), по которому нейрон может передавать импульс (Carries signals away). Аксон контактирует с дендритами других нейронов через специальные образования – синапсы (Synapses), которые влияют на силу передаваемого импульса. Структура, состоящая из совокупности большого количества таких нейронов, получила название биологической (или естественной) нейронной сети.

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

Фор­маль­ный ней­рон пред­став­ля­ет со­бой ло­гический эле­мент с $N$ вхо­да­ми, ($N+1$ ) ве­со­вы­ми ко­эф­фи­ци­ен­та­ми, сум­ма­то­ром и не­ли­ней­ным пре­об­ра­зо­ва­те­лем. Про­стей­ший фор­маль­ный ней­рон, осу­ще­ст­в­ляю­щий ло­гическое пре­обра­зо­ва­ние $y = \text{sign}\sum_{i=0}^{N}a_ix_i$ вход­ных сигна­лов (ко­то­ры­ми, напр., яв­ля­ют­ся вы­ход­ные сиг­на­лы др. фор­маль­ных ней­ро­нов Н. с.) в вы­ход­ной сигнал, пред­став­лен на рис. 1.

Здесь $y$ – зна­че­ние вы­хо­да фор­маль­но­го ней­ро­на; $a_i$ – ве­со­вые ко­эф­фи­ци­ен­ты; $x_i$ – вход­ные зна­че­ния фор­маль­но­го ней­ро­на ($x_i∈\left \{0,1\right \},\; x_0=1$ ). Про­цесс вы­чис­ле­ния вы­ход­но­го зна­че­ния фор­маль­но­го ней­ро­на пред­став­ля­ет со­бой дви­же­ние по­то­ка дан­ных и их пре­об­ра­зо­ва­ние. Сна­ча­ла дан­ные по­сту­па­ют на блок вхо­да фор­маль­но­го ней­ро­на, где про­ис­хо­дит ум­но­же­ние ис­ход­ных дан­ных на со­от­вет­ст­вую­щие ве­со­вые ко­эф­фи­ци­ен­ты, т. н. синоптические веса (в соответствии с синапсами биологических нейронов). Ве­со­вой ко­эф­фи­ци­ент яв­ля­ет­ся ме­рой, ко­то­рая оп­ре­де­ля­ет, на­сколь­ко со­от­вет­ст­вую­щее вход­ное зна­че­ние влия­ет на со­стоя­ние фор­маль­но­го ней­ро­на. Ве­со­вые ко­эф­фи­ци­ен­ты мо­гут из­ме­нять­ся в со­от­вет­ст­вии с обу­чаю­щи­ми при­мера­ми, ар­хи­тек­ту­рой Н. с., пра­ви­ла­ми обу­че­ния и др. По­лу­чен­ные (при ум­но­же­нии) зна­че­ния пре­об­ра­зу­ют­ся в сум­ма­то­ре в од­но чи­сло­вое зна­че­ние $g$ (по­сред­ст­вом сум­ми­ро­ва­ния). За­тем для оп­ре­де­ле­ния выхо­да фор­маль­но­го ней­ро­на в бло­ке не­ли­ней­но­го пре­об­ра­зо­ва­ния (реа­ли­зую­ще­го пе­ре­да­точ­ную функ­цию) $g$ срав­ни­ва­ет­ся с не­ко­то­рым чис­лом (по­ро­гом). Ес­ли сум­ма боль­ше зна­че­ния по­ро­га, фор­маль­ный ней­рон ге­не­ри­ру­ет сиг­нал, в про­тив­ном слу­чае сиг­нал бу­дет ну­ле­вым или тор­мо­зя­щим. В дан­ном фор­маль­ном ней­ро­не при­ме­ня­ет­ся не­ли­ней­ное пре­об­ра­зо­ва­ние$$\text{sign}(g)= \begin{cases} 0,\; g < 0 \\ 1,\; g ⩾ 0 \end{cases},\quad \text{где}\,\,g = \sum_{i=0}^N a_i x_i.$$

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

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

В общем случае в эту структуру могут быть введены перекрёстные и обратные связи с настраиваемыми весовыми коэффициентами (рис. 4).

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

Нейросетевые алгоритмы

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

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

Необходимо отметить, что введение обратных связей и, как следствие, разработка алгоритмов настройки их коэффициентов в 1960–80 годы имели чисто теоретический смысл, т. к. не было практических задач, адекватных таким структурам. Лишь в конце 1980-х – начале 1990-х годов стали появляться такие задачи и простейшие структуры с настраиваемыми обратными связями для их решения (так называемые рекуррентные нейронные сети). Разработчики в области нейросетевых технологий занимались не только созданием алгоритмов настройки многослойных нейронных сетей и нейросетевыми алгоритмами решения различных задач, но и наиболее эффективными (на текущий момент развития технологии электроники) аппаратными эмуляторами (особые программы, которые предназначены для запуска одной системы в оболочке другой) нейросетевых алгоритмов. В 1960-е годы, до появления микропроцессора, наиболее эффективными эмуляторами нейронных сетей были аналоговые реализации разомкнутых нейронных сетей с разработанными алгоритмами настройки на универсальных ЭВМ (иногда системы на адаптивных элементах с аналоговой памятью). Такой уровень развития электроники делал актуальным введение перекрёстных связей в структуры нейронных сетей. Это приводило к значительному уменьшению числа нейронов в нейронной сети при сохранении качества решения задачи (например, дискриминантной способности при решении задач распознавания образов). Исследования 1960–70-х годов в области оптимизации структур нейронных сетей с перекрёстными связями наверняка найдут развитие при реализации мемристорных нейронных систем [мемристор (memristor, от memory – память, и resistor – электрическое сопротивление), пассивный элемент в микроэлектронике, способный изменять своё сопротивление в зависимости от протекавшего через него заряда], с учётом их специфики в части аналого-цифровой обработки информации и весьма значительного количества настраиваемых коэффициентов. Специфические требования прикладных задач определяли некоторые особенности структур нейронных сетей с помощью алгоритмов настройки: континуум (от лат. continuum – непрерывное, сплошное) числа классов, когда указание «учителя» системы формируется в виде непрерывного значения функции в некотором диапазоне изменения; континуум решений многослойной нейронной сети, формируемый выбором континуальной функции активации нейрона последнего слоя; континуум числа признаков, формируемый переходом в пространстве признаков от представления выходного сигнала в виде $N$ -мерного вектора вещественных чисел к вещественной функции в некотором диапазоне изменения аргумента; континуум числа признаков, как следствие, требует специфической программной и аппаратной реализации нейронной сети; вариант континуума признаков входного пространства был реализован в задаче распознавания периодических сигналов без преобразования их с помощью аналого-цифрового преобразователя (АЦП) на входе системы, и реализацией аналого-цифровой многослойной нейронной сети; континуум числа нейронов в слое; реализация многослойных нейронных сетей с континуумом классов и решений проводится выбором соответствующих видов функций активации нейронов последнего слоя.

В таблице показан систематизированный набор вариантов алгоритмов настройки многослойных нейронных сетей в пространстве «Входной сигнал – пространство решений». Представлено множество вариантов характеристик входных и выходных сигналов нейронных сетей, для которых справедливы алгоритмы настройки коэффициентов, разработанных российской научной школой в 1960–70 годах. Сигнал на вход нейронной сети описывается количеством классов (градаций) образов, представляющих указания «учителя». Выходной сигнал нейронной сети представляет собой количественное описание пространства решений. В таблице дана классификация вариантов функционирования нейронных сетей для различных видов входного сигнала (2 класса, $K$ классов, континуум классов) и различных вариантов количественного описания пространства решений (2 решения, $K_p$ решений, континуум решений). Цифрами 1, 7, 8 представлены конкретные варианты функционирования нейронных сетей.

Таблица. Набор вариантов алгоритмов настройки

Пространство(число) решений

Входной сигнал

2 класса $K$ классов Континуум классов
2 1 7 8
$K_p$ $K_p=3$ $K\lt K_p$ 9 10
$K = K_p$ 2
$K_p =\text{const}$ $K\gt K_p$ 4
Континуум 5 6 11

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

Нейронные сети – частный вид объекта управления в адаптивной системе

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

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

Вероятностная модель окружающего мира является основой нейросетевых технологий. Подобная модель – основа математической статистики. Нейронные сети возникли как раз в то время, когда экспериментаторы, использующие методы математической статистики, задали себе вопрос: «А почему мы обязаны описывать функции распределения входных случайных сигналов в виде конкретных аналитических выражений (нормальное распределение, распределение Пуассона и т. д.)? Если это правильно и на это есть какая-то физическая причина, то задача обработки случайных сигналов становится достаточно простой».

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

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

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

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

Априорные вероятности появления классов

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

Квалификация «учителя»

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

В задачах распознавания образов, как правило, по умолчанию квалификация «учителя» является полной, т.е. вероятность правильного отнесения «учителем» образов к тому или иному классу равна единице. На практике при наличии косвенных измерений это зачастую не соответствует действительности, например в задачах медицинской диагностики, когда при верификации (проверке) архива медицинских данных, предназначенных для обучения, вероятность отнесения этих данных к тому или иному заболеванию не равна единице. Введение понятия квалификации «учителя» позволило разработать единые алгоритмы настройки коэффициентов многослойных нейронных сетей для режимов обучения, обучения «с учителем», обладающим конечной квалификацией, и самообучения (кластеризации), когда при наличии $K$ или двух классов образов квалификация «учителя» (вероятность отнесения образов к тому или иному классу) равна $\frac {1} {K}$ или 1 / 2 . Введение понятия квалификации «учителя» в системах распознавания образов позволило чисто теоретически рассмотреть режимы «вредительства» системе, когда ей сообщается заведомо ложное (с различной степенью ложности) отнесение образов к тому или иному классу. Данный режим настройки коэффициентов многослойной нейронной сети пока не нашёл практического применения.

Кластеризация

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

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

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

Нестационарные образы

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

О критериях первичной оптимизации в многослойных нейронных сетях

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

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

Представленные модификации критериев первичной оптимизации были обобщены на случаи континуума классов и решений; континуума признаков входного пространства; континуума числа нейронов в слое; при произвольной квалификации учителя. Важным разделом формирования критерия и функционала первичной оптимизации в многослойных нейронных сетях при вероятностной модели мира является выбор матрицы потерь, которая в теории статистических решений определяет коэффициент потерь $L_{12}$ при ошибочном отнесении образов 1-го класса ко 2-му и коэффициент потерь $L_{21}$ при отнесении образов 2-го класса к 1-му. Как правило, по умолчанию матрица $L$ этих коэффициентов при синтезе алгоритмов настройки многослойных нейронных сетей, в том числе и при применении метода обратного распространения, принимается симметричной. На практике это не соответствует действительности. Характерным примером является система обнаружения мин с применением геолокатора. В этом случае потери при ошибочном отнесении камня к мине равнозначны некоторой небольшой потере времени пользователем геолокатора. Потери, связанные с ошибочным отнесением мины к классу камней, связаны с жизнью или значительной потерей здоровья пользователями геолокатора.

Анализ разомкнутых нейронных сетей

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

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

Алгоритмы поиска экстремума функционалов вторичной оптимизации

Алгоритм поиска экстремума применительно к конкретному функционалу вторичной оптимизации определяет алгоритм настройки коэффициентов многослойной нейронной сети. В начале 21 века наибольший практический интерес представляют подобные алгоритмы, реализованные в системе MatLab (сокращение от англ. «Matrix Laboratory» – пакет прикладных программ для решения задач технических вычислений и одноимённый язык программирования). Однако необходимо отметить частность алгоритмов адаптации в многослойных нейронных сетях, используемых в системах MatLab (Neural Network Toolbox – предоставляет функции и приложения для моделирования сложных нелинейных систем, которые описываются уравнениями; поддерживает обучение «с учителем» и «без учителя», прямым распространением, с радиальными базисными функциями и др.), и ориентацию этих алгоритмов не на специфику решаемых задач, а на воображаемую «геометрию» функционалов вторичной оптимизации. Эти алгоритмы не учитывают многих деталей специфики применения многослойных нейронных сетей при решении конкретных задач и, естественно, требуют коренной, если не принципиальной, переработки при переходе к мемристорным нейронным системам. Был проведён детальный сравнительный анализ метода обратного распространения и российских методов 1960–70-х годов. Основная особенность данных алгоритмов заключается в необходимости поиска локальных и глобального экстремумов многоэкстремального функционала в многомерном пространстве настраиваемых коэффициентов нейронной сети. Рост размеров нейронной сети ведёт к значительному росту числа настраиваемых коэффициентов, т. е. к росту размерности пространства поиска. Ещё в 1960-х годах в работах предлагались поисковые и аналитические процедуры расчёта градиента функционала вторичной оптимизации, а в классе аналитических процедур предлагалось и исследовалось применение для организации поиска не только первой, но и второй производной функционала вторичной оптимизации. Специфика многоэкстремальности функционала вторичной оптимизации привела в течение последующих десятилетий к появлению различных модификаций методов поиска (генетические алгоритмы и т. п.). Созданы алгоритмы поиска экстремумов функционалов вторичной оптимизации с ограничениями на величину, скорость и другие параметры весовых коэффициентов нейронных сетей. Именно эти методы должны быть основой работ по методам настройки нейронных сетей с применением мемристоров (весовых коэффициентов) с учётом таких специфических характеристик, как передаточные функции.

Начальные условия при настройке коэффициентов

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

Память в контуре настройки коэффициентов

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

Исследование алгоритмов адаптации в нейронных сетях

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

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

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

Для задачи кластеризации была предложена выборка случайного сигнала с многомодальным распределением, реализуемая в $N$ -мерном пространстве признаков с модами функции распределения, центры которых в количестве $Z$ размещаются на гипербиссектрисе $N$ -мерного пространства признаков. Каждая мода реализует составляющую случайной выборки с нормальным распределением и среднеквадратичным отклонением $σ$ , равным для каждой из $Z$ мод. Предметом сравнения различных методов кластеризации будет динамика настройки и качество решения задачи в зависимости от $N$ , $Z$ и $σ$ , при достаточно большой случайной выборке $M$ . Этот подход можно считать одним из первых достаточно объективных подходов к сравнению алгоритмов кластеризации, в том числе основанных на многослойных нейронных сетях c соответствующим выбором структуры для достижения необходимого качества кластеризации. Для задач классификации входные сигналы для испытаний аналогичны сигналам для кластеризации с тем изменением, что выборка с многомодальным распределением делится надвое (в случае двух классов) или на $K$ (в случае $K$ классов) частей с перемежающимися модами функции распределения для отдельных классов.

Нейронные сети с переменной структурой

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

В 1960-е годы для весьма актуального в то время класса задач – распознавания образов – была предложена процедура настройки многослойных нейронных сетей, в которой структура априори не фиксируется, а является результатом настройки наряду со значениями настраиваемых коэффициентов. При этом в процессе настройки выбираются число слоёв и число нейронов в слоях. Процедура настройки коэффициентов многослойной нейронной сети с переменной структурой легко переносится с задачи распознавания двух классов образов на задачу распознавания $K$ классов образов. Причём здесь результатом настройки являются $K$ нейронных сетей, в каждой из которых первым классом является $k$ -й класс ($k = 1, \ldots, K$ ), а вторым все остальные. Подобная идея настройки многослойных нейронных сетей с переменной структурой применима и к решению задачи кластеризации. При этом в качестве первого класса образов принимается исходная анализируемая выборка, а в качестве второго класса – выборка с равномерным распределением в диапазоне изменения признаков. Реализуемая в процессе настройки многослойная нейронная сеть с переменной структурой качественно и количественно отражает сложность решения задачи. С этой точки зрения задача кластеризации как задача рождения новых знаний об изучаемом объекте заключается в выделении и анализе тех областей многомерного пространства признаков, в которых функция распределения вероятностей превышает уровень равномерного распределения в диапазоне изменения величин признаков.

Перспективы развития

В начале 21 века одной из основных концепций развития (обучения) многослойной нейронной сети является стремление к увеличению числа слоёв, а это предполагает обеспечение выбора структуры нейронной сети, адекватной решаемой задаче, разработку новых методов для формирования алгоритмов настройки коэффициентов. Достоинствами нейронных сетей являются: свойство т.н. постепенной деградации − при выходе из строя отдельных элементов качество работы системы падает постепенно (для сравнения, логические сети из элементов И, ИЛИ, НЕ выходят из строя при нарушении работы любого элемента сети); повышенная устойчивость к изменению параметров схем, их реализующих (например, весьма значительные изменения весов не приводят к ошибкам в реализации простой логической функции двух переменных) и др.

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

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

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

Схема типового искусственного нейрона

Нейрон может иметь много входов, но только один выход. Человеческий мозг содержит примерно нейронов, и каждый нейрон может иметь тысячи соединений с другими. Входные сигналы нейрона умножаются на весовые коэффициенты и складываются для получения суммарного входа нейрона - I :
Рис. 1.Типовой искусственный нейрон Функция, которая связывает выход нейрона с его входами, называется функцией активизации. Она имеет вид сигмоидальнои функции θ . Формализация реакции нейрона состоит в том, что исходный сигнал направляется к одной из границ при получении очень маленьких и очень больших входных сигналов. Кроме того, с каждым нейроном связано пороговое значение - θ , которое в формуле вычисления выходного сигнала вычитается из общего входного сигнала. В результате, выходной сигнал нейрона - О часто описывается следующим образом: Структура сети с обратным распространением" src="https://libtime.ru/uploads/images/00/00/01/2014/06/27/set-s-obratnym-rasprostraneniyem.png" alt="Структура сети с обратным распространением" width="450" height="370"> Рис. 2. Сеть с обратным распространением Сеть с обратным распространением , как правило, делится на три сегмента, хотя могут быть сформированы также дополнительные сегменты. Сегменты (сегмент), находящиеся между входным и выходным сегментами, называются скрытыми сегментами, поскольку внешний мир воспринимает наглядно только входной и выходной сегменты. Сеть, которая вычисляет значение логической операции «исключающее ИЛИ», выдает на выходе истинное значение, только в случаях, когда не на всех ее входах есть истинные значения или не на всех входах являются ошибочные значения. Количество узлов в скрытом секторе могут варьироваться в зависимости от цели проекта.

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

Следует отметить, что нейронные сети не требуют программирования в обычном смысле этого слова. Для обучения нейронных сетей применяются специальные алгоритмы обучения нейронных сетей, такие как встречное распространение и обратное распространение. Программист «программирует» сеть, задавая входные данные и соответствующие выходные данные. Сеть обучается, автоматически корректируя весовые коэффициенты для синаптических соединений между нейронами. Весовые коэффициенты, вместе с пороговыми значениями нейронов, определяют характер распространения данных по сети и, тем самым, задают правильный отклик на данные, используемые в процессе обучения. Обучение сети с целью получения правильных ответов может потребовать много времени. Насколько много зависит от того, какое количество образов должна быть усвоена в ходе обучения сети, а также от возможностей применяемых аппаратных и вспомогательных программных средств. Однако, по его завершении обучения сеть способна давать ответы с высокой скоростью. По своей архитектуре искусственная нейронная система отличается от других вычислительных систем. В классической информационной системе реализуется возможность соединения дискретной информации с элементами памяти. Например, обычно, информационная система сохраняет данные о конкретном объекте в группе смежных элементов памяти. Следовательно, возможность доступа и манипулирования данными достигается за счет создания взаимно однозначной связи между атрибутами объекта и адресами ячеек памяти, в которых они записаны. В отличие от таких систем, модели искусственных нейронных систем разрабатываются на основе современных теорий функционирования мозга, согласно которым информация представлена в мозге при помощи весовых коэффициентов. При этом непосредственной корреляции между конкретным значением весового коэффициента и конкретным элементом сохраненной информации не существует. Такое распределенное представление информации аналогично технологии сохранения и представления изображений, которая используется в голограммах. Согласно этой технологии линии голограммы действуют, как дифракционные решетки. С их помощью, при прохождении лазерного луча, воспроизводится сохраненное изображение, однако, сами данные не подвергаются непосредственной интерпретации.
Нейронная сеть как средство решения задачи. Нейронная сеть выступает в роли приемлемого средства решения задачи, когда присутствует большое количество эмпирических данных, но нет алгоритма, который был бы способен обеспечить получение достаточно точного решения с необходимой скоростью. В данном контексте технология представления данных искусственной нейронной системы имеет существенные преимущества перед другими информационными технологиями. Эти преимущества можно сформулировать следующим образом:
  1. Память нейронной сети является отказоустойчивой. При удалении отдельных частей нейронной сети происходит лишь снижение качества информации, в ней сохраняется, но не полное ее исчезновение. Это происходит потому, что информация хранится в распределенной форме.
  2. Качество информации в нейронной сети, которая подлежит сокращению, снижается постепенно, пропорционально той части сети, была удалена. Катастрофической потери информации не происходит.
  3. Данные в нейронной сети хранятся естественным образом с помощью ассоциативной памяти. Ассоциативной памятью называют такую память, в которой достаточно выполнить поиск частично представленных данных, чтобы полностью восстановить всю информацию. В этом состоит отличие ассоциативной памяти от обычной памяти, в которой получение данных осуществляется путем указания точного адреса соответствующих элементов памяти.
  4. позволяют выполнять экстраполяцию и интерполяцию на основе информации, хранящейся в них. То есть, обучение позволяет придать сети способности осуществлять поиск важных особенностей или связей в данных. После этого сеть в состоянии экстраполировать и выявлять связи в новых данных, что к ней поступают. Например, в одном эксперименте было проведено обучение нейронной сети на гипотетическом примере. После окончания обучения сеть приобрела способность правильно отвечать на вопросы, по которым обучение не проводилось.
  5. Нейронные сети - пластичны. Даже после удаления определенного количества нейронов может быть проведено повторное обучение сети до ее первичного уровня (конечно, если в ней осталась достаточное количество нейронов). Такая особенность является также характерной для мозга человека, в котором могут быть повреждены отдельные части, но со временем, с помощью обучения, достигнута первичного уровня навыков и знаний.
Благодаря таким особенностям искусственные нейронные системы становятся очень привлекательными для применения в роботизированных космических аппаратах, оборудовании нефтепромышленности, подводных аппаратах, средствах управления технологическими процессами и в других технических устройствах , которые должны функционировать длительное время без ремонта в неблагоприятной среде. Искусственные нейронные системы не только позволяют решить проблему надежности, но и предоставляют возможность уменьшить эксплуатационные расходы благодаря своей пластичности. Однако, в целом, искусственные нейронные системы не очень хорошо подходят для создания приложений, в которых требуются сложные математические расчеты или поиск оптимального решения. Кроме того, применение искусственной нейронной системы не будет лучшим вариантом в случае, если существует алгоритмическое решение, которое уже предоставило положительный результат вследствие практического применения для решения подобных задач. Похожая статья:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ещё одной полезной статьёй оказалась

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

Например, в 2016 году нейронная сеть Google AlphaGo побила одного из лучших профессиональных игроков Counter-Strike: Global Offensive в мире со счетом 4-1. YouTube также объявил о том, что они будут использовать нейронные сети для лучшего понимания своих видео.

Но что такое нейронная сеть? Как это работает? И почему они так популярны в машинной обработке?

Компьютер как мозг

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

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

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

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

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

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

Способность к обучению

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

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

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

От нейронов к узлам

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


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

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

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

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

От синапсов к соединениям

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


Как вы можете видеть, вес соединения «B» выше, чем у соединения «A» и «C». Скажем, скрытый узел «4» сработает, только если он получает общий ввод «2» или больше. Это означает, что если «1» или «3» сработают по отдельности, то «4» не сработает, но «1» и «3» вместе вызовут узел. Узел «2» также может инициировать узел самостоятельно через соединение «B».

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

Используя вышеприведенные соединения и вес, узел 4 может срабатывать только в том случае, если температура ниже -18 С и ветер выше 48 км/с, или он будет срабатывать, если вероятность снега превышает 70 процентов. Температура будет подаваться в узел 1, ветры к узлу 3 и вероятность попадания снега в узел 2. Теперь узел 4 может учитывать все это при определении того, какой сигнал следует отправить на выходной слой.

Лучше, чем простая логика

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


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

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


Исправление ошибки

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

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

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

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

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

Постоянное улучшение

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

Это может быть так же просто, как распознавание образов или столь же сложным, как и игра CS: GO.

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

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

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

Вопросы глубины

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

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


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

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

Приложения нейронной сети

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

Для чего мы можем использовать эти увлекательные системы?

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

Поэтому, когда вы говорите, «ОК, Google», ваш iPhone прогоняет вашу речь через нейронную сеть, чтобы понять, что вы говорите. Возможно, существует еще одна нейронная сеть, которая учится предсказывать то, о чем вы, вероятно, попросите.

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

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

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

Будущее нейронных сетей

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

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

Знаете ли вы какие-либо интересные применения нейронных сетей? У вас есть опыт работы с ними самостоятельно? Что вас больше всего привлекает в этой технологии? Поделитесь своими мыслями в комментариях ниже!

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

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

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

Биологические нейронные сети

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

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

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

История нейронных сетей

Какова же история развития нейронных сетей в науке и технике? Она берет свое начало с появлением первых компьютеров или ЭВМ (электронно-вычислительная машина) как их называли в те времена. Так еще в конце 1940-х годов некто Дональд Хебб разработал механизм нейронной сети, чем заложил правила обучения ЭВМ, этих «протокомпьютеров».

Дальнейшая хронология событий была следующей:

  • В 1954 году происходит первое практическое использование нейронных сетей в работе ЭВМ.
  • В 1958 году Франком Розенблатом разработан алгоритм распознавания образов и математическая аннотация к нему.
  • В 1960-х годах интерес к разработке нейронных сетей несколько угас из-за слабых мощностей компьютеров того времени.
  • И снова возродился уже в 1980-х годах, именно в этот период появляется система с механизмом обратной связи, разрабатываются алгоритмы самообучения.
  • К 2000 году мощности компьютеров выросли настолько, что смогли воплотить самые смелые мечты ученых прошлого. В это время появляются программы распознавания голоса, компьютерного зрения и многое другое.

Искусственные нейронные сети

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

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

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

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

  • Машинное обучение (machine learning), представляющее собой разновидность искусственного интеллекта. В основе его лежит обучение ИИ на примере миллионов однотипных задач. В наше время машинное обучение активно внедряют поисковые системы Гугл, Яндекс, Бинг, Байду. Так на основе миллионов поисковых запросов, которые все мы каждый день вводим в Гугле, их алгоритмы учатся показывать нам наиболее релевантную выдачу, чтобы мы могли найти именно то, что ищем.
  • В роботехнике нейронные сети используются в выработке многочисленных алгоритмов для железных «мозгов» роботов.
  • Архитекторы компьютерных систем пользуются нейронными сетями для решения проблемы параллельных вычислений.
  • С помощью нейронных сетей математики могут разрешать разные сложные математические задачи.

Типы нейронных сетей

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

  • сверточные нейронные сети,
  • реккурентные нейронные сети,
  • нейронную сеть Хопфилда.

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

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

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

Рекуррентные нейронные сети

Рекуррентными называют такие нейронные сети, соединения между нейронами которых, образуют ориентировочный цикл. Имеет такие характеристики:

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

Рекуррентные нейронные сети применяются в распознавании и обработке текстовых данных (в частотности на их основе работает Гугл переводчик, алгоритм Яндекс «Палех», голосовой помощник Apple Siri).

Нейронные сети, видео

И в завершение интересное видео о нейронных сетях.

Поделиться