Механизм логического вывода - Inference engine

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

Архитектура

Логика, которую использует механизм вывода, обычно представлена ​​в виде правил IF-THEN. Общий формат таких правил - IF <логическое выражение> THEN <логическое выражение>. До разработки экспертных систем и механизмов вывода исследователи искусственного интеллекта сосредоточились на более мощных средах для доказательства теорем, которые предлагали гораздо более полные реализации логики первого порядка . Например, общие утверждения, которые включали универсальную квантификацию (для всех X какое-то утверждение истинно) и экзистенциальную квантификацию (существует некоторый X такой, что какое-то утверждение истинно). Исследователи обнаружили, что сила этих сред для доказательства теорем также была их недостатком. В 1965 году было слишком легко создавать логические выражения, для завершения которых могло потребоваться неопределенное или даже бесконечное время. Например, в универсальной квантификации принято делать утверждения о бесконечном множестве, таком как множество всех натуральных чисел. Такие утверждения совершенно разумны и даже требуются в математических доказательствах, но когда они включены в программу автоматического доказательства теорем, выполняемую на компьютере, это может привести к тому, что компьютер попадет в бесконечный цикл. Сосредоточение внимания на операторах IF-THEN (которые логики называют modus ponens ) по-прежнему давало разработчикам очень мощный общий механизм для представления логики, но такой, который можно было бы эффективно использовать с вычислительными ресурсами. Более того, есть некоторые психологические исследования, которые показывают, что люди также склонны отдавать предпочтение представлению IF-THEN при хранении сложных знаний.

Простой пример modus ponens, часто используемый во вводных книгах по логике, - «Если вы человек, то вы смертны». Это может быть представлено в псевдокоде как:

Rule1: Human(x) => Mortal(x)

Тривиальный пример того, как это правило будет использоваться в механизме вывода, выглядит следующим образом. При прямой цепочке механизм вывода найдет в базе знаний любые факты, соответствующие Human (x), и для каждого обнаруженного факта добавит новую информацию Mortal (x) в базу знаний. Итак, если он обнаружит объект по имени Сократ, который был человеком, он сделает вывод, что Сократ был смертным. При обратном связывании системе будет дана цель, например, ответить на вопрос, смертен ли Сократ? Он будет искать в базе знаний и определять, был ли Сократ человеком, и, если да, утверждать, что он также смертен. Однако в обратной цепочке распространенной техникой была интеграция механизма вывода с пользовательским интерфейсом. Таким образом, теперь система может быть интерактивной, а не просто автоматизированной. В этом тривиальном примере, если бы системе была поставлена ​​цель ответить на вопрос, был ли Сократ смертным, и она еще не знала, был ли он человеком, она создала бы окно, чтобы задать пользователю вопрос «Является ли Сократ человеком?» и затем будет использовать эту информацию соответствующим образом.

Это нововведение интеграции механизма вывода с пользовательским интерфейсом привело ко второму раннему развитию экспертных систем: возможности объяснения. Явное представление знаний в виде правил, а не кода, позволило генерировать объяснения для пользователей: как объяснения в реальном времени, так и постфактум. Итак, если система спросит пользователя: «Является ли Сократ человеком?», Пользователь может задаться вопросом, почему ему задают этот вопрос, и система будет использовать цепочку правил, чтобы объяснить, почему в настоящее время она пытается установить эту часть знания: , ему необходимо определить, смертен ли Сократ, и для этого необходимо определить, является ли он человеком. Сначала эти объяснения мало чем отличались от стандартной отладочной информации, с которой имеют дело разработчики при отладке любой системы. Тем не менее, активная область исследований заключалась в использовании технологии естественного языка, чтобы задавать, понимать и генерировать вопросы и объяснения с использованием естественных языков, а не компьютерных формализмов.

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

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

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

Реализации

Ранние механизмы вывода были ориентированы в первую очередь на прямую цепочку. Эти системы обычно реализовывались на языке программирования Lisp . Лисп был частой платформой для ранних исследований ИИ из-за его сильной способности выполнять символические манипуляции. Кроме того, в качестве интерпретируемого языка он предлагал продуктивную среду разработки, подходящую для отладки сложных программ. Необходимым следствием этих преимуществ было то, что программы на Лиспе имели тенденцию быть медленнее и менее надежными, чем компилируемые языки того времени, такие как Си . В то время распространенным подходом было взять приложение экспертной системы и переупаковать механизм вывода, используемый для этой системы, в качестве инструмента многократного использования, который другие исследователи могли бы использовать для разработки других экспертных систем. Например, MYCIN была ранней экспертной системой для медицинской диагностики, а EMYCIN - механизмом вывода, экстраполированным из MYCIN и доступным для других исследователей.

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

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

Смотрите также

использованная литература