Многослойные искусственные нейронные сети


Содержание

Многослойные искусственные нейронные сети

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

  1. Вопрос 37.Сукцессии. Искусственные сообщества — агроэкосистемы и урбоэкосистемы.
  2. Вопрос. Язык и мышление. Естественные и искусственные языки.
  3. Естественные и искусственные источники загрязнения атмосферы.
  4. Естественные и искусственные источники неионизирующих электромагнитных излучений. Биологическое действие электромагнитных полей. Основные способы и средства защиты.
  5. Естественные и искусственные основания
  6. Естественные и искусственные помехи в биогеоценозах
  7. Искусственные (антропогенные) источники ионизирующих излучений
  8. Искусственные (антропогенные) источники ионизирующих излучений.
  9. Искусственные основания
  10. Искусственные экосистемы.
  11. Многослойные эпителии

Однослойные искусственные нейронные сети

Параболоиды

Эллипсоиды

– эллипсоид вращения
– трёхосный эллипсоид

– параболоид вращения
, и одного знака
– эллиптический параболоид

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

Удобно считать веса элементами матрицы W. Матрица имеет m строк и n столбцов, где m – число входов, а n – число нейронов. Например, w3,2 – это вес, связывающий третий вход со вторым нейроном.

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

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

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

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

Так как умножение матриц ассоциативно, то

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

47. В чем заключается цель обучения ИНС? [вверх]

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

Цель обучения.

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

48. Перечислите 3 парадигмы обучения ИНС и кратко их охарактеризуйте. [вверх]

Дата добавления: 2015-04-23 ; Просмотров: 375 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

Многослойные искусственные нейронные сети

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

Рисунок 4. Однослойная нейронная сеть

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

Удобно считать веса элементами матрицы W. Матрица имеет т строк и п столбцов, где m — число входов, а n — число нейронов. Например, w2,3 — это вес, связывающий третий вход со вторым нейроном. Таким образом, вычисление выходного вектора N, компонентами которого являются выходы нейронов, сводится к матричному умножению

N = XW,

где N и Х — векторы-строки.

Многослойная нейронная сеть

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

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

Рисунок 5. Двухслойная нейронная сеть.

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

Так как умножение матриц ассоциативно, то

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

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

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

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

· реккурентные нейронные сети или сети обратного распространения — сигнал в таких сетях с выходных нейронов или нейронов скрытого слоя частично передается обратно на входы нейронов входного слоя;

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

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

Многослойные искусственные нейронные сети

16. ИСКУССТВЕННЫЕ НЕЙРОННЫЕ СЕТИ

16.1. Распознавание образов

Распознавание образов — научное направление, связанное с разработкой принципов и построением систем, предназначенных для определения принадлежности объекта к одному из классов объектов [27]. Классы объектов могут быть заранее выделены (задача классификации) или необходимо их выявить в процессе решения задачи (задача кластеризации). Под объектами в распознавании образов (англ. pattern) понимают (семантическая классификация):

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

— в классических моделях образ обычно описывается набором признаков, каждый из которых характеризует определенное свойство объекта;

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

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

Образы допускает рекурсивное определение (например, символ является образом, список символов также является образом). При представлении образов нередко набор его характеристик делят на две группы: переменные и постоянные характеристики.

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

Основные типы задач распознавания образов приведены в следующей таблице.

Типы задач распознавания образов

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

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

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

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

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

16.2. Краткий исторический обзор

Исследования в области ИНС пережили три периода активизации [36].

Первый пик в 40-х годах обусловлен пионерской работой Мак-Каллоха и Питтса.

Второй возник в 60-х благодаря персептрону (англ. perceptron) Розенблатта. В 1958 г. Фрэнк Розенблатт продемонстрировал компьютерную модель электронного устройства, названную им персептроном, а в 1960 г. — первую действующую машину «Марк-1», моделирующую совместную работу человеческого глаза и мозга. Машина могла распознавать некоторые из букв, написанные на карточках, подносимых к кинокамерам («глазам» машины). Она умела различать буквы алфавита, но была чувствительна к их написанию.

Рис.16.1. Фрэнк Розенблатт с датчиком изображения Mark-1

В своей работе (1969 г.) Минский и Пейперт указали на ограниченные возможности простейшего персептрона. Результаты этой работы надолго погасили энтузиазм большинства исследователей в области ИНС. Возникшее в исследованиях по нейронным сетям затишье продлилось почти 15 лет.

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

16.3. Биологический нейрон

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

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

Рис.16.2. Биологический нейрон

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

Кора головного мозга человека является протяженной, образованной нейронами поверхностью толщиной от 2 до 3 мм с площадью около 2200 см 2 , что вдвое превышает площадь поверхности стандартной клавиатуры. Общее количество нейронов в мозге человека около 10 11 , что приблизительно равно числу звезд Млечного пути. Каждый нейрон связан с 10 3 — 10 4 другими нейронами. В целом мозг человека содержит приблизительно от 10 14 до 10 15 взаимосвязей.

Рис.16.3. Количество нейронов у человека и животных [37]

16.4. Математическая модель нейрона

Обобщенная математическая модель нейрона выглядит следующим образом [23, 22]:

Рис.16.4. Математическая модель нейрона

— входные сигналы xi – данные, поступающие из окружающей среды или от других активных нейронов. Входные значения могут быть дискретными из множеств [0, 1] или [-1, 1] либо принимать любые вещественные значения;

— вещественные весовые коэффициенты wi – определяют силу связи между нейронами;

— уровень активации (потенциал) нейрона ;

— функция активации f(P) – предназначена для вычисления выходного значения сигнала, передаваемого другим нейронам.

16.5. Классификация искусственных нейронных сетей

Искусственная нейронная сеть состоит из нескольких слоев, в которые группируются нейроны. Схематично её можно представить следующим образом [23, 22].

Рис.16.5. Искусственная нейронная сеть

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

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


В зависимости от функции активации различают следующие ИНС.

Типы ИНС в зависимости от функции активации

Функция Способ определения Y
Ступенчатая пороговая Y = 0, при P -a(P-P*) )
Гиперболический тангенс Y = a th(b P) = a (e bP – e -bP ) / (e bP + e -bP )
Арктангенс Y = 2 arctg(P) / π
Линейная Y = a + b*P
Гауссиана

1. P*, P1*, P2* — пороговые значения.
2. a, b – коэффициенты.
3. e – основание натурального логарифма.

В зависимости от типа межнейронных связей различают ИНС:

— с прямыми связями (рис. 16.5);

— с перекрестными связями;

Рис.16.6. ИНС с перекрестными связями

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

Рис.16.7. ИНС с обратными связями

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

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

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

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

В зависимости от правила коррекции коэффициентов (wi) ИНС делят на следующие категории:

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

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

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

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

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

— на вход сети подается обучающий образ и вычисляется выход;

— вычисляется значение средней квадратичной ошибки между желаемым и полученным выходными векторами;

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

16.6. Процедура построения искусственных нейронных сетей

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

Этап 1. Определение типа распознаваемых образов (фотография, видео, совокупность числовых характеристик и т.п.), набора измеряемых параметров образов, информативных с точки зрения распознавания, и классов распознаваемых образов.

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

Этап 3. Проектирование архитектуры искусственной нейронной сети:

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

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

— выбор типа связей между нейронами. Зависит от специфики решаемой задачи;

— выбор функции активации. Зависит от специфики решаемой задачи.

Этап 4. Обучение сети – уточнение значений весовых коэффициентов связей на основе многократного прогона обучающих примеров через сеть. Каждому обучающему примеру (образу) соответствует строго определенные вектора входных и выходных величин. Обучающие примеры, как правило, представляют собой эталонные (идеальные) представления образов, а также их незначительные модификации. Они должны быть подобраны для каждого класса образов. Существует эмпирическое правило, которое устанавливает рекомендуемое соотношение λ между количеством обучающих примеров и числом связей в нейронной сети: λ ≤10 [22].

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

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

16.7. Алгоритм обратного распространения ошибки

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

Для решения задачи принадлежности предъявленного образа одному из заранее выделенных классов образов хорошо себя зарекомендовали многослойные нейронные сети с прямыми связями. Самым известным и популярным методом их обучения является алгоритмом обратного распространения ошибки (англ. backpropagation), который является модификацией классического метода градиентного спуска. Этот алгоритм был изложен в диссертации Пола Вербоса (Paul Werbos) 1974 г., но тогда не привлек к себе должного внимания. Рождение алгоритма для широкой публики связано с работой группы PDP (Parallel Distributed Processing), освещенной в двухтомном труде 1986г. Именно там, в статье Румельхарта, Хинтона и Уильямса, была изложена теория обучения многослойного персептрона.

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

Алгоритм подразумевает два потока сигналов (данных) при прогоне одного обучающего образа через сеть:

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

— обратный (от выходного до входного слоя) распространение сигнала ошибки для корректировки весовых коэффициентов связей.

Блок-схема алгоритма обратного распространения ошибки показана на следующем рисунке.

Рис.16.8. Блок-схема алгоритма обратного распространения ошибки

На рисунке приняты следующие обозначения:

э – номер эпохи;
о – номер обучающего образа;
с – номер слоя;
нс – номер нейрона в слое с;
NЭ – количество эпох;
NО – количество обучающих образов;
NС – количество слоев;
NНс – количество нейронов в слое с;
inpо – вектор входных значений обучающего образа о;
— – значение элемента н входного вектора обучающего образа о;
outо – вектор ожидаемых выходных значений обучающего образа о;
— – значение элемента н выходного вектора обучающего образа о;
— – потенциал нейрона н слоя с;
— – выход нейрона н слоя с. Для нейронов входного слоя равен соответствующему элементу вектора входных значений , для остальных слоев – результату расчета функции активации ;
wi,j – весовой коэффициент связи нейрона i предыдущего слоя и нейрона j последующего слоя;
— – ошибка (сигнал ошибки) нейрона н слоя с;
— – результат расчета первой производной функции активации нейрона н слоя с+1;
η – норма обучения.

