Продолжим публикацию учебных материалов по Искусственному Интеллекту. На прошлых занятиях мы рассмотрели теоретические и практические аспекты обработки естественного языка, а сегодня я хочу погрузить вас в представление знаний. Ведь искусственные интеллектуальные системы должны как-то хранить знания о своих проблемных областях.
Фактически, представление знаний является одним из центральных вопросов как при построении систем слабого Искусственного Интеллекта, так и при исследовании природы сознания. Каким образом устроены знания человека? Как человеческий мозг их хранит? Каким образом знания в голове человека актуализируются? Эти и многие другие вопросы встают перед исследователями в полный рост, когда дело доходит до реализации. Особенно это касается нисходящей парадигмы, в рамках которой осуществляется символьная обработка знаний и вывод на её основе новых знаний.
Но чем отличаются знания от данных? Ведь если рассматривать этот вопрос с точки зрения теории информации, то любое знание в конечном итоге можно закодировать при помощи последовательности бит, что также можно сделать и с данными. То есть как будто бы знания и данные ничем не различаются. Это очень тонкий вопрос, и для его решения необходимо рассмотреть более конкретизированные свойства двух понятий, которые лежат вне прерогативы теории информации.
Данные — это представление фактов об окружающей реальности или абстрактных понятиях в форме, позволяющей осуществлять коммуникацию, интерпретацию и обработку информации человеком индивидуально или при помощи специальных средств. Это определение несколько затуманивает более наивное понимание о том, что данные — это формализованные факты. Факты рассматриваются в рамках какой-либо предметной области и лежат в основе формирования гипотез и теорий. Таким образом, данные относятся только к фактам и используются в качестве базиса при формулировании ответов на конкретные вопросы о соответствующей предметной области. Использование данных для получения новой информации без использования механизмов логического вывода, суждений и умозаключений в общем понимании невозможно.
Знания — это совокупность утверждений об объективной реальности или абстрактных понятиях, свойствах объектов, закономерностях процессов и явлений, но также в состав знаний входят правила логического вывода одних утверждений из других и правила использования утверждений для принятия решений. Главнейшее отличие знаний от данных состоит в том, что знания активны — появление информации о новых фактах или отношениях между ними может изменить способы принятия решений. Также в отличие от данных знания рассматриваются в рамках проблемной области, то есть в совокупности предметной области и решаемых в ней задач.
В качестве примера можно привести такое сравнение. Мы собрали статистику о погоде в Москве за сто прошедших лет. Это данные. На основании этой статистики мы выявили такие правила, как, к примеру, «Если в ноябре шёл дождь не менее половины дней месяца, то зима будет снежная». Набор таких правил составляет корпус знаний.
Имеет смысл перечислить основные свойства знаний, которые отличают их от данных.
Во-первых, знания имеют более сложную структуру, чем данные.
Во-вторых, знания задаются как экстенсионально (то есть через набор конкретных фактов, соответствующих рассматриваемому понятию), так и интенсионально (то есть через свойства рассматриваемого понятия), а данные всегда задаются только экстенсионально.
В-третьих, знания имеют внутреннюю интерпретируемость, то есть возможность ассоциирования с элементом данных «избыточного» набора наименований тех множеств, в которые входит понятие.
В-четвёртых, знания обладают рекурсивной структурированностью, то есть возможностью расчленяться и объединяться в иерархические и родо-видовые отношения.
В-пятых, связность единиц знаний определяет возможность установления различных отношений, отражающих семантику и прагматику связей отдельных явлений и фактов.
В-шестых, наличие у знаний семантического пространства с метрикой позволяет определять близость и удалённость информационных единиц друг от друга.
В-седьмых, активность знаний определяет возможность формирования мотивов поведения, постановки целей, построения процедур их достижения.
И, наконец, в-восьмых, функциональная целостность знаний определяет возможность выбора желаемого результата, времени и средств получения результата, средств анализа достаточности полученного результата.
Теперь рассмотрим пять уровней организации знаний.
На первом уровне лежат знания в памяти человека — весь его основанный на эмпирическом опыте багаж знаний об окружающей реальности и правилах поведения в ней.
На втором уровне лежат материализованные, но неформализованные знания — учебники, справочники, энциклопедии и так далее
На третьем уровне располагается так называемое «поле знаний», которое представляет собой полуформализованное, но уже структурированное описание знаний с первых двух уровней, то есть из справочников и из головы экспертов.
На четвёртом уровне поле знаний формализуется на каком-либо языке представления знаний в виде выбранной структуры.
И, наконец, на пятом уровне находятся знания в системе управления базами знаний.
Теперь рассмотрим отдельные формализмы для представления знаний, причём сосредоточимся на символьных высокоуровневых формализмах. К таковым относятся: фреймы, продукции и семантические сети. Рассмотрим каждый подробнее.
Термин «фрейм» ввёл в оборот Марвин Мински, когда разрабатывал системы распознавания сцен для навигации роботов. Первоначально под фреймом понималась минимальная единица описания наблюдаемой сцены, но потом понятие было расширено до описания объектов, явлений, событий, ситуаций, процессов и так далее. По своей сути иерархия фреймов представляет собой объектное описание проблемной области. Фреймы могут представлять описание абстрактной сущности (фреймы-шаблоны) и конкретных элементов объективной реальности, с которыми в текущий момент работает интеллектуальная система.
У фреймов имеются слоты (как атрибуты у объектов в рамках объектно-ориентированного программирования), и эти слоты могут быть заполнены значениями, ссылаться на другие фреймы, в том числе и на фреймы-шаблоны, слоты которых, в свою очередь, должны быть заполнены при конкретизации понятия. При заполнении слотов могут вызываться сценарии для обработки воспринимаемых сигналов из внешней среды.
В целом, фреймы как способ представления знаний предлагают очень широкий набор методов работы со знаниями, но сам по себе этот формализм достаточно громоздкий. Сегодня существуют интеллектуальные системы, представление знаний в которых основано на фреймах, но их количество сравнительно мало с системами, основанными на других формализмах.
Продукции — это правила вида «ЕСЛИ … ТО …». Они соответствуют закону формальной логики Modus Ponens и позволяют вывести некоторые заключения из имеющихся фактов.
Сам формализм продукций предоставляет больше мета-атрибутов для обработки таких правил — в том числе контекст продукции (проблемная область или её сегмент), условие применения продукции, различные коэффициенты значимости или достоверности, а также постусловие, которое может использоваться для изменения самой базы знаний при выполнении продукции.
Для работы с продукционной базой знаний требуется машина вывода, которая получает на вход факты и при помощи продукций делает выводы. Результаты такого вывода также попадают в список текущих фактов и в свою очередь могут использоваться для дальнейшего вывода.
Машина вывода может осуществлять прямой вывод на основе уже упомянутого правила Modus Ponens, и этот способ вывода используется для получения заключения на основе наблюдаемых факторов. Но также есть и обратная стратегия вывода, которая основана на правиле Modus Tollens, и эта стратегия используется для получения возможных причин для текущих наблюдаемых проявлений (фактов).
Некоторые более универсальные машины вывода одновременно могут использовать обе стратегии, смешивая их для достижения более сложных целей. Например, пусть есть система, диагностирующая поломку в автомобиле. Пользователь пишет, что утром под машиной обнаружено масляное пятно. Универсальная машина вывода задаёт несколько наводящих вопросов и при помощи обратного вывода строит гипотезы о том, из-за чего это могло случиться. Далее они с пользователем проверяют эти гипотезы и, допустим, останавливаются на одной из них. Система осуществляет прямой вывод и даёт пользователю рекомендации о том, как исправить ситуацию, исходя из выявленных причин.
Наконец, семантические сети представляют собой направленные графы, в которых и вершины, и рёбра несут на себе пометки. Обычно вершины представляют собой сущности проблемной области, а рёбра — некоторые отношения между ними. В общем смысле и вершины, и рёбра могут иметь произвольные пометки — их семантика определяется машиной вывода, которая обрабатывает семантическую сеть.
Более того, для представления сложных ситуаций во многих проблемных областях желательно использовать расширение графов до отношений произвольной размерности. Это позволяют делать концептуальные графы, в рамках которых многомерные отношения представляются в виде отдельных узлов со специальными пометками.
Вывод на семантических сетях осуществляется при помощи перехода от начальной вершины в отношении которой надо осуществить вывод, ко всем вершинам, связанным с нею какими-либо отношениями, и далее до вершин, из которых уже нельзя совершить новых переходов. Результатом вывода являются все пути, семантика которых интерпретируется машиной вывода для конкретной цели и задачи.
Надо отметить, что чаще всего интеллектуальные системы одновременно используют несколько формализмов представления знаний. В частности, довольно часто объединяются семантические сети и наборы продукций. Это легко сделать потому, что у каждой продукции есть контекст её выполнения, и таким контекстом могут быть вершины семантической сети. Как только машина вывода доходит до какой-либо вершины в сети, на исполнение передаются все ассоциированные с этой вершиной продукции, и они исполняются в соответствии с принятой стратегией вывода и наличием означенных фактов из проблемной области. Это очень гибкий механизм, позволяющий представить практически любые знаний из произвольной проблемной области.
Наконец, важным дополнением к описанным формализмам представления знаний будет язык исполнения сценариев. Это может быть язык в любой парадигме, но самая главная его особенность заключается в том, что в его рамках есть доступ к полной объектной модели проблемной области и он обладает достаточной функциональностью для её обработки. Это позволяет «на лету» создавать сценарии обработки знаний под нужды конкретных задач. Такие сценарии могут использоваться при заполнении слотов во фреймовой модели, при выполнении консеквента продукции или при активации вершины в семантической сети.