Счетчики








2.2. Недостатки современных методик проектирования "интеллектуальных" систем

Интегральная теория создания ИИ

Исторически первыми были попытки создать программу с искусственным интеллектом при помощи различных специальных языков программирования. Это были функциональные языки (например Лисп), языки логического программирования (Пролог) и некоторые другие. Далекие потомки этих языков, сильно изменившись, и теперь не оставляют надежд приблизиться к созданию искусственного интеллекта. Но поскольку ничего нового в классическое определение алгоритма эти средства разработки программ не добавляют, создать искусственный интеллект с их помощью невозможно. Так же как и в случае обыкновенных языков программист придумывает принцип решения задачи самостоятельно "от и до".

Рассматривая классическое определение алгоритма, нельзя не упомянуть о появившихся в последнее время различных его "расширениях", таких как виртуальные нейронные сети, генетические и "мягкие" алгоритмы и так далее и тому подобное. В основе всех этих устройств лежит следующая идея.

Программа A меняет данные в некоторой области B. Программа C интерпретирует содержимое области B не как данные, а как набор исполняемых кодов (или как их чаще называют - правил) - возникает программа D. Имеется также обратная связь между результатами выполнения программы D и программой A, в результате чего появляется возможность направленного изменения области B.

В реальных системах "искусственного интеллекта" все, конечно же, происходит намного сложнее: код программы A также может быть сгенерирован другой программой. Та, в свою очередь, сгенерирована следующей и так далее (в этом случае происходит построение так называемых метаправил - правил управления правилами). Можно сгенерировать сразу несколько областей B и затем комбинировать их содержимое, отбирая и опять скрещивая наиболее перспективные комбинации самым затейливым образом (на этом, в частности, основана работа генетических алгоритмов). Обратная связь также устроена далеко не тривиально. Одним словом на сегодня придумано уже столько различных путей использования указанного принципа работы системы A-B-C-D, что всего и не перечислить. Однако...

Однако система A-B-C-D не имеет никаких принципиальных преимуществ перед обычными алгоритмами! Она имеет те же самые ограничения, что и "простые" алгоритмы. Например, функционирование системы A-B-C-D в рамках конечного устройства (компьютера) не позволяет упразднить пункт 2.1.1 - о том, что для любого механизма можно построить программный эмулятор. И даже наоборот, присутствие дополнительных программ (в простейшем случае - A и обратной связи) способствует только уменьшению свободного места для размещения C и D. За рамки определения алгоритма ни одна программа системы A-B-C-D также не выходит. Программа A рассматривает программу D как набор данных - область B. О каком-то "осмысленном понимании" логики работы D программой A говорить нельзя. Просто работает принцип обратной связи "горячо-холодно", только и всего.

Пункт 2.1.2 - ограничение множества исходных данных и результатов по типу элементов. Существование процесса генерирования правил еще не говорит о том, что эти правила могут иметь произвольную структуру. Даже в лучшем случае они могут быть только произвольной комбинацией неких "атомарных" правил, уже неделимых далее. В худшем - структура комбинации должна придерживаться заранее оговоренного шаблона (например структура EXE-файла как раз и есть пример использования такого рода шаблонов). Иначе программа C попросту не "поймет" информации из B, следовательно не появится и программа D. Таким образом применение системы A-B-C-D не отменяет ограничение по типу элементов. Более того, ситуация в большинстве случаев лишь усугубляется, поскольку в реальных системах любое правило, в том числе и "атомарное", на самом деле состоит из элементарных инструкций для микропроцессора. Тем самым делается дополнительное сужение области возможных команд и их комбинаций.

Ну и наконец вопрос генерации программы программой - пункт 2.1.3. Очевидно, что ни о никакой произвольности в генерации программы D программой A не может идти и речи. Система A-B-C-D никогда не сможет выйти за пределы круга, очерчиваемого "атомарными" правилами и их комбинациями, доступными для корректной интерпретации программе C. И если решение задачи не входит в этот круг, то можно довольствоваться только наиболее близким приближением. Так как создатель системы A-B-C-D не знает заранее как решить задачу, то общем случае он не сможет создать такие "атомарные" правила, метаправила и шаблоны их структур, которые позволили бы гарантированно достичь цели. Если же решение известно создателю A-B-C-D изначально, то "интеллектуальное" предназначение системы теряет силу, поскольку "смысл искусственного интеллекта как раз и заключен в том, чтобы самостоятельно находить и обрабатывать то, что неизвестно его создателям".

Подводя итог оценки "интеллектуальных" систем на алгоритмической основе было бы не совсем правильно говорить об их полной бесперспективности. Конечно, искусственный интеллект на таких принципах построить нельзя, но применение этих устройств в тех областях, где требуется выбирать лучшее решение из массы возможных работоспособных, вполне оправдано. Но настоящий искусственный интеллект остается для них все еще недосягаемым. Вообще же эти системы следует рассматривать в качестве переходного этапа от алгоритмов к искусственному интеллекту.

newpoisk.narod.ru, 21 марта 2005 года