Перед процедурой обучения весовые коэффициенты всех связей инициализируются случайными малыми значениями (например, в диапазоне [-0.3, 0.3]).

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

При прямом распространении сигнала выполняется стандартная процедура, как и при распознавании образа:

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

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

При проходе слоев в обратном направлении выполняется расчет сигнала ошибки:

— для нейронов последнего (выходного) слоя как разница между ожидаемым для образа значением выхода и полученным:

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

Рис.16.9. Пример расчета сигнала ошибки для нейрона 1 слоя 2

Заключительной операцией является корректировка весовых коэффициентов всех связей на величину:

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

Норма обучения η – коэффициент, от которого зависит величина изменения веса (скорость обучения). Выбирается в диапазоне 0 η | Последняя активность сайта | Пожаловаться | Печать страницы | На основе Google Сайтов

7 архитектур нейронных сетей для решения задач NLP

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

Любая архитектура ИНС состоит из искусственных нейронов — элементов обработки, имеющих структуру 3 связанных друг с другом слоев: входным, состоящим из одного или более слоев скрытым и выходным.

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

Искусственная нейронная сеть с 4 входами

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

Взвешенная сумма со входов — активационный сигнал — проходит через функцию активации для вывода данных из нейрона. Есть несколько видов функции активации: линейная, ступенчатая, сигмоидная, тангенциальная, выпрямительная (Rectified linear unit, ReLu).

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

Ступенчатая функция

Сигмоида

Функция гиперболического тангенса

Функция линейного выпрямителя

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

С помощью дополнительных скрытых слоев возможно сделать систему более гибкой и мощной. ИНС с многими скрытыми слоями называются глубокими нейронными сетями (deep neural network, DNN); они создают сложные нелинейные связи.

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

1. Многослойный перцептрон

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

2. Сверточная нейронная сеть

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

Сверточные сети показывают выдающиеся результаты в приложениях к картинкам и речи. В статье Convolutional Neural Networks for Sentence Classification автор описывает процесс и результаты задач классификации текста с помощью CNN. В работе представлена модель на основе word2vec, которая проводит эксперименты, тестируется на нескольких бенчмарках и демонстрирует блестящие результаты.

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

3. Рекурсивная нейронная сеть

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

4. Рекуррентная нейронная сеть

Рекуррентная нейронная сеть, в отличие от прямой нейронной сети, является вариантом рекурсивной ИНС, в которой связи между нейронами — направленные циклы. Последнее означает, что выходная информация зависит не только от текущего входа, но также от состояний нейрона на предыдущем шаге. Такая память позволяет пользователям решать задачи NLP: распознание рукописного текста или речи. В статье Natural Language Generation, Paraphrasing and Summarization of User Reviews with Recurrent Neural Networks авторы показывают модель рекуррентной сети, которая генерирует новые предложения и краткое содержание текстового документа.

Siwei Lai, Liheng Xu, Kang Liu, и Jun Zhao в своей работе Recurrent Convolutional Neural Networks for Text Classification создали рекуррентную сверточную нейросеть для классификации текста без рукотворных признаков. Модель сравнивается с существующими методами классификации текста — Bag of Words, Bigrams + LR, SVM, LDA, Tree Kernels, рекурсивными и сверточными сетями. Описанная модель превосходит по качеству традиционные методы для всех используемых датасетов.

5. LSTM


Сеть долгой краткосрочной памяти (Long Short-Term Memory, LSTM) — разновидность архитектуры рекуррентной нейросети, созданная для более точного моделирования временных последовательностей и их долгосрочных зависимостей, чем традиционная рекуррентная сеть. LSTM-сеть не использует функцию активации в рекуррентных компонентах, сохраненные значения не модифицируются, а градиент не стремится исчезнуть во время тренировки. Часто LSTM применяется в блоках по несколько элементов. Эти блоки состоят из 3 или 4 затворов (например, входного, выходного и гейта забывания), которые контролируют построение информационного потока по логистической функции.

В Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling авторы показывают архитектуру глубокой LSTM рекуррентной сети, которая достигает хороших результатов для крупномасштабного акустического моделирования.

В работе Part-of-Speech Tagging with Bidirectional Long Short-Term Memory Recurrent Neural Network представлена модель для автоматической морфологической разметки. Модель показывает точность 97.4 % в задаче разметки. Apple, Amazon, Google, Microsoft и другие компании внедрили в продукты LSTM-сети как фундаментальный элемент.

6. Sequence-to-sequence модель

Часто Sequence-to-sequence модели состоят из двух рекуррентных сетей: кодировщика, который обрабатывает входные данные, и декодера, который осуществляет вывод.

Sequence-to-Sequence модели часто используются в вопросно-ответных системах, чат-ботах и машинном переводе. Такие многослойные ячейки успешно использовались в sequence-to-sequence моделях для перевода в статье Sequence to Sequence Learning with Neural Networks study.

В Paraphrase Detection Using Recursive Autoencoder представлена новая рекурсивная архитектура автокодировщика, в которой представления — вектора в n-мерном семантическом пространстве, где фразы с похожими значением близки друг к другу.

7. Неглубокие (shallow) нейронные сети

Неглубокие модели, как и глубокие нейронные сети, тоже популярные и полезные инструменты. Например, word2vec — группа неглубоких двухслойных моделей, которая используется для создания векторных представлений слов (word embeddings). Представленная в Efficient Estimation of Word Representations in Vector Space, word2vec принимает на входе большой корпус текста и создает векторное пространство. Каждому слову в этом корпусе приписывается соответствующий вектор в этом пространстве. Отличительное свойство — слова из общих текстов в корпусе расположены близко друг к другу в векторном пространстве.

В статье описаны архитектуры нейронных сетей: глубокий многослойный перцептрон, сверточная, рекурсивная, рекуррентная сети, нейросети долгой краткосрочной памяти, sequence-to-sequence модели и неглубокие (shallow) сети, word2vec для векторных представлений слов. Кроме того, было показано, как функционируют эти сети, и как различные модели справляются с задачами обработки естественного языка. Также отмечено, что сверточные нейронные сети в основном используются для задач классификации текста, в то время как рекуррентные сети хорошо работают с воспроизведением естественного языка или машинным переводом. В следующих части серии будут описаны существующие инструменты и библиотеки для реализации описанных типов нейросетей.

Принципы построения нейронных сетей. Пишем простую нейросеть на JavaScript

Рассмотрим базовые принципы работы нейронных сетей, узнаем про Brain.js и попробуем подкрепить теорию на практике. Напишем свою первую нейронную сеть, которая будет уметь чуть больше чем ничего, но чуть меньше чем что-то. Статья не претендует на пособие по разработке нейронных сетей, я постараюсь дать Вам базовые знания и представления о работе нейросетей, которыми обладаю сам>

Введем понятие ИНС — искусственная нейронная сеть. т.e. сеть построенная при помощи компьютерной системы;

НС — нейронная сеть мозга человека.

Что такое ИНС?

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

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

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

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

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

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

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

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

Важно понимать что ИНС оперирует данными в диапазоне от 0 до 1. Вычисление веса в сумматоре производится пос следующей формуле:

(L1 * W1) + (L2 * W2) + (L3 * W3) = W

Функция совершенно линейна, из этого мы получаем следующую формулу:

(0.35 * 0.1) + (0.12 * 0.3) + (0.6 * 0.2) = 0.191

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

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

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

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

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

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

Подведем итоги. Что мы узнали про ИНС?

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

Илон Маск рекомендует:  Кратко о clip-path

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

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

Виды ИНС

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

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

На этом схожесть заканчивается и начинаются различия.

Однослойные нейронные сети

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

Выглядит однослойная нейронная сеть следующим образом:

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

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

Однослойная нейронная сеть (Single-layer neural network) — сеть, в которой сигналы от входного слоя сразу подаются на выходной слой, который и преобразует сигнал и сразу же выдает ответ.

Многослойные нейронные сети

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

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

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

Многослойные нейронные сети обладают гораздо большими возможностями, чем однослойные.

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

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

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

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

Сети прямого распространения (Feedforward neural network) (feedforward сети) — искусственные нейронные сети, в которых сигнал распространяется строго от входного слоя к выходному. В обратном направлении сигнал не распространяется.

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

Однако никто не запрещает сигналу идти и в обратную сторону.

Сети с обратными связями

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

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

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

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

Классификация ИНС

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

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

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

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

Предсказание/прогноз. Пусть заданы n дискретных отсчетов в последовательные моменты времени t1, t2. tn. Задача состоит в предсказании значения y (tn+1) в некоторый будущий момент времени tn+1. Предсказание/прогноз имеют значительное влияние на принятие решений в бизнесе, науке и технике. Предсказание цен на фондовой бирже и прогноз погоды являются типичными приложениями техники предсказания/прогноза.

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

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

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

Отлично! Но как научить сеть делать то, что я от нее хочу? Может нужно помочь ей? Или она сама себя обучит?

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

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

Что мы можем менять в нейронной сети?

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

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

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

Остается только один вариант – менять веса связей.

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

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

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

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


Именно с этой целью и создаются обучающие выборки.

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

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

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

Тестовая выборка (Testing set) — конечный набор входных сигналов (иногда вместе с правильными выходными сигналами), по которым происходит оценка качества работы сети.

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

Обучение с учителем

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

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

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

Обучение без учителя

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

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

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

Обучение без учителя (Unsupervised learning) — вид обучения сети, при котором сеть самостоятельно классифицирует входные сигналы. Правильные (эталонные) выходные сигналы не демонстрируются.

Выводы

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

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

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

Вы уже знаете необходимую теорию. Давайте попробуем подкрепить наши знания на практике.

Практика

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

