В искусственном интеллекте (ИИ) экспертная система — это компьютерная система, имитирующая способность человека- эксперта принимать решения . [1] Экспертные системы предназначены для решения сложных задач путем рассуждений с использованием совокупностей знаний, представленных в основном в виде правил «если–тогда», а не с помощью обычного процедурного программного кода. [2] Экспертные системы были одними из первых по-настоящему успешных форм программного обеспечения ИИ. [3] [4] [5] [6] [7] Они были созданы в 1970-х годах, а затем получили распространение в 1980-х годах, [8] будучи затем широко рассматриваемыми как будущее ИИ — до появления успешных искусственных нейронных сетей . [9] Экспертная система делится на две подсистемы: 1) базу знаний , которая представляет факты и правила; и 2) машину вывода , которая применяет правила к известным фактам для вывода новых фактов и может включать в себя возможности объяснения и отладки.
Вскоре после появления современных компьютеров в конце 1940-х и начале 1950-х годов исследователи начали осознавать огромный потенциал, который эти машины имели для современного общества. Одной из первых задач было сделать такие машины способными «думать» как люди — в частности, сделать эти машины способными принимать важные решения так, как это делают люди. Медицинская сфера здравоохранения представила заманчивую задачу — дать этим машинам возможность принимать решения по медицинской диагностике. [10]
Таким образом, в конце 1950-х годов, сразу после того, как информационная эпоха полностью наступила, исследователи начали экспериментировать с перспективой использования компьютерных технологий для имитации человеческого принятия решений. Например, биомедицинские исследователи начали создавать компьютерные системы для диагностических приложений в медицине и биологии. Эти ранние диагностические системы использовали симптомы пациентов и результаты лабораторных тестов в качестве входных данных для генерации диагностического результата. [11] [12] Эти системы часто описывались как ранние формы экспертных систем. Однако исследователи поняли, что существуют значительные ограничения при использовании традиционных методов, таких как блок-схемы, [13] [14] статистическое сопоставление шаблонов, [15] или теория вероятностей. [16] [17]
Эта предыдущая ситуация постепенно привела к развитию экспертных систем, которые использовали подходы, основанные на знаниях. Такими экспертными системами в медицине были экспертная система MYCIN , [18] экспертная система Internist -I [19] и позднее, в середине 1980-х годов, CADUCEUS . [20]
Экспертные системы были официально представлены около 1965 года Стэнфордским проектом эвристического программирования под руководством Эдварда Фейгенбаума , которого иногда называют «отцом экспертных систем»; [21] другими ключевыми ранними участниками были Брюс Бьюкенен и Рэндалл Дэвис. Исследователи Стэнфорда пытались определить области, где экспертиза была высоко ценимой и сложной, такие как диагностика инфекционных заболеваний ( Mycin ) и идентификация неизвестных органических молекул ( Dendral ). [22] Идея о том, что «интеллектуальные системы черпают свою силу из знаний, которыми они обладают, а не из конкретных формализмов и схем вывода, которые они используют» [23] – как сказал Фейгенбаум – была в то время значительным шагом вперед, поскольку прошлые исследования были сосредоточены на эвристических вычислительных методах, достигнув кульминации в попытках разработать очень универсальные решатели проблем (прежде всего, совместная работа Аллена Ньюэлла и Герберта Саймона ). [24] Экспертные системы стали одними из первых по-настоящему успешных форм программного обеспечения искусственного интеллекта (ИИ). [3] [4] [5] [6] [7]
Исследования экспертных систем также активно велись в Европе. В США основное внимание уделялось использованию систем правил производства , сначала на системах, жестко закодированных поверх сред программирования Lisp , а затем на оболочках экспертных систем, разработанных такими поставщиками, как Intellicorp . В Европе исследования больше фокусировались на системах и оболочках экспертных систем, разработанных на Prolog . Преимущество систем Prolog заключалось в том, что они использовали форму программирования на основе правил , которая была основана на формальной логике . [25] [26]
Одной из таких ранних экспертных системных оболочек на основе Prolog была APES. [27] Одним из первых случаев использования Prolog и APES была юридическая область, а именно кодирование большой части Закона о британском гражданстве. Лэнс Эллиот писал: «Закон о британском гражданстве был принят в 1981 году и вскоре после этого использовался как средство демонстрации эффективности использования методов и технологий искусственного интеллекта (ИИ), делая это для изучения того, как недавно принятый в то время статутный закон может быть закодирован в компьютерную логическую формализацию. В 1986 году была опубликована часто цитируемая исследовательская работа под названием «Закон о британском гражданстве как логическая программа», которая впоследствии стала отличительной чертой для последующих работ в области ИИ и права». [28] [29]
В 1980-х годах экспертные системы получили распространение. Университеты предлагали курсы по экспертным системам, и две трети компаний из списка Fortune 500 применяли эту технологию в повседневной деловой деятельности. [8] [30] Интерес стал международным с проектом Fifth Generation Computer Systems в Японии и увеличением финансирования исследований в Европе.
В 1981 году был представлен первый IBM PC с операционной системой PC DOS . [31] Дисбаланс между высокой доступностью относительно мощных чипов в ПК по сравнению с гораздо более высокой стоимостью вычислительной мощности в мэйнфреймах, которые доминировали в то время в корпоративном ИТ-мире, создал новый тип архитектуры для корпоративных вычислений, называемый моделью клиент-сервер . [32] Расчеты и рассуждения могли выполняться за часть цены мэйнфрейма с использованием ПК. Эта модель также позволила бизнес-подразделениям обойти корпоративные ИТ-отделы и напрямую создавать свои собственные приложения. В результате клиент-сервер оказал огромное влияние на рынок экспертных систем. Экспертные системы уже были изгоями во многих сферах бизнеса, требуя новых навыков, которых многие ИТ-отделы не имели и не стремились развивать. Они были естественным образом приспособлены для новых оболочек на базе ПК, которые обещали передать разработку приложений в руки конечных пользователей и экспертов. До этого основной средой разработки экспертных систем были высокопроизводительные машины Lisp от Xerox , Symbolics и Texas Instruments . С ростом популярности ПК и клиент-серверных вычислений такие поставщики, как Intellicorp и Inference Corporation, переключили свои приоритеты на разработку инструментов на базе ПК. Кроме того, регулярно стали появляться новые поставщики, часто финансируемые венчурным капиталом (например, Aion Corporation, Neuron Data , Exsys, VP-Expert и многие другие [33] [34] ).
Первой экспертной системой, которая использовалась в качестве проектной мощности для крупномасштабного продукта, была программа Synthesis of Integral Design (SID), разработанная в 1982 году. Написанная на Lisp , SID сгенерировала 93% логических вентилей процессора VAX 9000. [35] Входными данными для программного обеспечения был набор правил, созданных несколькими экспертами-разработчиками логики. SID расширила правила и сгенерировала процедуры синтеза программной логики во много раз больше размера самих правил. Удивительно, но сочетание этих правил привело к общему проекту, который превзошел возможности самих экспертов и во многих случаях превзошел человеческие аналоги. Хотя некоторые правила противоречили другим, верхнеуровневые параметры управления для скорости и площади стали решающим фактором. Программа была весьма спорной, но тем не менее использовалась из-за ограничений бюджета проекта. Она была прекращена разработчиками логики после завершения проекта VAX 9000.
В годы до середины 1970-х годов ожидания того, что экспертные системы могут сделать во многих областях, имели тенденцию быть чрезвычайно оптимистичными. В начале этих ранних исследований исследователи надеялись разработать полностью автоматические (т. е. полностью компьютеризированные) экспертные системы. Ожидания людей относительно того, что могут делать компьютеры, часто были слишком идеалистическими. Эта ситуация радикально изменилась после того, как Ричард М. Карп опубликовал свою прорывную работу: «Сводимость среди комбинаторных задач» в начале 1970-х годов. [36] Благодаря работе Карпа, совместно с другими учеными, такими как Хьюберт Л. Дрейфус, [37] стало ясно, что существуют определенные ограничения и возможности при проектировании компьютерных алгоритмов. Его выводы описывают, что компьютеры могут делать, а что нет. Многие вычислительные проблемы, связанные с этим типом экспертных систем, имеют определенные прагматические ограничения. Эти выводы заложили основу, которая привела к следующим разработкам в этой области. [10]
В 1990-х годах и позже термин «экспертная система » и идея автономной системы искусственного интеллекта в основном исчезли из лексикона ИТ. Существует два толкования этого. Первое заключается в том, что «экспертные системы потерпели неудачу»: мир ИТ пошел дальше, потому что экспертные системы не оправдали своих чрезмерно разрекламированных обещаний. [38] [39] Другое — зеркальная противоположность, что экспертные системы просто стали жертвами своего успеха: по мере того, как ИТ-специалисты усваивали такие концепции, как механизмы правил, такие инструменты перешли от автономных инструментов для разработки экспертных систем специального назначения к одним из многих стандартных инструментов. [40] Другие исследователи предполагают, что экспертные системы стали причиной борьбы за власть между компаниями, когда ИТ-организация утратила свою исключительность в области модификаций программного обеспечения для пользователей или инженеров по знаниям. [41]
В первом десятилетии 2000-х годов произошло «воскрешение» технологии, при этом использовался термин « системы на основе правил» , с существенными историями успеха и принятия. [42] Многие из ведущих крупных поставщиков пакетов бизнес-приложений (такие как SAP , Siebel и Oracle ) интегрировали возможности экспертных систем в свой пакет продуктов как способ указания бизнес-логики. Механизмы правил больше не просто определяют правила, которые будет использовать эксперт, но и подходят для любого типа сложной, изменчивой и критической бизнес-логики; они часто идут рука об руку со средами автоматизации и интеграции бизнес-процессов. [43] [44] [45]
Ограничения предыдущего типа экспертных систем побудили исследователей разработать новые типы подходов. Они разработали более эффективные, гибкие и мощные методы для имитации процесса принятия решений человеком. Некоторые из подходов, разработанных исследователями, основаны на новых методах искусственного интеллекта (ИИ), и в частности на подходах машинного обучения и добычи данных с механизмом обратной связи. [46] [ не удалось проверить ] Рекуррентные нейронные сети часто используют преимущества таких механизмов. С этим связано обсуждение раздела недостатков.
Современные системы могут легче включать новые знания и, таким образом, легко обновляться. Такие системы могут лучше обобщать существующие знания и работать с огромными объемами сложных данных. Связанный здесь предмет больших данных . Иногда такие экспертные системы называют «интеллектуальными системами». [10]
В последнее время можно утверждать, что экспертные системы переместились в область бизнес-правил и систем управления бизнес-правилами .
Экспертная система является примером системы, основанной на знаниях . Экспертные системы были первыми коммерческими системами, использующими архитектуру, основанную на знаниях. В общем виде экспертная система включает в себя следующие компоненты: базу знаний , машину вывода , средство объяснения, средство получения знаний и пользовательский интерфейс. [48] [49]
База знаний представляет факты о мире. В ранних экспертных системах, таких как Mycin и Dendral, эти факты были представлены в основном как плоские утверждения о переменных. В более поздних экспертных системах, разработанных с коммерческими оболочками, база знаний приобрела большую структуру и использовала концепции из объектно-ориентированного программирования . Мир был представлен в виде классов, подклассов и экземпляров , а утверждения были заменены значениями экземпляров объектов. Правила работали, запрашивая и утверждая значения объектов.
Механизм вывода — это автоматизированная система рассуждений , которая оценивает текущее состояние базы знаний, применяет соответствующие правила, а затем утверждает новые знания в базу знаний. Механизм вывода может также включать возможности объяснения, так что он может объяснить пользователю цепочку рассуждений, использованную для достижения определенного вывода, прослеживая срабатывание правил, которые привели к утверждению. [50]
В основном существуют два режима для механизма вывода: прямой и обратный . Различные подходы диктуются тем, управляется ли механизм вывода антецедентом (левая сторона) или консеквентом (правая сторона) правила. В прямом цепочке антецедент активирует и утверждает консеквент. Например, рассмотрим следующее правило:
Простым примером прямой цепочки будет утверждение Man(Socrates) в системе и последующий запуск механизма вывода. Он сопоставит R1 и утверждение Mortal(Socrates) в базе знаний.
Обратная цепочка немного менее прямолинейна. В обратной цепочке система рассматривает возможные выводы и работает в обратном направлении, чтобы увидеть, могут ли они быть истинными. Таким образом, если система пытается определить, является ли Mortal(Socrates) истинным, она находит R1 и запрашивает базу знаний, чтобы узнать, является ли Man(Socrates) истинным. Одним из ранних нововведений оболочек экспертных систем была интеграция механизмов вывода с пользовательским интерфейсом. Это может быть особенно эффективным при обратной цепочке. Если системе нужно знать определенный факт, но она его не знает, то она может просто сгенерировать экран ввода и спросить пользователя, известна ли эта информация. Таким образом, в этом примере она может использовать R1, чтобы спросить пользователя, был ли Сократ человеком, а затем использовать эту новую информацию соответствующим образом.
Использование правил для явного представления знаний также позволило реализовать возможности объяснения. В простом примере выше, если система использовала R1 для утверждения, что Сократ был смертным, и пользователь хотел понять, почему Сократ был смертным, он мог запросить систему, и система посмотрела бы на правила, которые сработали, чтобы вызвать утверждение, и представила бы эти правила пользователю в качестве объяснения. На английском языке, если бы пользователь спросил «Почему Сократ смертен?», система ответила бы «Потому что все люди смертны, а Сократ — мужчина». Значительной областью для исследований было создание объяснений из базы знаний на естественном английском языке, а не просто путем показа более формальных, но менее интуитивных правил. [51]
По мере развития экспертных систем в различные типы машин вывода было включено множество новых методов. [52] Вот некоторые из наиболее важных из них:
Цель систем, основанных на знаниях, состоит в том, чтобы сделать критическую информацию, необходимую для работы системы, явной, а не неявной. [55] В традиционной компьютерной программе логика встроена в код, который обычно может быть просмотрен только ИТ-специалистом. В экспертной системе цель состояла в том, чтобы указать правила в формате, который был бы интуитивно понятным и легко понимаемым, просматриваемым и даже редактируемым экспертами в предметной области, а не ИТ-экспертами. Преимуществами этого явного представления знаний были быстрая разработка и простота обслуживания.
Простота обслуживания — самое очевидное преимущество. Это было достигнуто двумя способами. Во-первых, за счет устранения необходимости писать обычный код, многие обычные проблемы, которые могут быть вызваны даже небольшими изменениями в системе, можно было избежать с помощью экспертных систем. По сути, логический поток программы (по крайней мере, на самом высоком уровне) был просто данностью для системы, просто вызовите механизм вывода. Это также было причиной второго преимущества: быстрого прототипирования . С оболочкой экспертной системы можно было ввести несколько правил и разработать прототип за несколько дней, а не за месяцы или год, как это обычно бывает со сложными ИТ-проектами.
Часто звучало утверждение, что оболочки экспертных систем устраняют необходимость в обученных программистах и что эксперты могут разрабатывать системы самостоятельно. В действительности это было редко, если вообще когда-либо, правдой. Хотя правила для экспертной системы были более понятными, чем типичный компьютерный код, они все еще имели формальный синтаксис, где неуместная запятая или другой символ могли вызвать хаос, как и в любом другом компьютерном языке. Кроме того, по мере того, как экспертные системы переходили от прототипов в лаборатории к развертыванию в деловом мире, вопросы интеграции и обслуживания становились гораздо более критическими. Неизбежно возникали требования по интеграции с большими устаревшими базами данных и системами и использованию их преимуществ. Чтобы добиться этого, интеграция требовала тех же навыков, что и любой другой тип системы. [56]
Подводя итог преимуществам использования экспертных систем, можно выделить следующее: [48]
Наиболее распространенным недостатком экспертных систем в академической литературе является проблема приобретения знаний . Получение времени экспертов в предметной области для любого программного приложения всегда является сложной задачей, но для экспертных систем это было особенно сложной задачей, поскольку эксперты по определению высоко ценились и постоянно требовались организацией. В результате этой проблемы большая часть исследований в последние годы экспертных систем была сосредоточена на инструментах для приобретения знаний, чтобы помочь автоматизировать процесс проектирования, отладки и поддержания правил, определенных экспертами. Однако, если посмотреть на жизненный цикл экспертных систем в реальном использовании, другие проблемы — по сути те же самые проблемы, что и у любой другой большой системы — кажутся по крайней мере такими же важными, как приобретение знаний: интеграция, доступ к большим базам данных и производительность. [57] [58]
Производительность могла быть особенно проблематичной, поскольку ранние экспертные системы были созданы с использованием инструментов (таких как более ранние версии Lisp), которые интерпретировали выражения кода без их предварительной компиляции. Это обеспечивало мощную среду разработки, но с недостатком, заключающимся в том, что было практически невозможно сравниться с эффективностью самых быстрых компилируемых языков (таких как C ). Интеграция систем и баз данных была сложной для ранних экспертных систем, поскольку инструменты были в основном на языках и платформах, которые не были знакомы или не приветствовались в большинстве корпоративных ИТ-сред — языках программирования, таких как Lisp и Prolog, и аппаратных платформах, таких как машины Lisp и персональные компьютеры. В результате, многие усилия на более поздних этапах разработки инструментов экспертных систем были сосредоточены на интеграции с устаревшими средами, такими как COBOL и большими системами баз данных, а также на переносе на более стандартные платформы. Эти проблемы были решены в основном за счет смены парадигмы клиент-сервер, поскольку ПК постепенно принимались в ИТ-среде как законная платформа для разработки серьезных бизнес-систем, а доступные серверы мини-компьютеров обеспечивали вычислительную мощность, необходимую для приложений ИИ. [56]
Другая серьезная проблема экспертных систем возникает, когда размер базы знаний увеличивается. Это приводит к увеличению сложности обработки. Например, когда экспертная система со 100 миллионами правил была задумана как конечная экспертная система, стало очевидно, что такая система будет слишком сложной и столкнется со слишком большим количеством вычислительных проблем. [59] Машина вывода должна была бы иметь возможность обрабатывать огромное количество правил, чтобы принять решение.
Как проверить, что правила принятия решений согласуются друг с другом, также является проблемой, когда правил слишком много. Обычно такая проблема приводит к формулировке выполнимости (SAT). [60] Это хорошо известная NP-полная задача Булева задача выполнимости . Если мы предположим только бинарные переменные , скажем, n из них, и тогда соответствующее пространство поиска будет иметь размер 2. Таким образом, пространство поиска может расти экспоненциально.
Также возникают вопросы о том, как расставить приоритеты в использовании правил для более эффективной работы или как разрешить неоднозначности (например, если в одном правиле слишком много подструктур else-if) и т. д. [61]
Другие проблемы связаны с эффектами переобучения и переобобщения при использовании известных фактов и попытках обобщения на другие случаи, не описанные явно в базе знаний. Такие проблемы существуют и с методами, которые используют подходы машинного обучения. [62] [63]
Другая проблема, связанная с базой знаний, заключается в том, как быстро и эффективно обновлять ее знания. [64] [65] [66] Также сложно то, как добавить новый фрагмент знаний (т. е. где добавить его среди множества правил). Современные подходы, которые опираются на методы машинного обучения, в этом отношении проще. [ необходима цитата ]
Из-за вышеперечисленных проблем стало ясно, что вместо технологий на основе правил требуются новые подходы к ИИ. Эти новые подходы основаны на использовании методов машинного обучения, а также механизмов обратной связи. [10]
Основные проблемы, с которыми сталкиваются экспертные системы в медицине (если рассматривать компьютерные диагностические системы как современные экспертные системы), а возможно, и в других областях применения, включают вопросы, связанные с такими аспектами, как: большие данные, существующие правила, практика здравоохранения, различные алгоритмические проблемы и оценка систем. [67]
Наконец, можно суммировать следующие недостатки использования экспертных систем: [48]
Hayes-Roth делит приложения экспертных систем на 10 категорий, проиллюстрированных в следующей таблице. Примеры приложений не были в оригинальной таблице Hayes-Roth, и некоторые из них возникли значительно позже. Любое приложение, которое не имеет сноски, описано в книге Hayes-Roth. [50] Кроме того, хотя эти категории предоставляют интуитивную структуру для описания пространства приложений экспертных систем, они не являются жесткими категориями, и в некоторых случаях приложение может демонстрировать черты более чем одной категории.
Hearsay был ранней попыткой решения проблемы распознавания голоса с помощью подхода экспертных систем. По большей части эта категория экспертных систем не была столь успешной. Hearsay и все системы интерпретации по сути являются системами распознавания образов — ищут образы в зашумленных данных. В случае Hearsay распознавал фонемы в аудиопотоке. Другие ранние примеры — анализ данных гидролокатора для обнаружения российских подводных лодок. Такие типы систем оказались гораздо более податливыми для решения на основе нейронной сети ИИ, чем для подхода на основе правил.
CADUCEUS и MYCIN были системами медицинской диагностики. Пользователь описывает свои симптомы компьютеру так же, как он это делал бы врачу, и компьютер возвращает медицинский диагноз.
Dendral был инструментом для изучения формирования гипотез при идентификации органических молекул. Общая задача, которую он решал — проектирование решения с учетом набора ограничений — была одной из самых успешных областей для ранних экспертных систем, применяемых в таких областях бизнеса, как настройка продавцами компьютеров Digital Equipment Corporation (DEC) VAX и разработка заявок на ипотечные кредиты.
SMH.PAL — это экспертная система для оценки учащихся с множественными нарушениями. [77]
GARVAN-ES1 была медицинской экспертной системой, разработанной в Институте медицинских исследований Гарвана , которая обеспечивала автоматизированные клинические диагностические комментарии к эндокринным отчетам из патологической лаборатории. Это была одна из первых медицинских экспертных систем, которая вошла в рутинное клиническое использование на международном уровне [73] и первая экспертная система, которая использовалась для ежедневной диагностики в Австралии. [83] Система была написана на языке "C" и работала на PDP-11 с 64К памяти. Она имела 661 правило, которые были скомпилированы; не интерпретированы.
Mistral [69] — экспертная система для контроля безопасности плотин, разработанная в 1990-х годах компанией Ismes (Италия). Она получает данные от автоматической системы мониторинга и выполняет диагностику состояния плотины. Ее первый экземпляр, установленный в 1992 году на плотине Ридраколи (Италия), до сих пор работает 24/7/365. Она была установлена на нескольких плотинах в Италии и за рубежом (например, плотина Итайпу в Бразилии), а также на оползневых участках под названием Eydenet, [70] и на памятниках под названием Kaleidos. [71] Mistral — зарегистрированная торговая марка CESI .