Фрейм по Минскому [2] - структура данных для представления стереотипной ситуации. В нашей системе фреймами являлись как обычные объекты, представляющие просто совокупность свойств (например, игрок со слотами «имя», «деньги», «опыт» и пр.), так и специфические: отражающие ситуации (комбинация для игрока - пара, тройка и т.д.), элементы сценария (раздача карт, игрок сделал ставку и пр.) и даже фреймы, обозначающие начало и конец игры. По устоявшемуся мнению фреймы - оптимальное сочетание декларативного и процедурного знания; в нашем приложении декларативность заключается в поддержках родовых связей (is-a, sub) фреймов, а так же задание некоторой логики посредством интеграции фреймов с продукционной оболочкой.
Продукционные правила устанавливают сложные ограничения в маркерах, которых невозможно добится стандартными заданиями отсутствия (как это используется в классическом выводе на иерархии фремов), при этом они интуитивно понятны пользователю - логика декларативна, не зашита в коде или процедуре. С другой стороны, продукционные правила можно считать и процедурной составляющей нашей системы, поскольку наряду с присоединенными процедурами, которые используются в качестве демонов (аналог тригеров в БД), можно использовать и продукции.
Таким образом, в приложении интегрируются фреймовая, продукционная и процедурная парадигмы, обеспечивающие декларативность и достаточную мощь логического вывода [2].
Компонента объяснения (КО), Механизм Логического Вывода (МЛВ), Компонента Приобретения Знаний (КПЗ), База Знаний (БЗ), как известно, являются основными компонентами любой системы, относящейся к когнитивному направлению искусственного интеллекта [1].
В общем случае работа системы выглядит следующим образом (рис. 1). Сначала производится заполнение БЗ посредством КПЗ (Диспетчера объектов). С помощью редактора сети фреймов, использующего библиотеку UGML[3], реализованного на WPF, рисуется сеть фреймов. Далее редактируются слоты фреймов (Редактор слотов), процедуры (Редактор процедур), продукции (Редактор продукций), домены (Редактор доменов) и комбинации (Редактор комбинации). Затем можно сохранить полученную БЗ или загрузить ранее созданную БЗ с помощью модуля Сериализации / Десериализации БЗ в Менеджере игры, а также изменить настройки игры с помощью Модуля настроек.
Теперь можно начинать игру. С помощью МЛВ производится вывод на сети фреймов, имеющей такие типы связей, как is_a (наследование), sub (часть-целое), next (переход между фреймами сценариями), успех / не успех (переход на следующий фрейм при привязке комбинации). Результаты вывода отображаются на Игровом поле посредством процедурных событий. Таким образом имитируется игра нескольких игроков в Poker Holdem. Работу МЛВ можно посмотреть с помощью КО (Компоненте отображения сети фреймов с текущими значениями слотов, также использующего UGML [3]) с пошаговой подсветкой тех фреймов, которые привязались к данному моменту. Каждый привязанный фрейм-экземпляр выделяется цветом и можно посмотреть значения его слотов и те продукционные правила, которые сработали при логическом выводе. Объяснение хода игры производится с помощью Лога событий и Отладчика правил, в котором показывается результат срабатывания правил (Лог сработавших правил).
Разработанное приложение показывает применимость и практическую значимость предложенного подхода к созданию когнитивных приложений искусственного интеллекта. Интеграция фреймовой, продукционной и процедурной парадигм обеспечивает, с одной стороны, декларативность, а с другой - достаточную мощь логического вывода.
Литература
1. Уэно Х. Представление и использование знаний: Пер. с япон. / Под ред. Х. Уэно, М. Исидзука. - М.: Мир, 1989. С. 29‑98.
2. Минский М. Фреймы для представления знаний. М.: Мир, 1979.
3. Соколов Г.В., Ланин В.В. Библиотека для визуализации произвольных моделей на графах и её применение // Материалы всероссийской конференции молодых ученых «Технологии Microsoft в теории и практике программирования» / Нижегородский государственный университет. Нижний Новгород, 2010. С. 348‑350.