В библиотеке уже реализованы все необходимые инструменты для работы с ИНС и нам лишь необходимо передать необходимые параметры для создания нужного нам экземпляра brain.js. Первый релиз библиотеки состоялся 1 января 2020г. Правильнее будет сказать, что первый релиз после упадка библиотеки состоялся 1 января 2020г. Библиотека brain.js является работой энтузиастов, которые не стали равнодушны к закрытию проекта brain и создали собственный форк, который по сей день очень активно развивается. Начать работать с brain.js очень просто, для этого Вам необходимо пройти несколько шагов:

  • Установить NodeJS и NPM, либо использовать версию для браузера (ее можно подключить прямо в документ с CDN);
  • Если Вы решили использовать NodeJS, то Вам необходимо установить пакет brain.js, выполнив команду npm install brain.js и подключить ее в файл командой const brain = require(‘brain.js’) ;
  • Создать экземпляр объекта ИНС, передав необходимые параметры конструктору: const net = new brain.NeuralNetwork(<. >) ;
  • Тренировать сеть при помощи команды train и набора тренировочных данных;
  • Использовать ИНС при помощи команды run ;

Библиотека имеет отличный пример работы в котором на первом этапе Вам необходимо создать тренировочные данные для ИНС выбирая цвет текста на разноцветных плитках, который лучше видно. На втором этапе после обучения, ИНС сама будет определять какой цвет текста будет лучше видно на разноцветных плитках. Пример находится по этому адресу. Так же существует отличный интерактивный урок по работе с brain.js на scrimba. Еще больше примеров и уроков можно найти в WIKI на GitHub.

Вот некоторая техническая информация которая может понадобиться Вам при работе с brain.js. Я не нашел русского перевода, поэтому перевел самостоятельно, поправьте если я где-то допустил ошибку.

Использование brain.js в браузере требует вычислительных затрат, поэтому вы должны попытаться обучить сеть в автономном режиме (или на рабочем месте) и использовать опции toFunction()или toJSON(), чтобы подключить предварительно обученную сеть к своему веб-сайту.

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

Тренировка с NeuralNetwork

Каждый тренировочный шаблон должен иметь an inputи an output , оба из которых могут быть либо массивом чисел от 0 до 1 , либо хешем чисел от 0 до 1 . Для демонстрации цветового контраста это выглядит примерно так:

Для обучения с RNNTimeStep, LSTMTimeStepиGRUTimeStep
Каждый шаблон тренировки может:

— Быть массивом чисел
— Быть массивом массивов чисел

Пример использования массива чисел:

Пример использования массива чисел:

Для обучения с RNN, LSTMиGRU
Каждый шаблон тренировки может:

— Быть массивом значений
— Будь строкой
— Есть input и output
Любой из которых может массив значений или строка

Пример использования прямых строк:

Пример использования строк с входами и выходами:

Варианты обучения

train() принимает хэш опций в качестве второго аргумента:

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

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

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

JSON
Сериализация или загрузка в состоянии обученной сети с помощью JSON:

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

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

— sigmoid
— relu
— leaky-relu (с этой опцией доступен параметр «leakyReluAlpha», по умолчанию 0,01)
— tanh

Вот таблица (спасибо, Википедия!), Обобщающая множество функций активации — Функция активации

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

hiddenLayers: [3, 4]
По умолчанию brain.js используется один скрытый слой с размером, пропорциональным размеру входного массива.

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

Теперь когда мы знаем что представляют из себя ИНС и обладаем технической информацией по работе с brain.js можно приступить к написанию своей первой ИНС. Я буду использовать repl.it для публикации кода и NodeJS для вычислительных процессов что бы не нагружать Ваши браузеры.

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

Более подробно изучить работу XOR Вы можете в отличной статье fealsoft на habr.com.

Пример 1

В реальной жизни эта ИНС конечно же является абсолютно бесполезной, но отлично подходит для простого промера. В качестве тренировочных данных на вход мы будем передавать два аргумента, а на выход результат XOR. К примеру [input: [0,0];output: 0,input:[0,1];output:1, . ] . Таким образом наша ИНС найдет закономерность и будет самостоятельно выявлять XOR. Важно понимать фактически она не будет высчитывать XOR, она будет делать предсказания каким может быть XOR для введенных аргументов. Весь код имеет комментарии и не вижу необходимости более детально углубляться в подробности реализации, Вы можете попробовать поменять значения передаваемые в функцию run и проверить корректность работы ИНС. Пример ИНС для расчета XOR:

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

Пример 2

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

Предположим что в учебном заведении есть закрытая социальная сеть, в которой учащиеся ежедневно оставляют более 500 000 сообщений. Эта информация строго конфиденциальная, но Вы имеете к ней доступ, так как подписали договор о не разглашении. Отлично! Теперь у нас есть несколько миллионов сообщений вместо 30 000 учеников!

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

Перед нами стоит следующая задача: Построить ИИС которая будет определять эмоциональное состояние человека по сообщению.

Входными данными является сообщение пользователя.

Выходными данными является строка: «хорошее» — если эмоциональный окрас сообщения позитивный, «плохое» — если эмоциональный окрас сообщения агрессивный или депрессивный.

Сообщение «Завтра будет просто ужасный день!»

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

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

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

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

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

О каких вопросах пойдет речь в статье:

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

«Вопрос о том, может ли компьютер думать, не более интересен, чем вопрос о том, может ли субмарина плавать».

Эдсгер Вибе Дейкстра

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

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

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

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

Мы подробно остановимся на всех этапах работы:

  • сбор данных
  • препроцессинг;
  • построение модели;
  • анализ качества и интерпретация модели.

Рассмотрим устройство, создание и обучение нейросети.

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


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

Основываясь на опыте, я могу выделить три категории вопросов:

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

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

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

У данных должна быть следующая классическая структура: вектор признаков для каждого i-го клиента X (i) = 1, x (i) 2, . x (i) n> и класс Y (i) — категория, показывающая, купил клиент или нет. Например: клиент (3) = <зеленый, горький, 4.14, да>— купил.

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

Пример данных обучающей выборки до препроцессинга

Препроцессинг

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

  1. Создание векторного пространства признаков, где будут находиться примеры обучающей выборки. По сути, это процесс приведения всех данных в числовую форму. Это избавляет нас от категорийных, булевых и прочих нечисловых типов.
  2. Нормализация данных. Процесс, при котором мы добиваемся, например, того, чтобы среднее значение каждого признака по всем данным было нулевым, а дисперсия — единичной. Классический пример нормализации данных: X = (X — μ)/σ. Функция нормализации:
    def normalize(X):
    return (X-X.mean())/X.std()
  3. Изменение размерности векторного пространства. Если векторное пространство признаков слишком велико (миллионы признаков) или мало (менее десятка), можно применить методы повышения или понижения размерности пространства.
    • Для повышения размерности можно использовать часть обучающей выборки как опорные точки, добавив в вектор признаков расстояние до этих точек. Этот метод часто приводит к тому, что в пространствах более высокой размерности множества становятся линейно разделяемыми, что упрощает задачу классификации.
    • Для понижения размерности чаще всего используют PCA. Основная задача метода главных компонент — поиск новых линейных комбинаций признаков, вдоль которых максимизируется дисперсия значений проекций элементов обучающей выборки.

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

Например, элемент выборки может быть или горьким, или сладким, или соленым, или кислым, или умами (мясным). Тогда One-Hot кодировка будет такой: горький = (1, 0, 0, 0 ,0), сладкий = (0, 1, 0, 0 ,0), соленый = (0, 0, 1, 0 ,0), кислый = (0, 0, 0, 1 ,0), умами = (0, 0, 0, 0, 1).

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

Пример данных обучающей выборки после препроцессинга

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

Формула скоринга чаще всего представляет из себя следующую линейную модель:

Где, k — это номер вопроса в анкете, wk — коэффициент вклада ответа на этот k-й вопрос в суммарный скоринг, |w| — количество вопросов (или коэффициентов), xk — ответ на этот вопрос. При этом вопросы могут быть любыми: булевыми (да или нет, 1 или 0), числовыми (например, рост = 175) или категориальными, но представленными в виде унитарной кодировки (зеленый из перечня: красный, зеленый или синий = [0, 1, 0]). При этом можно считать, что категориальные вопросы распадаются на столько булевых, сколько категорий присутствует в вариантах ответа (например: клиент красный? клиент зеленый? клиент синий?).

Выбор модели

Теперь самое важное: выбор модели. На сегодняшний день существует множество алгоритмов машинного обучения, на основе которых можно построить скоринг модель: Decision Tree (дерево принятия решений), KNN (метод k-ближайших соседей), SVM (метод опорных векторов), NN (нейросеть). Выбор модели зависит от того, что мы от нее хотим. Во-первых, насколько решения, повлиявшие на результаты модели, должны быть понятными. Другими словами, насколько нам важна возможность интерпретировать структуру модели.

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

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

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

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

Краткий курс искусственных нейронных сетей

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

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

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

Основываясь на этой структуре, Уоррен Мак-Каллок и Уолтер Питтс в 1943 году предложили модель математического нейрона. В 1958 году Френк Розенблатт на основе нейрона Мак-Каллока-Питтса создал компьютерную программу, а затем и физическое устройство — перцептрон. С этого и началась история искусственных нейронных сетей.

Рассмотрим структурную модель нейрона, с которым мы будем иметь дело.

Модель математического нейрона Мак-Каллока-Питтса

  1. X — входной вектор параметров. Вектор (столбец) чисел (биологическая степень активации разных рецепторов), пришедших на вход к нейрону.
  2. W — вектор весов (в общем случае — матрица весов), числовые значения, которые меняются в процессе обучения. Биологическое обучение на основе синаптической пластичности, нейрон учится правильно реагировать на сигналы с его рецепторов.
  3. Сумматор — функциональный блок нейрона, который складывает все входные параметры, умноженные на соответствующий им вес.
  4. Функция активации нейрона — зависимость значения выхода нейрона от значения пришедшего от сумматора.
  5. Следующие нейроны, куда на один из множества их собственных входов подается значение с выхода данного нейрона. Этот слой может отсутствовать, если нейрон последний, терминальный.

