86115

Эффективность применения нейросетевых алгоритмов в задаче автоматического распознавания речи

Дипломная

Информатика, кибернетика и программирование

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

Русский

2015-04-03

790.5 KB

20 чел.

76

РЕФЕРАТ

Дипломная работа : 80 стр,  23 рисунка, 2 таблицы.

Наиболее часто встречаемые слова:

ИСКУССТВЕННЫЕ НЕЙРОННЫЕ СЕТИ, НЕЙРОСЕТЕВЫЕ АЛГОРИТМЫ, ОБРАБОТКА ЗВУКА, РАСПОЗНАВАНИЕ РЕЧИ,САМООБУЧЕНИЕ;

(ARTIFICIAL NEURAL NETS, NEUROCOMPUTING, SOUND PROCESSING, SPEECH RECOGNITION, SELF-LEARNING)

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

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

Разрабатываемая система может применяться как инструмент для проведения исследований в данной предметной области, для демонстрации принципов работы нейросетей.
СОДЕРЖАНИЕ

[0.1]
РАЗДЕЛ 1.  НЕЙРОСЕТЕВЫЕ ТЕХНОЛОГИИ НА           СОВРЕМЕННОМ ЭТАПЕ

[0.1.1] 1.1  Нейрокомпьютеры и их место среди  высокопроизводительных ЭВМ

[0.1.2] 1.2 Методы моделирования нейронных сетей.

[0.1.3] 1.3 Самообучающиеся системы

[0.2] Предположим, входной сигнал задается вектором первичных признаков в N-мерном пространстве. Для хранения такого сигнала необходимо N элементов. При этом на этапе разработки мы не знаем специфики сигнала или она настолько сложна, что учесть её затруднительно. Это приводит к тому, что представление сигнала, которое мы используем, избыточно. Далее предположим, что у нас есть возможность синтезировать такие же сигналы (т.е. синтезировать речь), но при этом синтезируемый сигнал является функцией вектора параметров в M-мерном пространстве, и M<<N (действительно, число параметров модели синтеза речи намного меньше числа первичных признаков модели распознавания речи). Но тогда мы можем запоминать входной сигнал не по его первичным признакам в N-мерном пространстве, а по параметрам  модели синтеза в M-мерном пространстве.  Возникает вопрос: а как переводить сигнал из одного параметрического пространства в другое? Есть все основания предполагать, что это преобразование можно осуществить при помощи довольно простой нейросети. Более того, по моему мнению, такой механизм запоминания работает в реальных биологических системах, в частности, у человека.
РАЗДЕЛ 2. РАСПОЗНАВАНИЕ РЕЧИ

[0.2.1] 2.1 Распознавание речи

[0.2.2] 2.2 Обзор алгоритмов  распознавания речи

[0.2.3] 2.3 Нейросеть в системе распознавания речи

[0.3]
РАЗДЕЛ 3. МОДЕЛЬ СИСТЕМЫ РАСПОЗНАВАНИЯ РЕЧИ

[0.3.1] 3.1 Реализация модели

[0.3.2] 3.2 Обучение нейросети

[0.3.3] 3.3 Экспериментальная работа с моделью  системы распознавания речи

[0.4] ЗАКЛЮЧЕНИЕ

[0.5] Список использованных источников

[0.5.1]
ПРИЛОЖЕНИЯ

[0.6] Модуль Дискретного преобразования Фурье

[1]        ОкноДПХ(NomElementX) = 0

[1.1]
Модуль Работы с Файлами

[1.2] Модуль внешних Функций


ВВЕДЕНИЕ

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

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

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

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

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


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

В работе ставились следующие задачи:

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

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


РАЗДЕЛ 1.  НЕЙРОСЕТЕВЫЕ ТЕХНОЛОГИИ НА           СОВРЕМЕННОМ ЭТАПЕ

1.1  Нейрокомпьютеры и их место среди  высокопроизводительных ЭВМ

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

  •  Значащим уровнем анализа является не активность одного элемента, но паттерн активности многих элементов
  •  Система состоит из простых элементов и сложных связей между ними
  •  Элементы взаимодействуют посредством возбуждения и торможения
  •  Эффективность обработки информации осуществляется не за счет высокого быстродействия отдельных элементов, а за счет одновременной работы многих элементов (массовый параллелизм).
  •  Минимальный контроль извне: система сама определяет свое поведение, как правило, это стремление к устойчивому состоянию
  •  Поведение системы не программируется заранее, а формируется за счет её обучения (модификации пластических элементов)
  •  Правила модификации локальны (определяются текущим состоянием и активностью в окрестности точки локализации)*
  •  Система устойчива к потере небольших объемов информации и флуктуациям состояния отдельных элементов**

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

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

В таблице 1 приведены основные отличия  нейрокомпьтера от классического компьютера -  машины Фон Неймана:

Таблица 1

Отличие нейрокомпьютера от машины Фон Неймана

Машина фон Неймана

Биологическая нейронная система

Процессор

Сложный

Простой

Высокоскоростной

Низкоскоростной

Один или несколько

Большое количество

Память

Отделена от процессора

Интегрирована в процессор

Локализована

Распределенная

Адресация не по содержанию

Адресация по содержанию

Вычисления

Централизованные

Распределенные

Последовательные

Параллельные

Хранимые программы

Самообучение

Надежность

Высокая уязвимость

Живучесть


Пример одного слоя простейшей нейросети изображен на рис.1.1.

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

 (1)

X-вектор входа,

А-вектор нейронных входов, Y – вектор выхода. Пример одного слоя  простой нейросети

Рис. 1.1

1.2 Методы моделирования нейронных сетей.

Сети с латеральным торможением

(карты признаков Кохонена)

1. Идея метода

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

2. Архитектура

Нейроны расположены в виде одно- или двумерного слоя. Каждый нейрон имеет два вида связей: mij, которые интерпретируются как связи от сенсорных входов или других областей системы, и wijлатеральные связи между нейронами одного слоя, характер которых описывается какой либо топологической зависимостью. Рассмотрим случай, когда веса связей зависят от расстояния между нейронами. Эта зависимость выражается изображена на рис. 1.2:

Характер действия латеральных связей

Рис. 1.2

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

Работа сети начинается с подачи на вход входного вектора X. Затем для каждого узла вычисляется нейронная активность согласно итеративной формуле (1):

 (1)

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

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

 (2)

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

Изменение уровней активности нейронов после 10 итераций

Рис. 1.3

3. Обучение

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

  (3)

где a, b – положительные константы.

Если учесть, что соотношение активностей (y) внутри и вне пузырька практически бинарное, и промасштабировать переменные так, что a=b, правило (3) переходит в (4):

 (4)

где NC – «пузырёк».

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

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

Алгоритм обучения

Входные данные:  обучающая выборка (набор входных векторов)

