За последние десятилетия попытки создать «разумную» машину постепенно вылились во множество самостоятельных направлений: распознавание образов, машинный перевод, восприятие устной речи, многофакторная оптимизация, принятие решений в условиях недостаточности информации, поиск пути к цели (в частности, поиск логических доказательств) и, конечно, задача задач — создание самообучающихся систем, способных справляться с проблемами, к которым их не готовили. У всех этих задач есть нечто общее, что их объединяет, — невозможность сформулировать алгоритм (четкую пошаговую инструкцию) для их решения. Компьютер с искусственным интеллектом справляется с задачами, когда сам программист может не знать способа решения. Но расплачиваться за интеллект приходится тем, что машина утрачивает свойственную ей механическую безошибочность. Подобно человеку, который полагается на привычки и интуицию, интеллектуальная программа находит нужное решение быстро, но не гарантированно. Именно за уменьшение вероятности ошибок при сохранении скорости принятия решений идет основная борьба в исследованиях по искусственному интеллекту (ИИ).
Пролог
Первые работы в области ИИ были связаны с решением формальных задач — игрой в шахматы и доказательством математических теорем. Это ли не квинтэссенция интеллекта, как его понимает большинство людей? Специалисты, однако, надеялись, что обучить машину справляться с такими строго формализованными задачами будет проще, чем с теми, где и человеку-то не вполне ясно отличие правильного решения от ошибочного.
В начале 1970-х годов на пике компьютерной моды было создание языков программирования. Они настолько облегчали труд программистов, что, казалось, любая проблема разрешится едва ли не сама собой, стоит только придумать подходящий язык. Обычные языки программирования называют императивными: программист пишет компьютеру предельно детализированную инструкцию, не подлежащий обсуждению приказ (императив). Никакого интеллекта от машины-исполнителя не требуется — вспомните советских «Отроков во Вселенной», которые детской загадкой про «А и Б» почем зря жгли мозги инопланетных роботов-исполнителей. А вот интеллектуальным «вершителям» из того же фильма загадки были нипочем — у них была хоть и извращенная, а все-таки свобода мысли.
Чтобы оставить компьютеру интеллектуальную свободу, были разработаны языки принципиально иного типа — декларативные. Самый известный из них назывался Пролог (от «программирование логическое»), само это название говорит о том, какие большие возлагались на него надежды. Вместо инструкций программист записывает на Прологе формализованные знания о предметной области и формулирует условия задачи, а компьютер пытается найти ее решение, опираясь на описания (декларации) и правила логики. Например, в качестве предметного мира можно задать набор геометрических аксиом, условием задачи взять теорему Пифагора, а компьютер построит ее доказательство. Калькуляторы отучили школьников считать, а с таким языком и умение рассуждать оказалось бы лишним.
Впрочем, ставка на декларативные языки, в частности на Пролог, была ошибкой. За оберткой Пролога все равно скрывается обычный компьютер, выполняющий команду за командой. А то, что снаружи выглядит как интеллектуальный поиск доказательства, внутри оказывается перебором всех возможных вариантов рассуждений, пока один из них не окажется нужным доказательством. С несложной теоремой компьютер справляется на удивление быстро. Но стоит немного усложнить задачу, и вот уже никакой, даже самой фантастической, производительности не хватит для полного перебора вариантов.
В 1997 году компьютер IBM Deep Blue, анализирующий 200 миллионов позиций в секунду, одержал победу во втором матче с чемпионом мира по шахматам Гарри Каспаровым
С такой же проблемой столкнулись и создатели шахматных компьютеров. Допустим, у белых и черных в каждый момент есть 32 различных хода. Чтобы изучить партию на два хода вперед, нужно перебрать миллион позиций — человеку понадобилась бы неделя, если тратить полсекунды на вариант. Компьютер, конечно, справляется с этим гораздо быстрее — вот почему машина легко обыгрывает начинающего игрока, который «видит» не дальше 2—3 ходов. Но при пяти ходах число вариантов превышает квадриллион, а такой перебор не под силу даже современным компьютерам.