Доктор технических наук профессор Альберт Красилов (krasilov@novy-atlant.msk.ru) руководит отделом интеллектуальных систем в АО “Новый Атлант”, одновременно являясь научным руководителем Центра “Интеллектуальные информационные системы в экономике народного хозяйства”. В 1961 г. он защитил кандидатскую диссертацию по моделированию сложных систем, в 1971 г.  -  докторскую по системному программированию, с 1978 г.  -  профессор МФТИ, создатель школы “машинной разработки программ реального времени для встроенных ЭВМ”. Автор более 200 научных работ, занимался созданием распознающих грамматик и средств разработки трансляторов для Фортрана, Алгола, формульных автокодов, языка Ада.

 

Наш обозреватель Игорь Альтшулер беседует с профессором Красиловым о настоящем и будущем интеллектуальных систем.

 

PC Week: Многие из тех, кто занимается комплексной автоматизацией административной и хозяйственной деятельности предприятий, задумываются над вопросом “Чем встретим XXI век?”.

 

Альберт Красилов: Невозможно удовлетворить растущий спрос на программы только силами программистов. Поэтому программирование должно стать интеллектуальным, а обеспечивать его должны интеллектуальные системы (ИнтелС), расширяющие возможности пользователя. Кризис в телефонии в 20-х годах нашего века разрешился созданием телефона, который превратился в “телефониста для себя”. Нынешний кризис в программировании должен разрешиться аналогично  -  каждый пользователь ПК сможет сам составлять (модифицировать) для себя программы.

 

Субъективные замечания у пользователя всегда найдутся, даже в том случае, когда программы разрабатывались программистами высочайшей квалификации с учетом объективных требований рынка. Опыт работы по внедрению систем показал, что каждая организация предъявляет свои требования, например “нужно сделать не так общо, иначе не проходят какие-то операции в торговле или в кассовом зале”. Казалось бы, невозможно запланировать в программе все варианты решения (кроме тех, для которых использован оператор выдачи результата).

 

PC Week: Могу добавить, невозможно учесть в программе плохо формализуемые знания...

 

А. К.: На самом деле все невозможности принципиально возможны. Во-первых, создатель программы должен уметь быстро реагировать на новые запросы пользователя. Во-вторых, каждую программу можно перепрограммировать в соответствии с новыми требованиями. Но ждать, когда на вашу просьбу отреагирует разработчик, или держать собственных программистов (пусть даже в “горячем режиме”)  -  дело дорогостоящее, и модифицированная программа будет стоить не меньше исходной. Остается третья возможность  -  внедрять интеллектуальное программирование с помощью профессиональной части естественного языка (назовем его ЯПП  -  язык профессиональной прозы).

 

PC Week: Кажется, попытки создать универсальные решатели задач уже были.

 

А. К.: Были. Но известные универсальные решатели задач, появившиеся в конце 60-х годов (типа решателя Саймона), ориентировались на классическую логику и совершенно не учитывали конкретные знания пользователя. Экспертные системы (пик спроса на них пришелся на 80-е годы) мало чем отличаются от “программирования в командах” и не умеют “отлаживать” знания. Инструментарий языка Пролог не устранил эти недостатки.

 

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

 

PC Week: Что же конкретно делает ИнтелС  -  интеллектуальная система?

 

А. К.: ИнтелС решает логическое уравнение, составленное из высказываний в базе и запросе. Решение уравнения  -  это разрешение запроса. Из решения могут следовать семь типов результатов:

 

1) ответ Да-Нет-Не_знаю;

 

2) поиск условий истинности утверждения;

 

3) формирование понятий по базе знаний и запросу;

 

4) поиск информации в базе данных по вопросам, сформулированным на ЯПП;

 

5) поиск путей логического вывода;

 

6) построение алгоритмов и программ;

 

7) информационное конструирование предметов.

 

Конкретный альтернативный результат может быть числом, новым высказыванием или программой.

 

Решение логических уравнений в процессе заполнения базы знаний обеспечивает “отладку” знаний  -  проверку их непротиворечивости, независимости или полноты. Не следует сбрасывать со счетов и традиционные методы отладки знаний. К ним относятся: контроль за грамматической правильностью фраз и использованием понятий, контроль за точным выполнением количественных ограничений, алгоритмическая, системная и концептуальная отладки. Смысловая отладка знания реализуется автоматически или с участием пользователя на этапе ввода знаний (для внесения изменений).

 

Универсальность ИнтелС состоит в том, что база знаний  -  это “программа” решения класса задач, ориентированных на конкретную профессиональную деятельность. Проблем с правильностью программ не возникает потому, что знания отлажены в процессе ввода их в ИнтелС, а программа решения логического уравнения строится автоматически. База знаний, если она создавалась коллективно, содержит объективные знания (книги, эксперты, опыты и т. п.) и субъективные, если она создавалась одним специалистом с целью исследования новых предметов, явлений или процессов. Ввод высказываний в базу знаний  -  это и есть интеллектуальное программирование.

 

