Структура системы управления поведением робота и ее базы знаний

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

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



Организация базы знаний системы управления поведением

Структуру базы знаний системы управления поведением предлагается организовать согласно структуре, изображенной на Рис. 1. Она включает в свой состав словарь используемых слов и список типов фреймов.

Рис. 1. Структура базы знаний системы управления поведением


Каждый тип фреймов должен содержать:

  • Уникальное название типа фреймов. Например, "события", "задания", "объекты", "команды", "местоположения" и т.д. Эксперт, составляющий базу знаний, вправе выбирать любое название типа фреймов.
  • Признак командных фреймов. Данный признак отличает фреймы, обозначающие команды, от фреймов, обозначающих описание предметной области.
  • Приоритет задачи (в случае командного фрейма). Этот признак определяет приоритет, с которым алгоритмическое следствие фреймов попадает в очередь задач (см. далее). С помощью данного признака можно разделить командные фреймы на фреймы-задания, которые встают в конец очереди, и фреймы-команды, которые встают в начало очереди. Кроме того, эксперт, составляющий базу знаний, имеет возможность организовать собственную систему приоритетов.
  • Последнее значение, которое вернул один из фреймов данного типа. Это актуально для раскрытия местоимений.
  • Список фреймов данного типа.

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

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

  • Одиночным словом. В этом случае слот хранит указатель на слово в словаре и атрибуты слота. Атрибуты слота в этом случае могут включать признак "умалчиваемое слово". Необходимость этого определяет 4 требование к системе.
  • Словом и списком синонимов. В этом случае слот хранит список указателей на слова в словаре и атрибуты слота. Атрибуты слота в этом случае могут включать признак "умалчиваемое слово".
  • Параметром (ссылкой на элемент предметной области). В этом случае слот хранит название параметра, тип параметра (т.е. тип фреймов), значение по умолчанию и атрибуты слота. Значение по умолчанию актуально в случае выставленного атрибута "умалчиваемое слово". В этом случае, параметр принимает текстовое значение, указанное по умолчанию. Кроме этого атрибуты слота могут включать признак "обучаемый параметр". В этом случае на месте данного параметра в запросе может находиться любое (в том числе неизвестное) слово.

Фрейм активизируется в том случае, если в строку запроса входят все слова указанного фрейма в указанной последовательности. При этом запрос допускает наличие других слов вперемешку с искомыми. Например, фраза: "подними этот большой кубик" при прочих равных условиях активизирует фрейм со словесной предпосылкой "подними кубик".

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

Например, пусть имеется тип фреймов "объекты", включающий в свой состав фреймы: "кубик", "шар", "цилиндр" и т.д. Пусть имеется тип фреймов "место", включающий в свой состав фреймы: "слева от obj", "справа от obj", "перед obj", где obj - помечен, как параметр типа "объекты". Пусть имеется тип фреймов "задания", включающий в свой состав фрейм "встань place", где place - помечен, как параметр типа "место". Тогда фраза "встань справа от красного шара" активизирует фрейм "встань place". Параметр place этого фрейма примет значение фрейма "справа от obj", а параметр obj в свою очередь примет значение фрейма "шар".