Реализация математического нейрона:

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

В среде создателей нейронных сетей принята следующая терминология:

  • входной (рецепторный) слой — вектор параметров (признаков). Этот слой не состоит из нейронов. Можно сказать, что это цифровая информация, снятая рецепторами из «внешнего» мира. В нашем случае это информация о клиенте. Слой содержит столько элементов, сколько существует входных параметров (плюс bias-term нужный для сдвига порога активации);
  • ассоциативный (скрытый) слой — глубинная структура, способная к запоминанию примеров, нахождению сложных корреляций и нелинейных зависимостей, к построению абстракций и обобщений. В общем случае это даже не слой, а множество слоев между входными и выходными. Можно сказать, что каждый слой подготавливает новый (более высокоуровневый) вектор признаков для следующего слоя. Именно этот слой отвечает за появление в процессе обучения высокоуровневых абстракций. Структура содержит столько нейронов и слоев, сколько душе угодно, а может и вообще отсутствовать (в случае классификации линейно разделимых множеств).
  • Выходной слой — это слой, каждый нейрон которого отвечает за конкретный класс. Выход этого слоя можно интерпретировать как функцию распределения вероятности принадлежности объекта разным классам. Слой содержит столько нейронов, сколько классов представлено в обучающей выборке. Если класса два, то можно использовать два выходных нейрона или ограничиться всего одним. В таком случае один нейрон по-прежнему отвечает только за один класс, но если он выдает значения близкие к нулю, элемент выборки (по его логике) должен принадлежать другому классу.

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

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

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

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

Образование иерархических ассоциаций в процессе обучения сверточной нейронной сети

Проводя биологическую аналогию, хочется сослаться на слова замечательного нейрофизиолога Вячеслава Альбертовича Дубынина, касающиеся речевой модели:

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

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

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

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

Линейно разделимые множества и линейно неразделимые множества

Давайте опишем все это формально. На входе нейрона у нас есть вектор параметров. В нашем случае это результаты анкетирования клиента, представленные в числовой форме X (i) = 1, x (i) 2, . x (i) n>. При этом каждому клиенту сопоставлен Y (i) — класс, характеризующий успешность лида (1 или 0).

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

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

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

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

График логистической кривой, одной из классических представительниц класса сигмоид

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

Если на нейрон подается информация, активированный рецептор открывает сопряженные с ним ионные каналы, что приводит к повышению или понижению потенциала в клетке. Можно провести аналогию между силой реакции на активацию рецептора и полученным в процессе обучения одним коэффициентом матрицы весов. Как только потенциал достигает значения в -50mV, возникает полезное действие и волна возбуждения доходит по аксону до пресинаптического окончания, выбрасывая нейромедиатор в межсинаптическую среду. То есть реальная биологическая активация — ступенчатая, а не гладкая: нейрон либо активировался, либо нет.

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

Важно: «Обучение нейросети (синаптическое обучение) должно свестись к оптимальному подбору коэффициентов матрицы весов с целью минимизации допускаемой ошибки».

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

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

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

Теперь нам потребуется мера, описывающая качество нейросети. Этот функционал обычно называют «функцией потерь» (англ. loss function), его обычно обозначают через J(W), показывая его зависимость от коэффициентов матрицы весов. Чем функционал меньше, тем реже наша нейросеть ошибается и тем это лучше. Именно к минимизации этого функционала и сводится обучение.

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

Процесс обучения как градиентный спуск к локальному минимуму функционала потери

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

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

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

Эволюционное обучение

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

    Проинициализировать геном (матрицу весов) случайным образом в диапазоне от -1 до 1. Повторить это несколько раз, тем самым создав начальную популяцию разных, но случайных нейросетей. Размер популяции обозначим через P — population or parents.

Cлучайная инициализация коэффициентов матрицы весов:

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

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

Простейшая оценка приспособленности:

«Оставить в живых» только P самых приспособленных. И вернуться к пункту 2, повторяя этот цикл несколько раз. Например, сто раз или пока точность не станет 80%.

Реализация эволюционного алгоритма:

Нейроэволюцию можно улучшить. Например, можно ввести дополнительные гены-параметры, как τ — темп мутагенеза и μ — сила мутагенеза. Теперь аддитивные мутации в матрицу весов нейронов будут вноситься с вероятностью τ, добавляя каждому параметру случайное число в выбранном диапазоне (например от -0.1 до 0.1), умноженное на μ. Эти гены тоже будут подвержены изменчивости.

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

В этой схеме тоже необходимо оставить внесение случайных мутаций в геном.


Уместна цитата из книги Александра Маркова и Елены Наймарк:

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

Градиентный спуск и метод обратного распространения ошибки

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

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

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

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

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

Графики функции штрафов как функции от выхода нейрона:

  1. В том случае, если объект принадлежит этому классу (ожидаем единицу).
  2. В том случае, если объект не принадлежит этому классу (ожидаем ноль).

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

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

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

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

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

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

Пример обучения нейросети

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

Обучающая выборка купивших и не купивших

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

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

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

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

Ожидаемая реакция нейрона на возраст клиента с разной степенью «уверенности» в результате, регулируемой коэффициентом при аргументе

Теперь запишем это математически и поймем, зачем нам нужен еще один bias-term в матрице весов. Чтобы сместить функцию f(x) вправо, например, на 42, мы должны вычесть 42 из ее аргумента f(x-42). При этом мы хотим получить слабый перегиб функции, умножив аргумент, например, на 0,25 и получить следующую функцию f(0.25(x-24)).

Раскрывая скобки, получим:

В нашем случае искомый коэффициент матрицы весов w = 0.25, а сдвиг b = -10.5. Но мы можем считать, что b это нулевой коэффициент матрицы весов (w=b) в том случае, если для любого примера нулевым признаком всегда будет единица (x=1). Тогда, например пятнадцатый «векторизированный» клиент с возрастом в 45 лет, представленный как x (15) = , x (15) 1> = [1, 30], мог бы купить с вероятностью 68%.

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

Например, мы ищем два коэффициента матрицы весов (w=b и w1):

Эволюционное обучение на данных без нормировки

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

Эволюционное обучение на нормированных данных

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

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

Обучение на основе метода градиентного спуска

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

Обучение на линейно разделимых множествах

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

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

Вычислительный граф классической искусственной нейросети

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

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

Один выходной нейрон находит разделяющую прямую

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

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

Два ассоциативных нейрона и две разделяющие прямые

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

Четыре ассоциативных нейрона и четыре разделяющие прямые

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

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

Многослойная нейросеть с топологией «бутылочное горлышко»

Для решения сложной задачи необходимо множество скрытых слоев. С задачей хорошо справляется нейросеть с топологией «бутылочное горлышко», в которой количество нейронов уменьшается от первого скрытого слоя к последнему. Обратите внимание на то, какие сложные паттерны возникают при специализации ассоциативных нейронов. В случае глубоких нейронных сетей лучше использовать ReLU (rectified linear unit) функцию активации для скрытых нейронов и обычную логистическую активацию (в идеале softmax-активацию) для последнего слоя.

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

Обучение модели

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

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

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

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

Оценка качества модели

Подготовив модель, необходимо адекватно оценить ее качество. Для этого введем следующие понятия:

  • TP (True Positive) — истинноположительный. Классификатор решил, что клиент купит, и он купил.
  • FP (False Positive) — ложноположительный. Классификатор решил, что клиент купит, но он не купил. Это так называемая ошибка первого рода. Она не так страшна, как ошибка второго рода, особенно в тех случаях, когда классификатор — тест на какое-нибудь заболевание.
  • FN (False Negative) — ложноотрицательный. Классификатор решил, что клиент не купит, а он мог купить (или уже купил). Это так называемая ошибка второго рода. Обычно при создании модели желательно минимизировать ошибку второго рода, даже увеличив тем самым ошибку первого рода.
  • TN (True Negative) — истинноотрицательный. Классификатор решил, что клиент не купит, и он не купил.

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

Сравнение результатов классификации разных моделей

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

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

Метрика достоверности

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

Точность и полнота

Точность (precision) показывает отношение верно угаданных объектов класса ко всем объектам, которые мы определили как объекты класса. Например, мы решили, что купит 115 человек, а из них реально купило 37. Следовательно, точность составляет 0,33. Полнота (recall) показывает отношение верно угаданных объектов класса ко всем представителям этого класса. Например, среди нами угаданных реально купило 37, а всего купивших было 43. Значит наша полнота составляет 0,88.

Таблица ошибок или confusion matrix

F-мера

Также существует F-мера (F1 score) — среднее гармонической точности и полноты. Помогает сравнить модели, используя одну числовую меру.

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

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

Как видно на диаграмме, самый большой перекос в качестве моделей именно в метрике полноты. Нейронная сеть угадывает 88% потенциальных клиентов, упуская только 12%. Старая же скоринг-модель упускала 36% процентов потенциальных клиентов, пропуская к менеджерам лишь 64%. Вот, собственно, почему лучше доверить нейросети подбирать коэффициенты значимости разных ответов, влияющих на скоринг. Машина способна удерживать в своей памяти всю выборку, находить в ней закономерности и строить модель, обладающую хорошей предсказательной способностью.

Интерпретация модели

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

Сравним формулу линейной скоринг модели и функцию работы одного нейрона (или однослойной нейросети):

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

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

Распределение купивших (красных) и не купивших (синих) клиентов в рамках старой скоринг модели

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


Распределение купивших (красных) и не купивших (синих) клиентов в рамках нейронной скоринг-модели

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

Результат

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

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

Распределение купивших (красных) и не купивших (синих) клиентов в рамках финальной нейронной скоринг-модели

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

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

Сравнение качества старой и новой скоринг-модели

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

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

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

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

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

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

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

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