ЯЗЫК ПРОФЕССИОНАЛЬНОЙ ПРОЗЫ, ИЛИ ВОЗМОЖНОСТИ ОБЩЕНИЯ

 

PC Week: Альберт Александрович, что лежит в основе ИнтелС?

 

А. К.: В основе нового инструментария интеллектуального программирования лежат два понятия: лексикон и информатическая логика. В каждой конкретной области есть свой профессиональный язык, используемый для решения прикладных проблем. Когда пользователь передает программистам сущность проблемной области, часть знаний теряется, так как программист не может быть всезнайкой. Создание интеллектуального программирования с входным языком профессиональной прозы (ЯПП) сократит эти потери.

 

Вообще говоря, языком ИнтелС должен быть язык общения людей без добавления специальных знаков или формальных грамматик. Однако русский язык построен на основе грамматики, включающей в себя более 200 категорий (часть речи, род, число, падеж, сказуемое, подлежащее и т. п.) и использующей обширный контекст. Для понимания текста нужна память, соизмеримая с памятью человека. Оперативная же память компьютера ограниченна, поэтому для начала имеет смысл ограничиться языком профессиональной прозы (ЯПП) из 20 категорий. Можно, конечно, поработать и с языком поэзии, однако он очень уж активно использует принцип умолчания и небрежно (хотя и красиво) варьирует термины и синонимы.

 

PC Week: Итак, конструируется нечто вроде “языка Эллочки-людоедочки” для каждой специальности?

 

А. К.: Не все так просто. Я бы скорее сказал, что выделяется профессиональная часть нашего привычного языка. В основе ЯПП лежит понятие термина. Каждый термин должен иметь точные характеристики или быть неопределенным, тогда его характеристики могут определиться в процессе логического вывода. Допускается использование терминов, составленных из слов, знаков или сочетаний слов и знаков. Весь текст ЯПП состоит из абзацев, имеющих законченный смысл. Каждый абзац  -  набор предложений, состоящих из последовательностей терминов. Все это напоминает естественный язык, из которого исключены категории типов предложений, рода, числа, падежа, суффикса, окончания и т. п. Многие термины составлены из общеупотребительных слов и знаков, терминами-синонимами могут быть “сложение”, “+”, “плюс”, “увеличить на”. Введены две новые категории в грамматику ЯПП: термин-операнд (терманд) и термин-операция (термация). Существительное или глагол могут быть термандами или термациями. Таким образом, ЯПП  -  часть естественного языка, ориентированная на конкретную профессиональную деятельность.

 

Каждый термин ЯПП уникален, он (через свои характеристики) передает смысл понятия. Общий смысл текста “вычисляется” через смыслы терминов. Некоторые слова могут входить в различные термины с различными смыслами. Совокупность терминов вместе с определениями и характеристиками соответствующих понятий составляет лексикон. Одна его часть  -  стандартные термины (они известны ИнтелС), другая  -  термины пользователя. Грамматику, правила которой позволяют находить смысл текста, мы называем семантической. Грамматикой ЯПП является семантическая грамматика русского языка.

 

Понятие синонима в ЯПП расширено  -  можно вводить синонимы для любых терминов. К примеру, предложение может быть термином и для него можно определить один или несколько синонимов. Введение понятий термина и синонима исключает категории частей речи и частей предложения, характерных для грамматики русского языка. Знания и запросы для ИнтелС передаются компьютеру посредством ЯПП при одновременном формировании базы знаний (которая и является программой решения определенного класса прикладных задач).

 

PC Week: С лексиконом мы разобрались. А что такое информатическая логика?

 

А. К.: Информатическая логика является развитием классической, она скрыта от пользователя машиной логического вывода решений логических уравнений. Ее формализм автоматически учитывается при анализе предложений на ЯПП.

 

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

 

<название текста, истина>

 

Процесс осмысления текста рекурсивен до рассмотрения термина. Текст состоит из разделов (томов, глав, параграфов), каждый из них можно и нужно рассматривать как самостоятельный текст, поименованный некоторым термином. Конечный результат будет иметь вид:

 

<название текста, истина> =

 

<название раздела 1, истина> и

 

<название раздела 2, истина> и

 

...

 

<название раздела К, истина>

 

Каждое входящее в абзац предложение состоит из терминов. Термин может и не иметь значения в начале работы ИнтелС. В результате же он может определиться, доопределиться или получить новое значение. Для пользователя результатом работы ИнтелС является фраза, содержащая описание всех (в соответствии с запросом) альтернативных фактов, соединенных вместе. А каждый факт ставит в соответствие искомым терминам их окончательные значения. Они могут представлять собой:

 

