Главная arrow Логика arrow Процесс инженерии знаний
Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
Процесс инженерии знаний Печать

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

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

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

рассматриваемая проблемная область. Относящиеся к делу (релевантные) знания для мира вампуса, который определен с помощью искусственного набора правил, выявить несложно. (Но следует отметить, что определение понятия соседства квадратов не формулировалось явно в правилах функционирования мира вампуса.) Тем не менее для реальных проблемных областей задача выявления релевантных знаний может оказаться весьма сложной; например, система для эмуляции работы спроектированных СБИС может требовать или не требовать учета паразитных емкостей и поверхностных эффектов.

Определение словаря предикатов, функций и констант. В иной формулировке этот этап можно определить как преобразование важных понятий уровня проблемной области в имена логического уровня. Для этого необходимо ответить на многие вопросы в стиле инженерии знаний. Как и от стиля программирования, от стиля инженерии знаний может существенным образом зависеть окончательный успех проекта. Например, должны ли ямы быть представлены с помощью объектов или с помощью унарного предиката, определенного на квадратах? Должна ли ориентация агента быть задана в виде функции или предиката? Должно ли местонахождение вампуса зависеть от времени? Результатом выбора наиболее подходящих средств представления становится словарь, известный под названием онтологии проблемной области. Само слово онтология в данном контексте означает конкретную теорию пребывания в определенном состоянии, или теорию существования. Онтология определяет, какого рода объекты существуют, но не определяет их конкретные свойства и взаимосвязи.

Регистрация общих знаний о проблемной области. Инженер по знаниям записывает аксиомы для всех терминов словаря. Тем самым он закрепляет (в возможной степени) смысл этих терминов, позволяя эксперту проверить их содержание. На этом этапе часто обнаруживаются неправильные трактовки или пропуски в словаре, который необходимо исправить, возвратившись на этап 3 и снова пройдя данную итерацию в текущем процессе проектирования.

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

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

Отладка базы знаний. К сожалению, ответы на запросы при первой попытке редко оказываются правильными. Точнее, ответы будут правильными для базы знаний в том виде, в каком она написана, при условии, что процедура логического вывода является непротиворечивой, но они не будут такими, каких ожидает пользователь. Например, если недостает какой-то аксиомы, то на некоторые запросы из этой базы знаний нельзя будет найти ответ. В этом может помочь продуманный процесс отладки. Недостающие или слишком слабые аксиомы могут быть легко выявлены путем обнаружения участков, на которых неожиданно обрывается цепочка этапов логического вывода. Например, если база знаний содержит одну из диагностических аксиом, касающихся ям, Vs Breezy(s) => 3r Adjacent (r, s) л Pi t(r) но не содержит другую, то агент не сможет доказать отсутствие ям. Неправильные аксиомы могут быть выявлены на основании того, что они представляют собой ложные утверждения о мире. Например, аксиома Vx NumOfLegs (х, 4) => Mammal (х) является ложной, поскольку относит к млекопитающим рептилий, амфибий и, что еще важнее, столы с четырьмя ножками. cf= Ложность этого высказывания может быть определена независимо от остальной части базы знаний. В отличие от этого, типичная ошибка в программе выглядит примерно таким образом: offset = position + 1 Невозможно определить, является ли этот оператор правильным, не изучив остальную часть программы для определения того, что, например, переменная offset используется для ссылки на текущую позицию или на позицию, которая следует за текущей позицией, а также происходит ли изменение значения переменной position в другом операторе и поэтому возникает необходимость снова изменять значение переменной offset.

Проблемная область электронных схем

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

Image 

Цифровая схема C1 предназначенная для использования в качестве однобитового полного сумматора. На первые два входа подаются два бита, подлежащие сложению, а на третий вход подается бит переноса. На первом выходе находится сумма, а на втором — бит переноса для следующего сумматора. Эта схема включает два логических элемента XOR, два логических элемента AND и один логический элемент OR

 

Идентификация задания