От биологических сетей к ИНС

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

Таблица 1. Машина фон Неймана по сравнению с биологической нейронной системой

Машина фон Неймана <>Биологическая нейронная система
Процессор Сложный Простой
Высокоскоростной Низкоскоростной
Один или несколько Большое количество
Память Отделена от процессора Интегрирована в процессор
Локализована Распределенная
Адресация не по содержанию Адресация по содержанию
Вычисления Централизованные Распределенные
Последовательные Параллельные
Хранимые программы Самообучение
Надежность Высокая уязвимость Живучесть
Специализация Численные и символьные oперации Проблемы восприятия
Среда функционирования Строго определенная Плохо определенная
Строго ограниченная Без ограничений

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

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

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

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

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

Аппроксимация функций. Предположим, что имеется обучающая выборка ((x 1 ,y 1 ), (x 2 ,y 2 ). (x n ,y n )) (пары данных вход-выход), которая генерируется неизвестной функцией (x), искаженной шумом. Задача аппроксимации состоит в нахождении оценки неизвестной функции (x). Аппроксимация функций необходима при решении многочисленных инженерных и научных задач моделирования.

Предсказание/прогноз. Пусть заданы n дискретных отсчетов 1 ), y(t 2 ). y(t n )> в последовательные моменты времени t 1 , t 2 . t n . Задача состоит в предсказании значения y(t n+1 ) в некоторый будущий момент времени t n+1 . Предсказание/прогноз имеют значительное влияние на принятие решений в бизнесе, науке и технике. Предсказание цен на фондовой бирже и прогноз погоды являются типичными приложениями техники предсказания/прогноза.

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

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

Управление. Рассмотрим динамическую систему, заданную совокупностью , где u(t) является входным управляющим воздействием, а y(t) — выходом системы в момент времени t. В системах управления с эталонной моделью целью управления является расчет такого входного воздействия u(t), при котором система следует по желаемой траектории, диктуемой эталонной моделью. Примером является оптимальное управление двигателем.

Краткий исторический обзор

Исследования в области ИНС пережили три периода активизации. Первый пик в 40-х годах обусловлен пионерской работой МакКаллока и Питтса [4]. Второй возник в 60-х благодаря теореме сходимости перцептрона Розенблатта [5] и работе Минского и Пейперта [6], указавшей ограниченные возможности простейшего перцептрона. Результаты Минского и Пейперта погасили энтузиазм большинства исследователей, особенно тех, кто работал в области вычислительных наук. Возникшее в исследованиях по нейронным сетям затишье продлилось почти 20 лет. С начала 80-х годов ИНС вновь привлекли интерес исследователей, что связано с энергетическим подходом Хопфилда [7] и алгоритмом обратного распространения для обучения многослойного перцептрона (многослойные сети прямого распространения), впервые предложенного Вербосом [8] и независимо разработанного рядом других авторов. Алгоритм получил известность благодаря Румельхарту [9] в 1986году Андерсон и Розенфельд [10] подготовили подробную историческую справку о развитии ИНС.

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

Нейрон (нервная клетка) является особой биологической клеткой, которая обрабатывает информацию (рис. 1). Она состоит из тела клетки (cell body), или сомы (soma), и двух типов внешних древоподобных ветвей: аксона (axon) и дендритов (dendrites). Тело клетки включает ядро (nucleus), которое содержит информацию о наследственных свойствах, и плазму, обладающую молекулярными средствами для производства необходимых нейрону материалов. Нейрон получает сигналы (импульсы) от других нейронов через дендриты (приемники) и передает сигналы, сгенерированные телом клетки, вдоль аксона (передатчик), который в конце разветвляется на волокна (strands). На окончаниях этих волокон находятся синапсы (synapses).

Рис. 1. Схема биологического нейрона

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

Кора головного мозга человека является протяженной, образованной нейронами поверхностью толщиной от 2 до 3 мм с площадью около 2200 см 2 , что вдвое превышает площадь поверхности стандартной клавиатуры. Кора головного мозга содержит около 1011 нейронов, что приблизительно равно числу звезд Млечного пути [11]. Каждый нейрон связан с 103 — 104 другими нейронами. В целом мозг человека содержит приблизительно от 1014 до 1015 взаимосвязей.

Нейроны взаимодействуют посредством короткой серии импульсов, как правило, продолжительностью несколько мсек. Сообщение передается посредством частотно-импульсной модуляции. Частота может изменяться от нескольких единиц до сотен герц, что в миллион раз медленнее, чем самые быстродействующие переключательные электронные схемы. Тем не менее сложные решения по восприятию информации, как, например, распознавание лица, человек принимает за несколько сотен мс. Эти решения контролируются сетью нейронов, которые имеют скорость выполнения операций всего несколько мс. Это означает, что вычисления требуют не более 100 последовательных стадий. Другими словами, для таких сложных задач мозг «запускает» параллельные программы, содержащие около 100 шагов. Это известно как правило ста шагов [12]. Рассуждая аналогичным образом, можно обнаружить, что количество информации, посылаемое от одного нейрона другому, должно быть очень маленьким (несколько бит). Отсюда следует, что основная информация не передается непосредственно, а захватывается и распределяется в связях между нейронами. Этим объясняется такое название, как коннекционистская модель, применяемое к ИНС.

Основные понятия

Модель технического нейрона

МакКаллок и Питтс [4] предложили использовать бинарный пороговый элемент в качестве модели искусственного нейрона. Этот математический нейрон вычисляет взвешенную сумму n входных сигналов x j , j = 1, 2. n, и формирует на выходе сигнал величины 1, если эта сумма превышает определенный порог u, и 0 — в противном случае.

Часто удобно рассматривать u как весовой коэффициент, связанный с постоянным входом x = 1. Положительные веса соответствуют возбуждающим связям, а отрицательные — тормозным. МакКаллок и Питтс доказали, что при соответствующим образом подобранных весах совокупность параллельно функционирующих нейронов подобного типа способна выполнять универсальные вычисления. Здесь наблюдается определенная аналогия с биологическим нейроном: передачу сигнала и взаимосвязи имитируют аксоны и дендриты, веса связей соответствуют синапсам, а пороговая функция отражает активность сомы.

Архитектура нейронной сети

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

Рис. 2. Систематизация архитектур сетей прямого распространения и рекуррентных (с обратной связью)

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

Обучение

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

Для конструирования процесса обучения, прежде всего, необходимо иметь модель внешней среды, в которой функционирует нейронная сеть — знать доступную для сети информацию. Эта модель определяет парадигму обучения [3]. Во-вторых, необходимо понять, как модифицировать весовые параметры сети — какие правила обучения управляют процессом настройки. Алгоритм обучения означает процедуру, в которой используются правила обучения для настройки весов.

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

Теория обучения рассматривает три фундаментальных свойства, связанных с обучением по примерам: емкость, сложность образцов и вычислительная сложность. Под емкостью понимается, сколько образцов может запомнить сеть, и какие функции и границы принятия решений могут быть на ней сформированы. Сложность образцов определяет число обучающих примеров, необходимых для достижения способности сети к обобщению. Слишком малое число примеров может вызвать «переобученность» сети, когда она хорошо функционирует на примерах обучающей выборки, но плохо — на тестовых примерах, подчиненных тому же статистическому распределению. Известны 4 основных типа правил обучения: коррекция по ошибке, машина Больцмана, правило Хебба и обучение методом соревнования.

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

Обучение Больцмана. Представляет собой стохастическое правило обучения, которое следует из информационных теоретических и термодинамических принципов [10]. Целью обучения Больцмана является такая настройка весовых коэффициентов, при которой состояния видимых нейронов удовлетворяют желаемому распределению вероятностей. Обучение Больцмана может рассматриваться как специальный случай коррекции по ошибке, в котором под ошибкой понимается расхождение корреляций состояний в двух режимах .

Правило Хебба. Самым старым обучающим правилом является постулат обучения Хебба [13]. Хебб опирался на следующие нейрофизиологические наблюдения: если нейроны с обеих сторон синапса активизируются одновременно и регулярно, то сила синаптической связи возрастает. Важной особенностью этого правила является то, что изменение синаптического веса зависит только от активности нейронов, которые связаны данным синапсом. Это существенно упрощает цепи обучения в реализации VLSI.

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

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

Рис. 3. Пример обучения методом соревнования: (а) перед обучением; (б) после обучения

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

В Таблице 2 представлены различные алгоритмы обучения и связанные с ними архитектуры сетей (список не является исчерпывающим). В последней колонке перечислены задачи, для которых может быть применен каждый алгоритм. Каждый алгоритм обучения ориентирован на сеть определенной архитектуры и предназначен для ограниченного класса задач. Кроме рассмотренных, следует упомянуть некоторые другие алгоритмы: Adaline и Madaline [14], линейный дискриминантный анализ [15], проекции Саммона [15], анализ главных компонентов [2].

Таблица 2. Известные алгоритмы обучения

Парадигма Обучающее правило Архитектура Алгоритм обучения Задача
С учителем Коррекция ошибки Однослойный и многослойный перцептрон Алгоритмы обучения перцептрона
Обратное распространение
Adaline и Madaline
Классификация образов
Аппроксимация функций
Предскащание, управление
Больцман Рекуррентная Алгоритм обучения Больцмана Классификация образов
Хебб Многослойная прямого распространения Линейный дискриминантный анализ Анализ данных
Классификация образов
Соревнование Соревнование Векторное квантование Категоризация внутри класса Сжатие данных
Сеть ART ARTMap Классификация образов
Без учителя Коррекция ошибки Многослойная прямого распространения Проекция Саммона Категоризация внутри класса Анализ данных
Хебб Прямого распространения или соревнование Анализ главных компонентов Анализ данных
Сжатие данных
Сеть Хопфилда Обучение ассоциативной памяти Ассоциативная память
Соревнование Соревнование Векторное квантование Категоризация
Сжатие данных
SOM Кохонена SOM Кохонена Категоризация
Анализ данных
Сети ART ART1, ART2 Категоризация
Смешанная Коррекция ошибки и соревнование Сеть RBF Алгоритм обучения RBF Классификация образов
Аппроксимация функций
Предсказание, управление

