4Ш УДК 519.7 Д.Е. Шуклин Харьковский национальный университет радиоэлектроники, г. Харьков, Украина shuklin@bk.ru Применение сетевой объектно-ориентированной базы знаний в моделировании экспертной системы на основе семантической нейронной сети Описана реализация продукционной экспертной системы, база знаний которой выполнена на основе семантической нейронной сети, реализация семантической нейронной сети на основе сетевой объектно-ориентированной базы данных, а также реализация сетевой объектно-ориентированной базы данных в среде Microsoft .NET Framework 1.1 Возможности и архитектура системы Основная цель данной разработки – создать виртуальную машину, поддерживающую нейронные сети со свободной топологией и числом нейронов до 2 млрд в одном хранилище. Данная возможность обеспечивается путем реализации системы управления сетевой объектно-ориентированной базы знаний (СООБЗ). Текущая версия СООБЗ Cerebrum представляет собой однопользовательскую файловую (desktop) базу. Поддерживаются однопользовательские одноуровневые транзакции. Во время транзакции файловое хранилище отключается, и все изменения объектов накапливаются в оперативной памяти. В будущем предполагается реализация поддержки иерархических транзакций, блокировок объектов, управления версиями (versioning) объектов, конкурентного доступа, многопользовательского режима и клиент-серверной архитектуры. Архитектура СООБЗ представлена на рис. 1. Система управления сетевой объектно-ориентированной базой знаний Cerebrum [1] обладает следующими возможностями: – сохранять текущее состояние графа объектов или нейронной сети в СООБЗ между сеансами работы с пользователем. В том числе сохраняется текущая топология сети объектов. При повторном запуске приложения не понадобится создавать сеть объектов заново; – при большем количестве экземпляров объектов ограничить объем памяти, используемый графом объектов или нейронной сетью. Наиболее часто используемые объекты остаются в оперативной памяти, остальные вытесняются в файловое хранилище и загружаются в оперативную память по мере необходимости. При загрузке экземпляра в оперативную память он вытесняет другие, редко используемые объекты. Ограничение объема памяти позволяет избавиться от использования файла подкачки операционной системы, что значительно повышает производительность моделирования сетей с большим количеством экземпляров объектов (при суммарном размере всех экземпляров большем, чем размер текущей свободной памяти в системе). «Штучний інтелект» 4’2005 403 Шуклин Д.Е. 4Ш Рисунок 1 – Архитектура СООБЗ В случае если объем сети объектов меньше, чем размер текущей свободной памяти в системе, вся сеть находится в оперативной памяти и потерь производительности, связанных с сериализацией-десериализацией, не возникает; – применение СООБЗ не накладывает никаких ограничений на используемую бизнес-логику или математическую модель нейрона, которую можно реализовать как методы объектов, находящихся в СООБЗ. Основное требование – организовать связи между объектами в сети не с помощью указателей, а с помощью ID-объектов. Уровень ядра VNPI – хранение и управление временем жизни объектов Ядро системы включает в себя уровень взаимодействия с операционной системой и уровень хранения и управления объектами. Уровень взаимодействия с операционной системой должен обеспечить адаптацию функций операционной системы к нуждам виртуальной машины, реализующей нейронную сеть. Уровень хранения объектов должен обеспечить хранение и быстрый доступ к объектам и их связям, а также управление временем жизни объектов. Совокупность API всех уровней виртуальной машины для определенности названа Virtual Neural Programming Interface, далее VNPI. Структура ядра VNPI приведена на рис. 2. К эффективности языка реализации ядра виртуальной машины, эмулирующей нейронную сеть со многими миллионами эмулируемых нейронов, предъявляются повышенные требования [2]. Ядро необходимо разработать, учитывая современные компонентные технологии. Ядро VNPI предоставляет компоненты базового уровня 404 «Искусственный интеллект» 4’2005 Применение сетевой объектно-ориентированной базы знаний в моделировании… 4Ш для реализации объектно-сетевой базы. Оно включает в себя компоненты взаимодействия с операционной системой, управления памятью с подсистемой сборки мусора, управления структурированным хранилищем объектов, подсистему кэширования объектов и управления их временем жизни в оперативной памяти. Рисунок 2 – Структура ядра VNPI Уровень моста .NET-VNPI Уровень реализации пользовательских объектов должен быть удобным для использования прикладными программистами. На данный момент этому требованию наиболее полно соответствует Microsoft .NET Framework. Для обеспечения интеграции .NET Framework и ядра VNPI необходим мост VNPI-.NET. Мост VNPI.NET обеспечивает доступ к VNPI из среды .NET Framework. Он также позволяет реализовывать объекты в среде .NET, управляемые подсистемами ядра VNPI. Учитывая различные цели и требования, стоящие перед .NET Framework и VNPI, идеология системы сборки мусора кардинально отличается. Так, в .NET уничтожение объекта возможно только после того, как не останется возможности его использования в текущем процессе [3]. В отличие от этого в ядре VNPI сборка мусора осуществляется, когда исчерпана память, допустимая для размещения объектов. В этом случае ненужные объекты вытесняются на устройство долговременного хранения. Уничтожение объектов является частью модели предметной области и поэтому выполняется только вручную. Мост осуществляет подсчет ссылок на объекты ядра VNPI, используемые .NET, и препятствует вытеснению объектов, которые могут быть доступны через обращения из контекста .NET В системе реализована собственная версия Garbage Collector с альтернативным алгоритмом выполнения. Когда память исчерпывается, самые старые «Штучний інтелект» 4’2005 405 4Ш Шуклин Д.Е. объекты вытесняются на диск, освобождая место более нужным в данный момент. Таким образом, объекты, которые находятся в использовании, нужно защищать от принудительной выгрузки из оперативной памяти. Если не выполнить блокировку, то объект может быть разрушен в памяти еще до момента окончания его модификации. Типичный прецедент вызова метода у пользовательского объекта выглядит следующим образом: NativeHandle someObjectHandle = ...; IConnector someConnector = ...; using(IContainer container = someConnector.GetContainer() as IContainer) { using(IConnector connector = container.AttachConnector(someObjectHandle)) { (connector.Component as CMyType).MyMethod(); } } Система сама следит за временем жизни пользовательских объектов в памяти. Инициировать сохранение объектов вручную не нужно. Наименее часто используемые объекты автоматически вытесняются на систему долговременного хранения, освобождая оперативную память. Поэтому в любой момент возможно, что системе придется произвести вытеснение и разрушение какого-то пользовательского объекта. Уровень сетевой объектно-ориентированной базы Уровень сетевой объектно-ориентированной базы отвечает за создание экземпляров пользовательских объектов, а также за работу с атрибутами объектов. Каждый объект сетевой объектно-ориентированной базы может иметь несколько атрибутов. В качестве значений атрибутов могут выступать другие объекты или простейшие (скалярные) типы данных. Однотипные экземпляры объектов (с совместимыми наборами атрибутов) удобно представлять таблицами и управлять ими с помощью интерфейса пользователя, ориентированного на обработку таблиц. Однотипные объекты имеют одинаковый набор атрибутов. Поэтому возможно представить коллекции однотипных объектов в виде таблицы, в которой строки являются объектами, а колонки – атрибутами этих объектов. Для создания объектов необходимо иметь информацию об их типах. Средствами сетевой объектно-ориентированной базы можно реализовать табличную структуру, близкую к структуре реляционной базы данных. Поэтому для унификации информация о типах объектов, используемая этим уровнем, организована в виде связанных друг с другом таблиц. Информация об объектах, зарегистрированных в системе, организована в виде нескольких таблиц Types, Attributes, Tables. Это позволяет определять в БД типы объектов .NET в унифицированном виде. Однако свойства таблиц, строк и колонок в ОО-базе отличаются от свойств, принятых в реляционных базах данных. Объектноориентированная база позволяет хранить не строки таблиц, как это принято в табличных базах данных, а экземпляры объектов. В пространстве имен Cerebrum.Reflection этим таблицам соответствуют классы TypeDescriptor, AttributeDescriptor, TableDescriptor. 406 «Искусственный интеллект» 4’2005 Применение сетевой объектно-ориентированной базы знаний в моделировании… 4Ш Класс MemberDescriptor представляет собой базовый класс, от которого унаследованы классы TypeDescriptor, AttributeDescriptor, TableDescriptor. public class MemberDescriptor : Cerebrum.Integrator.GenericComponent { public string Name public string DisplayName public string Description } где Name – имя экземпляра; DisplayName – дружественное имя экземпляра, предъявляемое пользователю; Description – описание данного экземпляра. MemberDescriptor – это базовый класс для классов, которые обладают атрибутами «имя», «дружественное имя» и «описание». Многие объекты могут иметь такие атрибуты, поэтому удобно наследовать такие объекты от MemberDescriptor. Колонка таблицы представляет собой сущность, отдельную и независимую от таблицы. Одна и та же колонка может принадлежать разным таблицам. Колонка таблицы описывает некоторый атрибут объекта. Таблица Attributes содержит информацию об атрибутах объектов, находящихся в сетевой объектно-ориентированной базе. Эта таблица содержит экземпляры класса AttributeDescriptor. Дескриптор атрибута описывает имя некоторого атрибута объекта. Он расширяет объект MemberDescriptor, добавляя свойства AttributeType, AttributeTypeHandle, а также метод GetTypeDescriptor(). public class AttributeDescriptor : MemberDescriptor { public Cerebrum.Runtime.NativeHandle AttributeTypeHandle public System.Type AttributeType public Cerebrum.Runtime.IConnector GetTypeDescriptor() } где AttributeType возвращает тип данного атрибута; AttributeTypeHandle возвращает handle типа; GetTypeDescriptor() возвращает объект-дескриптор типа данного атрибута. Если в базе находится несколько объектов, которые имеют атрибут «имя», то значениями для этого атрибута (колонки) являются имена этих объектов. Атрибуты (колонки) также являются объектами ООБД. Например, объект-атрибут «Object name» также имеет имя, так как класс AttributeDescriptor унаследован от класса MemberDescriptor. Очевидно, что значением атрибута «Object Name» для экземпляра класса AttributeDescriptor, описывающего имя объекта, является строка «Object name». Рассмотрим пример. Для свойства Name объекта MemberDescriptor в ООБД создается экземпляр объекта AttributeDescriptor со значениями свойств соответственно: Name = “Name”; DisplayName = “Name”; Description = “Object name”; AttributeType = typeof(System.String); GetTypeDescriptor() = экземпляр TypeDescriptor, System.String. «Штучний інтелект» 4’2005 описывающий 407 Шуклин Д.Е. 4Ш Таким образом, экземпляры класса AttributeDescriptor описывают свойства объектов, хранимых в ООБД, в том числе и свойства собственно класса AttributeDescriptor. Таблица Types содержит описание типов данных (включая пользовательские), которые известны системе и на основе которых система создает экземпляры объектов, помещаемые в сетевую базу. Эта таблица содержит экземпляры классов TypeDescriptor. public class TypeDescriptor : MemberDescriptor { public string QualifiedTypeName public Cerebrum.Runtime.KernelObjectClass KernelObjectClass public System.Type ComponentType } где QualifiedTypeName возвращает имя .NET класса, на основе которого создаются пользовательские объекты, например «System.String»; KernelObjectClass возвращает тип объекта ядра VNPI, ассоциированного с экземплярами описываемого типа; ComponentType возвращает typeof(QualifiedTypeName), то есть .NET тип описываемый дескриптором. Свойства, унаследованные от MemberDescriptor, были описаны ранее. Рассмотрим пример. Для свойства QualifiedTypeName создается экземпляр AttributeDescriptor, у которого Name = “QualifiedTypeName” DisplayName = “Qualified Type Name” Description = “.NET Qualified Type Name” AttributeType = typeof(System.String) GetTypeDescriptor() = экземпляр TypeDescriptor System.String описывающий Данная структура позволяет описывать типы классов объектов, содержащиеся в ООБД. Описатели типов также являются объектами, содержащимися в ООБД. Поэтому описатели типов описывают сами себя. Каждая таблица имеет две коллекции указателей на объекты – коллекцию атрибутов (колонок) и коллекцию компонентов (строк). Каждая строка любой таблицы – это тоже объект. Если в коллекцию указателей на строки включить указатель на саму таблицу, то таблица станет собственной строкой. Таблица Tables содержит сама себя в качестве строки. И таблица Tables и строка Tables в таблице Tables – это один и тот же экземпляр одного и того же класса TableDescriptor. Этот экземпляр расположен по одному и тому же адресу в памяти. Значениями для колонок таблицы являются значения атрибутов объектов, находящихся в строках таблицы. А значением ее колонки «SelectedAttributes» является коллекция колонок этой же таблицы. Хотя желательно держать в одной и той же таблице объекты одного и того же типа, но это вовсе не обязательно. Главное, чтоб у этих объектов были атрибуты, хотя бы частично совпадающие с колонками данной таблицы. Я рекомендую держать в одной таблице объекты, классы которых унаследованы от некоторого базового класса, который содержит все колонки данной таблицы в качестве собственных атрибутов. Например, колонка «Object name» имеет смысл практически в любой таблице. Объекты могут входить одновременно в разные 408 «Искусственный интеллект» 4’2005 Применение сетевой объектно-ориентированной базы знаний в моделировании… 4Ш таблицы как их строки. Дескрипторы атрибутов объектов сами являются объектами и зарегистрированы в таблице атрибутов. Класс TableDescriptor описывает таблицу из экземпляров некоторых объектов. Свойства, унаследованные от MemberDescriptor, соответственно описывают имя, дружественное имя и описание данной таблицы. public class TableDescriptor : MemberDescriptor, System.ComponentModel.IListSource { public Cerebrum.Runtime.NativeVector GetSelectedAttributesVector() public Cerebrum.Runtime.NativeVector GetSelectedComponentsVector() public System.Type ComponentType } где GetSelectedAttributesVector-метод возвращает коллекцию атрибутов таблицы; GetSelectedComponentsVector-метод возвращает коллекцию строк таблицы; ComponentType-свойство возвращает тип объектов, содержащихся в строках таблицы. Методу GetSelectedAttributesVector соответствует экземпляр AttributeDescriptor, у которого Name = “SelectedAttributes” DisplayName = “SelectedAttributes” Description = “SelectedAttributes collection” AttributeType = typeof(System.ComponentModel.IBindingList) Метод GetSelectedComponentsVector возвращает коллекцию объектовстрок, этому методу соответствует экземпляр AttributeDescriptor, у которого Name = “SelectedComponents” DisplayName = “SelectedComponents” Description = “SelectedComponentscollection” AttributeType = typeof(System.ComponentModel.IBindingList). Все экземпляры AttributeDescriptor перечислены в таблице TableDescriptor.Name = “Attributes”. Все экземпляры TypeDescriptor перечислены в таблице TableDescriptor.Name = “Types”. Все экземпляры TableDescriptor перечислены в таблице TableDescriptor.Name = “Tables”. При этом экземпляр класса AttributeDescriptor.Name = “Name” содержится в коллекции строк таблицы Attributes, а также в коллекциях атрибутов (колонок) таблиц “Attributes”, “Types” и “Tables”. Экземпляр класса TableDescriptor.Name = “Tables” хранится в своей же коллекции строк таблицы (SelectedComponents). Следовательно, применение тавтологии для эмуляции РБД на основе ООБД является оправданным и полезным. Надо заметить, что экземпляры объектов могут одновременно входить в разные таблицы, при этом важно, чтоб они поддерживали все атрибуты, являющиеся колонками таблиц, в которые они входят в качестве строк. Пользователь имеет возможность создавать новые таблицы путем добавления новых записей в таблицу Tables. Созданные экземпляры таблиц, атрибутов и других объектов также не обязательно регистрировать в соответствующих таблицах. Однако практика регистрации таких объектов в соответствующих таблицах является рекомендуемой, так как позволяет изменять их атрибуты через унифицированный «Штучний інтелект» 4’2005 409 Шуклин Д.Е. 4Ш интерфейс пользователя. Обязательным требованием является регистрация пользовательского типа в таблице Types. В этом случае Integrator.Acivator при необходимости автоматически произведет создание нового экземпляра. В противном случае программист будет обязан реализовать собственную версию интерфейса IActivator. В ООБД поддерживаются полноценные C# объекты, у объектов поддерживаются методы, свойства, поля и события. В данной разработке статические методы классов – просто обычные статические методы в .NET, а экземплярные методы – обычные методы объектов. Рекомендуется создавать свойства для поддерживаемых классом атрибутов. Механизм делегатов и событий не будет поддерживаться в случае, если связь реализуется между объектами, хранящимися в БД. Это связано с ограничениями по времени жизни экземпляров. Во время, когда БД остановлена, все объекты хранятся в сериализированном (serialized) виде. Если время жизни у приемников или источников сообщений может быть изолировано от времени жизни объектов БД, то механизмы делегатов-сообщений работают в пределах подсети объектов, развернутых в памяти .NET Framework. Система разрабатывается в первую очередь для поддержки нейронных сетей со свободной топологией и числом нейронов до 2 млрд в одном хранилище. Поэтому только часть ООБД находится в данный момент в RAM. Большая часть объектов заморожена в файловом хранилище и десериализируется (deserializing) по мере необходимости. Уровень семантической нейронной сети Следующий логический уровень представляет собой нейронную сеть. Нейронная сеть реализована на основе ядра VNPI. Каждый нейрон представляет собой объект. Каждый объект может содержать другие объекты. Поэтому нейрон является объектом со сложной структурой и, даже, может содержать другие нейроны как собственную составную часть. Обычно нейрон состоит из нескольких скалярных объектов с простой внутренней структурой. Нейроны могут быть различных типов. Наиболее интересными являются нейроны-рецепторы, эффекторы и внутренние нейроны. Чтобы обеспечить эмуляцию одновременной параллельной работы множества нейронов на последовательной вычислительной машине, необходимо последовательно обрабатывать состояния всех нейронов в сети для каждого кванта времени. Рассмотрим реализацию квазипараллельного режима обработки нейронов в семантической нейронной сети, реализующей экспертную систему. Выполнение нейронов в нейронной сети производится тактами [4]. Такты выполняются до момента, когда в сети не останется ни одного нейрона, требующего обработки. После завершения всех тактов на эффекторах выставляется текущее решение, принятое данным участком сети. При изменении информации на рецепторах запускаются новые такты, и по их окончании на эффекторах выставляется уточненное решение. Работа экспертной системы проходит либо в один такт, по выставлению всех входных нечетких данных на слое рецепторов, либо итерационно, по мере накопления этих данных. Каждый такт состоит из нескольких проходов. Проход представляет собой рассылку сообщений всем зарегистрированным нейронам. При этом для каждого нейрона выполняется специальная функция – обработчик сообщения, соответствующая данному сообщению. Уровень экспертной системы и базы знаний Экспертные системы представляют собой усилители интеллекта, которые помогают человеку решать разнообразные задачи. Экспертные системы нашли применение в областях человеческой деятельности, где требуется принимать 410 «Искусственный интеллект» 4’2005 Применение сетевой объектно-ориентированной базы знаний в моделировании… 4Ш решения, проводить классификацию, решать задачи в условиях недостаточности информации о поставленной проблеме. Также экспертные системы широко применяются при решении неформализованных задач, для которых отсутствуют алгоритмы решения [5], [6]. В последнее время ЭС начали появляться и на персональных ЭВМ. Это позволит широко тиражировать знания экспертов и применять их в практической деятельности инженера. ЭС обычно состоят из двух основных частей: базы знаний и механизма логического вывода. Разработанная экспертная система в состоянии работать как с четкими входными данными, представленными в виде логических значений ДА/НЕТ, так и с нечеткими входными данными, представленными в виде числового интервала в диапазоне от 0 до +240. При этом значению 0 соответствует полное отрицание – невозможность данного события, а значению +240 – полное подтверждение данного события. Значение +120 интерпретируется как отсутствие информации о возможности некоторого события. Для расчета фактора уверенности какого-либо утверждения используется семантическая нейронная сеть, нейроны которой выполняют операции нечеткой логики, при этом для определения пересечения факторов уверенности применяется функция минимума, а для объединения – максимума. В экспертной системе консультация проходит в интерактивном режиме. База знаний предоставляется экспертом в текстовом виде. Синтаксис базы знаний (файлы с расширением *.exp) аналогичен синтаксису языка Prolog. Текст состоит из правил. Каждое предложение заканчивается точкой. Правило состоит из двух частей – следствия и условия. В начале правила идет наименование следствия. Затем, после следствия, через знак минус идет перечисление условий, которые должны быть выполнены для срабатывания этого правила. Условия разделяются друг от друга запятой. Заканчивается перечисление условий точкой. Это говорит о том, что далее после точки идет следствие следующего правила. Например: <следсвие 1> - <условие 1>, <условие 2>. <следсвие 2> - <условие 3>, <условие 4>. Если в начале наименования следствия имеется ключевое слово out, это означает, что данное следствие будет расположено в слое эффекторных нейронов. Если условие начинается с ключевого слова not, это означает отрицание данного условия. Все условия в одном правиле объединены нечеткой операцией конъюнкции [4]. Чтобы следствие одного правила было истинно, должны быть истинны все входящие в него условия. Условия и следствия сопоставляются друг с другом путем сравнения их наименований. Если существует два одинаковых следствия с разными условиями, то это означает, что следствие правила можно получить различными путями. В этом случае следствия этих правил объединяются нечеткой операцией дизъюнкции. Если наименование условия совпадает с наименованием следствия, это значит, что результат данного следствия станет значением данного условия. Таким образом, из отдельных правил формируется сеть принятия решения. Все условия, которым не сопоставлены следствия хотя бы одного правила, помещаются в слой рецепторных нейронов. Правила компилируются в структуру нейронной сети, которая далее представляет собой базу знаний. При преобразовании правил экспертной системы в нейронную сеть первым этапом является разбиение каждого правила на операции дизъюнкции, конъюнкции и инверсии. Каждой операции назначается группа из нескольких нейронов. Каждая такая группа нейронов является отдельной операцией, выполняемой правилом экспертной системы. Группы нейронов связаны с другими группами посредством дендритов и аксонов. В каждой группе существует один главный нейрон, значение на выходе которого является значением операции, «Штучний інтелект» 4’2005 411 4Ш Шуклин Д.Е. выполняемой группой. Дендрит главного нейрона группы связан с главными нейронами групп, являющихся элементами, от значения которых зависит значение текущей группы. Аксон главного нейрона связан с дендритами нейронов групп, значения которых зависят от значения текущей группы. Текущее значение, передаваемое по аксону главного нейрона, является текущим значением элемента в базе знаний. Также в базу знаний, в виде фактов, помещаются входные данные и результаты срабатывания правил. Если ситуация, анализируемая экспертной системой, удовлетворяет условиям срабатывания правила, то его следствия считаются верными для данной ситуации. Условия правила содержат операции конъюнкции, дизъюнкции и инверсии. Если условия у двух или более правил выполняются одновременно, все следствия у допустимых правил выбираются одновременно. Для обеспечения обработки многозначных лексем текста будем считать истинными все следствия у всех правил, у которых выполняются условия. При этом одинаковые элементы, являющиеся следствиями разных правил, объединяются операцией дизъюнкции. Например, для базы знаний: out A1 – B1, B2. B1 – C1, C2. B1 – C3, C4, где A1, B1, B2, C1, C2, C3, C4 – логические высказывания, будет сформирована структура нейронной сети, изображенная на рис. 3. При этом высказывания B2, C1, C2, C3, C4 будут помещены в слой рецепторов, а высказывания A1, C4 – в слой эффекторов. Таким образом, продукционная экспертная система представляет собой сеть правил. Все правила выполняются одновременно. Отдельные правила представляют собой отдельные узлы, а переменные, входящие в условия и следствия правил, представляют собой связи между узлами этой сети. Отдельные операции над обрабатываемыми элементами текста представляются в этой сети как отдельные правила в базе знаний экспертной системы. Такая экспертная система может содержать имитационную модель предметной области и служить для проведения семантического анализа текста. На основе семантической нейронной сети реализована экспертная система. Группа нейронов семантической нейронной сети, эмулирующая механизм прямого вывода продукций, представляет собой три слоя нейронов. Слой рецепторов собирает информацию для обработки в нейронной сети. Нечеткий уровень возбуждения нейронарецептора представляет собой нечеткий фактор уверенности в присутствии элемента, соответствующего этому нейрону. Слой эффекторов выдает результаты работы экспертной системы в виде совокупности нечетких данных нейронов-эффекторов. Как и в слое рецепторов, нечеткий уровень возбуждения эффектора представляет собой нечеткий фактор уверенности в наличии элемента, соответствующего эффектору. Третий слой – слой обработки – расположен между слоем рецепторов и слоем эффекторов, в нем расположены нейроны, реализующие базу знаний экспертной системы. 412 «Искусственный интеллект» 4’2005 Применение сетевой объектно-ориентированной базы знаний в моделировании… 4Ш Рисунок 3 – Преобразование базы знаний в нейронную сеть В случае работы такой экспертной системы в высокораспараллеленном режиме каждый нейрон обрабатывает нечеткие данные со своего дендрита и передает результат выполненной операции следующим нейронам по аксону. Время принятия решения такой экспертной системы зависит не от объема базы знаний, а только от ее сложности. Литература 1. Шуклин Д.Е. Cerebrum: Система управления сетевой объектно-ориентированной базой знаний // Интернет-публикация 2005 // http://www.shuklin.com/ai/ht/ru/cerebrum 2. Шуклин Д.Е. Принципы построения компонентной архитектуры ядра виртуальной машины, эмулирующей семантическую нейронную сеть // 8-й междунар. молодежный форум «Радиоэлектроника и молодежь в XXI веке» Ч. 2.: Сб. материалов форума. – Харьков: ХНУРЭ. – 2004. – С. 101. 3. Richter Jeffrey. Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework //Miller Freeman Inc., MSDN Magazine. – 2000. – Vol. 15, № 11. – P. 82-86, 89, 90, 92. 4. Шуклин Д.Е. Применение семантической нейронной сети в экспертной системе, преобразующей смысл текста на естественном языке // Радиоэлектроника и информатика. – 2001. – № 2. – С. 61-65. 5. Попов Э.В. Экспертные системы: Решение неформализованных задач в диалоге с ЭВМ. – М.: Наука, 1987. – 284 с. 6. Уотермен Д. Руководство по экспертным системам: Пер. с англ. – М.: Мир, 1989. – 388 с. Д.Є. Шуклін Застосування мережної об’єктно-орієнтованої бази знань в моделюванні експертної системи на основі семантичної нейронної мережі Описано реалізацію продукційної експертної системи, база знань якої виконана на основі семантичної нейронної мережі, реалізацію семантичної нейронної мережі на основі мережної об’єктноорієнтованої бази даних, а також реалізацію мережної об’єктно-орієнтованої бази даних у середовищі Mіcrosoft .NET Framework 1.1. D.E. Shuklin Use of Objective Oriented Network Knowledge Base write Expert System Modeling on the Basis of Semantic Neural Network Realization rule based expert system which knowledge base is executed on the basis of a semantic neural network is described. Realization of a semantic neural network on the basis of the network objective oriented database is described. Realization of the network objective oriented database in Microsoft .NET Framework 1.1 environment is described. Статья поступила в редакцию 19.07.2005. «Штучний інтелект» 4’2005 413