- лексемы, выражающие истинный смысл понятия;

 

- высказывания, если какие-либо входящие в них термины не определены;

 

- программы (алгоритмические знания), если исходным терминам не сообщены начальные значения.

 

Интеллект ИнтелС характеризуется объемом базы осмысленных знаний, собранной из фраз на ЯПП.

 

ОТЛАДКА И ПОИСК ЗНАНИЙ

 

PC Week: Не повторят ли интеллектуальные системы (ИнтелС) путь экспертных систем, на которые в свое время тоже возлагали большие надежды?

 

А. К.: Широко известные экспертные системы не были поддержаны средствами отладки знаний, возможно, поэтому их звездный час так и не пришел. Кроме того, правила построения новых фактов в экспертных системах напоминают программирование (команды типа ЕСЛИ А, ТО В). ИнтелС же перерабатывают любые высказывания.

 

Рассмотрим, как решаются в ИнтелС проблемы процедурного программирования, требующие изменений (простых или сложных) в существующей программе или составления новой. Все знания (а их семь видов: описательные, языковые, концептуальные, фактографические, теоретические, процедурные и кибернетические) формализуются, поскольку могут излагаться на ЯПП. В процессе отладки знаний важно определить “тонкие места” в базе знаний (БЗ) или в запросе для их успешной ликвидации. Для учета предположений в ИнтелС можно ввести понятия, значения которых моделируются в многозначных логиках. К примеру, запрос типа “А или В = возможны” предполагает многозначность А и В. ИнтелС ориентирована на пользователя, и каждый специалист опирается на конкретную БЗ, пополняя ее по мере необходимости. ИнтелС определяет все альтернативные решения, например те, которые снабжены условием “Х не равен 0”. При этом нарушается академическое правило, из которого следует, что каждая задача должна иметь единственное решение. На практике трудно заниматься сложной проблемой определения условий единственности решения конкретной задачи.

 

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

 

- Джон или Роберт;

 

- Дик или Пауль;

 

- Пауль или Роберт;

 

- Гарри или Джеймс;

 

- Гарри или Томас;

 

- Дэниел или Джеймс.

 

Необходимо также учесть совместимость характеров:

 

- если войдет в экспедицию Пауль  -  гидрогеолог, то войдет в экспедицию Дик  -  гидрогеолог;

 

- если войдет в экспедицию Джеймс  -  физик, то войдет в экспедицию Гарри  -  радист и войдет в экспедицию Томас  -  механик;

 

- если войдет в экспедицию Гарри  -  радист, то не войдет в экспедицию Роберт  -  синоптик;

 

- если войдет в экспедицию Дэниел  -  физик, то не войдет в экспедицию Дик  -  гидрогеолог.

 

Отлаженные знания гарантируют получение правильных результатов.

 

ЗНАНИЯ ПРЕДСТАВЛЯЮТСЯ ЕСТЕСТВЕННЫМ ОБРАЗОМ

 

PC Week: Не могли бы вы пояснить, как взаимодействуют интеллектуальные системы (ИнтелС), например, с СУБД?

 

А. К.: Приведу конкретный пример. СУБД “Атлантис”, разработанная для комплекса “Галактика”, а также используемая автономно, вводит, обрабатывает и выводит результаты для весьма большого (более 1000) числа таблиц. Эта СУБД используется в ИнтелС для хранения фактографического знания и выполнения операций реляционной алгебры над таблицами. Кроме того, ИнтелС обрабатывает записи различной сложности, например фреймы, которые могут содержать традиционную информацию об именах и значениях каких-либо атрибутов объектов исследования, а также программы внутренней или внешней обработки атрибутов. С помощью таблиц и записей можно описывать семантические сети или графы с “навешенными” на узлы и дуги функциями. Таким образом, ЯПП охватывает известные объекты интеллектуальной работы с запросами пользователей.

 

В основе представления сложных объектов использованы обычные представления чисел, символов и строк, ссылок и констант, а также комплексных чисел, дат, времени, последовательностей и действий (команд). Определения и формы таких данных описаны в семантической грамматике. К примеру, даты можно записывать так: 25 января 1997 года или 25.01.1997; числа пишутся обычным образом: 1000 (но не 1’000 или 1 000); в строках можно задать произвольную последовательность символов: “2000” или “?/,!”.

 

Менее ясны методы представления знаний. Знания подразделяются на элементарные, простые и сложные (база знаний). Элементарное знание представляется парой <имя, значения>. Имя изображается термином, а значение имеет двоякую форму представления: внутреннюю (ее можно понять, анализируя коды в ячейках памяти ИнтелС) и внешнюю, которая выражается числами, символами, строками и другими объектами. Элементарное знание служит для представления простых фактов. Простое знание представляется композицией элементарного знания и термаций (терминов-операций). Внешнее представление простого знания выражается формулами, а внутреннее  -  альтернативами совместных элементарных знаний. Например, простым знанием является запись: “Ему 17 лет, а ей  -  16”. Простое знание служит для представления некоторой законченной мысли. Сложное знание представляется композицией простых знаний и предназначено для формирования базы знаний.

 

