Содержание к диссертации
Введение
ГЛАВА 1. Нейросетевые методы решения задачи классификации 10
1.1. Постановка задачи классификации и основные определения 10
1.2. Определение нейронной сети 13
1.3. Градиентные методы обучения нейронной сети 19
1.3.1. Выбор начальной точки 21
1.3.2. Вычисление градиента функции ошибки 22
1.3.3. Метод наискорейшего спуска 25
2.3.1. Ньютоновская стратегия 26
1.3.1. Метод сопряженных градиентов 27
1.3. 6. Определение величины шага в направлении минимизации 27
1.3. 7. Проблемы использования классических алгоритмов 2В
1.4. Вероятностные нейронные сети 32
1.4.1. Радиальная нейронная сеть 32
1.4.2. Обучение сети 34
1.5. Автоассоциативная сеть Хопфилда 36
1.5.1. Принцип работы сети Хопфилда 37
1.5.2. Обучение сети Хопфилда 38
1.5.3. Сравнение сети Хопфилда с сетями прямого распространения 40
1.6. Метод опорных векторов 4І
1.6.1. Случай линейно-разделимой обучающей выборки 42
1.6.2. Линейно-неразделимые обучающие выборки. Ядра 44
1.7. Выводы по первой главе 46
ГЛАВА 2. Алгоритм синтеза нейронной сети с адаптивной топологией 49
2.1. Идея алгоритма синтеза нейронной сети 49
2.2. Алгоритм построения первого слоя 59
2.3. Построение нейронов очередного слоя 60
2.і. Альтернативные методы синтеза нейрона 62
2.4.1. Алгоритмы, использующие меры расстояния между РКП 63
2.4.2. Исследование возможности замены булевых переменных на вещественные 66
2.4.3. Использование множественной регрессии для синтеза нейрона 67
2.5. Применение метода ветвей и границ для синтеза сети 69
2.5.1. Общая постановка задачи , 70
2.5.2. Вычисление оценки решения 71
2.5.3. Рекорды 71
2.5.4. Отсеивание бесперспективных ветвей 72
2.5.5. Критерий оптимальности и признак недопустимости задачи. 72
2.5. 6. Расширение неполного решения и уточнение оценок 73
2.5. 7. Разбиение множества возможных решений 77
2.5. 8. Алгоритм построения нейросети 77
2.6. Эффект появления лишних нейронов 79
2.7. Обобщение метода для задач классификации с несколькими (более двух) классами 81
2.7.1. Постановка задачи 81
2. 7.2. Последовательный метод синтеза классификатора 82
2.7.3. Параллельный метод синтеза классификатора 83
2.7.4. Выбор метода синтеза классификатора 85
2.8. Выводы по второй главе 88
ГЛАВА 3. Инженерная реализация алгоритма 90
3.1. Архитектура системы 90
3.2. Функциональные возможности клиентского приложения 91
3.2.1. Работа с обучающей выборкой 31
3.2.2. Синтез нейронной сети 93
3.2.3. Визуализация результата 96
3.3. Архитектура клиентского приложения 98
3.3.1. Слой процессора нейронной сети 99
3.3.2. Слой исполнительной среды 102
3.3.3. Организация модульности алгоритмов синтеза нейрона 104
3.3.4. Слой представления 107
3.3.5. Архитектура базовых алгоритмов синтеза 108
3.4. База данных моделей 109
3.5. Компонентная версия пакета 112
3.6. Эксперимент на двумерных обучающих выборках 115
3.7. Выводы по третьей главе 118
ГЛАВА 4. Практическое применение алгоритма 120
4.1. Вычислительный эксперимент. Решение задачи классификации символов 120
4.1.1. Постановка задачи 12D
4.1.2. Формирование обучающей выборки 120
4.1.3. Метод синтеза отдельного нейрона 121
4.1.4. Алгоритм LIPSOL 123
4.1.5. Тестирование алгоритма 126
4.1.6. Технология проведения эксперимента 127
4.1.1. Обучение сети классическими методами 129
4.1.8. Результаты 130
4.2. Использование предложенного метода для восстановления показаний отказавшего датчика в реакторе ядерной энергетической установки 137
4.2.1. Устройство ядерной энергетической установки 138
4.2.2. Принцип построения нейросетевой системы восстановления показаний отказавшего датчика 141
4.2.3. Обучение сети 144
4.2.4. Результаты 146
4.3. Выводы по четвертой главе 149
Заключение 150
- Градиентные методы обучения нейронной сети
- Случай линейно-разделимой обучающей выборки
- Алгоритмы, использующие меры расстояния между РКП
- Эксперимент на двумерных обучающих выборках
Введение к работе
Б настоящее время при решении большого количества различных задач встает проблема автоматической классификации. Существует множество прикладных областей, в которых ставятся и решаются задачи классификации: распознавание визуальных объектов, автоматическое рубрицирование текста, системы поддержки принятия решений и т.д. Процесс классификации, потребность в котором существует в этих предметных областях, укрупненно может быть представлен следующим образом: эксперт, хорошо разбирающийся в предметной области задачи, разбивает ограниченную группу объектов на классы. Поскольку работа эксперта представляет собой ценный ресурс, встает задача автоматического (без участия эксперта) отнесения нового (не исследованного экспертом} объекта к тому или иному классу на основании известных параметров этого объекта. Исходными данными для решения этой задачи могут служить либо примеры объектов, уже классифицированных экспертом, либо определенные знания о предметной области. При построении автоматического классификатора с использованием знаний эксперта, основной проблемой является формализация этих знаний в виде стандартизованных метаданных, что является в основном инженерной задачей. В случае, если для построения классификатора доступны только примеры объектов, классифицированных экспертом ранее, встает проблема синтеза знаний о предметной области, на основании которых будет работать классификатор. В настоящее время не существует универсального подхода к решению такой задачи, причем качество работы получаемого классификатора существенно зависит от предъявленных объектов, на основании которых были синтезированы знания о предметной области. Задачи такого типа являются классической областью применения нейросетевых технологий [39,7,77,38,81,82]. В настоящей работе представлен новый метод решения задач классификации, базирующийся на нейросетевой парадигме.
Математически задача классификации объектов ставится следующим образом. Существует некоторое множество объектов (конечное или бесконечное). Каждый объект описывается некоторым конечным множеством параметров (дискретных или непрерывных), совокупность которых называется пространством признаков, а описание объекта в этом пространстве называется реализацией комплекса признаков (РКП). Также существует конечное множество классов, к которым может быть отнесен тот или иной объект, причем в различных постановках задачи объект может относиться как только к одному, так и к нескольким классам одновременно. Из всего множества объектов выделено некоторое конечное подмножество, элементам которого уже поставлен в соответствие один или несколько классов. Это множество называется обучающей выборкой, а отдельный элемент этого множества называется примером. Необходимо синтезировать вычислительную процедуру, получающую на вход любой объект из исходного множества в виде реализации комплекса признаков. На основании этой . реализации процедура должна поставить в соответствие этому объекту один или несколько классов (в зависимости от постановки задачи). Для построения процедуры можно использовать только информацию об объектах обучающей выборки.
Качество работы полученного механизма оценивается по двум критериям: количество ошибок запоминания и количество ошибок обобщения. Под ошибками запоминания понимается неправильная классификация объектов из обучающей выборки, а под ошибками обобщения неправильная классификация объектов, не входящих в обучающую выборку. Поскольку для построения автоматизированного классификатора используются только объекты из обучающей выборки, то оптимизируемая в процессе построения целевая функция может быть связана только с ошибками запоминания, тогда как с прикладной точки зрения истинной мерой качества работы классификатора является количество ошибок обобщения.
При такой постановке задачи классификации нейросетевые методы являются весьма подходящим инструментом для её решения. Идея, на которой основаны нейросетевые алгоритмы, заключается в использовании математических моделей процессов, происходящих в нервных тканях головного мозга. В основе любого нейросетевого алгоритма лежит нейронная сеть математическая модель нервной ткани. Нейронная сеть состоит из определенного количества узлов, называемых нейронами (здесь математический термин совпадает со своим биологическим протагонистом). Нейронная сеть представляет собой вычислительную систему с большой степенью параллелизма, что делает её очень эффективной для решения определенного рода задач, к которому в том числе относится рассматриваемая задача классификации.
Актуальность. Диссертационная работа посвящена актуальной теме разработке математического алгоритма синтеза нейронной сети с адаптивной топологией и пороговой функцией активации, а также программной реализации этого алгоритма для решения задач классификации и исследованию его свойств.
Объект исследования. Объектом исследования данной работы является алгоритм синтеза нейронной сети с адаптивной топологией и пороговой функцией активации, методы для синтеза отдельного нейрона.
Цель работы. Целью настоящей работы является создание математического аппарата для синтеза нейронных сетей с адаптивной топологией, разработка программного обеспечения, реализующего этот аппарат, исследование возможности использования алгоритма в прикладных целях и сравнение результатов, полученных с помощью предлагаемого алгоритма с результатами, полученными с помощью классических методов обучения нейронной сети на известных задачах.
Для достижения поставленной цели в работе:
• Исследованы классические нейросетевые подходы к решению задач классификации;
• Предложено 5 методов синтеза отдельного нейрона;
• Предложен алгоритм синтеза нейронной сети, основанный на методе ветвей и границ;
• Разработано необходимое программное обеспечение;
• Проведены три вычислительных эксперимента.
Методы исследования. При разработке математического и программного обеспечения в диссертационной работе используются методы линейного программирования, целочисленного программирования, математической статистики.
Научная новизна работы. Новизна работы заключается в следующем:
• Предложен метод синтеза нейронной сети, использующий метод ветвей и границ;
• Предложены 5 методов синтеза отдельного нейрона;
• Предложена схема идентификации и отсева нейронов, удаление которых не влияет на качество нейронной сети.
Практическая ценность. Проведен ряд исследований возможности применения предложенного алгоритма в областях распознавания символов и теплофизики, в результате чего:
• Разработана и апробирована система автоматического распознавания символов;
• Создан классификатор типа поля по его параметрам.
По тематике диссертационной работы выполнялись научно-исследовательские работы по теме №84-3-013-205 в МИФИ (ГУ) . Эти исследования подробно описаны в соответствующих отчетах о НИР. Разработанные инженерные решения бьши использованы в МИФИ, что подтверждается соответствующими актами.
Разработанное программное обеспечение LinProg и Brainstorm прошло регистрацию в Федеральной службе по интеллектуальной собственности, патентам и товарным знакам (РОСПАТЕНТ), что подтверждается соответствующими свидетельствами. На защиту выносятся:
• Алгоритм синтеза нейронной сети;
• Пакет, реализующий разработанный алгоритм;
• Автоматизированная система распознавания символов;
• Специализированный классификатор типа поля.
Границы разрабатываемой темы. Класс задач, решаемых с помощью предложенного алгоритма, ограничен множеством математических моделей, используемых для их описания. Предложенный в работе
алгоритм синтеза нейронной сети, а также все его модификации могут быть реализованы на большинстве аппаратных средств.
Раскрытие результатов. Результаты диссертационной работы были раскрыты в 9 печатных работах [94-102] и 2 отчетах о научно-исследовательских работах [103,104].
Апробация работы. Теоретические и практические результаты были доложены на следующих конференциях и семинарах:
• XIV Международный научно-технический семинар «Современные технологии в задачах управления, автоматики и обработки информации», Алушта, МАИ, сентябрь 2005 [96,98];
• Семинар на кафедре Системного анализа МИФИ «Синтез нейронной сети с пороговой функцией активации», МИФИ, ноябрь 2005.
Структура и объем работы Диссертация содержит 4 главы, введение и заключение, 3 приложения, 54 рисунка, 5 таблиц.
Общий объем 187 страниц. Список использованных источников содержит 104 наименования.
В первой главе приводится постановка задачи классификации; рассматриваются основные способы решения этой задачи и критерии оценки результатов; вводится определение нейрона, синапса, нейронной сети, рассматриваются распространенные виды нейронных сетей; приводятся классические методы обучения нейронной сети; проводится критический анализ этих методов; рассматривается метод SVM как один из наиболее известных методов решения задачи классификации вне нейросетевой парадигмы.
Во второй главе приводится описание метода решения задачи классификации, синтезирующего нейронные сети с адаптивной топологией и пороговой функцией активации; предлагается метод синтеза нейронной сети минимального размера, основанный на методе ветвей и границ; приводится алгоритм удаления «лишних» нейронов из сети; предлагаются два способа сведения обобщенной задачи классификации к тому виду, который используется предложенным методом синтеза нейронной сети.
Б третьей главе приводится описание архитектуры и функциональных возможностей разработанного программного обеспечения; описан вычислительный эксперимент на двумерных обучающих выборках, в котором проводится сравнение нейронной сети, синтезированной с помощью предложенного алгоритма с нейронными сетями, обученными классическими алгоритмами.
В четвертой приводится вычислительный эксперимент по решению задачи распознавания зашумленных символов, сравнение эффективности полученной сети с классическим сетями для распознавания: многослойным перспетроном и вероятностной нейронной сетью; описывается применение разработанного метода синтеза для решения задачи классификации типа поля ядерной энергетической установки.
Градиентные методы обучения нейронной сети
Оба из этих вариантов вносят ложную зависимость от давления, причем в прямо противоположной интерпретации. Недетерминированность конфигурации нейронной сети, а также невозможность формализовать в алгоритме обучения какое-либо знание о предметной области являются существенными недостатками классических методов.
Тем не менее, разработаны методики, позволяющие увеличить вероятность попадания конфигурации нейронной сети в область глобального минимума. Один из наиболее распространенных способов получения указанного результата основан на генетических принципах [72,77]. Его идея заключается в последовательном обучении разных нейронных сетей на одной и той же обучающей выборке с применением к полученным сетям операций, подражающих процессу генетической эволюции хромосом: Селекция Скрещивание Мутация Первая операция обеспечивает выбор одного или двух фрагментов некоторых полученных нейронных сетей. Выбор может быть как случайный, так и подчиняющийся определенной логике. Операция скрещивания производится над парой выбранных в результате селекции фрагментов путем обмена двух нейронных сетей этими фрагментами. Операция мутации производится над выбранным фрагментом путем замены в нем некоторых выбранных весов на случайные замены, В генетическом алгоритме производится массовое параллельное обучение нейронных сетей, с периодическим произведением указанных операций над ними. В результате порождаются новые нейронные сети, и значение их функции ошибки сравнивается с теми значениями, которые уже достигнуты, В процессе работы алгоритма выбраковываются нейронные сети, доставляющие функции ошибки большие значения и остаются только приемлемые нейронные сети, К сожалению, генетические алгоритмы требуют значительных вычислительных ресурсов (поскольку процедура обучения в них повторяется многократно) и все-равно не гарантируют стопроцентного нахождения конфигурации сети, соответствующей глобальному минимуму функции ошибки.
Еще одним недостатком является способ вычисления функции ошибки. Дело в том, что за один проход алгоритма обучения исследуется только один пример из обучающей выборки- На следующем шаге берется другой пример, и вычисляется ошибка сети на нем. Выполняя прямой и обратный прогон метода обратного распространения ошибки можно получить ситуацию, когда разные примеры определяют сильно различающиеся друг от друга направления оптимизации, что тоже может существенно замедлить процедуру обучения. Эту проблему можно решить, используя методы обучения типа «оффлайн», когда за один проход анализируются все элементы обучающей выборки, но тогда размер вектора градиента многократно увеличивается, что приводит к росту вычислительной сложности решаемой задачи. Последовательность передачи примеров нейронной сети для определения направления минимизации также влияет на траекторию движения в пространстве конфигураций. Это усугубляет проблемы с детерминированностью результатов обучения.
Указанные недостатки справедливы не только для рассмотренного выше многослойного персептрона, а для всех типов нейронных сетей, при обучении которых вычисляется градиент и используются классические методы минимизации функции ошибки. Рассмотрим другие виды нейронных сетей, используемых для решения задач классификации: вероятностные нейронные сети и сеть Хопфилда. Вероятностные нейронные сети [91] опираются на математический аппарат, отличающийся от применяемого в многослойном персептроне. В первую очередь отличие заключается в том, что в качестве логических элементов используются нейроны с радиальной функцией активации, которые образуют ТЛІ, радиальные нейронные сети. Радиальная нейронная сеть, основы которой положены в работе [62], по структуре напоминает многослойный персептрон. Есть два основных отличия подобной сети от рассмотренной выше: Сеть имеет ровно два слоя; На первом слое сети находятся нейроны с радиальной функцией активации, на втором единственный нейрон с линейной функцией активации. Радиальная функция активации описывается выражением Если перед передачей сигнала сигмоидальной или пороговой функции активации в биологических нейронах он предварительно умножается на синалтические коэффициенты и суммируется, т. е, сама функция активации является одномерной, то радиальная функция активации представляет собой многомерную функцию от всех входов нейронной сети. Функция передает единичный сигнал на выход, если евклидово расстояние между полученным сигналом и некоторой точкой с, являющейся параметром функции, не превышает заданную величину. Интерпретация радиальной функции активации весьма прозрачна и органично дополняет биологические нейроны. Если одиночный нейрон МакКаллока-Питса разбивает множество исходных объектов для классификации на два подмножества с противоположными классами с помощью гиперплоскости, то нейрон с радиальной функцией активации также разбивает это множество на два подмножества, но только с помощью гиперсферы (рис.1.9)
Очевидно, что использование такой функции в ряде задач может существенно сократить топологию сети, производящей классификацию задачи. Радиальная функция активации выделяет из всего множества некоторую замкнутую область, все объекты которой считаются принадлежащими к заданному классу.
Случай линейно-разделимой обучающей выборки
Объект Р1, л-мерный в пространстве признаков R, в спрямляющем пространстве Rf представляется в виде п -мерного вектора ф{Р ) -Поскольку обучающая выборка в спрямляющем пространстве линейно-разделима, для определения вектора параметров гиперплоскости W с помощью задачи (1.25) необходимо, чтобы в пространство Л было наделено скалярным произведением- Тогда скалярное произведение двух произвольных векторов в пространстве признаков xwx2 отображается в спрямляющем пространстве в скалярное произведение векторов y/(Xi)tiy(x2) . Последнее выражение называется функцией ядра: К(х х2)- y/(x:)ti//(x2) . Теорема Нерсера утверждает, что для того, чтобы математическая функция могла быть функцией ядра, достаточно, чтобы она была симметричной и неотрицательно определенной. Класс таких функций достаточно широк, что позволяет использовать множество преобразований для построения спрямляющего пространства.
Наиболее распространенными функциями ядра являются полиномиальная, радиальная базисная и сигмоидальная функции.
Основной проблемой использования нелинейных преобразований является задача определения функции ядра, приводящей к спрямляющему пространству на основании обучающей выборки. Эта задача до сих пор не решена, и для использования описанного выше аппарата необходимо проведение исследований характера обучающей выборки.
Преимуществами метода опорных векторов перед нейросетевыми методами решения задачи классификации являются следующие: Задача (1.25), являясь задачей квадратичного программирования, имеет единственное оптимальное решение (за исключением вырожденных случаев), что упрощает метод определения параметров гиперплоскости по сравнению с градиентными методами подбора параметров нейронной сети; Метод лишен проблемы определения топологии; » Получаемая в результате работы метода гиперплоскость обладает вполне понятным свойством максимального расстояния до объектов обучающей выборки, тогда как в нейросетевом подходе подобная интерпретация весов нейронов невозможна . и, более того, сами веса обученной нейронной сети недетерминированьт. При этом основным недостатком метод является его невысокое качество работы на линейно-неразделимых обучающих выборках. Это приводит к необходимости поиска спрямляющего пространства, что является неразрешимой задачей в общем случае, а также увеличивает вычислительную сложность алгоритма за счет дополнительных вычислений значений функции ядра. 1.7. Выводы по первой главе В первой главе приведена постановка задачи классификации в общем виде. Рассмотрены различные аспекты, связанные с этими задачами, в том числе Указаны различные виды задач классификации; Описаны подходы к решению этих задач; Введены основные понятия, связанные с индуктивным методом решения задач. Также в первой главе приведен обзор наиболее распространенных нейросетевых методов решения задач классификации: Введено понятие нейрона, нейронной сети; Указана связь между биологическим нейроном и математической его моделью; Рассмотрена эволюция математической модели нейрона в сторону нейронов с дифференцируемой функцией активации; Описано устройство и принцип работы многослойного персептрона, приведено обоснование методов его обучения, основанных на градиентных нелинейных методах оптимизации; Описано устройство и принцип работы сети на радиальных базисных функциях, приведено обоснование вероятностного метода Описано устройство и принцип работы ассоциативной памяти на основе нейронной сети Хопфилда, рассмотрены метода её обучения; Рассмотрен метод опорных векторов, как один из наиболее распространенных методов решения задачи классификации без использования нейросетевой парадигмы, В результате анализа перечисленных методов решения задачи классификации, сформулированы их основные недостатки: Использование методов локальной оптимизации для поиска оптимальной топологии нейронной сети; Неопределенность оптимальной топологии нейронной сети; Недетерминированность параметров обученной нейронной сети; Сильная ограниченность круга задач, решаемых методом опорных векторов в случае работы в исходном пространством признаков; Отсутствие в методе опорных векторов унифицированного подхода к определению преобразования, приводящего к спрямляющему пространству.
Алгоритмы, использующие меры расстояния между РКП
Существенным преимуществом задачи {2.12) перед задачей {2.9) является отсутствие в ней дискретных переменных, что позволяет использовать для её решения симплекс-метод, который значительно менее требователен к ресурсам по сравнению с методом Ленд и Дойг, используемым для решения задачи {2.9). Также отказ от булевых переменных лает возможность решать задачи больших размерностей с применением приближенных алгоритмов {вплоть до градиентного поиска)- Учитывая то обстоятельство, что целевая функция задачи (2.12) не отличается от целевой функции (2.9), описанный выше недостаток алгоритма синтеза нейрона, основанного на модели {2.12) представляется менее серьезным, чем это кажется на первый взгляд. Более того, для линейно разделимых областей, классифицируемых единственным нейроном, оптимальное решение целевой функции задачи (2-12) будет нулевым, что автоматически будет означать равенство нулю всех вещественных переменных xt и уj. Б этом случае целевые функции оптимальных решений задачи (2.9) и (2.12) совпадут, из чего можно сделать вывод о нецелесообразности использования модели (2,9) для задач классификации с линейно разделимыми областями. Другим способом снижения вычислительной сложности алгоритма является отказ от аппарата линейного и целочисленного программирования для синтеза отдельного нейрона. В настоящей работе этот подход иллюстрируется на примере алгоритма, основанного на аппарате множественной регрессии [24]. В качестве предикторных переменных регрессии х будем использовать координаты РКП, а в качестве объясняющей переменной у класс РКП- Найдем функциональную зависимость объясняющей переменной у от предикторных переменных х: у=у(х19х2„„,хЛ). Для этого будем использовать линейную модель множественной регрессии. В ряде задач может оказаться, что факторы пространства признаков сильно скоррелированы (или вообще зависимы}, В регрессионном анализе этот эффект называется мультиколлинеарностыо, Б результате этого синтезируемый нейрон W может обладать низким качеством классификации, либо при вычислении обратной матрицы в выражении (2.13) может произойти ошибка деления на ноль. Поэтому в условиях мультиколлинеарности использование обычного метода наименьших квадратов становится нецелесообразным.
Одним из подходов к оцениванию параметров уравнения регрессии при наличии мультиколлинеарности состоит в сокращении количества входящих в модель предсказывающих переменных путем отбора подмножества предсказывающих переменных, существенных для прогноза значений переменной у [63] . Так, если две какие-либо переменные имеют высокую корреляцию суй друг с другом, то часто бывает достаточно включения в модель одной из них, а дополнительным вкладом в дисперсию от включения другой можно пренебречь Существенного сокращения числа предикторов можно добиться с помощью пошаговых (STEP-WISE) процедур отбора переменных. Хотя ни одна из пошаговых процедур не гарантирует получения оптимального по заданному критерию набора переменных, все же обычно получаемые с их помощью наборы переменных являются достаточно хорошими для практического применения.
Работа по алгоритму step-wise регрессии начинается с модели, не имеющей ни одного фактора- Первым фактором, который выбирается в модель, является тот, который при своем появлении в модели создает максимальное значение F-статистики (при оценивании значимости модели). На очередной итерации в модель добавляется фактор, создающий максимальную частичную F-статистику. Другими словами, добавляемый фактор имеет максимальную частичную корреляцию с у, с учетом других факторов, уже присутствующих в модели.
Работа алгоритма заканчивается, когда из веек факторов, не включенных в модель, нет ни одного, значение F-статистики которого превышало бы заданное пороговое значение.
Следует отметить, что использование пошаговой регрессии не является единственно возможным способом борьбы с мультиколлинеарностью в процессе синтеза нейрона методом наименьших квадратов. Альтернативой этому может быть стандартная процедура факторного анализа над обучающей выборкой перед процессом синтеза нейронной сети.
Экспериментальное исследование различных методов автоматического синтеза нейронных сетей, основанных на использовании разных моделей математического программирования, описанных в предыдущих моделях, показало, что на эффективность этих методов существенно влияют структурные особенности обучающей выборки. На одних выборках наибольший эффект дают одни модели, на других - другие.
В процессе же синтеза НС исходная ОВ разбивается на частные обучающие выборки (ЧОВ), для каждой из который необходимо синтезировать "свой" нейрон. При этом в общем случае, для каждой ЧОВ наиболее эффективной является вполне определенная математическая модель.
Эксперимент на двумерных обучающих выборках
При инициировании пользователем процедуры синтеза создается отдельный поток, Б котором эта процедура исполняется. Этот поток представлен на диаграмме классом TNeuroThread, Поток создает экземпляр уже описанного класса GlobalSolveList, и вызывает его метод ExecuteCalculation, которому передает исходную обучающую выборку. Класс GlobalSolveList при этом хранит обратную ссылку на поток, в котором он исполняется, в свойстве NrnThr. Когда класс GlobalSolveList пытается расширить некоторое частичное решение, он вызывает его метол SolveMethod с указанием метода, который должен быть выполнен- Это частичное решение создает новый поток экземпляр класса TSafetyThread и в этом потоке производит вызов метода синтеза отдельного нейрона. Такая конструкция необходима, поскольку приложение функционирует в условиях неизвестности поведения выполняемого кода. Исследователь (пользователь) может написать свой программный код, реализующий некий алгоритм синтеза, скомпилировать его согласно требованиям пакета Brainstorm и подключить его к пакету- При этом нет никаких гарантий, что в этом коде нет ошибок и, что более существенно, исполнение этого кода не приведет к зависанию- Поэтому в пакете введено понятие таймаута времени, отведенного пользователем на синтез одного нейрона любым методом- При превышении заданного интервала времени созданный поток-экземпляр класса TSafetyThread уничтожается системным вызовом функции Windows, а пакет констатирует невозможность синтеза нейрона заданным методом (как следует из алгоритма, это вполне нормальный результат, не обязательно приводящий к останову всего процесса синтеза, хотя такой возможности исключать нельзя). Если пользователь приостанавливает работу алгоритма, то вызывается стандартная функция Windows, приостанавливающая исполнение потока-экземпляра класса TNeuroThread. В случае, если пользователь хочет сохранить снимок приостановленной процедуры синтеза в файл, то вызывается функция SavePartial потока TNeuroThread, которая предоставляет диалог выбора файла для сохранения и вызывает метод SaveGSL экземпляра класса GlobalSolveList, передавая ему указатель на открытый файл. Тот в свею очередь вызывает аналогичные методы у зафиксированного рекорда, всех частичных решений в списке {они соответственно также вызывают методы сохранения нейронной сети, нейронов и синапсов) . В результате цепочки вызовов методов все созданные объекты слоя процессора нейронной сети оказываются сериализованными в двоичном файле. После этого пользователь может вообще прекратить синтез нейронной сети. Тогда вызывается метод SafeKill потока TNeuroThread, который устанавливает флаг StopFlag экземпляра класса GlobalSolveList. Программная логика основного цикла такова, что при установленном флаге цикл завершает свою работу и уничтожает все созданные объекты как только это становится возможным (т.е. как только ему возвращается управление от последнего вызванного метода синтеза нейрона)- Таким образом, при останове процесса максимальное время, которое монет понадобиться для корректного завершения работы равно заданному таимауту для метода синтеза нейрона.
Если пользователь хочет загрузить снимок процедуры синтеза из файла и продолжить её вместо того, чтобы начинать работу заново, то логика несколько меняется. В этом случае создается поток TNeuroThread с установленным флагом ResumeMode- Поток открывает указанный файл, восстанавливает из него все объекты в памяти путем вызова отдельного конструктора класса GlobalSolveList» Десериализация проходит в порядке, обратном тому, как проходила сериализация объектов в файл. Данные загружаются из файла путем вызовов специальных конструкторов всех задействованных классов слоя процессора нейронной сети. После этого вызывается метод ExecuteCalculation и процедура синтеза возобновляется с того места, на котором она была остановлена пользователем перед сохранением.
Как уже говорилось выше, приложение разработано таким образом, что не содержит в себе алгоритмов, синтезирующих нейрон. Эти алгоритмы должны содержаться в динамических библиотеках, распространяемых вместе с приложением. В стандартный комплект программы входит базовый пакет распознавания ЧОБ, основанный на линейном программировании - Однако любой пользователь, знающий спецификацию модулей и имеющий навыки разработки динамических библиотек на произвольном языке программирования, способен разработать свои алгоритмы распознавания, возможно и не имеющие никакого отношения к линейному программированию. Для этого ему необходимо реализовать все интерфейсные процедуры, требуемые пакетом, скомпилировать свою программу в формат динамической библиотеки Windows и скопировать полученный файл в каталог Pluglns, после чего алгоритм будет автоматически распознан приложением.