Реализация автономных адаптивных систем управления на базе нейронных сетей
[pic].
Таким образом, задачу построения НС ФРО можно сформулировать следующим
образом: для данной совокупности входных фильмов построить такую сеть, в
которой бы присутствовали нейроны, для которых данные входные фильмы
являются обучающими. Построенная таким образом сеть способна решать
эталонную задачу классификации, где в качестве эталонов используются данные
входные фильмы. Известно множество способов конструирования и настройки
сетей для классических формальных моделей нейронов, например, сети
обратного распространения, использующие обобщенное [pic]-правило. Проблема
предлагаемого подхода состоит в том, что 1) система должна быть автономной,
а значит отсутствует «учитель»; 2) вообще говоря, a priori не известны все
жизненно необходимые для системы образы. Но если мы обладаем априорной
информацией об условиях существования системы (что почти всегда бывает), ее
следует использовать при конструировании ФРО.
Можно иначе сформулировать задачу построения ФРО. Приведем пример с
системой «Пилот» [Диссер, Жданов9]. В математической модели спутника
используются величины углового положения спутника [pic] и его производной
[pic], следовательно, очевидно, что всевозможные сочетания возможных
значений этих величин (т.е. некоторая область на фазовой плоскости)
необходимы для нахождения законов управления системой. Действительно,
допустим система в момент времени t находится в состоянии [pic] и УС
выбирает некоторое управляющее воздействие [pic] (включение одного из
двигателей, например). Мы знаем, что в момент времени [pic] система
окажется в некотором состоянии, соответствующем точке на фазовой плоскости
с некоторой вероятностью [pic], где [pic] - точка на фазовой плоскости,
таким образом, можно говорить о некотором вероятностном распределении
[pic], заданном в фазовом пространстве и характеризующем предсказание
поведения системы через интервал [pic] при выборе воздействия [pic] в
момент времени t. Если бы параметров [pic] было недостаточно для описания
законов управления, то функция распределения зависела бы еще и от других
параметров, и при одних и тех же величинах [pic] принимала бы другие
значения в зависимости от значений неучтенных параметров. Следовательно, УС
не смогла бы найти никакого закона управления, поскольку система ищет
статистически достоверную корелляцию между наблюдаемым состоянием ОУ,
выбранным действием и состоянием ОУ через некоторый интервал времени.
Законом управления здесь мы назовем совокупность функций распределения для
каждого управляющего воздействия [pic], где [pic] находится в некотором
диапазоне. Найденный УС закон управления отобразится в некотором внутреннем
формате в БЗ, причем он может быть получен в процессе обучения системы в
реальных условиях прямо во время работы, либо на тестовом стенде, «на
земле». Следовательно, можно сказать, что задача построения ФРО состоит в
конструировании образов, соответствующих необходимому набору параметров,
описывающих состояние системы, и их комбинациям, необходимым для нахождения
закона управления. Нахождению таких образов может помочь математическая
модель объекта управления, если таковая имеется.
3.4. Распознавание пространственно-временных образов.
Определение 3.4.1. Всякую совокупность значений реализации входного
процесса в некоторые выбранные интервалы времени [pic] будем называть
пространственно-временным образом (ПВО).
Отметим, что один нейрон способен распознавать (т.е. способен обучиться
выделять конкретный ПВО среди всех остальных) только те ПВО, у которых
единичное значение сигнала для каждой выбранной компоненты входного
процесса встречается не более одного раза (пример изображен на верхнем
графике рис. 3.4.1). Сеть нейронов можно построить так, что в ней будут
формироваться любые заданные ПВО (нижний график рис. 3.4.1).
[pic]
Рис 3.4.1.
4. База знаний.
Процесс накопления знаний БЗ в рамках методологии ААУ подробно рассмотрен в
[Диссер], [Жданов4-8]. В данном разделе мы опишем лишь основные отличия от
указанных источников.
Рассмотрим общий алгоритм формирования БЗ. Основная цель алгоритма состоит
в накоплении статистической информации, помогающей установить связь между
выбранными управляющей системой воздействиями на среду и реакцией среды на
эти воздействия. Другая задача алгоритма состоит в приписывании оценок
сформированным образам и их корректировки в соответствии с выходным
сигналом блока оценки состояния.
Определение 4.1. Будем называть полным отсоединением ФРО от среды следующее
условие: процессы [pic] и [pic] являются независимыми. Вообще говоря, в
действующей системе, конечно же эти процессы зависимы, например, в простом
случае без блока датчиков [pic], но для введения некоторых понятий
требуется мысленно «отсоединить» входной процесс и процесс среды.
Определение 4.2. Назовем временем реакции среды на воздействие [pic] число
[pic], где [pic] случайные величины [pic] и [pic] являются зависимыми
при полном отсоединении ФРО от среды. Закономерностью или реакцией среды
будем считать зависимость [pic] от [pic].
Другими словами, время реакции среды это время, через которое проявляется,
т.е. может быть распознана блоком ФРО, реакция на воздействие.
Пример 4.1. [pic] = [pic]. Очевидно, что здесь [pic].
Определение 4.3. Назовем минимальной [pic] и максимальной [pic] инертностью
среды минимальное и максимальное соответственно время реакции среды на
воздействие [pic] для всех [pic]. Интервал [pic] будем называть интервалом
чувствительности среды.
Заметим, что [pic].
Введем совокупность образов
[pic]. (4.1)
Параметр n > 0 назовем запасом на инертность среды. Смысл [pic] состоит в
том, что если [pic] обучен, в текущий момент времени распознан образ [pic]
и УС выберет воздействие [pic] то с некоторой вероятностью через n шагов
распознается образ [pic]. Аналогично введем образ
[pic], (4.2)
смысл которого совпадает со смыслом [pic], с тем лишь различием, что [pic]
не распознается, а вытеснится. Поскольку в конечном итоге способом
управления УС является вызов определенных образов и вытеснение других, то
совокупность обученных образов [pic] является материалом, способствующим
достижению цели управления, то есть вызову или вытеснению определенных
образов посредством выбора воздействия [pic] из множества возможных
воздействий Y на каждом шаге t. Как используется этот материал будет
изложено в разделе «Блок принятия решений».
Запас на инертность введен из следующих соображений. Совершенно очевидно,
что бесполезно пытаться уловить закономерность вида «был распознан образ
[pic], применили [pic]и через m шагов получили [pic]», где [pic], так как
среда будет просто не успевать отреагировать. Таким образом, УС может
уловить закономерности со временем реакции среды не большим чем n.
Аналогично, нет смысла выбирать n слишком большим, т.е. гораздо большим,
чем [pic]. С другой стороны, используя синаптические задержки входных
сигналов в нейроне, мы можем отловить любую закономерность со временем
реакции меньшим либо равным запасу на инертность. Действительно, мы можем
построить ФРО так, чтобы образы [pic] и [pic] формировались с нужными
задержками [pic], где m – время реакции среды. Заметим, что a priori нам
неизвестно время реакции среды m, поэтому имеет смысл лишь выбрать
параметр n для всех образов одинаковым и «наверняка» большим чем [pic] (для
этого необходимо воспользоваться априорной информацией о среде).
Теперь сопоставим каждому образу из ФРО некоторое число или оценку. Пусть
[pic] – выход блока оценки состояния, а [pic] – оценка образа [pic],
получающаяся по следующему алгоритму:
[pic], [pic],
где [pic]– некоторая «усредняющая» функция, [pic]- множество моментов
времени, в которые образ [pic] был распознан. В качестве [pic] обычно
берется просто среднее арифметическое
[pic].
Теперь можно определить, что такое база знаний.
Определение 4.4. Назовем базой знаний совокупность сформированных образов
[pic] и совокупность оценок [pic] для всех образов ФРО.
Определение 4.5. Обозначим объединение множеств всех образов (4.1) и (4.2)
через [pic], где F – множество образов ФРО, Y – множество возможных
воздействий. Назовем B пространством образов БЗ.
5. Система построения и исследования нейронных сетей СПИНС.
5.1. Актуальность системы.
Для моделирования на ЭВМ компонентов УС, сконструированных из нейронов,
была осознана необходимость в специальном инструменте, позволяющем с
помощью удобного графического интерфейса создавать библиотеки шаблонов
блоков, строить сети из блоков, построенных по шаблонам, и просчитывать
сеть с возможностью просмотра промежуточных состояний сети, сбора и анализа
статистики о работе сети в целях отладки. При создании (или выборе)
инструмента использовались следующие критерии:
открытость, или спецификация и реализация (generic) интерфейса и (процедур
обработки) форматов данных, позволяющие проводить модификацию и наращивание
функциональности системы не затрагивая ядра системы и с минимальными
затратами на модификацию связанных компонент, другими словами, минимизация
связей между компонентами;
гибкость, возможности по конструированию как можно большего числа классов
формальных моделей нейронов и сетей под самые различные приложения от
моделей УС спутников и космических аппаратов до систем поддержки принятия
решений и систем предсказания курса ценных бумаг;
многоплатформенность, максимальная независимость от операционной системы;
удобство и приспособленность к моделированию именно систем ААУ, простота в
использовании и способность эффективно работать на относительно слабых
ресурсах ЭВМ (класса персональных компьютеров), дешевизна.
Анализ имеющихся в наличии или доступных систем САПР и других систем
(например, LabView или систем с классическими НС), тем или иным образом
удовлетворяющих первым трем критериям, показал, что все они являются либо
тяжеловесными, либо слишком дорогими, либо очень плохо приспособлены к
моделированию систем ААУ и ОУ с формальной моделью нейрона, изложенной в
разделе «Аппарат ФРО» или к работе с сетями, состоящими из тысяч нейронов.
Таким образом, возникла необходимость в инструменте для научно-
исследовательских целей, который бы позволял проверять идеи ААУ и создавать
прототипы УС на НС.
5.2. Общая концепция системы.
[pic]
Рис. 5.1. Общая схема ядра СПИНС.
На приведенной схеме (рис 5.1) указаны основные классы объектов ядра
системы и их взаимодействие. Стрелками показаны потоки данных при работе
системы. Каждому из основных блоков УС соответствует свой блок в системе.
Четыре блока: ФРО, БЗ, БОС и БПР составляют УС. Напомним, что в подразделе
«Формализация НС» раздела 1 мы определили такие понятия как блок, выходная
функция блока, шаблон, нейронная сеть и формальная модель нейрона. Из
формальной модели НС следует, что блок – это иерархическая структура, в
которой элементы одного уровня соединены в сеть и каждый из элементов
уровня может быть сетью, состоящей из элементов более низкого уровня.
Рассматривая выбранный элемент какого-нибудь уровня, можно считать его
«черным ящиком», т.е. абстрагироваться от его содержимого и внутреннего
устройства. Например, можно на некотором промежуточном этапе
конструирования УС абстрагироваться от нейро-сетевой реализации какого-либо
блока верхнего уровня и попробовать различные реализации, причем
необязательно нейросетевые. Система не накладывает ограничений на
внутреннее устройство каждого блока, поэтому оно может не иметь внутренней
иерархии, а просто представляться некоторой функцией выхода. Далее, в
процессе развития УС, содержимое отдельных блоков может поменяться,
возможно стать более сложным и иерархическим, при этом поведение системы не
изменится, если новое содержимое обеспечивает функциональность старого в
смысле эквивалентности выходных функций. Таким образом, облегчается
разработка системы, т.к. появляется возможность конструирования «сверху
вниз», нет необходимости реализовывать блок сразу через НС, можно поставить
временную «заглушку», а в процессе развития системы усложнять, дополнять
или заменять на совершенно иную внутреннюю конструкцию блоков.
Помимо указанных блоков, в систему входят еще два важных класса объектов:
конструкторы сети и анализаторы работы сети. Первые, как видно из названия,
предназначены для создания рабочих копий НС в памяти компьютера по
различным источникам, например по спецификации сети из файла. Собственно,
для каждого источника и создается свой объект. (Следует отличать данные
объекты от конструкторов сетей, предназначенных для создания с помощью ГИП
файлы спецификации сетей; эти конструкторы в ядро СПИНС не входят).
Спецификация сети может ссылаться на шаблоны блоков из библиотеки, которые,
таким образом, также могут являться источником для конструкции. Анализаторы
нужны при отладке сетей. Дело в том, что сети могут содержать тысячи и
десятки тысяч элементов (принципиальных ограничений нет,имеют место
ограничения только по памяти и производительности компьютера), работу
которых одновременно проследить просто невозможно, особенно если временной
интервал работы составляет сотни и более тактов. Поэтому необходимо как-то
обобщать информацию о состоянии сети (которое есть совокупность состояний
каждого элемента) в каждый момент времени и выдавать пользователю суммарную
информацию, возможно, с некоторой детализацией по усмотрению пользователя.
Для такой задачи и нужны специальные объекты – анализаторы. Эти объекты
могут сохранять историю состояний выбранных элементов в выбранные интервалы
времени и впоследствии ее анализировать, т.е. определять статистического
рода информацию. Каждый объект решает эту задачу по-своему и может быть
выбран в зависимости от рода необходимой информации о работе сети.
Отметим здесь на наш взгляд очень полезную классификацию объектов на
инструменты и материалы [СтатьяИнстрМатериалы]. Материалами называются
объекты, являющиеся своего рода контейнерами информации и содержащие методы
только для накопления и несложных преобразований этой информации.
Инструментами называются объекты, предназначенные для обработки материалов,
т.е. для более интеллектуальных и сложных преобразований той информации,
которую хранят объекты - материалы. Таким образом, с точки зрения этой
классификации, мы считаем нейронные сети (блоки) материалами, а
конструкторы и анализаторы – инструментами. Следует не путать эти
инструменты-объекты с инструментами–приложениями, являющимися надстройками
над ядром.
В реализации программы мы существенно использовали идеи объектных шаблонов
из [Gamma]. Далее, в описании реализации системы мы будем использовать
русскоязычные аналоги терминов, введенных в [Gamma], поэтому, чтобы не
возникло путаницы, отметим, что Фабрика соответствует Factory, объектные
шаблоны – design patterns, Синглетон – Singleton, Chain of Responsibility –
Цепочка Обработчиков. Названия классов объектов будут выделены курсивом и
начинаться с заглавной буквы. Отметим, что идея шаблонов в программировании
и computer science оказалась весьма плодотворной и слово «шаблон» здесь мы
используем в трех различных смыслах: объектный шаблон (design pattern),
просто шаблон (в смысле определения 1.x.5) и C++ - шаблон (template).
Мы опишем только реализацию ядра системы. Следование принципам открытости
предполагает закладывание возможности развития системы через добавление
надстроек над ядром (рис. 5.2). Мы, по возможности, старались следовать
данному принципу. В частности, одним из направлений развития мы видим
создание конструкторов библиотек шаблонов (а, следовательно, и сетей) с
помощью ГИП. Предполагается, что выходным продуктом этих конструкторов
будут файлы спецификации шаблонов, с которыми уже умеет работать ядро, из
которых и будут формироваться библиотеки шаблонов. Далее, можно было бы
создать трехмерный визуализатор БЗ (об этом далее), также мы считаем,
понадобится отдельный инструмент для конструирования самих БЗ, а, возможно,
при определенном уровне сложности блоков УС, и для каждого из них по
отдельному инструменту, которые бы учитывали в полной мере специфику блоков
УС.
[pic]
Рис. 5.2.
5.3. Конструкторы сетей. Библиотеки шаблонов.
Как уже было отмечено, конструкторы сетей ядра СПИНС предназначены для
создания внутреннего представления сети в памяти компьютера по различным
источникам. Здесь будет рассмотрен только один - конструктор по файлу-
спецификации сети, но мы не исключаем возможности создания конструкторов,
использующих другие источники.
Конструктор по сути своей является фабрикой объектов класса ЭлементСети.
Идея фабрики состоит в следующем. Поскольку конструирование сети состоит в
порождении огромного числа разнородных объектов ЭлементСети, то необходим
объект для регулировки процесса порождения и смерти этих объектов, или
фабрика элементов сети. То есть на Фабрику также возложены функции сборщика
мусора. Регулировка или управление процессом порождения состоит в
следующем. Мы имеем много разных потомков класса ЭлементаСети, например,
Нейрон, который, в свою очередь имеет несколько подклассов, соотвествующих
каждой из разновидностей формальных моделей, а также другие элементы сети
Блок, Источник, имеющий также несколько своих подклассов и т.д.
Предположим, мы модифицировали или создали новую версию класса A из
перечисленных классов - [pic]. Тогда в каждом месте исходного текста мы
должны заменить оператор порождения A на оператор порождения [pic]. Более
гибкой является следующая схема. Фабрика1 умеет, или точнее выражаясь,
имеет методы для порождения объектов классов А, B, C и т.д. При сообщении о
порождении, например, объекта типа А, она порождает на самом деле объект
потомка А: [pic], а Фабрика2 порождает в данном случае [pic]. Таким
образом, заменой только фабрик мы можем менять классы порождаемых объектов.
Отметим, что фабрика на языке C++ естественным образом реализуется через
С++ - шаблон (template) и параметризуется типом порождаемых объектов.
Ссылка на ФабрикуЭлементовСети, умеющую порождать каждый из конечных
потомков ЭлементСети, хранит объект Сеть. При инициализации
КонструктораСети ему сообщается ссылка на Сеть. Естественно, Сеть еще не
содержит ЭлементовСети, но уже должна иметь ссылку на ФабрикуЭлементовСети.
При конструировании сети по файлу спецификации КонструкторСетиПоФайлу
(подкласс КонструктораСети) использует методы порождения объектов
ФабрикиЭлементовСети, ссылку на которую он берет у Сети.
Отметим здесь, как решена была проблема передачи параметров конструктору
(инициализатору, особому методу, вызывающемуся первым после размещения
объекта в памяти) элемента сети и, вообще, конструктору любого объекта,
порождение и удаление которого находится под управлением фабрики. Проблема
состоит в унификации типа передаваемых параметров: они должны быть одни и
те же для всех типов элементов сети. Был введен класс Атрибут и методу
порождения объекта у фабрики и, соответственно, конструктору объекта
передавался список Атрибутов. Каждый Атрибут имеет имя, и конструктор
каждого элемента сети распознает только некоторое подмножество подклассов
Атрибута, «свои атрибуты», которые узнает по имени. Например,
АтрибутВероятности является подклассом Атрибута, имеет свое поле
рационального типа вероятность. Конструктор Нейрона2 распознает
АтрибутВероятности в переданном списке атрибутов и использует значение его
поля вероятность для инициализации Нейрона2. Для атрибутов также
понадобилась ФабрикаАтрибутов.
При создании Фабрики был использован еще один объектный шаблон, так
называемый Синглетон. Синглетон решает задачу обеспечения единственности
экземпляра класса и управляет доступом к этому экземпляру.
Теперь о самой спецификации. При создании языка спецификации ставились
следующие задачи:
Максимум широты спектра описываемых сетей, или максимальная гибкость языка
Относительная простота и удобочитаемость
Минимальная длина спецификаций
Возможность развития языка
В качестве элементарного примера смоделирована нейросеть из четырех
нейронов, с помощью которых могут быть сформированы образы соответственно
четырех состояний КА среды. Для данного примера спецификация имеет
следующий вид:
[Meta]
set for Neuron2 synonym N
set for Brancher synonym I
[Inputs]
I1,I2,I3,I4
[Outputs]
I1,I2,I3,I4,N1,N2,N3,N4
[Net Topology]
set for N default connection attribute delay=0
set for N default attribute study_counter=3
DecisionMaker(actions=0,1)
StochasticSource(probability=0.1,value=2)
Max[DecisionMaker,StochasticSource]
Env[or]
I1[Env(contact_number=0,delay=1)]
I2[Env(contact_number=1,delay=1)]
I3[Env(contact_number=2,delay=1)]
I4[Env(contact_number=3,delay=1)]
N1[I2,I3,I4]
N2[I1,I3,I4](study_counter=4)
N3[I1,I2,I4]
N4[I1,I2,I3]
Пример 5.3.1. Спецификация сети.
Спецификация состоит из секций. Секция начинается с указания имени секции в
квадратных скобках и состоит из операторов спецификации. В Meta секции
собраны операторы, область применения которых – вся спецификация, т.е. все
секции. Здесь, например, можно задать имена–синонимы для шаблонов. Во
многих секциях может появляться оператор set. Обычно, его синтаксис таков:
set for .
Например, set for Neuron2 synonym N устанавливает имя-синоним N для шаблона
Neuron2. В секциях Inputs и Outputs просто перечисляются входы и выходы
сети. Самая большая секция, обычно, Net Topology, где описывается топология
сети. Ссылка на элемент сети в спецификации состоит из двух слитных слов:
указания имени типа элемента сети (или его синонима) и его некоторого
порядкового номера, причем нумерация для каждого типа своя. Описание
топологии состоит из операторов описания топологии, в которых указывается
некоторый элемент сети, его входы в квадратных скобках, причем в круглых
скобках после указания каждого входа может стоять ассоциативный список
(т.е. список пар имя-значение) атрибутов связи, и, дополнительно, после
перечисления входов, может быть, в круглых скобках ассоциативный список
атрибутов элемента. Каждая связь двух элементов сети может
характеризоваться некоторым множеством атрибутов связи. Например, атрибутом
связи может быть синаптическая задержка. Каждый элемент сети понимает свой
набор атрибутов связи, некоторое множество атрибутов связи обрабатывается
ядром системы, и, как мы уже упомянули, каждый элемент сети понимает свой
набор атрибутов (элемента сети), значения которых могут передаваться в
списке атрибутов элемента.
В примере спецификации 5.1 используются имена некоторых встроенных
шаблонов, например, Neuron2 или Brancher. Вообще говоря, ядром
поддерживается некоторое множество встроенных базовых шаблонов и в языке
есть конструкция для определения новых шаблонов через уже определенные или
встроенные. Информация об уже определенных шаблонах хранится в специальном
объекте БиблиотекаШаблонов, являющемся Синглетоном и имеющем методы для
получения идентификатора шаблона по его имени, извлечения информации о
шаблоне по его идентификатору, а также добавления / удаления шаблонов. Если
КонструкторСети при чтении спецификации встречает имя шаблона или
конструкцию определения нового шаблона, то он обращается к
БиблиотекеШаблонов для, соответственно, получения информации о шаблоне по
имени или для добавления нового шаблона. Таким образом, пользователь может
создавать библиотеки своих шаблонов, определения которых хранятся,
например, в файлах и при их использовании просто включать соотвествующие
файлы в своих спецификациях с помощью конструкции языка, аналогичной
«#include» в языке C / C++. Отметим, что библиотечные файлы шаблонов могут
создаваться специальным инструментом, конструктором шаблонов.
5.4. Организация вычислений в сети.
После создания внутреннего представления сети в памяти в виде совокупности
связанных между собой элементов сети, сеть готова к вычислениям. Вычисления
инициируются с некоторого выбранного подмножества элементов сети,
называемых выходами сети. Каждый элемент имеет свой метод, реализующий
операцию данной вершины сети и результат которого интерпретируется как
значение выходного сигнала или значение выхода. Аргументами этого метода
являются значения выходов у входов элемента в предыдущие моменты времени,
и, возможно, в текущий момент. При этом, естественно, возможен бесконечный
цикл в случае неправильной спецификации сети. На этот случай в систему
предполагается добавить некоторый предварительный анализатор корректности
топологии сети. Распараллеливание здесь возможно при вычислении значений
выходов для элементов одного порядка, поскольку они являются независимыми.
Так как параметр времени в систему введен явно, существует необходимость в
сообщении каждому элементу о наступлении следующего такта вычислений. При
получении такого сообщения, каждый элемент выполняет завершительные
операции для данного такта либо может просто проигнорировать сообщение. В
реализации механизма передачи сообщений использован объектный шаблон
Цепочка Обработчиков [Gamma]. Суть его состоит в следующем. Предположим
существует некоторая иерархия классов или цепочка, где каждый
предшествующий класс является родительским для следующего, например
ЭлементСети [pic] Нейрон [pic] Нейрон2. У ЭлементаСети определен
(виртуальный в терминах языка C++) метод обработки сообщения
обработать_сообщение(Сообщение). В этом методе у каждого класса при вызове
определяется, может ли данный метод обработать данное сообщение. Если да,
то выполняется обработка. Затем в любом случае вызывается метод обработки
сообщения родительского класса, если он существует. Например, метод
обработки сообщений у ЭлементаСети увеличивает счетчик тактов (счетчик
времени) при получении сообщения СледующийТакт (потомок класса Сообщение).
Объект СредаСКонечнымАвтоматом, являющийся потомком ЭлементаСети и
КонечногоАвтомата при получении данного сообщения выполняет чтение входного
слова, и, естественно, вызывает обработку сообщения для своих родительских
классов.
5.5. Анализаторы работы сети.
Для отладки сетей часто необходимо знать разнообразную информацию о
состояниии сети и отдельных ее элементов в некоторые моменты времени. Сети
предполагаются гетерогенные, то есть состоящими из разных элементов-
экземпляров классов-потомков ЭлементаСети, и состояние каждого элемента в
некоторые моменты времени может характеризоваться, вообще говоря, некоторым
своим набором параметров, помимо значения выходного и входного сигналов.
Например, КА лучше охарактеризовать состоянием, в котором находится
автомат. Поэтому схема была выбрана следующая: ЭлементСети является
производным классом от Летописец, который имеет методы для записи объектов
Событие в некоторую временную последовательность История, которую хранит
каждый Летописец. В процессе работы сети каждый Летописец записывает в
Историю один из своих или общих объектов подкласса Событие. Например, КА
записывает помимо прочих событие СостояниеКА, в котором есть поле для
указания состояния КА в данный момент времени. Каждый (потомок класса)
АнализаторРаботыСети умеет обрабатывать Истории, извлекая оттуда
необходимую информацию, и затем выдавая ее в удобном виде на экран. В
примере 5.8.1 приведен результат работы программы, где изображена диаграмма
выходных сигналов выбранных ЭлементовСети, имена которых выведены в первой
строке диаграммы. Диаграмма получена как результат обработки Истории
выбранных ЭлементовСети АнализаторомРаботыСети.
5.6. Реализация БОС.
Задача блока оценки состояния в конечном счете заключается в сопоставлении
выходному вектору среды W некоторой оценки или числа. Фактически, речь идет
о задании некоторого функционала над BN, где N - размерность выходного
вектора среды W. Функционал задается как табличная функция, значения
которой перечисляются в специальной секции файла спецификации. Здесь
указываются типы аргумента и самой табличной функции, может быть указано
значение по умолчанию, а затем перечисляются входные и соответствующие
выходные значения.
[Evaluator]
set type for in BinaryVector
set type for out Integer
set default value for out=0
in=0111,out=15
in=1011,out=10
in=1101,out=5
in=1110,out=20
Пример 5.6.1. Спецификация табличной функции БОС.
Нейросетевая реализация этого блока нами не создавалась. Предполагается,
что ее можно построить из двух простых подсетей, из которых одна
представляет собой распознающую нейросеть, формирующую образы вектора in, а
другая - комбинационную схему из нейронов, выдающую сигнал на выход с
номером out в соответствии с заданным функционалом.
5.7. Реализация модели среды.
Представим среду с помощью КА Мура. Пусть КА имеет четыре состояния s1, s2,
s3, s4 и представлен диаграммой Мура на рис. 5.7.1. Файл спецификации для
модели среды содержит описание выходного сигнала в зависимости от состояния
КА (первая часть в примере 5.7.1) и описание самого КА (вторая часть).
Пятое дополнительное состояние КА initial является инициальным. Переходы
указываются в виде (, ) -> .
[pic]
S0=initial, a0=0000, a1=0111, a2=1011, a3=1101, a4=1110
Рис. 5.7.1.
[Environment]
initial(output=1111)
s1(output=0111)
s2(output=1011)
s3(output=1101)
s4(output=1110)
[Finite State Automate]
set for word -1 synonym any
(initial,0)->s1
(initial,1)->s1
(s1,0)->s2
(s1,1)->s3
(s2,0)->s4
(s2,1)->s3
(s3,0)->s2
(s3,1)->s4
(s4,0)->s4
(s4,1)->s1
Пример 5.7.1. Спецификация модели среды.
5.8. Пример работы программы.
Результаты работы программы удобно представить временной диаграммой, где
строка отображает состояние системы в момент времени ti. Будем обозначать
вертикальным штрихом единичный сигнал на выходе нейрона (N) или датчика
(I).
Данный пример демонстрирует способность УС находить закономерности
управления и использовать их для улучшения своего состояния. Исходными
данными для примера являлись спецификация сети - пример 5.3.1, спецификация
БОС - пример 5.6.1, спецификация модели среды - пример 5.7.1.
Output signals graph
I1 I2 I3 I4 N2 N3 N4 N1 DecisionMaker Or Evaluator
t = 0 * * * * 1 1 0
t = 1 | | | 1 1 15
t = 2 | | | 0 0 5
t = 3 | | | 1 1 10
t = 4 | | | 1 1 5
t = 5 | | | 1 1 20
t = 6 | | | 1 1 15
t = 7 | | | 0 1 5
t = 8 | | | 0 1 20
t = 9 | | | 0 1 15
t = 10 | | | | 0 0 5
t = 11 | | | 0 1 10
t = 12 | | | | 0 1 5
t = 13 | | | 1 1 20
t = 14 | | | | 1 1 15
t = 15 | | | | 1 1 5
t = 16 | | | | 0 1 20
t = 17 | | | | 1 1 15
t = 18 | | | | 1 1 5
t = 19 | | | | 0 0 20
t = 20 | | | | 0 0 20
t = 21 | | | | 0 0 20
t = 22 | | | | 0 1 20
t = 23 | | | | 1 1 15
t = 24 | | | | 1 1 5
t = 25 | | | | 0 0 20
t = 26 | | | | 0 0 20
t = 27 | | | | 0 0 20
t = 28 | | | | 0 1 20
t = 29 | | | | 1 1 15
t = 30 | | | | 1 1 5
t = 31 | | | | 0 0 20
t = 32 | | | | 0 1 20
t = 33 | | | | 1 1 15
t = 34 | | | | 1 1 5
t = 35 | | | | 0 0 20
t = 36 | | | | 0 0 20
t = 37 | | | | 0 0 20
t = 38 | | | | 0 1 20
t = 39 | | | | 1 1 15
t = 40 | | | | 1 1 5
...
Calculation time statistics
Number of net nodes = 11
Time interval length = 600
Calculation time = 1.582 secs
Mean time of calculating one node output = 0.24 ms
Knowledge base statistics
N3 -> N4 with action 1 with probability 141 / 141 = 1
N4 -> N1 with action 0 with probability 141 / 304 = 0.464
N1 -> N3 with action 1 with probability 141 / 141 = 1
Пример 5.8.1. Результат работы программы.
На диаграмме выведены выходные сигналы входных элементов (датчиков) I1, I2,
I3, I4, нейронов N1, N2, N3, N4, БПР (DecisionMaker), БОС (Evaluator) и
внутреннего элемента среды (Or), на который подаются сигналы от БПР и
стохастического источника, а выход соединен с входом модели КА Мура.
Множество возможных воздействий УС на среду состоит из двух элементов,
обозначенных как 0 и 1. Из примеров 5.6.1 и 5.7.1 видно, что состоянием
модели среды с наивысшей оценкой является s4. Из диаграммы 5.8.1 можно
сделать вывод, что УС нашла закономерности управления, достаточные для
удержания ОУ в состоянии s4 (t > 18), но в результате действия
стохастического источника после некоторого времени пребывания в s4 ОУ
перескакивает из этого состояния в s1, откуда УС снова переводит его в
состояние s4.
Работу системы проиллюстрируем на рис. 5.8.1. В систему входят модель
среды, состоящей из КА и Истока, и УС, состоящей из блоков ФРО, БОС, БЗ,
БПР.
[pic]
Рис. 5.8.1.
В конце примера выведена информация о состоянии БЗ, содержащей знания,
эмпирически найденные УС к моменту окончания работы программы.
5.9. Перспективы развития СПИНС.
Кроме намеченных в разделе 5.1 направлений развития системы, а именно
создание конструктора сетей с графическим интерфейсом, расширение языка
спецификации сетей и др., необходима доработка и разработка нейросетевых
реализаций БЗ и БПР, разработка методов создания реальных приложений по
полученным с помощью СПИНС спецификациям сетей. Привлекательным является
также создание трехмерного визуализатора БЗ. Визуализация БЗ основана на
введении топологии в конечном пространстве образов базы знаний [pic]
(определение 4.5) посредством отображения F и Y в R, таким образом, области
в B отобразятся в области в [pic].
Если образ [pic], [pic] сформирован, то он отображается точкой цвета,
соответствующего сформировавшейся оценке образа [pic]. При этом в
пространстве обозначатся некоторые цветные области (рис. 5.9.1),
иллюстрирующие закон управления.
[pic]
Рис. 5.9.1.
Заключение.
Основные результаты дипломной работы состоят в следующем:
Разработана концепция и реализовано ядро программной системы СПИНС для
построения и исследования нейросетевой реализации прототипов управляющих
систем, построенных по методу автономного адаптивного управления,
созданного в отделе имитационных систем Института Системного
Программирования РАН.
Доработаны аппарат формирования и распознавания образов, алгоритм
заполнения базы знаний управляющей системы и алгоритм принятия решений.
Данные алгоритмы протестированы с помощью СПИНС на модельных примерах.
Показано, что УС ААУ в рассмотренных примерах находит способ управления
предъявленным объектом (средой) и осуществляет управление в соответствии с
целевыми функциями.
Благодарности.
Автор выражает благодарность научному руководителю д. ф.-м. н. Александру
Аркадьевичу Жданову за ценную поддержку и помощь в данной работе и член.-
корр. РАН Виктору Петровичу Иванникову, под руководством которого были
приобретены знания и опыт объектно-ориентированного программирования, в
частности освоены объектные шаблоны (design patterns), использованные при
разработке СПИНС.
Литература.
[Диссер] Жданов А.А. Принцип автономного адаптивного управления.
Диссертация на соискание ученой степени доктора физико-математических наук.
ВЦ РАН. Москва, 1993. 318 с.
[Жданов1] Жданов А.А. О подходе к моделированию управляемых объектов.
Препринт ВЦ АН СССР. Сообщения по прикладной математике. Москва, 1991. 44
с.
[Жданов2] (Работа содержит описание нейрона II).
[Жданов3] Zhdanov A.A. A principle of Pattern Formation and Recognition//
Pattern Recognition and Image Analysis. Vol.2. N3. 1992. - P. 249-
264. (ISSN: 1054-6618).
[Жданов4] Zhdanov A.A. Application of Pattern Recognition Procedure to
the Acquisition and Use of Data in Control// Pattern Recognition and Image
Analysis. Vol.2. N2. 1992. - P. 180-194. (ISSN: 1054-6618).
[Жданов5] Жданов А.А. Накопление и использование информации при
управлении в условиях неопределенности// Сб.науч.тp. Инфоpмационная
технология и численные методы анализа распределенных систем. - М.: ИФТП.
1992. С. 112-133.
[Жданов6] Жданов А.А. Об одном подходе к адаптивному управлению// Сб.
науч. тр. Анализ и оптимизация кибернетических систем, - М.: ГосИФТП,
1996. С. 42-64.
[Жданов7] Жданов А.А. Об одном имитационном подходе к адаптивному
управлению// Сб. Вопросы кибернетики. - М.: 1996. С. 171 - 206.
[Жданов8] Жданов А.А. Формальная модель нейрона и нейросети в методологии
автономного адаптивного управления// Сб. Вопросы кибернетики. Вып. 3. М.:
1997. С. 258-274.
[Жданов9] Жданов А.А., Б.Б.Беляев, В.В.Мамаев. Использование принципа
автономного адаптивного управления в системе угловой стабилизации
космического аппарата "Спектр РГ"// Сб.науч.тр. Информационная бионика и
моделирование, - М.: ГосИФТП, 1995. С. 87-114.
[Боровко] В.В.Боровко. Математическая статистика.
[КА] В.Брауэр. Введение в теорию конечных автоматов. М, "Радио и
связь":1987. 392 с.
[Граф] В.А.Евстигнеев и др. Теория графов. Алгоритмы обработки деревьев. ВО
"Наука",Новосибирск:1994. 360 с.
[Киб3] Жданов А.А. Формальная модель нейрона и нейросети в методологии
автономного адаптивного управления. Сборник «Вопросы кибернетики» №3.
Научный совет по комплексной проблеме «Кибернетика» РАН. сс.258-273.
[NN] Michael I. Jordan, Cristopher M. Bishop. Neural Networks.
Massachusets Institute of Technology. AI Memo No. 1562. Anonymous
ftp://publications.ai.mit.edu.
[Gamma] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design
Patterns. Elements of reusable object-oriented software. Addison Wesley.
1994. 395 с.
[Turchin]. Valentin F. Turchin. The phenomenon of the science, a
cybernatic approach to human evolution. Addison Wesley.
[Маккалок]. McCulloch W.W., Pitts W. 1943. A logical calculus of the ideas
imminent in nervous activiti. Bulletinn of Mathematical biophysics 5: 115-
33. (Русский перевод: Маккалок У.С., Питтс У. Логическое исчисление идей,
относящихся к нервной деятельности. Автоматы. – М: ИЛ. – 1956.)
[Итоги91]. «Итоги науки и техники». Вычислительные науки, 1991, том 8, сс.
15-16, 26.
[Уоссермен] Уоссермен Ф.. Нейрокомпьютерная техника. - М.: Мир, 1992.
[Розенблат] Розенблат Ф. Принципы нейродинамики. - М.: Мир, 1965.
[Чечкин] Чечкин А.В. Математическая информатика. - М.: Наука. 1991.
[Герман] Герман О.В. Введение в теорию экспертных систем и обработку
знаний. - Минск, ДизайнПРО. 1995.
[Братищев] Братищев Р.А. Дипломная работа. Московский физико-технический
институт. 1998.
-----------------------
[pic]
Страницы: 1, 2
|