Выходные данные: скорректированные связи mij

  1.  Предъявить сети входной вектор
  2.  Выполнять итерации до установления стабильного состояния
  3.  Для всех узлов сети выполнить коррекцию связей согласно (2) или (3)
  4.  Повторять [1-3] для каждого входного вектора

4. Пример (экспериментальные данные)

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

Функционирование карты Кохонена в двумерном пространстве

Рис.1.4

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

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

1. Идея метода

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


2. Математическое описание

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

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

Введем следующие обозначения:

 EW – производная ошибки по весу

 EA – производная ошибки по уровню активности элемента

 EI – скорость изменения ошибки при изменении входа элемента

 X – входной вектор

 Y – выходной вектор

 W – матрица связей,          

 f – функция возбуждения  (сигмоидальная функция)

 (1)

 Dj – желаемый выход j-го элемента

 E – ошибка классификации

 (2)

С использованием этих обозначений можно записать следующие соотношения:

 (3)

 (4)

 (5)

 (6)

Т.о., в (6) мы получили EA для следующего слоя, и теперь имеем возможность повторить эти операции для всех нижележащих слоев.

После нахождения матрицы EWij  корректируются связи Wij:

 (7)

где eскорость обучения.

3. Алгоритм обучения

Входные данные:  обучающая выборка (множество пар вход-выход)

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

  1.  На вход сети подаётся первый элемент обучающей выборки
  2.  Вычисляется выход сети Y
  3.  Вычисляется ошибка E
  4.  Если E<=E0 для всей выборки, ВЫХОД
  5.  Вычисляется EAj для каждого элемента слоя (для выходного – по формуле (3), для остальных – по формуле (6) )
  6.  Вычисляется EIj по формуле
  7.  Вычисляется EWij по формуле (5)
  8.  Корректируются связи в соответствии с (7)
  9.  Повторяются шаги [5-8] для всех слоев
  10.  Повторить [2-9] для всех элементов обучающей выборки
  11.  Повторять [1-10], пока сеть не обучится или число итераций не превысит максимально допустимого

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

4. Выводы

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

Теория адаптивного резонанса

  1.  Идея метода

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

2. Архитектура системы

Архитектура системы изображена в виде блок-схемы на рис. 1.5:

Теория адаптивного резонанса

 F1 – первое нейронное поле

 F2 – второе нейронное поле

КВП – кратковременная память

ДВП – долговременная память

 X, I, V, S – паттерны активности

УГВ – управляемый генератор возбуждения

 mij, mji – матрицы весов связей, реализующие ДВП

 g – порог бдительности

Рис. 1.5

3. Алгоритм работы

Функционирование системы происходит следующим образом:

  1.  Входной образ I подается на вход F1
  2.  Наличие I на входе F1 включает УГВ1, который выдает на F сигнал подвозбуждения G (для поля F1 действует правило «2 из 3», в соответствии с которым нейрон становится активным только тогда, когда он возбуждается сигналами одновременно с двух источников)
  3.  После «включения» УГВ1 на выходе F1 появится паттерн активности X, совпадающий с I. Из-за идентичности I и X подсистемой ориентации не генерируется сигнал торможения КВП F2 (т.е. УГВ2 не включен)
  4.  Сигнал X с F1 приходит по связям mij и трансформируется во входной вектор S поля F2
  5.  F2 представляет собой аналог карты признаков Кохонена (см. «Сети с латеральным торможением»), для случая когда пузырек активности сосредоточен в одном нейроне. Т.о. после подачи  на вход F2 паттерна S на выходе появляется паттерн Y, который представляет собой гипотезу системы относительно того, на какой из классов больше похож входной образ I
  6.  Паттерн Y проходит сверху вниз через связи mji и преобразуется в паттерн-шаблон V, который представляет собой декодированный след памяти, соответствующий эталонному образцу того класса, к которому был отнесен I
  7.  Теперь в поле F1 поступают два паттерна: I (снизу) и V (сверху). Наличие активности F2 отключает УГВ1, и согласно правилу «2 из 3» в F1 останутся активными только те нейроны, которые получают возбуждение и от I, и от V. Следовательно, если прочитанный паттерн-шаблон V сильно отличается от I, активность F1 значительно тормозится. Теперь на выходе F1 – паттерн X*
  8.  Вычисляется отношение размеров |X*| к размеру |I|. Полученная величина сравнивается с «порогом бдительности» g.



9. УГВ2 не генерирует сигнал сброса,    система переходит в стабильное состояние

10. В устойчивом состоянии происходит обучение системы. Возможны два варианта:

  1.  Поиск привел к активации уже имеющегося эталона (т.е. в КВП F2 возбудился нейрон, соответствующий одному из известных классов). В этом случае обучение может рафинировать эталон (содержащийся в mji) и критерий допуска к нему (mij) так, чтобы в следе ДВП сохранились только общие с I признаки.
  2.  Поиск привел к незанятому нейрону в F2 (т.е. I не был отнесён ни к одному из классов, но его эталон содержался в mji). В этом случае обучение добавит к уже существующим новый эталон, совпадающий с I.

9. УГВ2 генерирует сигнал, тормозящий F2 (сигнал сброса)

10. Это приведет к снятию паттерна V с входа F1, и в поле F1 восстановится первоначальный паттерн X

11. Пройдя через mij, паттерн X преобразуется в S

12. S не сможет активировать первоначальный паттерн Y из-за торможения, поэтому активируется близкий к нему Y*

13. Y* проходит через mji и преобразуется в V*

14. Для V* повторяются шаги с [7]

   


4. Обучение

Следы долговременной памяти подчиняются правилу обучения (1):

, (1)

где xi – выход в F1,

yi – выход в F2,

k=const,

Eij  - коэффициент “забывания”.

Вследствие забывания следы ДВП между активными нейронами в F2 и неактивными в F1 исчезают, что приводит к их уточнению входным образом. Для связей сверху вниз Eij=1, а для связей снизу вверх

 , (2)

где L=const.

Такое задание Eij обеспечивает выполнение правила Вебера: при обучении снизу вверх следы при запоминании паттерна X с меньшим количеством активных нейронов должны  быть больше, чем у паттерна с большим количеством активных нейронов при прочих равных условиях. Такая зависимость может быть достигнута путем конкуренции между следами ДВП за синаптические ресурсы нейронов F2, что и описывается формулой (2).

Генетические алгоритмы

1. Идея метода

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

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

Существуют различные приложения генетических алгоритмов: 1. Построение топологии НС; 2. Обучение нейросети;  3. Оптимизация контрольных параметров.

2. Алгоритм работы для задачи построения топологии

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

