stringtranslate.com

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

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

Кроме того, концепция «вывода» расширилась и теперь включает процесс, посредством которого обученные нейронные сети генерируют прогнозы или решения. В этом контексте «машина вывода» может относиться к конкретной части системы или даже оборудованию, которое выполняет эти операции. Этот тип вывода играет решающую роль в различных приложениях, включая (но не ограничиваясь ими) распознавание изображений , обработку естественного языка и автономные транспортные средства . Фаза вывода в этих приложениях обычно характеризуется большим объемом входных данных и требованиями к обработке в реальном времени.

Архитектура

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

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

Правило 1: Человек(x) => Смертный(x)

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

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

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

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

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

Реализации

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

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

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

Реализации с открытым исходным кодом

ClipsRules и RefPerSys (вдохновлены CAIA [6] и работой Жака Питрата ). Статический анализатор исходного кода Frama-C также использует некоторые методы механизма вывода.

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

Рекомендации

  1. ^ аб Хейс-Рот, Фредерик; Дональд Уотерман; Дуглас Ленат (1983). Создание экспертных систем. Аддисон-Уэсли. ISBN 0-201-10686-8.
  2. ^ Фейгенбаум, Эдвард; Аврон Барр (1 сентября 1986 г.). Справочник по искусственному интеллекту, том I. Аддисон-Уэсли. п. 195. ИСБН 0201118114.
  3. ^ Барзилайт, Регина; Дэрил Маккалоу; Оуэн Рэмбоу; Джонатан ДеКристофаро; Таня Корельская; Бенуа Лавуа. «Новый подход к объяснениям экспертных систем» (PDF) . Отчет Римской лаборатории ВВС США . Архивировано из оригинала 5 июля 2016 года.
  4. ^ Гриффин, Нидерланды, Оптимальная и реализуемая СБИС машина вывода на основе правил , Университет Кентукки.
  5. ^ Стерлинг, Леон; Эхуд Шапиро (1986). Искусство Пролога. Кембридж, Массачусетс: Массачусетский технологический институт. ISBN 0-262-19250-0.
  6. ^ Питрат, Жак (2009). Искусственные существа, совесть сознательной машины . Уайли. ISBN 978-1848211018.