Многослойные сети прямого распространения

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

Рис. 4. Типовая архитектура трехслойной сети прямого распространения

Многослойный перцептрон

Наиболее популярный класс многослойных сетей прямого распространения образуют многослойные перцептроны, в которых каждый вычислительный элемент использует пороговую или сигмоидальную функцию активации. Многослойный перцептрон может формировать сколь угодно сложные границы принятия решения и реализовывать произвольные булевы функции [6]. Разработка алгоритма обратного распространения для определения весов в многослойном перцептроне сделала эти сети наиболее популярными у исследователей и пользователей нейронных сетей. Геометрическая интерпретация [14] объясняет роль элементов скрытых слоев (используется пороговая активационная функция).

RBF-сети

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

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

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

Нерешенные проблемы

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

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

Самоорганизующиеся карты Кохонена

Самоорганизующиеся карты Кохонена (SOM) [16] обладают благоприятным свойством сохранения топологии, которое воспроизводит важный аспект карт признаков в коре головного мозга высокоорганизованных животных. В отображении с сохранением топологии близкие входные примеры возбуждают близкие выходные элементы. На рис. 2 показана основная архитектура сети SOM Кохонена. По существу она представляет собой двумерный массив элементов, причем каждый элемент связан со всеми n входными узлами.

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

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

Модели теории адаптивного резонанса

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

Карпентер и Гроссберг, разработавшие модели теории адаптивного резонанса (ART1, ART2 и ARTMAP) [17], сделали попытку решить эту дилемму. Сеть имеет достаточное число выходных элементов, но они не используются до тех пор, пока не возникнет в этом необходимость. Будем говорить, что элемент распределен (не распределен), если он используется (не используется). Обучающий алгоритм корректирует имеющийся прототип категории, только если входной вектор в достаточной степени ему подобен. В этом случае они резонируют. Степень подобия контролируется параметром сходства k, 0

Рис. 5. Сеть ART1

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

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


Сеть Хопфилда

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

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

Ассоциативная память

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

Ассоциативная память обычно работает в двух режимах: хранения и восстановления. В режиме хранения веса связей в сети определяются так, чтобы аттракторы запомнили набор p n-мерных образцов 1 , x 2 . x p ), которые должны быть сохранены. Во втором режиме входной пример используется как начальное состояние сети, и далее сеть эволюционирует согласно своей динамике. Выходной образец устанавливается, когда сеть достигает равновесия.