Алгоритмическое следствие фрейма состоит из блок-схемы алгоритма, выполняющегося при активизации фрейма. Каждый элемент блок-схемы является элементарным программным оператором. Всего таких операторов насчитывается 12. В их числе:

  1. Блок "Возвратить". Блок завершает алгоритм и формирует код возврата.
  2. Блок "Запрос". Этот блок делает новый запрос в базу знаний, ожидает его завершения, а в указанную переменную получает код возврата последнего активизированного алгоритма. Если переменная содержит несуществующий идентификатор, то вводится новая переменная.
  3. Блок "Открыть параметр". Данный блок запускает алгоритмическое следствие фрейма, переданного активному фрейму в качестве параметра из словесной предпосылки. Например, в предыдущем примере при выполнении алгоритмического следствия фрейма "встань place" данный блок может открыть параметр place, т.е. запустить алгоритмическое следствие фрейма "справа от obj".
  4. Блок присвоения. Данный блок присваивает значение математического выражения (см. далее) указанной переменной или порту.
  5. Блок проверки условия. Данный блок производит операцию сравнения значений двух математических выражений и в зависимости от результата сравнения производит ветвление программы. Операции сравнения может иметь одно из следующих значений: равно, больше, меньше, больше или равно, меньше или равно, не равно.
  6. Блок задержки. Блок ожидает истечения заданного промежутка времени. При этом работа системы не останавливается, а просто пропускаются такты расчета.
  7. Блок "Ждать". Блок ожидает выполнения указанного условия. Данный блок производит операцию сравнения значений двух математических выражений. Продолжение алгоритма осуществляется в случае, когда проверяемое условие верно, или в случае таймаута ожидания. В противном случае блок пропускает такты расчета.
  8. Блок "Такт". Блок пропускает одного такта работы. Это актуально для синхронизации с внешней схемой.
  9. Блок "Диалог". Данный блок ожидает от пользователя ввода нового запроса. Введенную строку блок помещает в заданную переменную. Если задана несуществующая переменная, то в памяти появляется новая.
  10. Блок "Сброс". Блок немедленно прекращает выполнение всех задач и очищается список задач (см. далее).
  11. Блок "Варианты вывода". Данный блок содержит список вариантов ответа системы. Блок выбирает случайную строку из списка и помещает в выходную переменную (STDOUT), отвечающую за строку ответа пользователю.
  12. Блок "Обучение". Данный блок предназначен для обучения системы новым терминам предметной области или новым действиям. Блок обладает двумя типовыми настройками:

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

  • Переменные или порты (входы/выходы).
  • Строковое представление параметров фрейма. Здесь имеется в виду слово или выражение, стоящее в запросе на месте параметра.
  • Значение параметра фрейма. В этом случае система запускает алгоритмическое следствие фрейма, переданного активному фрейму в качестве параметра из словесной предпосылки, а код его возврата используется в математическом выражении.
  • Последнее значение типа фрейма.

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



Механизм логического вывода системы управления поведением

Рассмотрим структуру системы управления поведением (Рис. 2). Эта структура состоит из трех основных элементов: база знаний, блок обслуживания запросов и список задач.

Рис. 2. Структурная схема системы управления поведением


При поступлении запроса на входе системы формируется текстовая строка, содержащая запрос. Эта строка заносится в специальную входную переменную (STDIN), а также поступает на блок обслуживания запроса.

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

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

б) Общее число совпавших слов максимально.

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

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

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

Для чтения и записи задаче доступны:

  • входные и выходные переменные (порты);
  • локальные переменные задачи;
  • глобальные и долговременные переменные.

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

Только на чтение задаче доступны:

  • Последние значения типов фреймов. После завершения алгоритмического следствия тип активного фрейма сохраняет возвращаемое алгоритмом значение. Это значение задача может прочитать. Актуально это для реализации местоимений.
  • текстовое представление параметров предпосылки фрейма. Если в словесной предпосылке используется параметр, то при поступлении запроса на месте параметра оказывается какое-либо слово или словосочетание. Задача имеет возможность прочитать это словосочетание.

Задача может совершать следующие действия:

  • Запускать алгоритмическое следствие параметра предпосылки фрейма. При этом образуется новая задача, ставящаяся в начало списка.
  • Формировать внутренние текстовые запросы, аналогичные запросу пользователя.
  • Формировать новые фреймы в базе знаний.

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

При запуске системы автоматически формируется служебный запрос "ПРИ_ИНИЦИАЛИЗАЦИИ". Этот запрос активизирует одноименный служебный фрейм. По умолчанию данный фрейм не производит никаких действий, однако, у эксперта имеется возможность модифицировать этот фрейм для выполнения необходимых действий при инициализации системы.

Если блоку обслуживания запроса удается активизировать хоть один фрейм, то формируется служебный запрос "ЗАДАНИЕ_ПОНЯЛ". Данный запрос активизирует одноименный служебный фрейм, который по умолчанию формирует один из вариантов положительного ответа пользователю, например, "ОК".

Если блоку обслуживания запроса не удается активизировать ни одного фрейма, то формируется служебный запрос "ЗАДАНИЕ_НЕ_ПОНЯЛ". Данный запрос активизирует одноименный служебный фрейм, который по умолчанию формирует один из вариантов отрицательного ответа пользователю, например, "Я Вас не понял".

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

Достоинствами разработанной системы являются:

  • Ее универсальность. Она может быть настроена на любой язык (в т.ч. и метаязык событий), и может управлять любыми системами (а не только мобильными роботами).
  • Наличие механизмов формирования местоимений и умалчиваемых слов.
  • Наличие механизмов самообучения на основе диалога с пользователем.
  • Возможность использования вложенности, как в словесных предпосылках, так и в алгоритмических следствиях.

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




Назад ]
Дизайн: DynSoft 

Рейтинг@Mail.ru
Используются технологии uCoz