Смекни!
smekni.com

Нейросетевая реализация системы (стр. 8 из 9)

В примере спецификации 5.1 используются имена некоторых встроенных шаблонов, например, Neuron2 или Brancher. Вообще говоря, ядром поддерживается некоторое множество встроенных базовых шаблонов и в языке есть конструкция для определения новых шаблонов через уже определенные или встроенные. Информация об уже определенных шаблонах хранится в специальном объекте БиблиотекаШаблонов, являющемся Синглетоном и имеющем методы для получения идентификатора шаблона по его имени, извлечения информации о шаблоне по его идентификатору, а также добавления / удаления шаблонов. Если КонструкторСети при чтении спецификации встречает имя шаблона или конструкцию определения нового шаблона, то он обращается к БиблиотекеШаблонов для, соответственно, получения информации о шаблоне по имени или для добавления нового шаблона. Таким образом, пользователь может создавать библиотеки своих шаблонов, определения которых хранятся, например, в файлах и при их использовании просто включать соотвествующие файлы в своих спецификациях с помощью конструкции языка, аналогичной “#include” в языке C / C++. Отметим, что библиотечные файлы шаблонов могут создаваться специальным инструментом, конструктором шаблонов.

5.4. Организация вычислений в сети.

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

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

Нейрон
Нейрон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 является инициальным. Переходы указываются в виде (<исходное состояние>, <входное слово>) -> <конечное состояние>.

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.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. В систему входят модель среды, состоящей из КА и Истока, и УС, состоящей из блоков ФРО, БОС, БЗ, БПР.

Рис. 5.8.1.

В конце примера выведена информация о состоянии БЗ, содержащей знания, эмпирически найденные УС к моменту окончания работы программы.

5.9. Перспективы развития СПИНС.

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

(определение 4.5) посредством отображения F и Y в R, таким образом, области в B отобразятся в области в
.

Если образ

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