Рассмотрим практический пример. Мы хотим знать, смертен ли Сократ. Нам известны следующие исходные аксиомы:
А: Сократ
В: болельщик «Олимпиакоса
С: грек
D: человек
Е: смертен
А —> С
С —> D
A —> D
С —> Б
D —> E
Определим, истинно или ложно А —> Е, с помощью «грубой силы», то есть путем перебора всех возможных сочетаний. Имеем:
А —> С —> D —> Е
A —> С —> В
A —> D —> E
Мы выполнили семь логических операций, взяв за основу всего пять аксиом и одно правило вывода — гипотетический силлогизм. Легко догадаться, что в сценариях, содержащих больше аксиом и правил вывода, число возможных сочетаний может оказаться столь велико, что на получение доказательств уйдут годы. Чтобы решить эту проблему так, как это сделали Саймон и Ньюэлл, используем эвристическое рассуждение (или эвристику). В нашем примере эвристика подскажет: если мы хотим доказать, что некий человек смертен, нет необходимости заводить разговор о футболе (А —> С —> В).
И символьные, и эвристические системы широко используются для решения практических задач, а не только для автоматического доказательства теорем.
Приведем еще один пример использования эвристик. На каждом ходу в шахматной партии существует в среднем 37 возможных вариантов. Следовательно, если компьютерная программа будет анализировать партию на восемь ходов вперед, на каждом ходу ей придется рассмотреть 378 возможных сценариев, то есть 3512479453921 ходов — более 3,5 млрд вариантов. Если компьютер тратит на анализ каждого варианта одну микросекунду, то при анализе партии всего на восемь ходов вперед (достаточно простая задача для профессионального шахматиста) мощный компьютер будет думать над каждым ходом больше двух с половиной лет!
Для ускорения процесса нужны какие-то улучшения, которыми и будут эвристики. Эвристики — это правила прогнозирования, позволяющие исключить из рассмотрения ходы, которые ведут к очень невыгодной позиции и поэтому нецелесообразны. Уже благодаря тому, что эвристики позволяют исключить из рассмотрения несколько абсурдных ходов, число анализируемых вариантов существенно сокращается. Таким образом, эвристики — это средства прогнозирования, основанные на интуиции программиста, которые играют столь важную роль в большинстве интеллектуальных систем, что в значительной степени определяют их качество.
* * *
МАТЕМАТИЧЕСКАЯ ЛОГИКА
Математическая логика — раздел математики, занимающийся изучением схем и принципов рассуждений. Это дисциплина, в которой на основе различных правил и методов определяется корректность аргумента. Логика широко используется в философии, математике и информатике как средство проверки корректности имеющихся утверждений и вывода новых. Математическая логика была создана на основе аристотелевой логики Джорджем Булем, автором новой алгебры, которую впоследствии назвали булевой, и Огастесом де Морганом, сформулировавшим законы логики с помощью новой, более абстрактной нотации.
В последние 50 лет математическая логика пережила бурный рост, и на ее основе возникла современная логика, которую следует отличать от классической логики, или логики первого порядка. Формально логика первого порядка рассматривает только конечные выражения и правильно построенные формулы. В ней нет места бесконечным множествам и неопределенности.
Сколь бы сложными ни казались выражения, записанные на доске, в них очень редко используются символы, значение которых выходит за рамки логики первого порядка.
* * *
В последние годы непрерывно развиваются автоматические рассуждения, и теперь интеллектуальные системы способны рассуждать в условиях недостатка информации (неполноты), при наличии противоречивых исходных утверждений (в условиях неопределенности) или в случаях, когда при вводе новых знаний в систему объем совокупных знаний о среде необязательно возрастает (в условиях немонотонности).
Крайне мощным инструментом для работы в этих областях является нечеткая логика — разновидность математической логики, в которой высказывания необязательно абсолютно истинны или абсолютно ложны. Если в классической математической логике о любом высказывании всегда можно сказать, истинно оно или ложно (к примеру, ложным будет высказывание «некий человек не смертен», а истинным — «все люди смертны»), то в нечеткой логике рассматриваются промежуточные состояния. Так, если раньше говорили, что Крез не беден, это автоматически означало, что он богат, а если говорили, что Диоген не богат, это означало, что он беден (в этом примере классическая логика явно дискриминирует представителей среднего класса!). Применив нечеткую логику, мы можем сказать, что Аристотель богат со степенью, например, 0,6.
* * *
ДЖОРДЖ БУЛЬ (1815–1864) И ЕГО ЛОГИКА
Если Алана Тьюринга называют одним из отцов современной информатики, то Джорджа Буля можно назвать ее дедом. Этот британский философ и математик создал булеву алгебру — основу современной компьютерной арифметики, которая, в свою очередь, является фундаментом всей цифровой электроники.
Буль разработал систему правил, которые посредством математических методов позволяют выражать и упрощать логические задачи, в которых допускается только два состояния — «истина» и «ложь». Три основные математические операции булевой алгебры — это отрицание, объединение («или») и пересечение («и»). Отрицание, обозначаемое символом заключается в смене значения переменной на противоположное. К примеру, если А = «Аристотель — человек», то ¬А = «Аристотель — не человек». Объединение, обозначаемое символом v — это бинарная операция, то есть операция, в которой для получения результата требуются два аргумента. Результатом объединения будет истина, если один из двух аргументов истинный.
К примеру: «Верно ли, что сейчас вы либо читаете, либо ведете машину?». Ответом на этот вопрос будет «Да, верно», поскольку сейчас вы читаете эту книгу. Но если бы вы вели машину и не читали книгу, то ответ также был бы утвердительным. Он был бы утвердительным и в том случае, если бы вы, пренебрегая всеми соображениями безопасности, вели машину и читали эту книгу одновременно.
Третья операция — пересечение, обозначаемая символом , также является бинарной. Если мы переформулируем предыдущий вопрос и скажем «Верно ли, что сейчас вы читаете и ведете машину?», то ответом будет «Да, верно» только в том случае, если вы будете читать за рулем.
На основе трех указанных операций можно определить другие, более сложные, например исключающее «или» (), результат которой в нашем случае будет истинным только тогда, когда мы либо читаем книгу, либо ведем машину, но не выполняем оба эти действия одновременно. Операция не принадлежит к основным операциям булевой алгебры, так как ее можно выразить через три основные операции А В = (А ¬ В) v (¬ А В).
В цифровой электронике «истина» и «ложь» обозначаются единицей и нулем. Этим значениям соответствует наличие электрического тока в цепи (1) либо его отсутствие (0). Логические операции выполняются с помощью сочетаний транзисторов. Именно благодаря применению транзисторов в интегральных схемах в последние 40 лет информатика развивается столь быстрыми темпами.
Микропроцессор вашего домашнего компьютера, который можно назвать его мозгом, содержит сотни миллионов транзисторов, расположенных на площади всего лишь в несколько квадратных сантиметров!
Обработка естественного языка
Понимание человеческого языка и использование его при коммуникации — одна из важнейших нерешенных задач этой области знаний. Если искусственная система сможет понимать как языки программирования, так и человеческий язык, это поможет сделать машины более «человечными». Обработка естественного языка означает не только преобразование звуков в фонемы и письменные знаки, но и понимание смысла сообщаемых понятий (как в письменной, так и в устной форме) и выполнение с ними каких-либо действий.
Первые важные открытия в сфере обработки естественного языка совершил инженер Джозеф Вейценбаум (1923–2008), который в 1964–1966 годах разработал программу «Элиза». Пользователи могли задавать вопросы этой компьютерной программе, моделировавшей работу психотерапевта, а «Элиза», казалось, понимала их смысл, так как выдавала более или менее осмысленные ответы. Ниже приведена запись реального разговора между автором этой книги и «Элизой»:
Игнаси Белда: Мне нужен отпуск.
Элиза: Что означает для тебя отпуск?