Обучение, самоорганизация и эволюция как методы в искусственном интеллекте 1

Обучение, самоорганизация и эволюция как методы в искусственном интеллекте
Лавинообразный рост информации, которую не в состоянии обработать традиционные компьютерные технологии, непрерывно растущие потребности в армиях специалистов информационных технологий, NP-трудные задачи и трудноформализуемые проблемы, нерешенность проблемы ключевого разделения труда в компьютерных технологиях, необходимость постоянно "нянчить" компьютеры и бесконечно создавать терабайты программного обеспечения - все это требует перехода на качественно новый уровень технологий, которые может обеспечить искусственный интеллект. И в частности системы, в основу которых положены принципы обучения, самоорганизации и эволюции при минимальном участии человека как программиста, но привлечении его в качестве учителя и партнера, гармоничного элемента человеко-машинной системы.

Истоки создания искусственного интеллекта

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

Исторически, первый подход, который использовало человечество в искусственных (компьютерных) системах обработки информации, был алгоритмическим - базировался на понятии алгоритма. Алгоритм - предписание, однозначно задающее процесс преобразования исходной информации в виде последовательности элементарных дискретных шагов, приводящих за конечное число их применений к результату [1]. Алгоритм однозначен, если при применении к одним и тем же данным он дает один и тот же результат. Существует несколько формальных определений алгоритма. Математическое - определяет процесс вычисления тех или иных функций, алгоритмическая модель в виде машины Тьюринга и нормальные алгоритмы Маркова [1]. В соответствии с последними двумя определениями языки программирования разделяются на две категории - процедурные, задающие последовательность действий в виде указаний, и декларативные, которые в повествовательной форме описывают систему подстановок или понятий, а исполнитель сам ищет и осуществляет нужные подстановки [2].

Такой подход оказался плодотворным при решении вычислительных задач, в которых компьютер использовался как мощный калькулятор, и в задачах, которые можно было алгоритмизировать. Но как оказалось, далеко не все задачи можно решить алгоритмами, которые бы за приемлемое число шагов давали удовлетворительный результат. Во-первых, это связано с существованием NP-трудных задач, время решения которых экспоненциально возрастает с размерностью задачи (т.н. экспоненциальный взрыв, невозможность решения путем наращения вычислительной мощи), но которые тем не менее очень часто имеют место в реальности. Во-вторых, далеко не все, что человек делает не задумываясь, можно изложить на формальном языке (трудноформализуемые задачи). Нелишне упомянуть теорему Геделя о неполноте, из которой следует, что для достаточно богатых по содержанию математических теорий не существует адекватных формализаций. И дело здесь даже не в том, что нет механизма описания трудноформализуемых задач (нечеткие логики и т.п.), нет механизма их переработки [3]. К тому же существуют алгоритмически неразрешимые задачи, для решения которых принципиально невозможно создать алгоритм, но с которыми человек имеет дело. Классический пример алгоритмически неразрешимой задачи - создать алгоритм, который по описанию проблемы создает алгоритм для решения этой проблемы. По этому вопросу существует теорема Райса: "никакое нетривиальное свойство вычислимых функций не является разрешимым" [1], смысл которой сводится к тому, что для некоторого свойства функции fA, вычисляемой по алгоритму A, нельзя построить общий алгоритм, который по произвольному алгоритму A определял бы, обладает ли вычисляемая им функция этим свойством.

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

Естественно, даже до возникновения такой ситуации, на заре компьютерной техники были попытки создать ИИ на базе компьютеров. Тогда господствовала компьютерная парадигма [3], ключевыми тезисами которой утверждалось, что машина Тьюринга является теоретической моделью мозга, а компьютер - реализацией универсальной машины Тьюринга, и любой информационный процесс может быть воспроизведен на компьютере, при этом достаточно ограничиться моделированием внешних проявлений интеллектуальной деятельности, т.е. важен не процесс, а результат. Такая парадигма была доминирующей долгое время, принесла много интересных результатов, но главной задачи - построения ИИ (в смысле моделирования мышления человека) - так и не достигла. Компьютерная парадигма создания ИИ потерпела крах в связи с неправильным набором ключевых предпосылок [3]. Логичная ей замена - некомпьютерный подход к моделированию интеллектуальных процессов. Человеческий мозг оперирует нерасчлененной информацией, каждая мысль имеет свой контекст, вне которого она бессмысленна, знания хранятся в форме образов (и далеко не все из них можно выразить словами), сами образы характеризуются нечеткостью, размытостью, система образов слабо чувствительна к противоречиям, система хранения знаний человека характеризуется высокой надежностью вследствие распределенного хранения знаний, оперирование с информацией характеризуется небольшой глубиной и высоким параллелизмом. Однако это не значит, что следует слепо копировать строение мозга, необходимо заимствовать именно принципы, присущие информатике мозга (и вообще живым системам), и применять их в нужных местах. И то что Каспаров проиграл Deep Blue 2 - не повод утверждать обратное, ведь скорость распространения сигналов в нервных сетях в миллионы раз медленнее, но тем не менее человек играет наравне с суперкомпьютером, а это показывает, что процесс выбора хода у человека организован в миллионы раз эффективнее.

