Электронная библиотека книг Александра Фролова и Григория Фролова.
 
Библиотека
Братьев
Фроловых
Электронная библиотека книг Александра Фролова и Григория Фролова.
Библиотека системного программиста
Программирование на JAVA
ПК. Шаг за шагом
Другие книги
Восстановление данных
Антивирусная защита
Статьи для
программистов
Пользователю компьютера
[Назад] [Содержание] [Дальше]

Синтез и распознавание речи. Современные решения


А.В. Фролов, Г.В. Фролов

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

Как устроен головной мозг человека. 2

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

Дендриты, синапсы и аксоны.. 2

Передача возбуждения и торможения. 3

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

Входы нейрона. 4

Весовые коэффициенты и память нейрона. 4

Сумматор. 4

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

Линейная функция активации. 5

Пороговая функция активации. 5

Сигмоидная функция. 6

Схематическое изображение нейрона. 6

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

Однослойная нейронная сеть. 7

Персептрон Розенблатта. 8

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

Нейронные сети с обратными связями. 10

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

Задача распознавания объектов. 11

Обучение персептрона. 13

Проблемы с обучением нейронных сетей. 14

Обучение с учителем и без учителя. 15

Детерминистский и стохастический метод. 15

Эксперименты с персептроном.. 15

Запуск программы и обучение нейронной сети. 16

Тестирование нейронной сети. 17

Распознавание. 18

Итоги главы.. 18

 

4. Введение в нейронные сети

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

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

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

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

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

Тех же, кто желает изучить вопросы проектирования и использования искусственных нейронных сетей более детально, мы адресуем к дополнительной литературе [11]-[15].

Как устроен головной мозг человека

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

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

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

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

Дендриты, синапсы и аксоны

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

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

Схема соединения двух нейронов [11] показана на рис. 4-1.

Рис. 4-1. Нейрон, аксоны, синапсы и дендриты

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

Передача возбуждения и торможения

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

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

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

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

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

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

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

Входные сигналы поступают в наш искусственный нейрон (в дальнейшем — просто нейрон) через контакты, обозначенные на этой схеме X1…Xn.

Рис. 4-2. Искусственный нейрон

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

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

Рассмотрим эту схему подробнее.

Входы нейрона

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

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

Весовые коэффициенты и память нейрона

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

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

Хотя на рис. 4-2 это не показано, модель нейрона предполагает хранение значений весовых коэффициентов и их изменение. Настраивая весовые коэффициенты нейрона, мы можем изменять его реакцию на тот или иной набор воздействий со стороны входов X1…Xn.

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

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

Сумматор

Сумматор в схеме искусственного нейрона (рис. 4-2) выполняет простую задачу. Он складывает значения, образующиеся при умножении вектора входных значений [X1, X2, …, Xn] на вектор весовых коэффициентов [W1, W2, …, Wn].

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

X1*W1 + X2*W2 + … + Xn*Wn

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

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

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

Таким образом, если обозначить функцию активации как F, выходной сигнал Y нейрона зависит от вектора входных значений [X1, X2, …, Xn] и вектора весовых коэффициентов [W1, W2, …, Wn] следующим образом:

Y = F(X1*W1 + X2*W2 + … + Xn*Wn)

На практике используются разные функции активации, позволяющие изменить поведение нейрона, например, линейная, пороговая, сигмоидная и др. Рассмотрим кратко для примера некоторые из этих функций. Более полное описание Вы найдете, например, в [12]

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

График линейной функции активации показан на рис. 4-3. Как видите, этот график представляет собой прямую линию, угол наклона которой зависит от константы k, а величина сдвига по горизонтальной оси координат — от константы t.

Рис. 4-3. Линейная функция активации

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

Y = k * (X1*W1 + X2*W2 + … + Xn*Wn - t)

Константа t называется порогом нейрона [12]. Изменяя порог нейрона, можно сдвигать функцию активации по оси абсцисс.

Пороговая функция активации

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

Используют два варианта пороговой функции — пороговую биполярную функцию активации и пороговую бинарную функцию активации.

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

Рис. 4-4. Пороговая биполярная функция активации

Помимо биполярной пороговой функции активации применяется так называемая бинарная пороговая функция активации. Она может принимать значения 0 или 1, как это показано на рис. 4-5.

Рис. 4-5. Пороговая бинарная функция активации

Сигмоидная функция

Сигмоидная функция изменяет свое значение в диапазоне от 0 до 1, как это показано на рис. 4-6.

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

Рис. 4-6. Сигмоидная функция активации

Существует и так называемая биполярная сигмоидная функция активации, принимающая значения в диапазоне от –1 до 1 (рис. 4-7).

Рис. 4-7. Сигмоидная биполярная функция активации

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

Как видите, модель нейрона достаточно проста. Существует немало реализаций этой модели, как аппаратных, так и программных. Аппаратные реализации модели нейрона хорошо описаны в [13]. Там же Вы найдете и ссылки на программные реализации искусственного нейрона.

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

·         набор входов [X1, X2, …, Xn], на которые попадают входные сигналы;

·         вектор весовых коэффициентов [W1, W2, …, Wn], определяющих реакцию нейрона на возбуждение от входных сигналов;

·         сумматор, формирующий из всех входных сигналов взвешенную сумму с использованием коэффициентов [W1, W2, …, Wn];

·         функцию активации, формирующую из взвешенной суммы входных сигналов выходное значение.

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

Рис. 4-8. Схематическое обозначение нейрона

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

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

И, наконец, выход нейрона обозначен как Y.

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

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

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

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

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

Однослойная нейронная сеть

Простейшая нейронная сеть состоит из одного слоя нейронов. Соответствующая топология нейронной сети показана на рис. 4-9.

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

Слой нейронов — это такой набор нейронов, на которые в каждый момент времени параллельно поступает информация от других нейронных элементов сети [12]. Таким образом, элементы, обозначенные на рис. 4-9 цифрами от 1 до m представляют собой слой нейронов.

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

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

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

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

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

Персептрон Розенблатта

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

Такая сеть состоит из трех слоев, показанных на рис. 4-10.

Рис. 4-10. Топология персептрона Розенблатта

Слой, обозначенный как S1…Sn, — это входной сенсорный слой. Его назначение состоит в том, чтобы воспринимать входные сигналы.

Слой A1…Am называется ассоциативным. Именно здесь происходит непосредственная обработка информации.

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

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

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

Структура такой многослойной сети показана на рис. 4-11.

Рис. 4-11. Многослойная нейронная сеть

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

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

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

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

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

На рис. 4-12 мы показали структуру нейронной сети с обратными связями. Как видно на этом рисунке, сигналы с выходов сети попадают обратно на ее входы. При этом выходные сигналы смешиваются с входными сигналами.

Рис. 4-12. Нейронная сеть с обратными связями

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

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

Рис. 4-13. Нейронная сеть с обратными связями и задержками

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

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

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

Сама по себе задача моделирования нейронных сетей при помощи компьютерных программ не представляет особой сложности. В Интернете можно найти немало программ моделирования нейронных сетей  (попробуйте поискать по ключевым словам «Neural networks» и «нейронные сети»). Некоторые из них бесплатны, другие стоять довольно дорого, до тысяч долларов. Если Вы знакомы с программированием, то без особого труда сможете смоделировать такую сеть самостоятельно, например, на языках программирования C++, C# или других объектно-ориентированных языках.

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

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

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

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

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

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

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

Задача распознавания объектов

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

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

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

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

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

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

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

Рис. 4-14. Классификация по температуре и давлению

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

Итак, мы решили простейшую задачу классификации объектов по двум параметрам, и представили на рис. 4-14 это решение в графическом виде.

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

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

Рис. 4-15. Классификация по трем параметрам

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

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

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

Обучение персептрона

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

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

Рис. 4-16. Использование персептрона для распознавания цифр

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

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

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

Как выполняется настройка?

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

Рассмотрим процесс настройки весовых коэффициентов подробнее.

На первом этапе в качестве начальных значений весовых коэффициентов используются случайные числа. Далее персептрону предъявляется цифра 1, и проверяются значения сигналов на выходе эффекторного слоя Y1…Y10.

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

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

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

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

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

Проблемы с обучением нейронных сетей

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

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

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

Почему такое происходит?

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

Сказанное иллюстрирует рис. 4-17.

Рис. 4-17. Поиск экстремума функции

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

Если поиск экстремума выполняется от точки, обозначенной на рис. 4-17 буквой a, то при движении по графику вправо будет обнаружен локальный минимум Xmin1. Если же при поиске экстремума движение будет происходить из точки b влево, то будет обнаружен локальный минимум Xmin3. В любом из этих случаев глобальный минимум функции, который находится в точке Xmin2, то он так и не будет обнаружен. В [11] упомянут способ решения проблемы локальных экстремумов.

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

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

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

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

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

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

Детерминистский и стохастический метод

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

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

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

Эксперименты с персептроном

Возможно, Вы уже устали от теории и хотели бы испытать нейронные сети в работе. В этом разделе мы расскажем Вам об очень интересной бесплатной реализации персептрона, созданной Константином Букреевым (konstantin@mail.primorye.ru).

Программа Константина Букреева называется GestureApp, и ее можно загрузить из каталогов программ Интернета по адресам www.codeproject.com или www.codeguru.com вместе с описанием и исходными текстами. Исходные тексты этой программы составлены на языке C++ для системы разработки приложений Microsoft Visual Studio 6.0.

Данная программа способна распознавать фигуры, показанные на рис. 4-18.

Рис. 4-18. Набор распознаваемых фигур

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

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

Запуск программы и обучение нейронной сети

Загрузив архив программы GestureApp, распакуйте его и запустите на выполнение файл GestureApp.exe. После этого на экране появится главное окно программы, показанное на рис. 4‑19.

Рис. 4-19. Главное окно программы GestureApp

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

Первым делом Вы должны обучить сеть, запустив встроенную в программу процедуру обучения. Для этого выберите из меню Neural Net строку Train. На экране появится диалоговое окно Trainings Options, при помощи которого можно выбрать параметры обучения нейронной сети (рис. 4-20).

Рис. 4-20. Выбор параметров обучения

При первом испытании оставьте значения параметров обучения, выбранные по умолчанию. Далее Вы сможете экспериментировать: изменять максимальное количество циклов обучения Max Cycles, устанавливать скорость обучения Learnings Rate, изменять инерционность Momentum и минимальное значение среднеквадратичной ошибки Minimum Error. Для того чтобы ориентироваться в назначении всех параметров обучения, Вам необходимо обратиться к дополнительной литературе, в которой описаны детали обучения методом обратного распространения, например, к [11].

После выбора параметров обучения щелкните кнопку OK.

Начнется процесс обучения, ход которого можно будет наблюдать в главном окне программы (рис. 4-21).

Рис. 4-21. Обучение нейронной сети завершено

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

Тестирование нейронной сети

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

Для запуска тестирования выберите из меню Neural Net строку Test. На экране появится диалоговое окно параметров тестирования, показанное на рис. 4-22.

Рис. 4-22. Выбор параметров тестирования

Здесь, отметив флажок Use only selected patterns, можно выбрать рисунки, для которых выполняется тестирование. Если этот флажок не отмечать, тестирование пройдет по всем рисункам. С помощью движков Speed и Noise можно регулировать, соответственно, минимальную скорость и минимальный уровень шума. В поле Repeat можно дополнительно задать количество циклов тестирования.

Выбрав параметры тестирования, щелкните кнопку OK. Начнется процесс тестирования.

Результаты тестирования будут показаны в главном окне приложения (рис. 4-23).

Рис. 4-23. Тестирование завершено

Распознавание

Теперь начнем испытывать самую интересную возможность программы GestureApp — распознавание фигур.

Выберите из меню Neural Net строку Recognize. Далее правой клавишей мыши рисуйте в окне программы геометрические фигуры, как это показано на рис. 4-24.

Рис. 4-24. Успешное распознавание зигзага

Если программа сумеет распознать Ваш рисунок, она покажет этот рисунок в правом нижнем углу окна. Кроме того, в левом верхнем углу появится название рисунка.

Итоги главы

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

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

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

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

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

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

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

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

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

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

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

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

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

[Назад] [Содержание] [Дальше]


Создание интернет-магазинов: http://www.shop2you.ru/ © Александр Фролов, Григорий Фролов, 1991-2016