Выходные данные:  нейросеть, решающая задачу с требуемой точностью.

  1.  Обучение каждой нейросети в популяции
  2.  Для каждой НС определяется её эффективность решения данной задачи
  3.  Если задача решена какой либо нейросетью, ВЫХОД
  4.  Наименее эффективные НС удаляются из популяции, наиболее эффективные скрещиваются(1)  и дают новое поколение НС; самая лучшая нейросеть остается в популяции
  5.  На новое поколение накладывается мутация(2)  (чтобы обойти локальные минимумы ошибки)
  6.  Повторяется цикл с  1.

1:  Механизм скрещивание НС зависит от конкретной архитектуры нейросети.  Например, для многослойного персептрона с прямым распространением этот процесс представляет собой образование новой НС, в которой выходные нейроны родителей станут скрытыми нейронами потомка  (рис. 1.6). При этом сохраняются знания, накопленные родителями.


Скрещивание двух нейросетей для образования нового поколения

Рис. 1.6

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

3. Алгоритм работы для задачи обучения нейросети

Входные данные: нейросеть, требующая обучения.

Выходные данные:  обученная нейросеть, решающая задачу с требуемой точностью.

  1.  Создается случайным образом исходная популяция нейросетей (все индивиды имеют одинаковую архитектуру, но разные значение весов связей и других переменных)
  2.  Оценивается эффективность решения задачи каждой нейросетью
  3.  Если задача решена, ВЫХОД
  4.  Индивиды сортируются в соответствии с эффективностью решения задачи
  5.  Самая лучшая нейросеть сохраняется, на остальные накладываются мутации
  6.  При достижении некоторого момента времени происходит генерация нового поколения: наиболее подходящие индивиды скрещиваются, наименее подходящие удаляются из популяции; недостающее количество генерируется случайным образом
  7.  Повторяется цикл с 2.

4. Выводы

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

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

1.Основные положения

Одной из наиболее популярных комбинированных сетей, использующихся на практике, является двухслойная сеть встречного распространения CPN (Counterpropagation Network), первым слоем которой является сеть Кохонена, а вторым – сеть С. Гроссберга.

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

Нейрон в форме входной звезды  имеет n входов, которым соответствуют весовые коэффициенты W = (w1,w2, …,wn), и один выход Y, являющийся взвещенной суммой входов. Входная звезда обучается выдавать сигнал на выходе всякий раз когда на входы поступает определенный вектор. Таким образом, входная звезда является своего рода детектором состояния входов и реагирует только на свой входной вектор. Подстройка весовых коэффициентов производится по следующей формуле:

    (1)

где Wi(t) – входной вектор i-й звезды на t-м такте обучения; Xiвходной вектор;  - скорость обучения. Скорость обучения  имеет начальное значение в пределах 0,1 …0,2 и постепенно уменьшается в процессе обучения.

Выходная звезда Гроссберга выпоняет противоположную функцию – припоступлении сигнала на вход выдается определенный вектор. Нейрон этого типа емеет один вход и n выходов с весами W = (w1,w2, …, wm), которые подстраиваются в соответствии с формулой

     (2)

где Wi(t) – весовой вектор i-й выходной звезды на t-м такте обучения; Yiвходной вектор;  - скорость обучения. Рекомендуется начать обучение со значений в пределах единицы, постепенно уменьшая до значений, близких к нулю.

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

Сеть со встречным распространением CPN представляет собой соединение самоорганизуещееся сети Кохонена и выходной звезды Гроссберга. Топология сети встречного распространения приведена на рис. 1.7.

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


Рис 1.7 Топология сети встречного распространения

2.Обучение

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

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

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

Одной из особенностей CPN является возможность восстановления пары вектров (X,Y) по одной известной компоненте. При предъявлении сети на этапе распознавания только входного вектора Х (с нулевым начальным Y) проводится прямое отображение, т.е. восстанавливается Y, и, наоборот, при известном  Y может быть восстановлен соответствующий ему Х. Возможность решения как прямой, так и обратной задачи, а также гибридной задачи по восстановлению отдельных недостающих компонент делают данную нейросетевую архитектуру очень вахным инструментом исследования различных процессов и объектов [12].

1.3 Самообучающиеся системы

Чем отличается работа, которую выполняют роботы и которую может выполнить человек? Роботы могут обладать качествами, намного превосходящими возможности людей: высокая точностью, сила,  реакция, отсутствие усталости. Но вместе с тем они  остаются просто инструментами в руках человека. Существует работа, которая может быть выполнена только человеком и которая не может быть выполнена роботами  (или необходимо создавать неоправданно сложных роботов) .  Главное отличие человека от робота – это способность адаптироваться к изменению обстановки. Конечно, практически у всех роботов существует способность работать в нескольких режимах, обрабатывать исключительные ситуации, но все это изначально закладывается в него человеком. Таким образом, главный недостаток роботов – это отсутствие автономности (требуется контроль человека) и отсутствие адаптации к изменению условий (все возможные ситуации закладываются в него в процессе создания).  В связи с этим  актуальна проблема создания систем, обладающих такими свойствами.

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

Попытки создания таких систем предпринимались многими исследователями, в том числе и с использованием нейросетей. Один из примеров – созданный в Киевском Институте кибернетики еще в 70-х годах макет транспортного автономного интегрального робота (ТАИР) [7]. Этот робот обучался  находить дорогу на некоторой местности и затем мог использоваться как транспортное средство.

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

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

2.Возможность контроля своих действий с последующей коррекцией

Этот принцип говорит о необходимости обратной связи Действие-Результат-Коррекция в системе . Такие цепочки очень широко распространены в сложных биологических организмах и используются на всех уровнях – от контроля мышечных сокращений на самом низком уровне до управления сложными механизмами поведения.

3.Возможность накопления знаний об объектах рабочей области

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

4. Автономность системы

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

Система распознавания речи как самообучающаяся система

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

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

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

Предположим, входной сигнал задается вектором первичных признаков в N-мерном пространстве. Для хранения такого сигнала необходимо N элементов. При этом на этапе разработки мы не знаем специфики сигнала или она настолько сложна, что учесть её затруднительно. Это приводит к тому, что представление сигнала, которое мы используем, избыточно. Далее предположим, что у нас есть возможность синтезировать такие же сигналы (т.е. синтезировать речь), но при этом синтезируемый сигнал является функцией вектора параметров в M-мерном пространстве, и M<<N (действительно, число параметров модели синтеза речи намного меньше числа первичных признаков модели распознавания речи). Но тогда мы можем запоминать входной сигнал не по его первичным признакам в N-мерном пространстве, а по параметрам  модели синтеза в M-мерном пространстве.  Возникает вопрос: а как переводить сигнал из одного параметрического пространства в другое? Есть все основания предполагать, что это преобразование можно осуществить при помощи довольно простой нейросети. Более того, по моему мнению, такой механизм запоминания работает в реальных биологических системах, в частности, у человека.
РАЗДЕЛ 2. РАСПОЗНАВАНИЕ РЕЧИ