Рассмотрим ИИ в качестве применения к решению одной из основных проблем компьютерных технологий - ключевому разделению труда. Никто не станет отрицать тот факт, что для того чтобы написать программу, решающую проблему в некоторой области, программисту необходимо быть немного экспертом в этой области - обладать минимальным необходимым набором знаний, без которого он вообще не сможет взяться за написание этой программы. С другой стороны, пользователю необходимо владеть навыками работы на компьютере, и эти навыки отнюдь не сводятся к знанию того, как включить и выключить компьютер. И даже более того - для достижения максимально эффективного пользования программным обеспечением пользователю уже надо осваивать азы программирования (рис. 1). Идеальным в этом случае будет пользователь-программист, что в жизни нереально. Приведенная схема, конечно, упрощена, ведь документацию пишут не программисты, а технические писатели, задачи перед программистами ставят аналитики (постановщики задач), которые и общаются с пользователями, да и документация прилагается вместе с ПО, а не высылается программистами пользователям. Но тем не менее такая схема отражает принципы существующих на сегодняшний день компьютерных технологий. Всякие экспертные системы, интеллектуальные языки энного поколения (вроде пролога), базы знаний не решают проблемы в целом. Как бы хорошо ни была построена база знаний, на каких бы она принципах ни базировалась, проблема остается той же. Даже более того - появляется новая фигура: инженер знаний. Ведь кому-то все равно надо будет систематизировать, формализовать (а ведь далеко не все знания легко формализуемы!) и вводить терабайты накопленной человечеством информации. А системы интеллектуализации ввода информации - это еще один кирпич на верхушку шаткого здания компьютерных технологий, которое может разрушить "случайно залетевший дятел". Во-вторых, не стоит забывать, что переработка графовых и им подобных структур, на которых основаны базы знаний, - NP-трудная (то есть переборная) задача, и вполне может быть, что, введя все известные знания, получим нечто абсолютно неработоспособное (и никакой параллелизм не спасет!). Такие знания хоть и могут обеспечить логический вывод некоторой информации из имеющейся, но они совершенно не в состоянии произвести что-нибудь качественно новое, как это бывает у человека при озарениях, творческих вспышках. Также такие базы знаний лишены исследовательско-экспериментаторских качеств, т.е. не могут самостоятельно приобретать качественно новую информацию о мире. Более привлекательно выглядит схема на рис. 2. Здесь программист (назовем его пока так) будет заниматься созданием и настройкой информационных структур компьютера, абсолютно не беспокоясь о пользовательских предметных областях. Пользователь же в естественной форме будет общаться с компьютером, объяснять ему свои проблемы, если надо - чему-то обучать (компьютер, а не программиста!), а компьютер тем временем еще и сможет сам познавать мир, извлекать из него нужную информацию. Похожий пример - поисковые системы в Интернете. Попытка самоорганизации налицо, но сама по себе, в отрыве от других компонент, и результат при этом не лучший. В куче ссылок, выданных на требуемый запрос, обычно большая часть попросту информационный мусор, который пользователя совсем не интересует. И проблема здесь не в том, какой способ оценки релевантности ссылок использует поисковая система, а в том, что эта система не осмысливает ни индексируемую информацию, ни введенный запрос. И такое осмысление должен делать человек, исследуя кипы выданных ссылок. Конечно, со временем пользователь научится делать это лучше, сразу отсекать бесполезные ссылки, будет помнить самые ценные ссылки. Но насколько было бы лучше, если, введя запрос "основы теории нейронных сетей, желательно попроще", получить именно то, что надо! И в идеале не совокупность разрозненных ссылок, а единую систематизированную информацию.

В свете вышеизложенного становится ясно, что интеллектуальные системы должны как минимум обладать следующими качествами: обучение, самоорганизация и эволюция. И именно всеми тремя вместе. Ведь если хоть одно из них упустить, упущенное потом придется многократно (если не бесконечно) править "руками", опять будут нужны армии специалистов. И даже если не удастся получить приемлемую модель человеческого (или не хуже) мышления, системы, основанные на таких качествах, существенно облегчат существование человечества. Что же это за качества?