Сколько примеров могут быть сохранены в сети с n бинарными элементами? Другими словами, какова емкость памяти сети? Она конечна, так как сеть с n бинарными элементами имеет максимально 2n различных состояний, и не все из них являются аттракторами. Более того, не все аттракторы могут хранить полезные образцы. Ложные аттракторы могут также хранить образцы, но они отличаются от примеров обучающей выборки. Показано, что максимальное число случайных образцов, которые может хранить сеть Хопфилда, составляет Pmax ( 0.15 n. Когда число сохраняемых образцов p ( 0.15 n, достигается наиболее успешный вызов данных из памяти. Если запоминаемые образцы представлены ортогональными векторами (в отличие от случайных), то количество сохраненных в памяти образцов будет увеличиваться. Число ложных аттракторов возрастает, когда p достигает емкости сети. Несколько правил обучения предложено для увеличения емкости памяти сети Хопфилда [2]. Заметим, что в сети для хранения p n-битных примеров требуется реализовать 2n связей.

Минимизация энергии

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

Приложения

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

Система OCR

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

Схемы вычислений

На рис. 6 представлены две основные схемы использования ИНС в OCR системах. Первая выполняет явное извлечение характерных признаков (не обязательно на нейронной сети). Например, это могут быть признаки обхода по контуру. Выделенные признаки подаются на вход многослойной сети прямого распространения [19]. Эта схема отличается гибкостью в отношении использования большого разнообразия признаков. Другая схема не предусматривает явного выделения признаков из исходных данных. Извлечение признаков происходит неявно в скрытых слоях ИНС. Удобство этой схемы состоит в том, что выделение признаков и классификация объединены и обучение происходит одновременно, что дает оптимальный результат классификации. Однако схема требует большего размера сети, чем в первом случае.

Рис. 6. Две схемы применения ИНС в системах OCR

Типичный пример подобной интегрированной схемы рассмотрен Куном [20] для распознавания zip-кода.

Результаты

ИНС очень эффективно применяются в OCR-приложениях. Однако, нет убедительных доказательств их превосходства над соответствующими статистическими классификаторами. На первой конференции по OCR-системам в 1992 г. [18] более 40 систем распознавания рукописного текста были сопоставлены для одних и тех же данных. Из них 10 лучших использовали вариант многослойной сети прямого распространения или классификатор «ближайшего соседа». ИНС имеют тенденцию к превосходству по скорости и требуемой памяти по сравнению с методом «ближайшего соседа», в отличие от которого скорость классификации с применением ИНС не зависит от объема обучающей выборки. Точность распознавания лучших OCR-систем на базе данных предварительно сегментированных символов составила около 98% для цифр, 96% для заглавных букв и 87 — для строчных. (Низкая точность для строчных букв вызвана в значительной степени тем, что тестовые данные существенно отличались от тренировочных.) По данным теста можно сделать вывод, что на изолированных символах OCR система близка по точности к человеку. Однако человек опережает системы OCR на свободных от ограничений и рукописных документах.

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

Литература

1. DARPA Neural Network Study, AFCEA Int’l Press, Fairfax, Va., 1988.
2. J. Hertz, A. Krogh, and R.G. Palmer, Introduction to the Theory of Neural Computation, Addison-Wesley, Reading, Mass., 1991.
3. S. Haykin, Neural Networks: A Comprehensive Foundation, MacMillan College Publishing Co., New York, 1994.
4. W.S. McCulloch and W. Pitts, «A logical Calculus of Ideas Immanent in Nervous Activity», Bull. Mathematical Biophysics, Vol. 5, 1943, pp. 115-133.
5. R.Rosenblatt, «Principles of Neurodynamics», Spartan Books, New York, 1962.
6. M. Miтnsky and S. Papert, «Perceptrons: An Introduction to Computational Geometry», MIT Press, Cambridge, Mass., 1969.
7. J.J. Hopfield, «Neural Networks and Physical Systems with Emergent Collective Computational Abilities», in Proc. National Academy of Sciencies, USA 79, 1982, pp. 2554-2558.
8. P. Werbos, «Beyond Regression: New Tools for Prediction and Analysis in the Behavioral Sciences», Phd Thesis, Dept. of Applied Mathematics, Harvard University, Cambridge, Mass., 1974.
9. D.E. Rumelhart and J.L. McClelland, Parallel Distributed Processing: Exploration in the Microstructure of Cognition, MIT Press, Cambridge, Mass., 1986.
10. J.A. Anderson and E. Rosenfeld, «Neurocomputing: Foundation of Research», MIT Press, Cambridge, Mass., 1988.
11. S. Brunak and B. Lautrup, Neural Networks, Computers with Intuition, World Scientific, Singapore, 1990.
12. J. Feldman, M.A. Fanty, and N.H. Goddard, «Computing with Structured Neural Networks», Computer, Vol. 21, No. 3, Mar.1988, pp. 91-103.
13. D.O. Hebb, The Organization of Behavior, John Wiley & Sons, New York, 1949.
14. R.P.Lippmann, «An Introduction to Computing with Neural Nets», IEEE ASSP Magazine, Vol.4, No.2, Apr. 1987, pp. 4-22.
15. A.K. Jain and J. Mao, «Neural Networks and Pattern Recognition», in Computational Intelligence: Imitating Life, J.M. Zurada, R.J. Marks II, and C.J. Robinson, eds., IEEE Press, Piscataway, N.J., 1994, pp. 194-212.
16. T. Kohonen, SelfOrganization and Associative Memory, Third Edition, Springer-Verlag, New York, 1989.
17. G.A.Carpenter and S. Grossberg, Pattern Recognition by SelfOrganizing Neural Networks, MIT Press, Cambridge, Mass., 1991.
18. «The First Census Optical Character Recognition System Conference», R.A.Wilkinson et al., eds., . Tech. Report, NISTIR 4912, US Deop. Commerse, NIST, Gaithersburg, Md., 1992.
19. K. Mohiuddin and J. Mao, «A Comparative Study of Different Classifiers for Handprinted Character Recognition», in Pattern Recognition in Practice IV, E.S. Gelsema and L.N. Kanal, eds., Elsevier Science, The Netherlands, 1994, pp. 437-448.
20. Y.Le Cun et al., «Back-Propagation Applied to Handwritten Zip Code Recognition», Neural Computation, Vol 1, 1989, pp. 541-551.
21. M. Minsky, «Logical Versus Analogical or Symbolic Versus Connectionist or Neat Versus Scruffy», AI Magazine, Vol. 65, No. 2, 1991, pp. 34-51.

Анил К. Джейн (jain@cps.msu.edu) — Мичиганский университет; Жианчанг Мао, К М. Моиуддин — Исследовательский Центр IBM в Альмадене.

Поделитесь материалом с коллегами и друзьями

Нейронные сети: виды, принцип работы и области применения

Содержание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Это не единственные варианты классификации сетей.

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

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

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

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

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

Таким образом, нейронные сети находят широкое применение в следующих областях:

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

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

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

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

Уважаемые посетители, сохраните эту статью в социальных сетях. Мы публикуем очень полезные статьи, которые помогут Вам в вашем деле. Поделитесь! Жмите!

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

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

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

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

При этом веса выставляются в случайном порядке.

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

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

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

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

  • Линейная функция f(x) = x, самая простая из всех возможных, используется только для тестирования созданной нейронной сети или передачи данных в исходном виде.
  • Сигмоид считается самой распространённой функцией активации и имеет вид f(x) = 1 / 1+e–×; при этом диапазон её значений от 0 до 1. Она ещё называется логистической функцией.
  • Чтобы охватить и отрицательные значения используют гиперболический тангенс. F(x) = e²× – 1 / e²× + 1 — такой вид имеет эта функция и диапазон который она имеет от -1 до 1. Если нейронная сеть не предусматривает использование отрицательных значений, то использовать её не стоит.

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

Интеграция — это счётчик, который увеличивается с каждым тренировочным сетом.

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

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

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

Длина статьи зависит от специфики и тематики сайта. Узнай здесь, какая она должна быть для интернет-магазина.

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

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

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

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

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

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

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

Наличие нейрона смещения позволит исправить ситуацию и получить иной результат. Целесообразность использования нейронов смещения определяется путём тестирования сети с ними и без них и сравнения результатов.

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

Нейронные сети, перцептрон

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

Основные принципы работы нейронных сетей были описаны еще в 1943 году Уорреном Мак-Каллоком и Уолтером Питтсом [1] . В 1957 году нейрофизиолог Фрэнк Розенблатт разработал первую нейронную сеть [2] , а в 2010 году большие объемы данных для обучения открыли возможность использовать нейронные сети для машинного обучения.

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


Содержание

Структура нейронной сети [ править ]

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

Для построения искусственной нейронной сети будем использовать ту же структуру. Как и биологическая нейронная сеть, искусственная состоит из нейронов, взаимодействующих между собой, однако представляет собой упрощенную модель. Так, например, искусственный нейрон, из которых состоит ИНС, имеет намного более простую структуру: у него есть несколько входов, на которых он принимает различные сигналы, преобразует их и передает другим нейронам. Другими словами, искусственный нейрон — это такая функция [math]\mathbb^n \rightarrow \mathbb[/math] , которая преобразует несколько входных параметров в один выходной.

Как видно на рисунке справа, у нейрона есть [math]n[/math] входов [math]x_i[/math] , у каждого из которого есть вес [math]w_i[/math] , на который умножается сигнал, проходящий по связи. После этого взвешенные сигналы [math]x_i \cdot w_i[/math] направляются в сумматор, который аггрегирует все сигналы во взвешенную сумму. Эту сумму также называют [math]net[/math] . Таким образом, [math]net = \sum_^ w_i \cdot x_i = w^T \cdot x[/math] .

Просто так передавать взвешенную сумму [math]net[/math] на выход достаточно бессмысленно — нейрон должен ее как-то обработать и сформировать адекватный выходной сигнал. Для этих целей используют функцию активации, которая преобразует взвешенную сумму в какое-то число, которое и будет являться выходом нейрона. Функция активации обозначается [math]\phi(net)[/math] . Таким образом, выходов искусственного нейрона является [math]\phi(net)[/math] .

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

Виды нейронных сетей [ править ]

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

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

Однослойные нейронные сети [ править ]

Однослойная нейронная сеть (англ. Single-layer neural network) — сеть, в которой сигналы от входного слоя сразу подаются на выходной слой, который и преобразует сигнал и сразу же выдает ответ.

Как видно из схемы однослойной нейронной сети, представленной справа, сигналы [math]x_1, x_2, \ldots x_n[/math] поступают на входной слой (который не считается за слой нейронной сети), а затем сигналы распределяются на выходной слой обычных нейронов. На каждом ребре от нейрона входного слоя к нейрону выходного слоя написано число — вес соответствующей связи.

Многослойные нейронные сети [ править ]

Многослойная нейронная сеть (англ. Multilayer neural network) — нейронная сеть, состоящая из входного, выходного и расположенного(ых) между ними одного (нескольких) скрытых слоев нейронов.

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

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

Сети прямого распространения [ править ]

Сети прямого распространения (англ. Feedforward neural network) (feedforward сети) — искусственные нейронные сети, в которых сигнал распространяется строго от входного слоя к выходному. В обратном направлении сигнал не распространяется.

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

Однако сигнал в нейронных сетях может идти и в обратную сторону.

Сети с обратными связями [ править ]

Сети с обратными связями (англ. Recurrent neural network) — искусственные нейронные сети, в которых выход нейрона может вновь подаваться на его вход. В более общем случае это означает возможность распространения сигнала от выходов к входам.

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

Обучение нейронной сети [ править ]

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

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

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

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

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

Тестовая выборка — конечный набор входных сигналов (иногда вместе с правильными выходными сигналами), по которым происходит оценка качества работы сети.

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

Перцептрон [ править ]

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

История [ править ]

Идею перцептрона предложил нейрофизиолог Фрэнк Розенблатт. Он предложил схему устройства, моделирующего процесс человеческого восприятия, и назвал его «перцептроном» (от латинского perceptio — восприятие). В 1960 году Розенблатт представил первый нейрокомпьютер — «Марк-1», который был способен распознавать некоторые буквы английского алфавита.

Таким образом перцептрон является одной из первых моделей нейросетей, а «Марк-1» — первым в мире нейрокомпьютером.

Описание [ править ]

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

Принцип работы перцептрона следующий:

  1. Первыми в работу включаются S-элементы. Они могут находиться либо в состоянии покоя (сигнал равен ), либо в состоянии возбуждения (сигнал равен 1);
  2. Далее сигналы от S-элементов передаются A-элементам по так называемым S-A связям. Эти связи могут иметь веса, равные только -1, или 1;
  3. Затем сигналы от сенсорных элементов, прошедших по S-A связям, попадают в A-элементы, которые еще называют ассоциативными элементами;
    • Одному A-элементу может соответствовать несколько S-элементов;
    • Если сигналы, поступившие на A-элемент, в совокупности превышают некоторый его порог ​ [math]\theta[/math] ​, то этот A-элемент возбуждается и выдает сигнал, равный 1;
    • В противном случае (сигнал от S-элементов не превысил порога A-элемента), генерируется нулевой сигнал;
  4. Далее сигналы, которые произвели возбужденные A-элементы, направляются к сумматору (R-элемент), действие которого нам уже известно. Однако, чтобы добраться до R-элемента, они проходят по A-R связям, у которых тоже есть веса (которые уже могут принимать любые значения, в отличие от S-A связей);
  5. R-элемент складывает друг с другом взвешенные сигналы от A-элементов, а затем
    • если превышен определенный порог, генерирует выходной сигнал, равный 1;
    • eсли порог не превышен, то выход перцептрона равен -1.

Для элементов перцептрона используют следующие названия:

  • S-элементы называют сенсорами;
  • A-элементы называют ассоциативными;
  • R-элементы называют реагирующими.

Классификация перцептронов [ править ]

Перцептрон с одним скрытым слоем (элементарный перцептрон, англ. elementary perceptron) — перцептрон, у которого имеется только по одному слою S, A и R элементов.

Однослойный персептрон (англ. Single-layer perceptron) — перцептрон, каждый S-элемент которого однозначно соответствует одному А-элементу, S-A связи всегда имеют вес 1, а порог любого А-элемента равен 1. Часть однослойного персептрона соответствует модели искусственного нейрона.

Его ключевая особенность состоит в том, что каждый S-элемент однозначно соответствует одному A-элементу, все S-A связи имеют вес, равный +1, а порог A элементов равен 1. Часть однослойного перцептрона, не содержащая входы, соответствует искусственному нейрону, как показано на картинке. Таким образом, однослойный перцептрон — это искусственный нейрон, который на вход принимает только и 1.

Однослойный персептрон также может быть и элементарным персептроном, у которого только по одному слою S,A,R-элементов.

Многослойный перцептрон по Розенблатту (англ. Rosenblatt multilayer perceptron) — перцептрон, который содержит более 1 слоя А-элементов.

Многослойный перцептрон по Румельхарту (англ. Rumelhart multilater perceptron) — частный случай многослойного персептрона по Розенблатту, с двумя особенностями:

  • S-A связи могут иметь произвольные веса и обучаться наравне с A-R связями;
  • Обучение производится по специальному алгоритму, который называется обучением по методу обратного распространения ошибки.

Обучение перцептрона [ править ]

Задача обучения перцептрона — подобрать такие [math]w_0, w_1, w_2, \ldots, w_n[/math] , чтобы [math]sign(\sigma(w_0 + w_1 \cdot x_1 + w_2 \cdot x_2 + \ldots + w_n \cdot x_n))[/math] как можно чаще совпадал с [math]y(x)[/math] — значением в обучающей выборке (здесь [math]\sigma[/math] — функция активации). Для удобства, чтобы не тащить за собой свободный член [math]w_0[/math] , добавим в вектор $x$ лишнюю «виртуальную размерность» и будем считать, что [math]x = (1, x_1, x_2, \ldots, x_n)[/math] . Тогда [math]w_0 + w_1 \cdot x_1 + w_2 \cdot x_2 + \ldots + w_n \cdot x_n[/math] можно заменить на [math]w^T \cdot x[/math] .

Чтобы обучать эту функцию, сначала надо выбрать функцию ошибки, которую потом можно оптимизировать градиентным спуском. Число неверно классифицированных примеров не подходит на эту кандидатуру, потому что эта функция кусочно-гладкая, с массой разрывов: она будет принимать только целые значения и резко меняться при переходе от одного числа неверно классифицированных примеров к другому. Поэтому использовать будем другую функцию, так называемый критерий перцептрона: [math]E_P(w) = -\sum_ y(x)(\sigma(w^T \cdot x))[/math] , где [math]M[/math] — множество примеров, которые перцептрон с весами [math]w[/math] классифицирует неправильно.

Иначе говоря, мы минимизируем суммарное отклонение наших ответов от правильных, но только в неправильную сторону; верный ответ ничего не вносит в функцию ошибки. Умножение на [math]y(x)[/math] здесь нужно для того, чтобы знак произведения всегда получался отрицательным: если правильный ответ −1, значит, перцептрон выдал положительное число (иначе бы ответ был верным), и наоборот. В результате у нас получилась кусочно-линейная функция, дифференцируемая почти везде, а этого вполне достаточно.

Теперь [math]E_P(w)[/math] можно оптимизировать градиентным спуском. На очередном шаге получаем: [math]w^ <(\tau+1)>= w^ <(\tau)>− \eta\triangledown_w E_P(w)[/math] .

Алгоритм такой — мы последовательно проходим примеры [math]x_1, x_2, \ldots[/math] из обучающего множества, и для каждого [math]x_n[/math] :

  • если он классифицирован правильно, не меняем ничего;
  • а если неправильно, прибавляем [math]\eta \triangledown_w E_P(w)[/math] .

Ошибка на примере [math]x_n[/math] при этом, очевидно, уменьшается, но, конечно, совершенно никто не гарантирует, что вместе с тем не увеличится ошибка от других примеров. Это правило обновления весов так и называется — правило обучения перцептрона, и это было основной математической идеей работы Розенблатта.

Применение [ править ]

  • Решение задач классификации, если объекты классификации обладают свойством линейной разделимости;
  • Прогнозирование и распознавание образов;
  • Управление агентами [3] .

Примеры кода [ править ]

Пример использования с помощью scikit-learn [4] [ править ]

Будем классифицировать с помощью перцептрона датасет MNIST [5] .

Шпаргалка по разновидностям нейронных сетей. Часть первая. Элементарные конфигурации

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

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

Стоит заметить, что хотя большинство этих аббревиатур общеприняты, есть и исключения. Под RNN иногда подразумевают рекурсивную нейронную сеть, но обычно имеют в виду рекуррентную. Также можно часто встретить использование аббревиатуры RNN, когда речь идёт про любую рекуррентную НС. Автокодировщики также сталкиваются с этой проблемой, когда вариационные и шумоподавляющие автокодировщики (VAE, DAE) называют просто автокодировщиками (AE). Кроме того, во многих аббревиатурах различается количество букв “N” в конце, поскольку в каких-то случаях используется “neural network”, а в каких-то — просто “network”.

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

Нейронные сети прямого распространения (feed forward neural networks, FF или FFNN) и перцептроны (perceptrons, P) очень прямолинейны, они передают информацию от входа к выходу. Нейронные сети часто описываются в виде слоёного торта, где каждый слой состоит из входных, скрытых или выходных клеток. Клетки одного слоя не связаны между собой, а соседние слои обычно полностью связаны. Самая простая нейронная сеть имеет две входных клетки и одну выходную, и может использоваться в качестве модели логических вентилей. FFNN обычно обучается по методу обратного распространения ошибки, в котором сеть получает множества входных и выходных данных. Этот процесс называется обучением с учителем, и он отличается от обучения без учителя тем, что во втором случае множество выходных данных сеть составляет самостоятельно. Вышеупомянутая ошибка является разницей между вводом и выводом. Если у сети есть достаточное количество скрытых нейронов, она теоретически способна смоделировать взаимодействие между входным и выходными данными. Практически такие сети используются редко, но их часто комбинируют с другими типами для получения новых.

Сети радиально-базисных функций (radial basis function, RBF) — это FFNN, которая использует радиальные базисные функции как функции активации. Больше она ничем не выделяется ��

Нейронная сеть Хопфилда (Hopfield network, HN) — это полносвязная нейронная сеть с симметричной матрицей связей. Во время получения входных данных каждый узел является входом, в процессе обучения он становится скрытым, а затем становится выходом. Сеть обучается так: значения нейронов устанавливаются в соответствии с желаемым шаблоном, после чего вычисляются веса, которые в дальнейшем не меняются. После того, как сеть обучилась на одном или нескольких шаблонах, она всегда будет сводиться к одному из них (но не всегда — к желаемому). Она стабилизируется в зависимости от общей “энергии” и “температуры” сети. У каждого нейрона есть свой порог активации, зависящий от температуры, при прохождении которого нейрон принимает одно из двух значений (обычно -1 или 1, иногда 0 или 1). Такая сеть часто называется сетью с ассоциативной памятью; как человек, видя половину таблицы, может представить вторую половину таблицы, так и эта сеть, получая таблицу, наполовину зашумленную, восстанавливает её до полной.

Цепи Маркова (Markov chains, MC или discrete time Markov Chains, DTMC) — это предшественники машин Больцмана (BM) и сетей Хопфилда (HN). Их смысл можно объяснить так: каковы мои шансы попасть в один из следующих узлов, если я нахожусь в данном? Каждое следующее состояние зависит только от предыдущего. Хотя на самом деле цепи Маркова не являются НС, они весьма похожи. Также цепи Маркова не обязательно полносвязны.

Машина Больцмана (Boltzmann machine, BM) очень похожа на сеть Хопфилда, но в ней некоторые нейроны помечены как входные, а некоторые — как скрытые. Входные нейроны в дальнейшем становятся выходными. Машина Больцмана — это стохастическая сеть. Обучение проходит по методу обратного распространения ошибки или по алгоритму сравнительной расходимости. В целом процесс обучения очень похож на таковой у сети Хопфилда.

Ограниченная машина Больцмана (restricted Boltzmann machine, RBM) удивительно похожа на машину Больцмана и, следовательно, на сеть Хопфилда. Единственной разницей является её ограниченность. В ней нейроны одного типа не связаны между собой. Ограниченную машину Больцмана можно обучать как FFNN, но с одним нюансом: вместо прямой передачи данных и обратного распространения ошибки нужно передавать данные сперва в прямом направлении, затем в обратном. После этого проходит обучение по методу прямого и обратного распространения ошибки.

Автокодировщик (autoencoder, AE) чем-то похож на FFNN, так как это скорее другой способ использования FFNN, нежели фундаментально другая архитектура. Основной идеей является автоматическое кодирование (в смысле сжатия, не шифрования) информации. Сама сеть по форме напоминает песочные часы, в ней скрытые слои меньше входного и выходного, причём она симметрична. Сеть можно обучить методом обратного распространения ошибки, подавая входные данные и задавая ошибку равной разнице между входом и выходом.

Разреженный автокодировщик (sparse autoencoder, SAE) — в каком-то смысле противоположность обычного. Вместо того, чтобы обучать сеть отображать информацию в меньшем “объёме” узлов, мы увеличиваем их количество. Вместо того, чтобы сужаться к центру, сеть там раздувается. Сети такого типа полезны для работы с большим количеством мелких свойств набора данных. Если обучать сеть как обычный автокодировщик, ничего полезного не выйдет. Поэтому кроме входных данных подаётся ещё и специальный фильтр разреженности, который пропускает только определённые ошибки.

Вариационные автокодировщики (variational autoencoder, VAE) обладают схожей с AE архитектурой, но обучают их иному: приближению вероятностного распределения входных образцов. В этом они берут начало от машин Больцмана. Тем не менее, они опираются на байесовскую математику, когда речь идёт о вероятностных выводах и независимости, которые интуитивно понятны, но сложны в реализации. Если обобщить, то можно сказать что эта сеть принимает в расчёт влияния нейронов. Если что-то одно происходит в одном месте, а что-то другое – в другом, то эти события не обязательно связаны, и это должно учитываться.

Шумоподавляющие автокодировщики (denoising autoencoder, DAE) — это AE, в которые входные данные подаются в зашумленном состоянии. Ошибку мы вычисляем так же, и выходные данные сравниваются с зашумленными. Благодаря этому сеть учится обращать внимание на более широкие свойства, поскольку маленькие могут изменяться вместе с шумом.

Сеть типа “deep belief” (deep belief networks, DBN) — это название, которое получил тип архитектуры, в которой сеть состоит из нескольких соединённых RBM или VAE. Такие сети обучаются поблочно, причём каждому блоку требуется лишь уметь закодировать предыдущий. Такая техника называется “жадным обучением”, которая заключается в выборе локальных оптимальных решений, не гарантирующих оптимальный конечный результат. Также сеть можно обучить (методом обратного распространения ошибки) отображать данные в виде вероятностной модели. Если использовать обучение без учителя, стабилизированную модель можно использовать для генерации новых данных.

Свёрточные нейронные сети (convolutional neural networks, CNN) и глубинные свёрточные нейронные сети (deep convolutional neural networks, DCNN) сильно отличаются от других видов сетей. Обычно они используются для обработки изображений, реже для аудио. Типичным способом применения CNN является классификация изображений: если на изображении есть кошка, сеть выдаст “кошка”, если есть собака — “собака”. Такие сети обычно используют “сканер”, не парсящий все данные за один раз. Например, если у вас есть изображение 200×200, вы не будете сразу обрабатывать все 40 тысяч пикселей. Вместо это сеть считает квадрат размера 20 x 20 (обычно из левого верхнего угла), затем сдвинется на 1 пиксель и считает новый квадрат, и т.д. Эти входные данные затем передаются через свёрточные слои, в которых не все узлы соединены между собой. Эти слои имеют свойство сжиматься с глубиной, причём часто используются степени двойки: 32, 16, 8, 4, 2, 1. На практике к концу CNN прикрепляют FFNN для дальнейшей обработки данных. Такие сети называются глубинными (DCNN).

Развёртывающие нейронные сети (deconvolutional networks, DN), также называемые обратными графическими сетями, являются обратным к свёрточным нейронным сетям. Представьте, что вы передаёте сети слово “кошка”, а она генерирует картинки с кошками, похожие на реальные изображения котов. DNN тоже можно объединять с FFNN. Стоит заметить, что в большинстве случаев сети передаётся не строка, а какой бинарный вектор: например, — это кошка, — собака, а — и кошка, и собака.

Илон Маск рекомендует:  TStringList - Тип Delphi
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL