Главная > Искусственные нейронные сети. Теория и практика
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

5.5. Нейропакет BrainMaker

Большое число модификаций весьма популярного в нашей стране, особенно среди экономистов, нейропакета BrainMaker разработано фирмой California Scientific Software, USA (адрес сайта в Интернет: http://www.calsci.com.products.htmi). Ниже рассмотрим особенности одной из распространенных версий данного пакета - BrainMaker 3.10, которую можно найти на многочисленных CD-дисках тематики «Математика, экономика, статистика».

5.5.1. Общая характеристика

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

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

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

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

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

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

5.5.2. Входные и выходные данные

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

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

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

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

5.5.3. Типы файлов

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

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

Файл фактов содержит обучающие, тестирующие и рабочие факты, которые будут использоваться созданной сетью. По умолчанию они имеют расширения соответственно .fct, .tst, .in.

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

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

Помимо перечисленных основных файлов BrainMaker генерирует множество других типов файлов. Эти файлы могут содержать: выходные данные сети и сопровождающую информацию (.out), статистику обучения (.sts) и тестирования (.sta), файлы отчетов по исследованиям зависимостей (.rpt), отдельные параметры созданной сети (.ext).

5.5.4. Создание нейросетевой модели

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

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

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

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

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

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

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

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

Динамическое сокращение ошибки обучения. В процессе обучения нейронная сеть «рыскать» по поверхности ошибки При этом она часто попадает в локальные минимумы сложной поверхности. Степень точности, которая допускается при сравнении реального выхода сети и обучающей матрицы, сильно влияет на скорость обучения. Чем больше допустимая ошибка, тем больше разброс величин коррекции весов сети от факта к факту Например, при точности 0,25 и требуемом выходе 1,0 ответ сети 0,76 не вызовет необходимой коррекции, тогда как ответ 0,74 заставит сеть скорректировать веса в соответствии с разностью, равной 0,26, что может заставит сеть «скакнуть» далеко по гиперповерхности ошибки, возможно, в высокий локальный максимум, с которого сеть будет спускаться обратно в течение следующих нескольких циклов обучения. Визуально это можно наблюдать на графике

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

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

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

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

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

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

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

близкие к параличу, способны завершить процесс обучения и успешно функционировать.

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

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

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

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

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

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

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

Статистика процессов обучения и тестирования. Процесс обучения нейронной сети в программе BrainMaker возможно сочетать со многими контрольными функциями, основной из которых является тестирование сети в процессе обучения. Это означает, что набор обучающих примеров можно разбить в определенной пропорции (по умолчанию, 1/9) на тестирующий и обучающий наборы. С определенной периодичностью программа предъявляет сети набор тестовых примеров, на основе которых оценивается ее умение правильно обрабатывать факты, которых сеть никогда не «видела».

Максимальная частота тестирования - один раз за цикл обучения. Результаты каждого цикла обучения и тестирования могут быть записаны в файлы статистики (.sts и .sta). В эти файлы заносится следующая информация: номер цикла, общее число предъявленных примеров, количество правильных и ошибочных фактов, количество ошибочных выходов сети, общее число ошибочных фактов, коэффициент скорости обучения, точность обучения/тестирования, средняя ошибка, среднеквадратическая ошибка, время обучения. Файлы имеют текстовый формат и могут быть обработаны любым текстовым редактором. Помимо этого, файлы могут быть обработаны программой NetMaker. Данная программа позволяет применить к данным тестовых файлов все средства анализа, описанные выше.

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

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

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

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

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

Создание, обучение, тестирование и опрос сети в среде BrainMaker рассмотрим далее на примере уже рассмотренной задачи моделирования логической функции «Исключающее ИЛИ»

1) Подготовка исходных данных

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

Сохраним его под именем xor.dat. Исходные данные можно подготовить и в других форматах также, как в пакете НейроПро.

Запустим NetMaker, при этом откроется меню программы (рис 5 45) Выберем опцию Read in Data File (Читать файл данных) В окне диалога выберем и откроем созданный файл xordat Выберем далее опцию Manipulate Data (Преобразование данных) В окне программы появится таблица, представленная на рис. 5.46

Рис. 5.45 Основное меню программы NetMaker

Рис. 5.46 Окно преобразования данных утилиты NetMaker

Нажмем мышью кнопку Х1 и далее выберем из меню окна пункты Label/Mark Column as Input (Пометить столбец как вход). То же самое проделаем со столбцом Х2, а столбец У с помощью команды Label/Mark Column as Pattern (Пометить столбец как вывод) укажем как выходной. В результате таблица преобразуется к иду рис. 5.47.

Рис. 5.47 Исходные данные после преобразования

Теперь с помощью команды File/Create BrainMaker Files перейдем к диалоговому окну вида рис 5 48

Рис. 5.48 Окно подтверждения записи образованных файлов

В нем появится сообщение, что будут подготовлены три файла BrainMaker с расширениями, соответственно, def, fct и tst Согласимся с этим, нажав кнопку Write Files (Записать файлы), и выйдем из программы, выбрав команду File/Exit

2) Задание структуры сети и параметров ее обучения Запустим программу BrainMaker, в меню рабочего окна программы выберем команду File/Read Network (Файл/Читать сетевой файл) и далее в окне диалога укажем и откроем файл хог def Окно нейропакета примет при этом вид рис. 5.49

В верхней части окна можно выделить следующую информацию открыт файл хог fact (данные обучающей выборки во внутреннем формате BrainMaker), коэффициент скорости обучения допустимый уровень ошибки Следующая строка в верхней части окна описывает процесс обучения, и пока он не начат, все параметры в строке установлены нулевыми Далее в окне указаны имена входных переменных выхода сети (Y, Out) и соответствующего образца (Y, Ptn) обучающей выборки

Рис. 5.49 Рабочее окно BrainMaker после открытия сетевого файла

Установим требуемую структуру сети, выбрав команду меню Connections/Network Size, и далее в появившемся диалоговом окне укажем 2 нейрона в первом (скрытом) слое (рис. 5.50) с подтверждением этого

Рис. 5.50 Диалоговое окно задания структуры нейронной сети

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

3) Обучение сети

Выберем команду меню Operate/Train Network, запускающую процесс обучения Спустя некоторое время процесс обучения остановится, и окно программы примет вид рис. 5.51

Рис. 5.51 Окно нейропакета после завершения процесса обучения

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

4) Опрос сети.

В приведенном окне значения входов, выхода сети и образца представлены в графической форме в виде столбиков («термометров»), Мышью можно регулировать их длину, тем самым плавно меняя значения входов и наблюдая реакцию обученной сети (У, Out). Для представления данных в числовой форме, необходимо выбрать команду меню Display/Edit Network Display, после чего в появившемся диалоговом окне (рис. 5.52) задать опцию Number (Число).

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

5) Сохранение результатов.

Для сохранения результатов достаточно выбрать команду меню File/Save Network и далее согласиться с предлагаемом именем сохраняемой сети (в нашем случае xor.net).

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

Рис. 5.52. (см. скан) Диалоговое окно задания вида отображения информации

5.5.5. Общее суждение о нейропакете

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

Пакет BrainMaker Professional обладает следующими характеристиками, делающими возможным создание на основе его интегрированных программных систем:

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

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

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

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

<< Предыдущий параграф Следующий параграф >>
Оглавление