Обучение. Одно из краеугольных понятий обучения - образ. Образ, класс - классификационная группировка в системе классификации, объединяющая (выделяющая) определенную группу объектов по некоторому признаку [2]. Образы обладают характерным свойством, проявляющимся в том, что ознакомление с конечным числом явлений из одного и того же множества дает возможность узнавать сколь угодно большое число его представителей. Образы обладают характерными объективными свойствами в том смысле, что разные люди, обучающиеся на различном материале наблюдений, большей частью одинаково и независимо друг от друга классифицируют одни и те же объекты. Именно эта объективность образов позволяет людям всего мира понимать друг друга. Способность восприятия внешнего мира в форме образов позволяет с определенной достоверностью узнавать бесконечное число объектов на основании ознакомления с конечным их числом, а объективный характер основного свойства образов позволяет моделировать процесс их распознавания. Будучи отражением объективной реальности, понятие образа столь же объективно, как и сама реальность, а поэтому это понятие может быть само по себе объектом специального исследования. Соответственно обучение в целом основывается на обучении распознаванию образов (ОРО). Существует два подхода ОРО - геометрический, основанный на построении разделяющих поверхностей в пространстве образов, и структурный (лингвистический), основанный на выделении базовых структурных признаков и отношений между ними. Обучением обычно называют процесс выработки в некоторой системе той или иной реакции на группы внешних идентичных сигналов путем многократного воздействия на систему внешней корректировки. Такую внешнюю корректировку в обучении принято называть поощрениями и наказаниями. Механизм генерации этой корректировки практически полностью определяет алгоритм обучения. Самообучение отличается от обучения тем, что здесь дополнительная информация о верности реакции системе не сообщается [2]. Уместно также упомянуть гипотезу компактности, которая гласит, что при правильном выборе пространства признаков реализации образов некоторых классов располагаются компактными группами в пространстве признаков вокруг центра соответствующего класса.

Понятие самоорганизации связано как с самообучением, так и с эволюцией. Способность самостоятельно изменять нужные качества в лучшую сторону, обучение без учителя, эволюция в сложной и меняющейся среде - без этих качеств системы трудно назвать интеллектуальными в полном смысле. В частности, для решения таких задач, как медицинская диагностика, управление производством, тестирование знаний студентов, релевантный информационный поиск, эффективно используются самоорганизующиеся (растущие или эволюционирующие) нейронные сети. Самоорганизующиеся сети во многих случаях оказываются более предпочтительными, чем традиционные полносвязные нейронные сети [4].

Эволюция. В процессе биологической эволюции возникли чрезвычайно сложные и вместе с тем удивительно эффективно функционирующие живые организмы [5]. Эффективность, гармоничность и согласованность работы "компонент" живых существ обеспечивается биологическими управляющими системами. Можем ли мы понять, как в процессе эволюции развивались биологические управляющие "компьютеры"? Каковы процессы обработки информации в этих "биокомпьютерах", по каким "программам" работают "биокомпьютеры"? Почему эти естественные "программы" так гибки и надежны? Как развитие биокибернетических систем привело к возникновению естественного интеллекта? Какие уроки из знаний о естественных "биокомпьютерах" можно извлечь для разработки искусственных компьютеров и программных продуктов? До какой степени исследования причин возникновения естественного интеллекта могут способствовать развитию искусственного интеллекта? Найдя ответы на эти вопросы и построив искусственные системы по аналогичным принципам, можно надеяться, что и функционировать они будут не хуже, при этом имея возможность самостоятельно развиваться без непосредственного участия человека. Эволюция отличается от обучения и самоорганизации еще тем, что в процессе эволюции система способна приобрести принципиально новые качества, выйти на следующую ступень развития.

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

1) Решение проблемы ключевого разделения труда. Пользователи больше не "мучают" программистов своими бесконечными требованиями, сообщениями об очередных "ляпах" в терабайтах программного обеспечения. Отпадает потребность в изучении томов документации по работе с компьютером, общение идет в естественной форме, пользователь может обучить своим проблемам или дать компьютеру задание в них разобраться. Программистам (инженерам баз знаний) не будет нужды постоянно вникать в предметные области пользователей, создавать документацию. Их задача - научить компьютер "думать" и эволюционировать. Все остальное он сделает сам, при минимальном участии человека.

2) Приведение в порядок интеллектуально-информационных ресурсов общества. Самоорганизующиеся системы будут способны сами переварить тот огромный объем знаний, которым обладает на сегодня человечество. Вот тут и открываются просторы для создания полноценных баз знаний. Даже трудноформализуемые знания могут быть переработаны интеллектуальными системами и впоследствии формализованы. Интеллектуальные системы возьмут на себя заботы по поиску нужной информации, "помогут" базе знаний быстро найти нужную информацию, "подскажут" кратчайший путь в ее поиске.

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

Продолжение следует

Интересующие вас вопросы, связанные с искусственным интеллектом, можно задать на AI-Forum'е: http://www.pool-7.ru/alexkuck/aiforum АВДмитрий Брилюк
bdv78@newmail.ru

http://bdv78.newmail.ruТОР


(c) компьютерная газета


Компьютерная газета. Статья была опубликована в номере 44 за 2000 год в рубрике разное :: мелочи жизни

©1997-2024 Компьютерная газета