2.1 Распознавание речи

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

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

Проблемы, возникающие при распознавании речи

Во-первых, звуки речи различаются по длительности. Один и тот же звук, но произнесенный в разных словах, значительно варьируется по длительности. Например, длительность звука а в слове сад составляет 250-300 мс, а в слове садовод около 60 мс. Опытным путем установлена постоянная времени человеческого слуха, т.е. минимальная длительность  звука, при которой ухо может проанализировать, узнать это звук. Эта величина равняется приблизительно 30-50 мс.

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

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

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

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

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

2.2 Обзор алгоритмов  распознавания речи 

Ввод речи и  цифровая обработка

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

Ввод звука в компьютер

Рис. 2.1

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

 (1)

Таким образом, параметрами, определяющими качество оцифровки сигнала, являются частота дискретизации (fd) и разрядность преобразования (сколько единиц информации кодирует один отсчет). Частота дискретизации определяет максимальную частоту сигнала, которую можно записать. Типичные значения  - 11025, 22050, 44100 Гц. От разрядности зависит точность кодирования информации при аналого-цифровом преобразовании. Типичные значения – 4 бит, 8 бит, 16 бит на отсчет. Естественно, чем больше разрядность и частота дискретизации, тем точнее записывается звук, но и тем больше поток информации  и тем сложнее его записать или обработать.

Предварительная обработка и выделение первичных признаков

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

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

Гораздо более информативно спектральное представление речи. Для получения спектра используют набор полосовых фильтров, настроенных на выделение различных частот, или дискретное преобразование Фурье.   Затем полученный спектр подвергается различным преобразованиям, например,  логарифмическое изменение масштаба (как в пространстве амплитуд, так и в пространстве частот), сглаживание спектра с целью выделения его огибающей, кепстральному анализу (обратное преобразование Фурье от логарифма прямого преобразования, см. [3], Cepstral analysis). Это позволяет учесть некоторые особенности речевого сигнала – понижение информативности высокочастотных участков спектра, логарифмическую чувствительность человеческого уха, и т.д.

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

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

Выделение примитивов речи

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

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

 

Распознавание сложных звуков, слов, фраз, и т.д.

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

2.3 Нейросеть в системе распознавания речи 

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

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

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

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


 РАЗДЕЛ 3. МОДЕЛЬ СИСТЕМЫ РАСПОЗНАВАНИЯ РЕЧИ

3.1 Реализация модели

Структурная схема системы изображена на рис. 3.1.

Уровни системы анализа речи

Рис. 3.1

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

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

Уровень ввода/вывода сигнала

Рис.3.2

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

Ввод звукового сигнала

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


Процесс ввода звука изображен на рисунке 3.3:

Ввод звука

Рис. 2.3

При обработке файла по нему перемещается окно ввода, размер которого равен размеру окна дискретного преобразования Фурье (ДПФ) – N элементов(смотрите «Приложения 1. Дискретное преобразование Фурье»).

Смещение окна относительно предыдущего положения можно регулировать.  В каждом положении окна оно заполняется данными типа short  (система работает только со звуком, в котором каждый отсчет кодируется 16 битами). После ввода данных в окно перед вычислением ДПФ на него накладывается окно сглаживания Хэмминга:

 (2)

где Data – массив данных

newData – массив данных, полученный после наложения окна сглаживания

N – размер ДПФ

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

Действие окна сглаживания Хэмминга (логарифмический масштаб)

            без окна сглаживания     с окном сглаживания Хэмминга

Рис 3.4

После этого выполняется дискретное преобразование Фурье по алгоритму быстрого преобразования Фурье [4]. В результате в реальных и мнимых коэффициентах получается амплитудный спектр и информация о фазе. Информация о фазе отбрасывается и вычисляется энергетический спектр:

 (3)

где E[i]энергии частот

Так как звуковые данные не содержат мнимой части , то по свойству ДПФ  результат получается симметричным, т.е. E[i] = E[N-i]. Таким образом, размер информативной части спектра NS равен N/2.

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

 (4)

 (5)

Информативность различных частей спектра неодинакова: в низкочастотной области содержится больше информации, чем в высокочастотной. Поэтому для предотвращения излишнего расходования входов нейросети необходимо уменьшить число элементов, получающих информацию с высокочастотной области , или, что тоже самое, сжать высокочастотную область спектра в пространстве частот. Наиболее распространенный метод благодаря его простоте – логарифмическое сжатие, или mel-сжатие (см. [3], “ Non-linear frequency scales”):

(6)

где  f – частота в спектре, Гц,

mчастота в новом сжатом частотном пространстве


Процесс логарифмического сжатия проиллюстрирован рисунком 3.5:

Нелинейное преобразование спектра в пространстве частот

Рис. 3.5

Такое преобразование имеет смысл, только если число элементов во входе нейросети NI  меньше числа элементов спектра NS.

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

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

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

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

Моделирование нейросети

Критерии выбора модели нейросети

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

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

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

1. Разделение входных сигналов гиперплоскостями (простой персептрон). Применение этого алгоритма оправдано только для задач, обладающих высокой линейностью. Например, можно построить нейросеть, разбивающую точки (0,0) и (1,1) на два класса для двумерного сигнала, но невозможно решить задачу по разбиению точек (0,0), (1,1) – первый класс, и (0,1), (1,0) – второй  (рис. 11). Это хорошо известный пример неспособности простого персептрона решить задачу «исключающее или».

Разделение двумерного сигнала простым персептроном

Рис. 3.6

2. Разделение входного сигнала гиперповерхностями (многослойные персептроны). При последовательном соединении слоев, подобных простому персептрону, появляется возможность комбинировать гиперплоскости и получать гиперповерхности довольно сложной формы, в том числе и замкнутые. Такая нейросеть в принципе при достаточном числе нейронов способна разделять сигналы на классы практически любой сложности. Но применение таких нейросетей ограничено  сложностью их обучения. Был разработан мощный алгоритм, называемый «алгоритмом обратного распространения ошибки», но  и он требует значительного времени обучения и не гарантирует успешный результат (опасность попадания в локальные минимумы). Подробнее этот алгоритм описан в разделе 1, а пример его работы проиллюстрирован на рисунке 3.7. Скриншот получен с программы   \NNTest\nntest.exe (с библиотекой nntest4.dll), и на нем видно, что 3-х слойный персептрон способен строить довольно сложные гиперповерхности для разделения входных сигналов на классы (здесь красные и синие крестики иллюстрируют два класса в двумерном сигнальном пространстве, а интенсивность белого цвета в каждой точке с координатами [x,y]   показывает уровень отклика нейросети на сигнал [x,y]).

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