PC Week: Если я правильно понял, интеллектуальные системы отличаются от СУБД способами представления информации. А как насчет скорости работы и требований к памяти?

 

А. К.: ИнтелС отличается от СУБД не способами представления таблиц, а объектами и способами представления соотношений фактов. СУБД (та же “Атлантис”) используется для хранения данных первичных или новых фактов, но не для представлений знания. Так как операции со знаниями существенно отличаются от операций над таблицами, СУБД не может использоваться для этого эффективно. ИнтелС обеспечивает решение логических уравнений со скоростью 500 - 2000 операций логического вывода в секунду. СУБД может обеспечить быстродействие ИнтелС, 10 - 100 операций в секунду (приведенная в предыдущем разделе логическая задача решается за 230 операций).

 

Внутреннее представление знаний осуществляется в соответствии с формальным языком Лейбниц. Оригинальный язык Лейбниц строится на базе грамматики русского языка. Он сформировался в процессе понимания смысла текстов, передающих знание, формулировка его дана в 1994 г. Заметим, что его применение скрыто от пользователей средствами ЯПП.

 

Надо сказать, что пока блоки ИнтелС весьма невелики: программы трансляции ЯПП имеют размер 40 Кб, претрансляции  -  35, инициализации ИнтелС  -  4, меню работ  -  84, составления словарей из слов  -  14, составления словарей из терминов  -  10, интерпретации операций  -  28 Кб. Машина логического вывода умещается в 100 Кб, блоки вычисления свойств результатов  -  в 63, сервисные программы  -  в 49... Стандартные словари (без учета пользовательских) включают в себя 600 Кб слов и 300 Кб терминов. Конечно, в процессе формирования базы знаний для конкретного пользователя памяти потребуется больше, кроме того, дополнительной памяти потребуют и новые возможности системы: автоматическое формирование больших программ, работа с графикой и меню, расширение стандартных словарей и т. п.

 

ЗАЧЕМ ИЗОБРЕТАТЬ ВЕЛОСИПЕД?

 

PC Week: Если интеллектуальные системы (ИнтелС) будут быстро прогрессировать, то мы, вероятно, скоро получим и ответы на знаменитый гамлетовский вопрос: “Быть иль не быть?”

 

А. К.: Надо только накопить базу знаний. А пока мы часто задаем себе вопрос: “Я прав или не прав?” ИнтелС должна отвечать на такие вопросы после анализа введенных знаний и запроса (математики в таких случаях говорят о доказательстве теорем). Так вот, ИнтелС должна уметь доказывать теоремы или утверждения. Кстати (возвращаясь к гамлетовскому вопросу), из-за недостаточности знаний в базе ИнтелС может ответить словом “не знаю” и укажет причины такого ответа.

 

А вот вопрос “в чем я не прав?” выглядит конструктивнее, поскольку запрашивает факты, помогающие приблизиться к ответу на первый вопрос (“я прав или не прав?”). После запросов такого сорта ИнтелС логически выводит альтернативы совместных новых фактов, которые являются вариантами ответов.

 

Рассмотрим схему построения ответа на вопрос: “найти Х0 из исходного уравнения F(X) = 0 с помощью ряда Тейлора F(X) = F(X0) + dF(X0)*(X  -  X0)”. ИнтелС осуществит подстановку 0 вместо F(X) в ряде Тейлора и решит алгебраическое уравнение 0 = F(X0) + dF(X0)*(X  -  X0). На печать будет выведен новый факт: X = X0  -  F(X0)/dF(X0). Но это же известный метод Ньютона для решения алгебраических уравнений! Да, ИнтелС “изобрела велосипед”,  -  но лишь для иллюстрации своих возможностей, не более того. Если выведенные факты содержат формулы (которые могут представляться фразами), значит, ИнтелС построила новый метод решения задач или дала определение некоторого термина. ИнтелС может и дифференцировать. В процедурном программировании для каждого нового класса задач строится новая программа (хотя используются одни и те же знания). ИнтелС же выполняет подобные действия автоматически, если в базе знаний есть правила решения уравнений, приведения подобных членов, дифференцирования и интегрирования.

 

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

 

(Окончание следует)

 

Интеллектуальные системы приходят на смену Паскалю и Си, экспертным системам, языку Пролог. Они используют СУБД лишь в качестве инструмента для хранения таблиц и выполнения операций над таблицами. Программисты останутся, но свои функции они смогут выполнять в рамках интеллектуальных систем на естественном языке.

Версия для печати