С цифровыми схемами связано много заданий, требующих логического рассуждения. На самом высоком уровне требуется проанализировать функциональное назначение схемы. Например, действительно ли приведенная на рисунке схема выполняет сложение должным образом? Если на все входы подаются сигналы с высоким потенциалом, то каким является выход логического элемента А2? Интерес представляют также вопросы о структуре схемы. Например, каковыми являются все логические элементы, подключенные к первой входной клемме? Содержит ли эта схема петли обратной связи? В этом и состоят задания, рассматриваемые в данном разделе. Существуют также более детализированные уровни анализа, включая те, которые относятся к определению продолжительности задержек, площади схемы, потреблению энергии, стоимости производства и т.д. Для каждого из этих уровней могут потребоваться дополнительные знания.

 

Сбор относящихся к делу знаний

Что мы знаем о цифровых схемах? Для наших целей достаточно знать, что они состоят из проводов и логических элементов. Сигналы распространяются по проводам к входным клеммам логических элементов, а каждый логический элемент вырабатывает на выходной клемме сигнал, который распространяется по другому проводу. Чтобы определить, какими должны быть эти сигналы, нам необходимо знать, как логические элементы преобразуют свои входные сигналы. Существует четыре основных типа логических элементов: логические элементы AND, OR и XOR имеют две входные клеммы, а логический элемент NOT имеет одну входную клемму. Все логические элементы имеют одну выходную клемму. Схемы, как и логические элементы, имеют входные и выходные клеммы.

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

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

 

Определение словаря

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

Прежде всего необходимо иметь возможность отличать один логический элемент от других логических элементов. Это можно обеспечить, присвоив логическим элементам имена с помощью констант: xl9 Х2 и т.д. Хотя каждый логический элемент подключен к схеме своим индивидуальным способом, его поведение (способ преобразования входных сигналов в выходные) зависит только от типа. Для ссылки на тип логического элемента может использоваться функция11. Например, можно написать Туре(Х±) =XOR. Тем самым вводится константа XOR для логического элемента конкретного типа; другие константы будут называться OR, AND и NOT. Функция Туре не является единственным способом регистрации онтологических различий. Для этого можно было бы использовать бинарный предикат, Type(XlfXOR), или несколько отдельных предикатов типов, таких как XOR (XJ . Любой из этих вариантов вполне подходит, но выбирая функцию Туре, мы избегаем необходимости определять аксиому, в которой указано, что каждый отдельный логический элемент может иметь только один тип, поскольку это уже гарантирует сама семантика функций.

Затем рассмотрим клеммы. Логический элемент или цифровая схема может иметь одну или несколько входных клемм и одну или несколько выходных клемм. Можно было бы просто присвоить каждой из них имя с помощью константы, точно так же, как мы именовал pi логические элементы. Таким образом, логический элемент хг мог бы иметь клеммы с именами Хг1пг, Хг1п2 и Х±Ои^. Но следует избегать тенденции к созданию длинных составных имен. Назвав нечто Х11п1, мы не сделаем его первой входной клеммой хг; все равно потребуется указать это с помощью явного утверждения. По-видимому, лучше именовать клеммы логического элемента с помощью функции, так же, как мы именовали левую ногу короля Джона как Lef t Leg {John). Таким образом, примем, что Ji^fl,^) обозначает первую входную клемму для логического элемента Хъ Аналогичная функция Out используется для выходных клемм. Связь между логическими элементами может быть представлена с помощью предиката Connected, который принимает в качестве параметров имена двух клемм, как в выражении Connected (Ои t A, Хг) , In A, Х2) ).

Наконец, необходимо знать, включен или выключен сигнал. Одна из возможностей состоит в использовании унарного предиката On, который принимает истинное значение, когда сигнал на клемме включен. Тем не менее при этом затрудняется постановка таких вопросов, как: "Каковы возможные значения сигналов на выходных клеммах схемы Сг?" Поэтому введем в качестве объектов два "значения сигнала", 1 и 0, и функцию Signal, которая принимает имя клеммы в качестве параметра и указывает значение сигнала для этой клеммы.