Рис. 3.7

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

Классификация по максимальному соответствию

Рис. 3.8

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

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

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

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

Рис. 3.9

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

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

Обучение слоя Кохонена производится по правилу (7):

 wн = wс + (xwс)a, (7)

где wн - новое значение веса,

wс – старое значение,

- скорость обучения, <1

x - нормированный входной вектор,

aактивность нейрона.

Геометрически это правило иллюстрирует рисунок 3.10:

Коррекция весов нейрона Кохонена

Рис. 3.10

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

2. Символьный слой – нейроны этого слоя ассоциированы с символами алфавита (это не обязательно должен быть обычный буквенный алфавит, но любой, например, алфавит фонем). Этот слой осуществляет генерацию символов при распознавании и ввод символов при синтезе. Он представляет собой слой Гроссберга, обучающийся с учителем ([1], «Сеть встречного распространения»). Нейрон этого слоя функционирует обычным образом: вычисляет суммарный взвешенный сигнал на своих входах и при помощи линейной функции передает его на выход. Модификация весов связей при обучении происходит по следующему правилу:

 wijн = wijс + (yjwijс)xi, (8)

где wijн, wijс – веса связей до и после модификации

- скорость обучения, <1

yj – выход нейрона

xi – вход нейрона

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

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

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

Выбор скоростей обучения

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

Чем определяется скорость обучения? Здесь главную роль играет порядок предъявления образцов. Допустим, имеется большая обучающая выборка, последовательным предъявлением элементов которой обучается нейросеть. Если скорость обучения велика, то уже на середине этой выборки нейросеть «забудет» предыдущие элементы. А если каждый образец предъявляется  подряд много раз, то уже на следующем образце нейросеть забудет предыдущий. Таким образом, главный критерий выбора скоростей обучения – незначительное изменение связей в пределах ВСЕЙ обучающей выборки. Но не следует забывать, что время обучения обратно пропорционально скорости обучения. Так что здесь необходимо искать компромисс.

Запоминание  редко встречающихся  элементов

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


Проблемы, возникающие при обучении слоя Кохонена

1. выбор начальных значений весов.

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

2. использование всех нейронов.

Если весовой вектор окажется далеко от области входных сигналов, он никогда не даст наилучшего соответствия, всегда будет иметь нулевой выход, следовательно, не будет корректироваться и окажется бесполезным. Оставшихся же нейронов может не хватить для разделения входного пространства сигналов на классы. Для решения этой проблемы предлагается много алгоритмов ([1],[8]). в моей работе применяется правило «желания работать»: если какой либо нейрон долго не находится в активном состоянии, он повышает веса связей до тех пор, пока не станет активным и не начнет подвергаться обучению. Этот метод позволяет также решить проблему тонкой классификации: если образуется группа входных сигналов, расположенных близко друг к другу, с этой  группой ассоциируется и большое число нейронов Кохонена, которые разбивают её на классы (рис. 16.2). Правило «желания работать» записывается в следующей форме:

 wн=wc + 1 , (9)

где wн - новое значение веса,

wс – старое значение,

1  - скорость модификации,

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

3. неоднородное распределение входных векторов в пространстве сигналов и дефицит нейронов.

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

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

wн = wс + 2(xwс). (10)

где wн - новое значение веса,

wс – старое значение,

2  - скорость модификации,

x – входной вектор

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

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

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

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

 (11)

где ajактивность нейрона

i  - выигравший нейрон

j – индекс нейрона

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

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

3.3 Экспериментальная работа с моделью  системы распознавания речи

Для проверки функционирования системы анализа речи была проведена серия экспериментов.

Обучение системы распознаванию чистых тонов

Входные данные:

Система анализа речи со следующими стартовыми параметрами:

+Конфигурация нейросети

   Число входов: 20

   Нейронов во входном слое: 10

   Нейронов в символьном слое: 5

   

   

   +Скорости обучения

       alpha0: 0.1000

       alpha1: 1.0000

       alpha2: 0.0500

+Алфавит

   S0='а'

   S1='и'

   S2='о'

   S3='у'

   S4='?'

Обучающая выборка: звуковые файлы с записанными чистыми  тонами 200 Гц, 500 Гц, 1500 Гц и 3000 Гц; каждому тону сопоставлена буква алфавита.

Цель эксперимента:

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

Ход эксперимента:

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

Выводы:

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

Обучение системы при малом размере обучающей выборки

Входные данные:

Система анализа речи со следующими стартовыми параметрами:

+Конфигурация нейросети

   Число входов: 20

   Нейронов во входном слое: 10

   Нейронов в символьном слое: 5

   

   

   +Скорости обучения

       alpha0: 0.1000

       alpha1: 1.0000

       alpha2: 0.0500

+

+Алфавит

   S0='а'

   S1='и'

   S2='о'

   S3='у'

   S4='?'

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

Цель эксперимента:

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

Ход эксперимента:

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

Выводы:

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

ЗАКЛЮЧЕНИЕ

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

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


