|
|
Стратегии ИИ
Елашкина Анна (elashkina@noolab.ru), 12.08.2008
На ИТ-блоге в разделе «Искусственный Интеллект»
Не буду пытаться с первого же захода вскрыть все «глубины глубин» такой темы, как искусственный Интеллект.. По этому поводу можно целую серию статьей закатать, что я, наверное, и делаю. На данный момент уже собираю цитаты. Вот припомнила шедевр из советской энциклопедии «кибернетика – это буржуазная лженаука…» Но начну с того, что в статьи не войдет. Так, заметки вокруг... Какие стратегии обычно выбирают разработчики, когда оказывается, что ИИ все-таки придется делать? Есть личный опыт разработки анализ текстов на естественном языке, есть наблюдения за подобными мне, есть некое обобщение. Хочу изложить то, что получается. Фактически это фрагмент одной моей статейки, в некий научный журнал (свои фрагменты они разрешают публиковать можно без ссылок). На сегодня не создано ни одной системы (ни практически, ни теоретически), которая настолько бы приблизилась к человеческому мышлению, что была бы общепризнанна интеллектуальной системой. Возьмем этот тезис за базовый, иначе мы увязнем до самые уши в обсуждении того, что мы будем вообще считать интеллектом. А мне хотелось бы об этом поговорить отдельно. Только пара слов. Просто самоцитация - из моих баталий на форумах. «Есть способы имитировать ИИ, например, сделать вид, что всплывающая подсказка в диалоге, старательно заложенная прогарммером на все случаи, которые он сам сумел вообразить – это и есть ИИ. Давайте не будем….ээээ…. «гонять дурочку»! Все-таки самостоятельно выбирать параметры описания ранее неизвестных ей объектов пока не умеет. Классифицировать качественно новую информацию без усилий оператора ни одна программа не станет. И остановимся пока на этом. Разговор серьезный, и делать вид, что какой-нибудь «тетрис» тоже в некотором смысле ИИ – это разговоры в пользу бедных.» Итак, на мой взгляд, неудачи на пути создания ИИ приводят к нескольким стратегиям, наиболее распространенным в среде разработчиков. Кратко опишу их. - «Локализация задачи». Резко сужается область применимости алгоритмов, идет концентрация на частной предметной области, внутри которой сохраняется постановка задачи на придание системе функций интеллектуальности. Класс решаемых задач, вообще говоря, не важен. Это может быть, например, распознавание однотипных объектов на определенных снимках из космоса, или контекстный поиск по текстам близкого содержания. Важно, что происходит локализация применимости теоретических моделей и алгоритмов, а граничные условия, параметры и другие сведения о реальной ситуации задает эксперт. Внутри четко очерченной области удается сделать шаги к довольно сильным функциям, напоминающим интеллект, которые машина реализует в той или иной степени самостоятельно.
- «Мощные алгоритмы». Здесь характерно скептическое отношение к возможности понимания механизмов функционирования интеллекта вообще, вплоть до вывода о том, что любая постановка задачи на создание каких-либо моделей мышления бессмысленна. Предлагается сосредоточится не на интеллектуальных, а на очень мощных алгоритмах, которые будут дополнять работу реально существующего человеческого интеллекта. Приверженцы этой линии часто говорят о сложностях, касающихся использования, обслуживания уже существующего программного обеспечения (ПО) и оборудования («железа»). Пока не решатся эти актуальные вопросы, об ИИ думать не надо. Все ресурсы нужно пустить на обслуживание того, что уже обеспечивает деятельность человека в реальных процессах, без качественного изменения информационных технологий.
- «Хитрые алгоритмы». Надо отметить, что не прекращаются надежды на создание полноценного ИИ путем наращивания сложности и оригинальности алгоритмов, но без изменения при этом научной парадигмы, в которой появился сам тип используемых на сегодня методов. Смена базовых представлений об ИИ признается не целесообразной. Сами эти представления построены в рамках привычных матметодов, в естественно-научной парадигме. Предполагается, что задачу в целом можно решить, сделав достаточно сложную и оригинальную комбинацию из уже существующих разнообразных средств, в том числе из уже готовых программных блоков, решающих частные задачи.
- «Физиологические алгоритмы». Стратегия направлена на выявление механизмов мышления напрямую в физиологии живых организмов. Иногда предлагается обнаруженные феномены работы живой нервной системы копировать вплоть до аналогий с течением химических реакций. Характерно, что при этом вопрос о логике интеллекта либо вообще не ставится, либо всю логику, присущую интеллектуальным системам, стараются вывести из физиологической эмпирики. В некотором смысле предполагается, что имеет место параллелизм: то, как видимым образом устроена работа нервной системы, и есть то, как устроен сам интеллект.
В реальной деятельности обычно имеет место сочетание разных стратегий. Например, направление нейронных сетей одновременно придерживается «физиологической» стратегии и достигает эффективности за счет локализации задач. В стратегии локальные задачи и хитрые алгоритмы попадают многие лингвистические модели для задач по обработке текста, основанные как на традиционном лингвистическом анализе, так и на некоторых модных представлениях о том, что и мир, и мышление можно понимать, исходя из структуры языка. Здесь делается много интересного, например, в попытках перевода линейного текста в структуры, схемы и т.п. (Из собственного опыта) Очень интересна своим скепсисом вторая стратегия, ориентированная на мощные алгоритмы. Сомнения в правомерности самой постановки задачи на построение ИИ – это заявка на новый этап теоретического осмысления того, в чем же состоит специфика мышления человека в ситуации, когда старые теории не эффективны. Однако часто среди разработчиков и теоретиков ИИ этот шаг к сомнению оказывается последним. Вместо рационального исследования происходит переход в область поэзии (чаще, плохой) и интуиции (без комментариев). Аргументируется это тем, что всякое мышление вообще невозможно ни описать, ни осмыслить, что оно совершенно иррационально. Отвергается возможность точного мышления о самом мышлении. Для более полной картины сегодняшней ситуации отмечу, что описанные стратегии практически не видны вне среды самих разработчиков. Простой пользователь далек от размышлений о том, как устроены ИТ, каковы тенденции их развития. Пользователя интересуют функции, а не технологии. Часто результаты работы существующих программ настолько впечатляющи для внешнего наблюдателя, что не заметны принципиальные границы их применимости. Это, конечно, не случайно. Арсенал формализованных средств из математики, из естественных наук, накопленный за пару тысяч лет, в течение всего лишь нескольких десятилетий был фактически весь перенесен в информационные технологии, что дало интенсивный рост функциональности программ. В результате пользователю кажется, что существующие программы уже интеллектуальны. Для пользователя кажется естественным предложить добавить в программу дополнительную «кнопку», например, чтобы при поиске учитывалась не только морфология слова, падежи, но, и еще, чтобы автоматически распознавались как близкие по смыслу предложения из текстов на естественном языке. Например, чтобы сопоставлялись «человек сидит в лесу» и «мужчина, который расположился под березами» (из реального разговора с хозяином портала). Или, чтобы машина сама добавила дополнительный параметр описания столов, кроме уже занесенных программистом парметров «количество ножек», «размер», самостоятельно обнаружила по мере поступления к ней информации важность, например «цвета» (из разговора с владельцем приличной складской программы)... Но разработчик-то понимает, что здесь тупик! При разной форме текстов выявить за ними единое содержание или реализовать автоматическое добавление нового аспекта классификации, что соответствует автоматическому расширению языка описания объектов - это с одной стороны, понятная и востребованная пользовательская функция, а с другой - бесконечно далекая от сегодняшних реальных технологических возможностей. Пользователю почти не виден зазор между «новой кнопкой» и уже существующими функциями. К сожалению, многие теоретики также не видят здесь проблемы и предлагают, например, программисту просто создать огромный синонимический словарь для разных случаев, что разработчикам, имеющим подобный опыт, представляется ошибочным путем, хотя бы в силу катастрофического роста объема закладываемых вручную характеристик. Такие теоретики перекладывают свою работу по исследованию интеллекта на плечи программиста. Бедный программист видит себя на краю зияющей пропасти, которая разделила; существующие технологии и ту, что должна обеспечить недостающую «кнопку». Преодоление потребует огромного пути по времени, по деньгам, по освоению дополнительных знаний. Наиболее неприятным для разработчиков моментом оказывается понимание того, что системы, интеллектуальные по своему внутреннему устройству, на первых порах будут явно проигрывать в пользовательских функциях, например, мощным алгоритмам. Существенные для пользователя преимущества, внешняя эффектность, могут появиться нескоро, что не добавляет программистам оптимизма. Поэтому большинство разработчиков, находясь обычно в жесткой ситуации выполнения заказа, приходят к тем стратегиям, которые мы охарактеризовали выше. Наверное, чего-то я не учитываю. Но вот чего?
Елашкина Анна (elashkina@noolab.ru), 12.08.2008
руководитель отдела исследований компании NooLab (Новосибирск)
На ИТ-блоге в разделе «Искусственный Интеллект» |