На заре вычислительной техники многие ожидали, что в недалеком будущем компьютеры обретут способность к разумному поведению, сравнимому с человеческим. Эти прогнозы оказались слишком оптимистичными — прошло уже полвека, а искусственный интеллект все еще очень далек от того, что мы называем разумом.
За последние десятилетия попытки создать «разумную» машину постепенно вылились во множество самостоятельных направлений: распознавание образов, машинный перевод, восприятие устной речи, многофакторная оптимизация, принятие решений в условиях недостаточности информации, поиск пути к цели (в частности, поиск логических доказательств) и, конечно, задача задач — создание самообучающихся систем, способных справляться с проблемами, к которым их не готовили. У всех этих задач есть нечто общее, что их объединяет, — невозможность сформулировать алгоритм (четкую пошаговую инструкцию) для их решения. Компьютер с искусственным интеллектом справляется с задачами, когда сам программист может не знать способа решения. Но расплачиваться за интеллект приходится тем, что машина утрачивает свойственную ей механическую безошибочность. Подобно человеку, который полагается на привычки и интуицию, интеллектуальная программа находит нужное решение быстро, но не гарантированно. Именно за уменьшение вероятности ошибок при сохранении скорости принятия решений идет основная борьба в исследованиях по искусственному интеллекту (ИИ).
Пролог
Первые работы в области ИИ были связаны с решением формальных задач — игрой в шахматы и доказательством математических теорем. Это ли не квинтэссенция интеллекта, как его понимает большинство людей? Специалисты, однако, надеялись, что обучить машину справляться с такими строго формализованными задачами будет проще, чем с теми, где и человеку-то не вполне ясно отличие правильного решения от ошибочного.
В начале 1970-х годов на пике компьютерной моды было создание языков программирования. Они настолько облегчали труд программистов, что, казалось, любая проблема разрешится едва ли не сама собой, стоит только придумать подходящий язык. Обычные языки программирования называют императивными: программист пишет компьютеру предельно детализированную инструкцию, не подлежащий обсуждению приказ (императив). Никакого интеллекта от машины-исполнителя не требуется — вспомните советских «Отроков во Вселенной», которые детской загадкой про «А и Б» почем зря жгли мозги инопланетных роботов-исполнителей. А вот интеллектуальным «вершителям» из того же фильма загадки были нипочем — у них была хоть и извращенная, а все-таки свобода мысли.
Чтобы оставить компьютеру интеллектуальную свободу, были разработаны языки принципиально иного типа — декларативные. Самый известный из них назывался Пролог (от «программирование логическое»), само это название говорит о том, какие большие возлагались на него надежды. Вместо инструкций программист записывает на Прологе формализованные знания о предметной области и формулирует условия задачи, а компьютер пытается найти ее решение, опираясь на описания (декларации) и правила логики. Например, в качестве предметного мира можно задать набор геометрических аксиом, условием задачи взять теорему Пифагора, а компьютер построит ее доказательство. Калькуляторы отучили школьников считать, а с таким языком и умение рассуждать оказалось бы лишним.
Впрочем, ставка на декларативные языки, в частности на Пролог, была ошибкой. За оберткой Пролога все равно скрывается обычный компьютер, выполняющий команду за командой. А то, что снаружи выглядит как интеллектуальный поиск доказательства, внутри оказывается перебором всех возможных вариантов рассуждений, пока один из них не окажется нужным доказательством. С несложной теоремой компьютер справляется на удивление быстро. Но стоит немного усложнить задачу, и вот уже никакой, даже самой фантастической, производительности не хватит для полного перебора вариантов.
В 1997 году компьютер IBM Deep Blue, анализирующий 200 миллионов позиций в секунду, одержал победу во втором матче с чемпионом мира по шахматам Гарри Каспаровым
С такой же проблемой столкнулись и создатели шахматных компьютеров. Допустим, у белых и черных в каждый момент есть 32 различных хода. Чтобы изучить партию на два хода вперед, нужно перебрать миллион позиций — человеку понадобилась бы неделя, если тратить полсекунды на вариант. Компьютер, конечно, справляется с этим гораздо быстрее — вот почему машина легко обыгрывает начинающего игрока, который «видит» не дальше 2—3 ходов. Но при пяти ходах число вариантов превышает квадриллион, а такой перебор не под силу даже современным компьютерам.
Гроссмейстеры, между тем, заглядывают порой куда дальше. В отличие от компьютера они сразу отбрасывают бесперспективные пути, отсекают целые ветви рассуждений, объясняя это, например, потерей темпа или позиционного преимущества. Что-то подобное скажет вам и математик, если спросить, почему он выбрал именно такой первый шаг в доказательстве. Только концентрация на небольшом числе интересных вариантов позволяет заглянуть вперед. Правда, при неудачном подходе вы рискуете отсечь как раз ту ветвь, которая содержала самый перспективный ход, или, наоборот, не заметить скрытую угрозу. Но «борьба с экспонентой», с катастрофическим ростом числа вариантов заставляет нас выйти за рамки надежных формальных методов и рискнуть ставить оценки без полной уверенности в них.
Оценочная функция
Если в целом сформулировать, как работает любая система ИИ, то можно сказать, что в ее основе лежит сложная оценочная функция. Какой ход лучше, тратить ли время на изучение его последствий? На какую букву больше похоже вот это пятно на бумаге? Покупать или продавать акции? Идти в атаку или укреплять оборону? Такой взгляд демистифицирует понятие ИИ. Так что, если вам скажут, что ваша стиральная машина оснащена интеллектуальной системой гашения вибраций, вполне возможно, что так оно и есть.
В простых случаях оценочную функцию тем или иным способом задает разработчик системы. В более сложных она вырабатывается в ходе обучения на примерах с заранее известным правильным ответом. Тривиальную систему ИИ каждый может создать сам с помощью электронных таблиц вроде Excel. Допустим, вы хотите купить ноутбук. Загрузили из Интернета базу данных с тысячами предложений, да еще каждый день поступают новые. Читать список подряд бесполезно — уже после сотни строк начинаешь путаться. Да и слишком много важных параметров приходится держать в голове. Но в этом нет необходимости: обозначьте каждую функцию числовым значением (например: есть Wi-Fi — 1, нет — 0). Задайте каждому параметру определенный вес и напишите оценочную функцию по схеме: оценка = параметр1*вес1 + параметр2*вес2 +... и так далее. Самым важным придайте большой вес, остальным — поменьше, а недостаткам (например, цене) — отрицательный. Поколдуйте вечерок с этими весами, пока не почувствуете, что система не допускает явных ошибок, и дальше она будет автоматически оценивать все предложения. Последнее слово, конечно, за вами, но вот просматривать весь список уже не нужно — достаточно изучить лишь лидеров доморощенного хитпарада. Причем веса можно в любой момент пересмотреть, если ваши предпочтения изменились.
Получилась настоящая система ИИ для поддержки принятия решений, пусть и очень примитивная. В процессе настройки вы заложили в нее свой опыт. А если при этом вы еще посоветовались со специалистами и учли их мнение, то можно уже говорить об экспертной системе. Сходным образом, но, конечно, на более обширных и надежных данных, работают медико-диагностические экспертные системы: по формализованному анамнезу они выдают список диагнозов с условной оценкой вероятности каждого. Программы, фильтрующие спамерские письма, оценивают каждое послание по характерным для спама словам, адресам и другим признакам, каждому из которых приписан свой вес. Спамеры, наоборот, стараются обмануть ИИ фильтрующих программ: пишут с ошибками, заменяют цифры буквами, добавляют в письма посторонние тексты, чтобы фильтр не распознал на их фоне рекламу. Системы ИИ непрерывно совершенствуются с обеих сторон.
Тест Тьюринга
В 1950 году один из основоположников кибернетики, Алан Тьюринг, предложил тест, который должна пройти машина, чтобы ее можно было назвать мыслящей. Пусть эксперт обменивается тестовыми сообщениями с двумя собеседниками, один из которых человек, а другой — компьютер. Задача эксперта — за время разговора отличить машину от человека. Тьюринг ожидал, что к 2000 году компьютеры с памятью около 100 Мбайт смогут в 30% случаев обманывать эксперта в течение 5 минут. Машины уже стали много мощнее, но пока ни один робот не прошел тест Тьюринга. Впрочем, уже есть программы, которым под силу некоторое время выдавать себя за человека, если собеседник не ожидает, что общается с роботом. Такие программы находят применение в компьютерных играх, чатах и даже в рекламе. Если вы владеете английским, попробуйте пообщаться с ALICE ( www.alicebot.org ), трехкратным победителем в соревнованиях разговаривающих программ. К сожалению, на русском языке ничего близкого по уровню пока нет.
Роботы-автомобили с искусственным интеллектом перед гонкой DARPA по пересеченной местности в 2005 году. Синий — победитель Stanley — от Стэнфордского университета, красные — H1ghlander и Sandstorm — от Университета Карнеги-Меллона
Ошибки — путь развития
Часть спама («мусорной» электронной почты) просачивается через любую защиту, но гораздо хуже, что иногда в отвалы попадают важные деловые письма. Ошибки — неотъемлемый атрибут интеллекта, в том числе искусственного, поскольку именно на ошибках он формируется. Простейший случай обучения — та самая подстройка весов, которой мы занимались при подборе ноутбука. Это — обучение вручную. Спам-фильтры более самостоятельны в учебе: вы лишь указываете им на ошибки, а они сами уточняют веса признаков спама.
Еще автономнее интеллектуальные роботы, играющие на бирже. Они сами оценивают эффективность своих действий по достигнутым результатам и корректируют поведение. Лучшие современные системы такого типа уже не уступают трейдеру средней квалификации. Они, конечно, тоже ошибаются, но по характеру ошибки робота отличаются от ошибок человека, хотя бы потому, что первый никогда не пойдет на поводу у эмоций. А бывает и так, что сами разработчики не понимают, почему робот принял определенное решение, и предполагают ошибку, а спустя некоторое время глядишь — он оказывается прав. Поневоле возникает ощущение, что мы действительно имеем дело с разумом, хотя и сильно отличающимся от человеческого.
Быть может, эту разницу можно нивелировать, если попробовать воспроизвести принципы организации человеческого мозга? Обычно в науке, если удается смоделировать явление, то его основные принципы можно понять, исследуя модель. Эта идея привела к построению и изучению нейронных сетей — систем ИИ, устроенных по аналогии с мозгом человека. Нейроны (в модели это несложные однотипные программные объекты) соединяются между собой в сеть квазислучайным образом. Каждый нейрон определенным образом реагирует на сигналы, поступающие на его входы. Одни сигналы возбуждают нейрон, другие тормозят возбуждение. В результате на его выходе формируется сигнал, передаваемый другим нейронам. На входы некоторых нейронов подается внешняя информация, подлежащая обработке, а на выходах некоторых других формируется результат. Поскольку сеть соединена случайным образом, ее ответы поначалу тоже будут случайны, то есть бессмысленны. Тут и начинается процедура обучения.
Всякий раз, когда сеть вырабатывает ошибочный ответ, самые главные нейроны, которые формируют окончательное решение на выходе сети, получают наказание — штраф. Они разбираются, какой из нейроновподчиненных способствовал принятию неправильного решения, и снижают такому уровень доверия, а тем, кто «голосовал» против, рейтинг повышают. Получившие по заслугам нейроны второго уровня аналогичным образом наводят порядок в своем хозяйстве, и так до тех пор, пока не дойдет до самых первых нейронов (предполагается, что циклов в нейронной сети нет). После этого процедуру обучения повторяют на новом примере.
Через некоторое время сеть (если она обладает достаточной мощностью) научается правильно реагировать на предъявляемые сигналы. Подобные сети используются, например, в системах распознавания текста. Отсканированная страница разбивается на строки, строки — на символы, а дальше по каждому символу принимается решение — какой букве он соответствует, иначе — какой ее порядковый номер в алфавите. Одна и та же буква каждый раз выглядит на бумаге немного по-другому — из-за различий в шрифте, соседства других букв, неоднородности бумаги и множества других причин. Обученная нейронная сеть начинает узнавать в несколько различающихся, но все же похожих картинках одну букву и отличать ее от других.
Но как ей это удается? Возьмем отдельный нейрон из середины сети и попробуем понять: почему он реагирует на сигналы соседей так, а не иначе? Увы, в сложной сети это совершенно безнадежное дело. Ее «опыт» не локализован в отдельном нейроне, им обладает только сеть в целом. Можно перепрограммировать нейрон и посмотреть, какие ошибки станет делать сеть. Так изучают и человеческий мозг — смотрят, какие изменения вызывает стимуляция тех или иных центров. Но, даже поняв функции отдельных нейронов, обычно нельзя объяснить, почему эти функции выполняются именно при такой настройке.
До сих пор науке обычно удавалось находить простые закономерности, объясняющие сложные явления, подобно тому, как хаотическое поведение молекул газа удалось описать емкими формулами статистической физики. Но похоже, что происхождение и работу интеллекта, даже искусственного, нельзя объяснить, не воспроизведя этот интеллект «со всеми потрохами».
Генетические алгоритмы
Есть еще один способ создания систем ИИ, имитирующий биологическую эволюцию. Задача кодируется на специальном языке, напоминающем генетический код. В код случайным образом вносятся «мутации», и оценивается, насколько хорошо каждая из версий кода («особь») приспособлена для решения задачи. Наименее приспособленные «вымирают», а остальные «скрещиваются», обмениваясь фрагментами кода, порождая новое «поколение» кодов, которое подвергается новому циклу отбора. Так повторяется, пока не исчерпается время, отпущенное на эволюцию. Генетические алгоритмы применяются для задач оптимизации, таких как поиск кратчайшего пути, составления расписаний, выбора игровой стратегии. Отличительная особенность таких задач — существование огромного числа возможных решений, найти которые очень просто, но среди них нужно выбрать как можно лучшее. Применение искусственного интеллекта
Игры и игрушки. ИИ наделяет игровых персонажей способностью к нешаблонному поведению, которое сложным образом связано с действиями играющего. Это делает игру намного интереснее. Распознавание образов и речи. Человек и животные легко узнают окружающие предметы и сигналы, но мы не отдаем себе отчета, как это получается. Для компьютера, который воспринимает только массивы чисел, распознать в них осмысленные образы — сложная задача. Машинный перевод и обработка текстов на естественном языке. ИИ необходим для учета контекста при выборе из множества возможных значений переводимых слов и грамматических конструкций. ИИ используют для быстрой тематической классификации текстов, например, сообщений информагентств, для автоматического реферирования — выделения главных фраз, позволяющих решить, тратить ли время на детальное ознакомление с документом. Выявление закономерностей в массивах данных. Интеллектуальный анализ крупных баз данных (например, продаж в сети супермаркетов или расшифрованного генома) иногда выявляет закономерности, которых никто не предполагал. Эта сфера получила название data mining (добыча данных). Классический пример: обнаружение корреляции продаж памперсов и пива. Жены отправляют мужей за памперсами, а те заодно «утешают» себя покупкой пива. Поставив стеллажи с пивом и памперсами рядом, удалось заметно поднять продажи. Адаптация к поведению пользователя. Программы могут анализировать привычки пользователя и приспосабливаться к нему, заранее готовясь к выполнению наиболее вероятных действий или убирая из поля зрения лишние детали. Многофакторная оптимизация. Частый вопрос: как найти оптимум, когда на результат влияет очень много параметров? ИИ позволяет значительно сузить область поиска, ускоряя принятие решений и повышая их качество. Оценка рисков, прогнозирование. Оперативное построение прогноза с учетом предшествующей истории, например, на бирже; оценка рисков, связанных с разными вариантами поведения. Особый случай: интеллектуальные системы безопасности для автомобилей, реагирующие на опасные дорожные ситуации быстрее водителя. Диагностика. Быстрое выявление заболеваний и неисправностей по совокупности признаков. Последние три сферы применения часто объединяют под названием «поддержка принятия решений».
Исследователь Синтия Бризил «общается» с роботом Кисмет. Последний был создан для изучения возможности мгновенного распознавания мимики и построения реакции в зависимости от настроения «собеседника»
Границы разума
Чем интеллектуальнее становятся системы, тем труднее сказать, как именно они принимают решения. Объяснение получается не проще объясняемого объекта. Выходит, что создать ИИ можно, а вот «заглянуть» в механизм его действия не получается. Разрушается одна из старых иллюзий, будто создать можно лишь то, что полностью понимаешь.
Но это наше бессилие в объяснениях проблемы разума открывает перед нами фантастические возможности. Получается, что нет принципиальных препятствий для создания все более и более умных, функциональных и в то же время дешевых роботов. Если можно создать систему, которую не понимаешь, если для формирования сложного целенаправленного поведения достаточно простых компонент, объединенных обратными связями, и возможности обучаться на ошибках, то возникновение человеческого разума уже не кажется парадоксальным, и резонно предположить, что со временем появятся машины, думающие, как человек. Или не как человек, но точно — думающие.
И здесь возникает вопрос о самосознании искусственных интеллектуальных систем. По каким признакам мы можем судить о его наличии? Философы и психологи так и не смогли прояснить суть этого феномена, составляющего самое ядро личности. Целесообразное поведение можно запрограммировать. Эмоции, способность испытывать любовь и страдания присущи большинству млекопитающих. А некоторые из них — шимпанзе, дельфины, слоны — даже узнают себя в зеркале. Означает ли это, что у них есть самосознание?
Вряд ли оно есть у насекомых или членистоногих. И тем более нет оснований говорить о самосознании современных систем ИИ, которые намного уступают им по сложности организации. Но сложность — это вопрос времени, и пока нельзя сказать, где проходит порог возникновения сознания в интеллектуальной машине. Да и вряд ли этот порог будет сколько-нибудь четким. Просто надо быть готовым к его приближению. Вполне возможно, что первый разум, с которым нам доведется установить контакт, будет вовсе не внеземным, а искусственным. И никто пока не может сказать, в какой момент выключение питания станет актом, сомнительным с этической точки зрения.
Александр Сергеев