Список использованных источников

  1.  Уоссермен Ф.  «Нейрокомпьютерная техника: Теория и практика». /Перевод на русский язык  Ю. А. Зуев, В. А. Точенов, М., Мир, 1992.

  1.  Винцюк Т.К. «Анализ, распознавание и интерпретация речевых сигналов.» /Киев: Наук. думка, 1987. -262 с.

  1.  Нуссбаумер Г. «Быстрое преобразование Фурье и алгоритмы вычисления сверток» / Перевод с англ. – М.: Радио и связь, 1985. –248 с.

  1.  Бондарко Л.В. «Звуковой строй современного русского языка» /М.: Просвещение, 1997. –175 с.

  1.  Куссуль Э.М. «Ассоциативные нейроподобные структуры»  /Киев, Наукова думка, 1990

  1.  Амосов Н.М.  и др. «Нейрокомпьютеры и интеллектуальные роботы»  /Киев: Наукова думка, 1991

  1.  Горбань А.Н., Дунин-Барковский В.Л., А.Н.Кирдин и др. «Нейроинформатика»  / Новосибирск: Наука. Сибирское предприятие РАН, 1998. - 296с.

  1.  Ясницкий Л.Н. Введение в искусственный интелект: Учеб. Пособие для студ. высш. учеб. заведений.- М.:Издательский центр «Академия», 2005.- 176 с.
  2.  Щетинин В.Г., Костюнин А.В. Принятие решений на нейронных сетях оптимальной сложности// Автоматизация и современные технологии.- М., 1988.-4.- С.38-43.

  1.  Щетинин В.Г., Столяров О.В., Костюнин А.В. Синтез решающих правил на нейронных сетях для управления производством// Приборы и системы управления. - М., 1999.-1.-С.72-77.

  1.  Щетинин В.Г. Соломаха А.А. Применение искуственных нейронных сетей в клинической лабораторной диагностике// Клиническая лабораторная диагностика. - М., 1998.-10.-С.21-23.

  1.  Щетинин В.Г., Комаров В.Г. Дифференциальная диагностика при помощи искусственных нейронных сетей// Клиническая лабораторная диагностика. - М., 1998.-11.-С.34-37.

  1.  Щетинин В.Г. Анализ факторов и моделирование экономического роста региона. - Пенза: ПГУ, 1998.-40с.

  1.  Щетинин В.Г. и др. Применение методов самоорганизации прогнозирующих моделей биотехнических систем.- Пенза: ПГУ, 1999.-60 с.

  1.  Карпова Н.А. Управление в системе оценки знаний.-Пенза:ПГУ, 1999.

  1.  Карпова Н.А. Построение информационной модели процесса оценивания знаний. - Пенза:ПГУ, 1999.

  1.  Нейросетевые информационные модели сложных инженерных систем. Глава 4 в кн. А.Н. Горбань, В.Л. Дунин-Барковский, А.Н. Кирдин, Е.М. Миркмс, А.Ю. Новоходько, Д.А. Россиев, С.А. Терехов, М.Ю. Сенашова, В.Г. Царегородцев. Нейроинформатика.Новосибирск, Наука, 1998.

  1.   Прямые, обратные и смешанные задачи в нейросетевом моделировании сложных инженерных систем. Тезисы IV Всероссийского рабочего семинара «Нейроинформатика и ее приложения».Красноярск, 5-7 октября, 1996 г.С.10.

  1.   Генетическая оптимизация сложных иерархических систем.Воленко Е.В., Квичанский А.В., Терехов С.А., Щукин Н.В. Тезисы IV Всероссийского рабочего семинара «Нейроинформатика и ее приложения». Красноярск, -7 октября, 1996 г.С.75.

  1.  Нейронные сети и нейрокомпьютинг: Библиографический указатель / под ред. Л.И. Волгина.- Ульяновск.

  1.   Галушкин А.И. Современные направления развития нейрокомпьютерных технологий в России.

  1.   Перспективы нейроинформатики в России ( Л.Н. Подладчикова, зав. лаб.нейроинформатики, НИИ нейрокибернетики РГУ ).

  1.  Нейрокомпьютинг: история, состояние, перспективы. Статья Роберта Хехт-Нильсена, Журнал « Открытые системы «, №4, 1998.

  1.   Журнал « Открытые системы «, тематический выпуск, №4, 1997.Обзоры по применению нейронных сетей.

  1.   Параллельный перепрограммируемый вычислитель. Возможность применения для обработки изображений и программное обеспечение. Аряшев С.И., Бобков С.Г., Сидоров Е.А., Юдин И.В.

  1.   Власов А.И. Нейрокомпьютеры и параллельные ЭВМ близнецы – братья?

 

  1.  Щахнов В.А., Власов А.И., Тимонин С.Г., Броновицкий А.Р. Виртуальный Университет нейроинформационных технологий.

  1.  Нейронные сети. Matlab 6 Валерий Потемкин издательство: Диалог МИФИ декабрь 2001 ISBN 5-86404-163-7 страниц: 496.

29. Комарцова Л.Г. , Максимов А.В. Нейрокомпьютеры: Учеб. пособие для вузов.- М.: Изд-во МГТУ им. Н.Э.Баумана, 2002.-320 с., сил.


ПРИЛОЖЕНИЯ

' Класс нейросети

‘Трищенков Антон

'---------------------------------------------------------------------------

Public efN%

Public inN%

Public lInN%

Public lSymN%

   

Sub Инициализация()

       

   Public efMax(efN) As Single

   Public efMin(efN) As Single

   Public efA(efN) As Single

   Public efType(efN) As Integer

   Public efIndex(efN) As Integer

   Public efW(efN, lSymN) As Single

   Public inA(inN) As Single

   Public lInA(lInN) As Single

   Public lInW(lInN, inN) As Single

   Public s(lInN) As Single

   Public lSymA(lSymN) As Single

   Public lInSymW(lSymN, lInN) As Single

   Public sym(lSymN) As String

   Public MassPeredachi(200) As Single

   

   Dim i, j As Integer

   

   ' Инициализация по умолчанию

   ' Эффекторы

   For i = 0 To efN

   

       efType(i) = 0

       efIndex(i) = 0

       efMin(i) = 0

       efMax(i) = 1

   Next i

   'Алфавит

   For i = 0 To lSymN

   

       sym(i) = Chr(i + "а")

   

   ' Последний - "неизвестный символ"

   If i = lSymN Then

       sym(lSymN - 1) = "?"

   ' Сбрасываем данные

   Reset

End Sub

'------------------------------------------------------------------------

Sub Reset()

   Dim i, j As Integer

 

   ' Обнуляем вход

   For i = 0 To inN

       inA(i) = 0!

   Next i

   

   ' Обнуляем входной слой

   For i = 0 To lInN

       lInA(i) = 0!

   Next i

   

   ' Обнуляем символьный слой

   For i = 0 To lSymN

           lSymA(i) = 0!

   Next i

   

   ' Обнуляем слой эффекторов

   For i = 0 To efN

       efA(i) = 0!

   ' Выигравший нейрон

   win = 0

   ' Инициализируем связи

   ' Входной слой

   For i = 0 To lInN

   

       For j = 0 To inN

       

           ' Случайными числами

           lInW(i, j) = Rnd(3456)

           'по методу выпуклой комбинации

'            lInW(i, j) = 1.00/sqr(inN)

           ' В максимальное состояние

'            lInW(i, j) = 1.00

       Next j

       ДопФункции.Normalize2D lInW(), inN, 1!, i

   Next i

'    // Символьный слой

   For i = 0 To lSymN

   

       For j = 0 To lInN

           lInSymW(i, j) = Rnd(45737)

       ДопФункции.Normalize2D lInSymW(), lInN, 1#, i

       Next j

   Next i

       

'     Эффекторный слой

   For i = 0 To efN

   

       For j = 0 To lSymN

           efW(i, j) = Rnd(34)

       Next j

   Next i

   ResetAlpha

   

End Sub

'-----------------------------------------------------------------------------

Sub ResetAlpha()

'     Скорости обучения по умолчанию

   For i = 0 To NALPHA

       alpha(i) = config.alpha(i)

   Next i

   

   dAlpha = config.dAlpha

End Sub

'------------------------------------------------------------------------------

Sub ProcessLayer(l_inA() As Single, _

                 l_W() As Single, _

                 l_A() As Single, _

                 l_inN As Integer, _

                 l_aN As Integer, _

                 TLayerType As Integer)

                 

'                        l_inA,       // входы

'                       l_w,        // связи

 '                      l_a,         // выходы слоя

  '                     l_inN,          // число входов

   '                    l_aN,           // число выходов

    '                   l_type)  // тип слоя

            

                 

   Dim i, j, max_i As Integer

   Dim s, max_a As Single

   max_a = 0

   max_i = 0

    

   ' Для всех нейронов

   For i = 0 To l_aN

   

       ' Вычисление суммарного входа нейрона

       s = 0#

       For j = 0 To l_inN

           s = s + l_inA(j) * l_W(i, j)

       ' Прохождение через нейрон

       l_A(i) = NET(s)

       ' Если слой типа "выиигрывает один", то определяем max активный нейрон

       If l_type = 1 Then

           If l_A(i) > max_a Then

               max_a = l_A(i)

               max_i = i

           End If

       End If

   Next i

   

   If l_type = 1 Then

       ' Моделируем слой "побеждает один"

       For i = 0 To l_aN

       

            l_A(i) = Lateral(i - max_i)

       

       Next i

       

       win = max_i

   End If

End Sub

'---------------------------------------------------------------------------

'l_inA,       // входы

'l_W,        // связи

'l_A,         // выходы слоя

'l_inN,          // число входов

'l_N,            // число выходов

'l_type)  // тип слоя

Sub ModifyWeights(l_inA As Single, _

                       l_W As Single, _

                       l_A As Single, _

                       l_inN As Integer, _

                       l_N As Integer, _

                       l_type As Integer)

                       

   Dim i, j As Integer

   newW As Double

   noise As Double

   ' Для всех нейронов

   For i = 0 To l_N

 

       ' для всех связей

       For j = 0 To l_inN

       

           newW = l_W(i, j)

           ' Модифицируем в зависимости от типа слоя

           Select Case l_type

           Case 1

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

               newW = newW + (l_inA(j) - l_W(i, j)) * l_A(i, j) * alpha(0)

               ' Произвольное усиление весов всех нейронов ("желание работать")

'                newW=newW+alpha(0)/l_N/100.0

               ' "Отжиг" связей

'               noise = alpha[0]/100.0;

'               newW=newW+RND*noise

              

           Case 2

               ' Стремление весов нейрона к выходному вектору при активном входе

               newW = newW + alpha(2) * (l_A(i) - l_W(i, j)) * l_inA(j)

       

           End Select

           

           l_W(i, j) = newW

       Next j

       ДопФункции.Normalize2D l_W(i), l_inN, 1#, i

       

   Next i

   

End Sub

'---------------------------------------------------------------------------

Function NET(s As Single)

   

   NET = Validate(s, 0#, 10#)

   

End Function

'---------------------------------------------------------------------------

Function Lateral(di As Single) As Single

' Латеральные связи по экспоненциальному закону

   Dim T As Single

   T = alpha(1) * lInN + 0.01

   Lateral = Exp(-di * di / (T * T))

End Function

'---------------------------------------------------------------------------

Sub UpdateAlpha()

' Изменение скорости в процессе обучения

   alpha(0) = alpha(0) - alpha(0) * dAlpha

   alpha(1) = alpha(1) - alpha(1) * dAlpha * 10

   alpha(2) = alpha(2) - alpha(2) * dAlpha

   alpha(3) = alpha(3) - alpha(3) * dAlpha

End Sub

'---------------------------------------------------------------------------

' Активирует нейрон в символьном слое, соответствуюший

' символу sym, и обнуляет все остальные

Sub ActivateSym(sym As String)

   Dim i%

   Dim found As Boolean

   found = False

   

   ' перебираем алфавит

   For i = 0 To lSymN

       If sym(i) = sym Then

           lSymA [i] = 1#

           found = True

           Else

           lSymA(i) = 0#

       End If

       

   ' если в алфавите символа нет, активируем 'неизвестный символ'

   If Not (found) Then

       lSymA(SymN - 1) = 1#

End Sub

Модуль Дискретного преобразования Фурье

Const Pi = 3.14159265358979

Sub НаложитьОкноСглаживания(ОкноВхода() As Integer, ТипОкна As Integer)

   'Тип окна сглаживания-

   '   0-без сглаживания

   '   1-Треугольное окно

   '   2-окно Хемминга

   Dim NomElementX As Integer

   Dim NomElementY As Integer

  

   

   If ТипОкна = 2 Then

       For NomElementX = 0 To 1023

           ОкноВхода(NomElementX) = ОкноВхода(NomElementX) * (0.54 - 0.46 * (Cos(2 * Pi * NomElementX / 1023)))

       Next NomElementX

   End If

   

End Sub

Sub ДПФ(ВходнойВектор() As Integer, ОкноСглаживания As Integer, ОкноСпектраДПФ() As Single)

       

   Dim NomElementX As Integer

   Dim NomElementY As Integer

   Dim ОкноДПХ(1023) As Single

   Dim ОкноДПФ(511, 2) As Single

   Dim argum As Single

   'ВходнойВектор() = ОкноОтсчетов()

   'Если в настройках указано накладываем окно сглаживания

   Select Case ОкноСглаживания

   Case 1

       НаложитьОкноСглаживания ВходнойВектор(), 1

   Case 2

       НаложитьОкноСглаживания ВходнойВектор(), 2

   End Select

   

   'Находим дискретное преобразование Хартли по формуле

   '

   For NomElementX = 0 To 1023

       ОкноДПХ(NomElementX) = 0

       For NomElementY = 0 To 1023

           argum = 2 * Pi * NomElementX * NomElementY / 1024

           ОкноДПХ(NomElementX) = ОкноДПХ(NomElementX) _

           + ВходнойВектор(NomElementY) * (Sin(argum) + Cos(argum))

       Next NomElementY

   Next NomElementX

   'Из ДПХ находим ДПФ по соотношениям Y_re(x)=DHT(x)+DHT(N-x)

   '                                   Y_im(x)=DHT(x)-DHT(N-x)

   'Так как спектр симметричный Вычисляем только половину

   For NomElementX = 0 To 511

       ОкноДПФ(NomElementX, 0) = ОкноДПХ(NomElementX) + ОкноДПХ(1023 - NomElementX)

       ОкноДПФ(NomElementX, 1) = ОкноДПХ(NomElementX) - ОкноДПХ(1023 - NomElementX)

   Next NomElementX

   'Теперь по формуле E(i)=Sqr(Y_re*Y_re+Y_im*Y_im) Находим энергетический спектр

   For NomElementX = 1 To 511

       ОкноСпектраДПФ(NomElementX) = Sqr(ОкноДПФ(NomElementX, 0) ^ 2 _

       + ОкноДПФ(NomElementX, 1) ^ 2)

   Next NomElementX

End Sub


Модуль Работы с Файлами

Public МассЗвФВвода(10) As tSoundFile

'------------------------------------------------------------------------------------

Sub ОткрытьФайлДляЧтения(НомерФайла As Integer)

       

       Dim a As Integer

       

       МассЗвФВвода(НомерФайла).Поток = FreeFile()

       Open МассЗвФВвода(НомерФайла).ИмяФайла For Random As _

           МассЗвФВвода(НомерФайла).Поток Len = Len(a)

           

       МассЗвФВвода(НомерФайла).Размер = LOF(МассЗвФВвода(НомерФайла).Поток)

       МассЗвФВвода(НомерФайла).ТекущаяПозиция = 45

       МассЗвФВвода(НомерФайла).Прочитан = False

       

End Sub

'------------------------------------------------------------------------------------

Sub ЗакрытьЗвуковыеФайлыЧтения()

   

   Dim i As Integer

   

   If Not (КвоЗвуковыхФайловВвода = 0) Then

       For i = 0 To КвоЗвуковыхФайловВвода - 1

       Close МассЗвФВвода(i).Поток

       Next i

   End If

   

End Sub

'------------------------------------------------------------------------------------

Sub ПрочитатьОкноСемплов(МассивОтсчетов() As Integer, НомерФайла As Integer, _

                           Позиция As Long)

      

   Dim i As Integer

   

   For i = Позиция To Позиция + 1023

       If i > МассЗвФВвода(НомерФайла).Размер Then

           МассивОтсчетов(i - Позиция) = 0

           МассЗвФВвода(НомерФайла).Прочитан = True

           Else

           Get МассЗвФВвода(НомерФайла).Поток, i, МассивОтсчетов(i - Позиция)

       End If

   Next i

   

End Sub

Sub ПрочитатьСимвол(Символ As String, НомерФайла As Integer)

               

   Dim s1 As Integer

           

   Get МассТекстФВвода(НомерФайла).Поток, 1, s1

   Символ = Chr(s1)

   

End Sub

Модуль внешних Функций

Public МассЗвФВвода(10) As tSoundFile

'------------------------------------------------------------------------------------

Sub ОткрытьФайлДляЧтения(НомерФайла As Integer)

       

       Dim a As Integer

       

       МассЗвФВвода(НомерФайла).Поток = FreeFile()

       Open МассЗвФВвода(НомерФайла).ИмяФайла For Random As _

           МассЗвФВвода(НомерФайла).Поток Len = Len(a)

           

       МассЗвФВвода(НомерФайла).Размер = LOF(МассЗвФВвода(НомерФайла).Поток)

       МассЗвФВвода(НомерФайла).ТекущаяПозиция = 45

       МассЗвФВвода(НомерФайла).Прочитан = False

       

End Sub

'------------------------------------------------------------------------------------

Sub ЗакрытьЗвуковыеФайлыЧтения()

   

   Dim i As Integer

   

   If Not (КвоЗвуковыхФайловВвода = 0) Then

       For i = 0 To КвоЗвуковыхФайловВвода - 1

       Close МассЗвФВвода(i).Поток

       Next i

   End If

   

End Sub

'------------------------------------------------------------------------------------

Sub ПрочитатьОкноСемплов(МассивОтсчетов() As Integer, НомерФайла As Integer, _

                           Позиция As Long)

      

   Dim i As Integer

   

   For i = Позиция To Позиция + 1023

       If i > МассЗвФВвода(НомерФайла).Размер Then

           МассивОтсчетов(i - Позиция) = 0

           МассЗвФВвода(НомерФайла).Прочитан = True

           Else

           Get МассЗвФВвода(НомерФайла).Поток, i, МассивОтсчетов(i - Позиция)

       End If

   Next i

   

End Sub

Sub ПрочитатьСимвол(Символ As String, НомерФайла As Integer)

               

   Dim s1 As Integer

           

   Get МассТекстФВвода(НомерФайла).Поток, 1, s1

   Символ = Chr(s1)

   

End Sub


 

А также другие работы, которые могут Вас заинтересовать

73457. Основные способы передачи звукоподражательной лексики на язык перевода 120 KB
  Звукоподражанием в морфологии принято считать неизменяемые слова воспроизводящие звуки издаваемые живыми существами механизмами или характерные для явлений окружающей среды хаха кваква и т. Систему звукоизобразительной лексики можно условно поделить на три группы...
73458. МЕТОДИКО–ПРАКТИЧЕСКОЕ ИССЛЕДОВАНИЕ ОРГАНИЗАЦИИ ТВОРЧЕСКИХ ИНДУСТРИЙ В ПРОСТРАНСТВЕ СОВРЕМЕННОГО ГОРОДА 116 KB
  Наверно каждый город может похвастаться своими местными культурными мероприятиями которые проходят в рамках одного города или региона. Данный фестиваль проводится в разных городах России и в каждом городе проводится по своему.
73460. Основания для предоставления отсрочки и рассрочки по уплате налогов и сборов 102.5 KB
  Изменение срока уплаты налога и сбора осуществляется в форме отсрочки рассрочки инвестиционного налогового кредита. Ни для кого не секрет что рассчитаться по налогам с бюджетом компания должна в установленные сроки. В таких случаях законодатель предусмотрел возможность изменения срока уплаты налога.
73461. Роль монастырей в русской культуре 99.5 KB
  Сохранению национального самосознания, национальной культуры русского народа немало содействовали в тяжелые годы татаро-монгольского ига и западных влияний монастыри. Всего с ХIV до половины ХV века на Руси было основано до 180 новых монашеских обителей.
73462. Категории плательщиков налога и формирование налоговой базы при исчислении НДФЛ 98.5 KB
  Актуальность темы продиктована еще и тем, что в сфере исчисления налога на доходы физических лиц очень часто фиксируются грубые финансовые нарушения, влекущие за собой тяжелые последствия, как для отдельных предприятий и граждан, так и для всей страны в целом.
73463. Т. Парсонс, К. Гирц. Трактовка культуры в контексте теории социального действия 96 KB
  Социальная роль в понимании Т. Парсонса представляет собой набор функций, которые осуществляет каждое действующее лицо в силу занимаемой им социальной позиции при конкретных условиях. Ожидание от другого выполнения данной роли именуется «установкой».
73464. Система аграрного законодательства 84.5 KB
  Предметом аграрного права являются различные общественные отношения возникающие в процессе осуществления сельскохозяйственной деятельности а также непосредственно связанные с деятельностью субъектов аграрного права которые именуются аграрными отношениями.
73465. Сутність міжнародної торгівлі. Методи нетарифного регулювання 79.5 KB
  За допомогою міжнародної торгівлі країни можуть розвивати спеціалізацію підвищувати продуктивність своїх ресурсів і збільшувати загальний обсяг виробництва. У міжнародній торгівлі товар важливий не як продукт виробництва а як об’єкт попиту і пропозиції.